it-swarm.com.de

Erstellen von SFTP-Benutzern und Jailing, um unter CentOS zu chrooten - Benutzerauthentifizierungsfehler

Ich habe eine CentOs-Version 6.4 mit Digital Ocean und möchte erfolgreich SFTP-Benutzer erstellen und sie im eigenen Chroot-Home-Verzeichnis des Benutzers einsperren, aber ich befürchte, dass ich das durcheinander bringe.

Ich habe viele Dinge ausprobiert, viel zu viele, um sie hier wirklich aufzulisten, da die meisten wahrscheinlich falsch sind oder nicht viel Sinn ergeben, aber ich denke, dass dies der richtige Prozess sein sollte und was ich versucht habe, ist:

Erstellen Sie eine Gruppe für sftp: -

groupadd sftp

Erstellen Sie einen Benutzer und legen Sie dessen Ausgangsverzeichnis fest: -

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

Legen Sie ein Passwort für den Benutzer fest: -

passwd dummyuser

Ändern Sie die Benutzergruppe in 'sftp': -

usermod -g sftp dummyuser

Setzen Sie die Shell des Benutzers auf /bin/false: -

usermod -s /bin/false dummyuser

Subsystem in sshd_config Bearbeiten (/etc/ssh/): -

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

Fügen Sie am Ende der Datei sshd_config Folgendes hinzu: -

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

Ich stelle sicher, dass alle folgenden Verzeichnisse root:root Sind: -

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

Wenn ich dann versuche, mich mit dem Benutzer dummyuser (in WinSCP) über SFTP beim Server anzumelden, erhalte ich Folgendes: -

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

Authentication failed.

Alles, was ich erreichen möchte, ist, einen Benutzer in sein Home-Verzeichnis einzusperren. Ich habe auch vsftpd eingerichtet und konfiguriert. Benutzer könnten sich gut anmelden, hätten aber Zugriff auf den gesamten Server - ich habe es einfach nicht geschafft, das Gefängnis überhaupt zum Laufen zu bringen.

Bearbeiten

Ich habe vergessen zu erwähnen, dass ich dann sshd auch neu gestartet habe: -

service sshd restart

Wenn der Fehler in WinSCP erzeugt wird, lautet die Hilfeseite dazu hier .

Ergebnisse protokollieren

/var/log/secure

Ich habe den tatsächlichen Servernamen durch server_name Ersetzt.

 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

Es ist eine häufige Gefahr:
Alle Ordner bis zum Chroot-Home müssen Eigentum des Benutzers sein und nur von root beschreibbar sein.
Die Ordner können nicht für Gruppen beschreibbar sein - auch wenn die Gruppe root ist.

14
faker

Ich habe sftp unter CentOS 6.5 gefunden und erfolgreich konfiguriert: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Bearbeiten Sie die sshd-Konfiguration:

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

Beenden und speichern.

Dann:

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

Für einen neuen Benutzer namens "testuser" (Mitglied der Nur-SFTP-Gruppe mit GID 500):

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

(Ich benutze leere/etc/skel2, so dass standardmäßig keine .bashrc etc von CentOS kopiert wird.)

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

In diesem Beispiel habe ich es geschafft, externen Beratungsunternehmen, die Websites verwalten, einen sicheren Zugang zu gewähren. Sie können nach dem Erstellen all dies tun:

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)

Man könnte das alles nach Bedarf fein einstellen.

Hoffe das hat geholfen!

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

5
Guy Boisvert