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.