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 un genericPerson
  • Le shell autorisé pour les utilisateurs depuis le ldap est scponly qui est un cli pour scp.

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/.

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.

Liens utiles