web-dev-qa-db-fra.com

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

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 devrait ê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_config fichier:-

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

J'ai oublié de mentionner, j'ai ensuite redémarré sshd aussi: -

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
18
zigojacko

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

14
faker

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

5
Guy Boisvert