Description
Golf est une VM hébergeant les sites des clubs.
Elle est dans le pool de VM du I11. Plus d'infos techniques sur proxmox.
Golf est sur Debian 7. C'est une vieille VM, et le projet RWS va remplacer le service.
Particularités
Golf est dans la DMZ, une IP fixe du ResEl est nattée depuis le Firewall directement vers elle.
La procédure pour ajouter un compte admin est particulière, voir Ajouter un Compte admin.
Services hebergés & Configuration
Comme Golf sert pour l'hébergement des sites de clubs, cette machine héberge un serveur FTP pour que les clubs puissent pousser du code pour leur site.
Synchronisation webmestres & sites via LDAP
Les webmestres des sites de clubs doivent pouvoir y accéder, via le ftp. Pour cela, Golf est configuré pour synchroniser ses comptes utilisateurs et ses groupes avec le LDAP
Il y a deux choses : NSS
qui gère le LDAP comme bdd de configuration pour le système, et PAM
qui permet d'authentifier depuis le LDAP.
Authentification via PAM
PAM : Pluggable Authentication Module est le gestionnaire des authentifications sous linux. Il va servir à autentifier les membres ResEl depuis le LDAP.
La configuration globale du ldap pour pam est dans : /etc/pam_ldap.conf
, elle contient le lien vers la branche du LDAP.
Ensuite les modules d'interface de pam (ce sont les différent aspect du processus d'authentification), qui sont dans /etc/pam.d
sont configurés pour accepter un accord de pam_ldap comme suffisant (sufficient
) :
-
common-password
: pour modifier son mot de passe -
common-session
: pour configurer la session -
common-auth
: pour authentifier l'utilisateur -
common-account
: pour vérifier que le compte est valide -
sshd
: pour les connexions ssh.
La configuration actuelle du LDAP accepte une connexion de n'importe quel membre du ResEl dans la branche
Ajouter un compte admin
Comme le compte existe déjà en tant que compte user, il faut ajouter un compte admin avec un pseudo différent.
Il est peut-être possible de modifier dans la conf de pam
le provider d'authentification pour des exceptions, pour le mettre en compte Linux classique :
Synchronisation des informations via NSS
NSS : Name service Switch est un service qui gère divers configuration Linux (comme /etc/passwd
, /etc/group
) depuis une BDD externe. On utilise nss_ldap pour synchroniser le LDAP comme bdd pour ces services, par exemple passwd
est sur Linux la base de donnée qui store les comptes des utilisateurs. Ainsi les utilisateurs dont le compte est dans le ou=Webmasters
auront un compte créé sur Golf. De même, tout les items dans le ou=Sites
auront un groupe créé associé.
Il est installé depuis le miroir Debian : libnss-ldap
.
La configuration globale de NSS est dans /etc/nsswitch.conf
et précise et les utilisateurs et les groupes vont être recuperé depuis le LDAP.
La configuration globale du LDAP pour NSS est dans /etc/nss-ldap.conf
. Cette configuration contient aussi une partie intéressante :
nss_base_passwd ou=webmasters,dc=maisel,dc=enst-bretagne,dc=fr?one
nss_base_group ou=sites,dc=resel,dc=enst-bretagne,dc=fr?one
logdir /var/log/libnss-ldap
nss_default_attribute_value uidNumber 179
nss_override_attribute_value uidNumber 179
nss_default_attribute_value gidNumber 1029
nss_map_objectclass posixAccount genericPerson
nss_map_objectclass shadowAccount genericPerson
nss_default_attribute_value cn ldap_user
nss_default_attribute_value loginShell /usr/bin/scponlyc_umask
nss_override_attribute_value loginShell /usr/bin/scponlyc_umask
Cela signifie :
- Les comptes (qui sont les webmestres) vont êtes récupérés depuis
ou=webmasters
- Les groupes (qui sont les sites de clubs) vont être récuperés depuis
ou=sites
. - On map un
posixAccount
a ungenericPerson
- Le shell autorisé pour les utilisateurs depuis le ldap est
scponly
qui est un cli pourscp
.
La petite subtilité
Pour que améliorer la sécurité sur Golf puisque des utilisateurs peuvent s'y connecter depuis le LDAP, il a té mis en place deux sécurités :
D'abord NSS fait en sorte que le home soit dans /srv/chrooted_sftp
.
Ensuite, comme décrit plus haut le shell fourni au webmestre est le programme /usr/bin/spconlyc_umask
.
C'est en fait un programme custom au ResEl dont voici le code :
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
int main(int argc, char** argv)
{
// Simple program that sets the correct umask and launch scponlyc
// If we don't do this, scponlyc will not make the chroot jail..
// Indeed, according to its sources, it checks if argv[0] is /usr/sbin/scponlyc in order to actually make the jail !
argv[0] = "scponlyc";
umask(0006);
execv("/usr/sbin/scponlyc", argv);
}
Il s'agit juste d'appliquer un umask de 0006 soit des permissions en 0660 puis de lancer spconlyc, un simple client sftp.
Mais c'est pas fini
Parcequ'au ResEl on aime bien les trucs pas future-proof, il y a 7 ans a été développé "suiddiremulate", qui est une tentative d'appliquer le SUID a un répertoire parent, pour que lorsqu'un utilisateur écrive dans un dossier, le fichier écrit appartienne au propriétaire du répertoire parent.
Le programme est ici et fait cela pour tout le dossier /srv/www/
.
Hébergement des sites de clubs
Sont installés, pour permettre l'hébergement des sites des clubs :
- Un serveur FTP
- Une base MYSQL
LiquidSoap : service de streaming de musique
Pour TFM est installé LiquidSoap, qui permet de diffuser de la musique sur le seur site lorsqu'ils ne diffusent pas de chronique.
Il est installé via les miroirs Debian, la configuration est dans /etc/liquidsoap
et les logs sont dans /var/log/tfm/liquidsaop.log
Historique
- Migration et re-rédaction des articles sur Golf et Sites Clubs par Théo Jacquin en 2017.
- Golf mise en place, refonte entière du système de site de clubs : mise en place de webmasters et plus de compte par clubs, refonte de l'architecture.
- Avant Golf, les sites clubs étaient hébergés sur Baal.