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.
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.
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.
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.
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 passecommon-session
: pour configurer la sessioncommon-auth
: pour authentifier l'utilisateurcommon-account
: pour vérifier que le compte est validesshd
: pour les connexions ssh.La configuration actuelle du LDAP accepte une connexion de n'importe quel membre du ResEl dans la branche
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 :
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 :
ou=webmasters
ou=sites
.posixAccount
a un genericPerson
scponly
qui est un cli pour scp
.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/
.
Sont installés, pour permettre l'hébergement des sites des clubs :
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
Last edited by Gollum (Wiki ResEl), 2017-02-24 02:34:47