Serwer SFTP

Jak uruchomić serwer SFTP ?

Na ogół nic nie trzeba robić, gdyż jeśli jest uruchomiony serwer SSH, to uruchomiony jest też serwer SFTP. Możesz się o tym przekonać łącząc się z hostem po protokole SFTP za pomocą programu WinSCP i podając ten sam login i hasło co łącząc się z serwerem SSH, np. w Putty.

Chrooting

Teraz zajmiemy się kwestią jak zabezpieczyć konto SFTP, gdy chcemy je udostępnić innym osobom do wymiany plików. Na potrzeby niniejszej dokumentacji zakładamy, że jest już utworzony użytkownik z własnym katalogiem domowym.

Po pierwsze ograniczamy mu dostęp tylko do katalogu domowego.

/etc/ssh/sshd_config

Subsystem sftp internal-sftp # Wykomentowujemy istniejący Subsystem
 
Match User [użytkownik]
    ChrootDirectory %h
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Dodatkowo katalog użytkownika musi być własnością roota. Może to trochę nieintuicyjne, ale inaczej nie zadziała.

chown root /home/[użytkownik]
chmod og-w /home/[użytkownik]

Użytkownik root musi być właścicielem katalogu nawet, jeżeli jest to katalog domowy użytkownika. Ponadto uprawnienia nie mogą być szersze niż 755. W innym przypadku serwer w ogóle nie pozwoli się zalogować. Dlatego zaleca się utworzenie podkatalogu, którego użytkownik będzie właścicielem, np. ftp z pełnymi uprawnieniami dla użytkownika.

Po drugie zabraniamy korzystania z konsoli.

usermod --shell /bin/false [użytkownik]
service ssh restart

I to wszystko, żadnych dodatkowych instalacji, czy konfiguracji. Artykuł oparty na Programowo.

Tematy pokrewne

Program rssh (restricted shell)

apt-get install rssh
usermod --shell /usr/bin/rssh [użytkownik]

/etc/rssh.conf

#Użytkownik:maska plików:uprawnienia:katalog chroot (opcjonalny)
user=[użytkownik]:022:111111:/home/[użytkownik]

Program vsftpd.

apt-get install vsftpd # Instalacja
service vsftpd restart # Restart

Plik konfiguracyjny znajduje się w /etc/vsftpd.conf. Po instalacji włączamy następujące opcje:

local_enable=YES
write_enable=YES
chroot_local_user=YES
#pam_service_name=vsftpd

pam_service_name=vsftpd należy wykomentować, żeby zezwolić na logowanie użytkowników nie-shellowych.