Création d'utilisateurs SFTP et emprisonnement pour chrooter sur CentOS - erreur d'authentification de l'utilisateur

18

J'ai une version 6.4 de CentOs avec Digital Ocean et je voudrais créer avec succès des utilisateurs SFTP et les emprisonner dans le répertoire personnel de chroot de l'utilisateur, mais je crains d'en faire un gâchis.

J'ai essayé beaucoup de choses, beaucoup trop pour les énumérer ici, car la plupart sont probablement incorrectes ou n'auront pas beaucoup de sens, mais ce que je pense être le bon processus et ce que j'ai essayé est: -

Créez un groupe pour sftp: -

groupadd sftp

Créez un utilisateur et définissez son répertoire personnel: -

useradd -d /var/www/vhosts/domain.com dummyuser

Définissez un mot de passe pour l'utilisateur: -

passwd dummyuser

Changez le groupe d'utilisateurs en 'sftp': -

usermod -g sftp dummyuser

Définissez le shell de l'utilisateur sur /bin/false: -

usermod -s /bin/false dummyuser

Modifier le sous-système dans sshd_config( /etc/ssh/): -

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Ajoutez ce qui suit au bas du sshd_configfichier: -

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

Je m'assure que tous les répertoires suivants sont root:root: -

/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com

Si j'essaie ensuite de me connecter au serveur via SFTP avec l'utilisateur dummyuser(dans WinSCP), j'obtiens ce qui suit: -

Authentication log (see session log for details):
Using username "dummyuser".

Authentication failed.

Tout ce que je veux réaliser, c'est emprisonner un utilisateur dans son répertoire personnel. J'ai également installé et configuré vsftpd. Les utilisateurs pouvaient se connecter correctement mais auraient accès à l'ensemble du serveur - je n'ai tout simplement pas réussi à obtenir de l'emprisonnement au travail.

Éditer

Oublié de mentionner, j'ai ensuite redémarré sshdaussi: -

service sshd restart

Lorsque l'erreur est produite dans WinSCP, leur page d'aide à ce sujet est ici .

Résultats du journal

/var/log/secure

J'ai remplacé le nom réel du serveur par server_name.

 Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
 Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser
zigojacko
la source
Avez-vous redémarré sshd? Que contiennent les fichiers journaux sur le serveur?
faker
Oui, désolé d'avoir oublié d'ajouter cela à la fin de ma question (inclura maintenant). Dans quel fichier journal (et emplacement) dois-je rechercher car je n'ai pas trouvé de fichier journal de session jusqu'à présent? Merci.
zigojacko
Vous aurez envie de jeter un oeil à /var/log/secure.
faker
Excellent, merci - cela aide (mise à jour de la question avec les entrées du journal).
zigojacko
fatal: mauvaise propriété ou modes pour le composant de répertoire chroot "/ var / www / vhosts /" quelque chose comme ça, je le soupçonnais, mais il l' vhostsest root:root.
zigojacko

Réponses:

14

C'est un piège courant:
tous les dossiers jusqu'au chroot home doivent appartenir et être accessibles en écriture uniquement par l' rootutilisateur.
Les dossiers ne peuvent pas être inscriptibles en groupe - même si le groupe l'est root.

truqueur
la source
4
Je viens d'apprendre une astuce pour vérifier cela commodément:namei -l /var/www/vhosts
clockworkgeek
5

J'ai trouvé et configuré avec succès sftp sur CentOS 6.5: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Modifier la configuration sshd:

vim / etc / ssh / sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server (comment out the default with "#")

add:

Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /var/www/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Quittez et enregistrez.

Alors:

mkdir /etc/skel2
groupadd sftp-only
getent group |grep sftp-only  (take note the GID (Group ID).  Here, in my example it's 500)

Pour un nouvel utilisateur nommé "testuser" (membre du groupe sftp uniquement avec GID 500):

useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser

(J'utilise / etc / skel2 vide donc aucun .bashrc etc n'est copié par défaut par CentOS)

mkdir -p /var/www/testuser/home/testuser

chown root:sftp-only /var/www/testuser
chmod 750 /var/www/testuser

chown root:root /var/www/testuser/home
chmod 755 /var/www/testuser/home

chown testuser:sftp-only /var/www/testuser/home/testuser
chmod 770 /var/www/testuser/home/testuser

Donc, dans cet exemple, je l'ai fait pour donner un accès sécurisé aux cabinets de conseil externes qui gèrent les sites Web. Vous pouvez après avoir créé tout cela faire:

mkdir /var/www/testuser/home/testuser/www.somesite.com
chown testuser:apache /var/www/testuser/home/testuser/www.somesite.com
chmod xxx (permissions to the website as needed, usually 750 so apache would get read access)

On pourrait affiner tout cela au besoin.

J'espère que cela vous a aidé!

Guy Boisvert IngTegration inc. http://www.ingtegration.com

Guy Boisvert
la source
Bienvenue dans Server Fault! Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
masegaloeh
1
Puisque vous avez changé la configuration de sshd, je vous suggère de la redémarrer:service sshd restart
Loïc