Erstellen von SFTP-Benutzern und Jailing unter CentOS - Benutzerauthentifizierungsfehler

18

Ich habe ein CentOs-Release 6.4 mit Digital Ocean und möchte erfolgreich SFTP-Benutzer erstellen und sie in das eigene chroot-Ausgangsverzeichnis des Benutzers einsperren, aber ich fürchte, ich mache ein Durcheinander daraus.

Ich habe viele Dinge ausprobiert, viel zu viele, um sie hier wirklich aufzulisten, da die meisten wahrscheinlich falsch sind oder keinen Sinn ergeben. Was ich jedoch für den richtigen Prozess halte und was ich ausprobiert habe, ist:

Erstellen Sie eine Gruppe für sftp: -

groupadd sftp

Erstellen Sie einen Benutzer und legen Sie sein 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

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

usermod -s /bin/false dummyuser

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

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

Fügen Sie am Ende der sshd_configDatei Folgendes hinzu : -

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

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

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

Wenn ich dann versuche, mich mit dem Benutzer dummyuser(in WinSCP) über SFTP am 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 zu bringen. Ich habe auch vsftpd eingerichtet und konfiguriert. Benutzer könnten sich gut einloggen, hätten aber Zugriff auf den gesamten Server - ich habe es einfach nicht geschafft, das Gefängnis überhaupt zum Laufen zu bringen.

Bearbeiten

Vergessen zu erwähnen, habe ich dann auch neu gestartet sshd: -

service sshd restart

Wenn der Fehler in WinSCP erzeugt wird, auf das ihre Hilfeseite ist hier .

Ergebnisse protokollieren

/var/log/secure

Ich habe den tatsächlichen Servernamen durch ersetzt 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
quelle
Hast du neu gestartet sshd? Was ist in den Protokolldateien auf dem Server?
Fälscher
Ja, tut mir leid, dass ich vergessen habe, das an das Ende meiner Frage anzuhängen (wird jetzt einschließen). In welcher Protokolldatei (und an welchem ​​Speicherort) soll ich suchen, da ich bisher keine Sitzungsprotokolldatei gefunden habe? Vielen Dank.
Zigojacko
Sie werden einen Blick darauf werfen wollen /var/log/secure.
Fälscher
Exzellent, danke - das hilft (Update-Frage mit Log-Einträgen).
Zigojacko
fatal: schlechte Eigentums- oder Modi für chroot Verzeichnis - Komponente „/ var / www / vhosts /“ etwas wie dies ich vermutete , aber vhostsist root:root.
Zigojacko

Antworten:

14

Es ist eine häufige Gefahr:
Alle Ordner bis zum chroot-Start müssen Eigentum des rootBenutzers sein und dürfen nur von diesem beschrieben werden.
Die Ordner können nicht gruppenbeschreibbar sein - auch wenn es sich um Gruppen handelt root.

Schwindler
quelle
4
Ich habe gerade einen Trick gelernt, um dies bequem zu überprüfen:namei -l /var/www/vhosts
clockworkgeek
5

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 mit dem Namen "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 keine .bashrc etc standardmäßig 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 also geschafft, externen Beratungsunternehmen, die Websites verwalten, sicheren Zugriff zu gewähren. Nachdem Sie all dies erstellt haben, können Sie Folgendes 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)

All dies könnte man nach Bedarf fein abstimmen.

Hoffe das hat geholfen!

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

Guy Boisvert
quelle
Willkommen bei Server Fault! Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Masegaloeh
1
Da Sie sshd config geändert haben, würde ich vorschlagen, dass Sie es neu starten:service sshd restart
Loïc