Posts Tagged ‘chroot’
sFTP server cu Debian si chRoot jail pentru useri
Serverul 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.