Creazione di utenti SFTP e jailing per il chroot su CentOS - errore di autenticazione dell'utente


18

Ho una versione 6.4 di CentOs con Digital Ocean e vorrei creare con successo utenti SFTP e trasferirli nella directory home chroot dell'utente, ma temo di sbagliarmi.

Ho provato un sacco di cose, troppe per elencarle qui in quanto la maggior parte è probabilmente errata o non avrà molto senso, ma quello che sento dovrebbe essere il processo corretto e quello che ho provato è: -

Crea un gruppo per sftp: -

groupadd sftp

Crea un utente e imposta la sua home directory: -

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

Imposta una password per l'utente: -

passwd dummyuser

Cambia il gruppo dell'utente in 'sftp': -

usermod -g sftp dummyuser

Impostare la shell dell'utente su /bin/false: -

usermod -s /bin/false dummyuser

Modifica sottosistema tra sshd_config( /etc/ssh/): -

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

Aggiungi quanto segue in fondo al sshd_configfile: -

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

Mi assicuro che tutte le seguenti directory siano root:root: -

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

Se poi provo ad accedere al server tramite SFTP con l'utente dummyuser(in WinSCP), ottengo quanto segue: -

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

Authentication failed.

Tutto quello che voglio ottenere è il jailing di un utente nella sua home directory. Ho anche installato e configurato vsftpd. Gli utenti potrebbero accedere correttamente ma avrebbero accesso all'intero server - non sono riuscito a far funzionare il jailing.

modificare

Ho dimenticato di menzionare, ho quindi riavviato sshdanche: -

service sshd restart

Quando l'errore viene prodotto in WinSCP, la loro pagina di aiuto su questo è qui .

Risultati del registro

/var/log/secure

Ho sostituito il nome effettivo del server con 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

Hai riavviato sshd? Cosa c'è nei file di registro sul server?
falso

Sì, mi dispiace, ho dimenticato di aggiungerlo alla fine della mia domanda (includerò ora). Quale file di registro (e posizione) dovrei cercare perché finora non sono riuscito a trovare un file di "registro delle sessioni"? Grazie.
Zigojacko,

Ti consigliamo di dare un'occhiata /var/log/secure.
falso

Eccellente, grazie - questo aiuta (aggiornamento della domanda con voci di registro).
Zigojacko,

fatale: cattiva proprietà o modalità per il componente della directory chroot "/ var / www / vhosts /" qualcosa di simile che sospettavo, ma che vhostsè root:root.
Zigojacko,

Risposte:


14

È una trappola comune:
tutte le cartelle fino alla chroot home devono essere di proprietà e scrivibili solo rootdall'utente.
Le cartelle non possono essere scrivibili in gruppo, anche se lo è il gruppo root.


4
Ho appena imparato un trucco per verificarlo comodamente:namei -l /var/www/vhosts
clockworkgeek,

5

Ho trovato e configurato correttamente sftp su CentOS 6.5: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Modifica sshd config:

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

Esci e salva.

Poi:

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

Per un nuovo utente chiamato "testuser" (membro del gruppo solo sftp con GID 500):

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

(io uso vuoto / etc / skel2 quindi nessun .bashrc etc viene copiato di default da 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

Quindi, in questo esempio, l'ho realizzato per fornire un accesso sicuro a società di consulenza esterne che gestiscono siti Web. Dopo aver creato tutto ciò, potresti:

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)

Si potrebbe mettere a punto tutto questo secondo necessità.

Spero che questo abbia aiutato!

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


Benvenuti in Server Fault! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Masegaloeh,

1
Da quando hai cambiato sshd config, ti suggerisco di riavviarlo:service sshd restart
Loïc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.