Questo articolo mostra come creare utenti SFTP (File Transfer Protocol) SSH protetti che sono limitati o imprigionati nelle loro directory home.
AVVISO :non tentare di incarcerare l'utente root. Incarcerare solo utenti aggiuntivi in modo da non impedire all'utente root di eseguire correttamente le operazioni.
Prima di iniziare, esamina le seguenti best practice:
-
La directory home dell'utente SFTP deve essere di proprietà di
root:root
. Altre directory possono (e dovrebbero) essere di proprietà (e scrivibili) dell'utente. -
È importante assicurarsi che l'utente chroot abbia accesso in scrittura alla DocumentRoot specificata.
-
È importante accedere e verificare che l'utente SFTP funzioni correttamente.
-
È importante assicurarsi che l'utente SFTP aggiunto venga aggiunto al gruppo SFTP.
-
Queste istruzioni servono per aggiungere un singolo dominio (utente SFTP), ma potresti potenzialmente utilizzarle per gestire più domini.
Importante :i passaggi in questo articolo non funzionano con RHEL® 7 o CentOS® 7. Come per qualsiasi operazione chroot corretta, questa configurazione non fornisce l'accesso in scrittura alla directory chroot. Solo le sottodirectory della jail chroot sono scrivibili. Ciò è dovuto al modo in cui i permessi di root vengono interpretati nelle directory di livello superiore in cui è contenuto l'utente SFTP.
Utilizzare i seguenti passaggi per creare utenti SFTP protetti che vengono imprigionati nelle loro directory home:
-
Aggiungi il gruppo SFTP che desideri utilizzare per l'accesso SFTP eseguendo il comando seguente:
groupadd sftponly
-
Aggiungi l'utente SFTP eseguendo il comando seguente, sostituendo
myuser
con il nome utente:useradd -d /var/www/vhosts/domain.com -s /bin/false -G sftponly myuser
-
Crea una password per l'utente eseguendo il comando seguente, sostituendo
myuser
con il nome utente:passwd myuser
-
Apri
sshd_config
file che contiene la configurazione SSH e SFTP eseguendo il comando seguente:nano /etc/ssh/sshd_config
-
Commenta la riga seguente aggiungendo un cancelletto (#) all'inizio, come mostrato nell'esempio seguente:
#Subsystem sftp /usr/lib/openssh/sftp-server
-
Aggiungi la seguente riga direttamente sotto la riga che hai appena commentato:
Subsystem sftp internal-sftp
-
Aggiungi il codice seguente in fondo al file:
Match Group sftponly ChrootDirectory %h X11Forwarding no AllowTCPForwarding no ForceCommand internal-sftp
-
Esegui
sshd
comando per testare le modifiche, quindi riavviare il servizio.Importante :Se questo passaggio viene eseguito in modo errato, potrebbe interrompere la configurazione SSHD.
sshd -t service sshd restart
Assicurati che i permessi dei file sul file system siano corretti
Successivamente, devi verificare che i permessi dei file sul file system siano corretti in modo che la jail SFTP funzioni correttamente.
-
Verifica che il
SFTPROOT
directory (la directory home che hai impostato quando hai aggiunto l'utente SSH) ha il dirittouser:root group:root
autorizzazioni eseguendo il comando seguente:chown root:root /var/www/vhosts/mywebsite.com/
-
Per verificare che l'accesso SFTP funzioni, connettiti a SFTP eseguendo il comando seguente, sostituendo
myuser
con l'utente che hai scelto, come mostrato nell'esempio seguente:sftp myuser@localhost myuser@localhost's password: Connected to localhost.
-
Testare l'elenco delle directory eseguendo il comando seguente:
sftp> ls -al
L'output dovrebbe essere simile al seguente esempio:
drwxr-xr-x 3 0 0 4096 Sep 28 08:09 . drwxr-xr-x 3 0 0 4096 Sep 28 08:09 .. drwxr-xr-x 2 5001 33 4096 Sep 28 08:52 html -rw-r--r-- 1 0 0 0 Sep 28 08:09 test.php
Nota :Usa il
cd
comando per accedere alla directory HTML (che si trova in/var/www/vhosts/mywebsite.com/html
perché il sito web 'documentroot' è un livello al di sotto dellaroot
dell'utente SSH SFTP directory. Dovresti usare questa configurazione perché il tuowww-data
gli utenti (gli utenti del server web) hanno rootuser:group
autorizzazioni sui suoi file. -
Verifica la capacità di caricare file eseguendo i seguenti comandi:
sftp> cd html sftp> put test.php Uploading test.php to /html/test.php test.php 100% 12K 20.0KB/s 00:00
-
Verifica la capacità di scaricare file eseguendo il comando seguente:
sftp> get test.php Fetching /test.php to test.php
-
Visualizza la directory di lavoro attuale eseguendo il comando seguente:
sftp> pwd Remote working directory: /html
SFTP vede solo i file in
/var/www/vhosts/mywebsite.com/
directory e considera questa directory la directory root ('/') di livello più alto. -
Utilizzare i seguenti passaggi per connettersi a SFTP e configurare il client SFTP:
- Installa Cyberduck®.
- Apri l'applicazione Cyberduck.
- Nella parte superiore della finestra, fai clic sull'icona per Apri connessione .
- Nel menu a discesa, seleziona SFTP (SSH File Transfer Protocol) .
- Nel server campo, immettere l'indirizzo IP (Internet Protocol) per il server.
- Inserisci il nome utente e la password che utilizzi per connetterti a SFTP.
- Fai clic su Connetti .
Importante :verifica sempre il tuo sito web dopo aver modificato le autorizzazioni dei file.