Limiter la connection ssh à partir de LDAP aux users disposant d'un directory / home

J'ai un server Apache (RHEL 6) qui héberge plusieurs pages Web d'users qui sont actuellement connectées à mon environnement Active Directory pour authentifier les users. Le server est utilisé pour héberger automatiquement le contenu que les users mettent dans leur dossier / home / <user> / public_html. Je configure également ce server pour utiliser chroot afin que les users ne puissent pas parcourir n'importe quel autre contenu sur le server en dehors de leur dossier de départ. Les scripts de connection ne créent pas de dossier de départ pour les users. Ceux-ci sont créés manuellement parce que nous voulons uniquement que certains users puissent héberger des pages Web à partir de ce server.

Le problème est que tout user est actuellement en mesure de se connecter au server et au lieu d'aller dans leur dossier / home (car il n'existe pas), ils entrent automatiquement dans /. Cela leur permet d'afficher les files / dossiers sur le server auxquels leur groupe a access en lecture. Ceci est un problème de security et je voudrais limiter les connections aux users qui ont un directory / home. Nous ne voulons pas spécifier un groupe AD ou une list d'users authentifiés, car cette list peut être longue et difficile à gérer, bien que cela puisse être plus simple que d'écrire un module PAM.

Existe-t-il un moyen de restreindre les connections LDAP aux seuls users disposant déjà d'un directory / home? Je ne trouve rien dans les options ou la documentation de PAM.

Étant donné que la gestion de l'access nécessiterait beaucoup de travail sur l'hôte local, nous avons décidé de créer un groupe dans Active Directory et de restreindre les connections aux users de ce groupe.

Cela peut être fait en éditant le file /etc/security/pam_winbind.conf avec le champ suivant avec les SID des groupes ou des users auxquels nous voulons restreindre l'access (séparés par des virgules).

 require_membership_of= 

Nous filterrons ensuite nos ressortingctions chroot sur ce groupe (ou placerons les users dans un groupe local) pour restreindre leur access au sftp à leurs propres directorys personnels. Cela nous permettra également d'append les oddjobs mkhomedir à pam, puis d'autoriser l'access au server, il suffit d'append l'user à ce groupe. Ils peuvent alors se connecter et leur directory personnel sera créé automatiquement.

Merci à tous pour l'aide / les idées mais il semble que les groupes AD seront les plus faciles à gérer après tout.

Solution 1:

Vous pouvez module PAM pam_homecheck

Tout ce qu'il fait est de vérifier s'il y a un directory de base de l'user et refuse une session si aucun n'est trouvé.

le problème est, il est seulement disponible dans openSUSE, mais vous pouvez placer pam_homecheck.so partir de packages téléchargés et installer la dépendance avec l'aide de ldd pam_homecheck.so .

Solution 2: vous pouvez append le contenu ci-dessous dans /etc/bashrc mais uniquement applicable pour la connection shell / mastic

 [[ $HOME == / ]] && { echo "Error: Home Dir not define.."; exit 1; } 

Solution 3:

Refuser si home dir n'est pas défini (testé et fonctionne en dessous des étapes dans Ubuntu)

Refuser WinScp

 aptitude install libpam-script 

Ouvrez " /etc/pam.d/common-auth " avec votre éditeur faorite et ajoutez les inputs ci-dessous

 auth optional pam_script.so # add at the last 

Ouvrez " /usr/share/libpam-script/pam_script_auth " avec votre éditeur favori et ajoutez les inputs ci-dessous

 #!/bin/bash Pam_home=$(awk -vu=$PAM_USER -F: '($1 == u ){print $6}' /etc/passwd) if [[ $Pam_home == / ]]; then echo "Error: Home Dir not define.." kill -9 $PPID # Force fully kill winscp pid else /usr/lib/openssh/sftp-server fi 

Refuser de la connection Shell / mastic

C'est-à-dire " /usr/share/libpam-script/pam_script_auth " ou vous pouvez vérifier dans les journaux " tail -f /var/log/auth.log "

Une façon d'y parvenir serait de les forcer à utiliser des keys pour ssh et d'interdire les connections ssh à l'aide de passwords. De cette façon, seules les personnes disposant d'un file /home/<user>/.ssh/authorized_keys pourront se connecter.