Posts Tagged ‘sftp’

sFTP server cu Debian si chRoot jail pentru useri

sftpServerul sFTP functioneaza prin SSH, mai precis pe portul 22. Intamplarea a facut sa am nevoie de un astfel de server, unde bine-nteles ca nu era suficient un simplu FTP intrucat era nevoie ca transferul sa se faca in mod securizat.

By default cand instalezi un sistem de operare, te poti autentifica cu userii locali si prin sFTP insa apare problema ca un user poate vizualiza toate folderele serverului, lucru care nu ne-ar conveni sub nici o forma. Astfel, vom apela la metoda chroot jail pentru userii creati. Autentificarea cu toate ca se face pe portul 22 (SSH) userilor nu le vom da drept de conectare SSH, doar sFTP.

Primul pas este sa creem un grup unde toti userii v vor fi adaugat. Il voi numi sftpusers:

groupadd sftpusers

Apoi vom crea un user ‘john’ care va avea home folder /incoming si shell-ul /sbin/nologin pentru a-i interzice logarea prin SSH.

useradd -g sftpusers -d /incoming -s /sbin/nologin john

Acum ii alocam o parola userului john:

passwd john

Userul il putem verifica in /etc/passwd

cat /etc/passwd

Acum trebuie sa facem cateva modificari in fisierul /etc/ssh/sshd_config. Asadar, inlocuim linia:
#Subsystem sftp /usr/libexec/openssh/sftp-server

cu

Subsystem sftp internal-sftp

Dupa ce am facut aceasta modificare, mai trebuie sa adaugam tot in acest fisier cateva linii care spun ca vom face chroot doar pentru userii folderul sftp.
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
Match Group sftpusers – indica faptul ca urmatoarele linii se aplica doar utilizatorilor din grupul sftpusers.

ChrootDirectory /sftp/%u – indica locul in care userii vor avea chroot dupa autentificare

ForceCommand internal-sftp – este o comanda care forteaza executia internal-sftpsi ignora alte comenzi mentionate in ~/.ssh/rc

Urmeaza sa creem directorul sftp.

mkdir /sftp

,iar in interiorul acestui folder vom crea un alt folder care va purta numele fiecarui utilizator creat. In cazul nostru:

mkdir /sftp/john

Acum /sftp/john este echivalentul „/” pentru userul john. Ca sa izolam utilizatorii, sa nu poata vedea ce alti urtilizatori mai exista sau ce foldere mai contine /sftp, vom crea in interiorul folderului /sftp/john un director numit: incoming, prin care vom pune in valoare chroot-ul.

mkdir /sftp/john/incoming

Mai trebuie sa punem permisiuni relevante user:sftpusers pe acest folder „incoming”:

chown john:sftpusers /sftp/john/incoming

Ultimul pas este sa restartam serviciul SSH executand comanda:

/etc/init.d/ssh restart

urmand apoi sa testam in FileZilla conexiunea pe sFTP.

srv StandDuPp
Articole recente