Android

Jak skonfigurować serwer ftp z vsftpd na Debianie 9

How To install FTP Server Vsftpd on Debian GNULinux 9.1 stretch

How To install FTP Server Vsftpd on Debian GNULinux 9.1 stretch

Spisu treści:

Anonim

FTP (File Transfer Protocol) to standardowy protokół sieciowy używany do przesyłania plików do iz sieci zdalnej. Aby uzyskać bezpieczniejszy i szybszy transfer danych, użyj SCP lub SFTP.

Istnieje wiele serwerów FTP typu open source dostępnych dla systemu Linux. Najpopularniejsze i szeroko stosowane to PureFTPd, ProFTPD i vsftpd.

W tym samouczku wyjaśniono, jak zainstalować i skonfigurować vsftpd (Very Secure Ftp Daemon) w Debianie 9. vsftpd stabilny, bezpieczny i szybki serwer FTP. Pokażemy także, jak skonfigurować vsftpd, aby ograniczyć użytkowników do ich katalogu domowego i szyfrować całą transmisję za pomocą protokołu SSL / TLS.

Wymagania wstępne

Zalogowany użytkownik musi mieć uprawnienia sudo, aby móc instalować pakiety.

Instalowanie vsftpd na Debianie 9

Pakiet vsftpd jest dostępny w repozytoriach Debiana. Instalacja jest dość prosta:

sudo apt update sudo apt install vsftpd

Usługa vsftpd uruchomi się automatycznie po zakończeniu procesu instalacji. Sprawdź to, drukując status usługi:

sudo systemctl status vsftpd

Dane wyjściowe będą wyglądały jak poniżej, pokazując, że usługa vsftpd jest aktywna i działa:

● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-12-10 11:42:51 UTC; 53s ago Main PID: 1394 (vsftpd) CGroup: /system.slice/vsftpd.service └─1394 /usr/sbin/vsftpd /etc/vsftpd.conf

Konfigurowanie vsftpd

Serwer vsftpd można skonfigurować, modyfikując plik vsftpd.conf znajdujący się w katalogu /etc

Większość ustawień jest dobrze udokumentowana w pliku konfiguracyjnym. Wszystkie dostępne opcje znajdziesz na oficjalnej stronie vsftpd.

W poniższych sekcjach omówimy kilka ważnych ustawień potrzebnych do skonfigurowania bezpiecznej instalacji vsftpd.

Zacznij od otwarcia pliku konfiguracyjnego vsftpd:

sudo nano /etc/vsftpd.conf

1. Dostęp FTP

Znajdź dyrektywy anonymous_enable i local_enable i sprawdź, czy konfiguracja jest zgodna z poniższymi wierszami:

/etc/vsftpd.conf

anonymous_enable=NO local_enable=YES

Zapewnia to, że tylko użytkownicy lokalni mogą uzyskać dostęp do serwera FTP.

2. Włączanie przesyłania

write_enable ustawienie write_enable , aby umożliwić zmiany w systemie plików, takie jak przesyłanie i usuwanie plików.

/etc/vsftpd.conf

write_enable=YES

3. Więzienie Chroot

Aby uniemożliwić użytkownikom FTP dostęp do plików spoza ich katalogów domowych, odznacz ustawienie chroot .

/etc/vsftpd.conf

chroot_local_user=YES

Domyślnie, aby zapobiec podatności na zagrożenia, po włączeniu chroot vsftpd odmówi przesłania plików, jeśli katalog, w którym użytkownicy są zablokowani, jest zapisywalny.

Użyj jednej z poniższych metod, aby zezwolić na przesyłanie, gdy włączony jest chroot.

  • Metoda 1. - Zalecaną metodą zezwalania na przesyłanie jest włączenie chroot i skonfigurowanie katalogów FTP. W tym samouczku utworzymy katalog ftp w domu użytkownika, który będzie służył jako chroot i zapisywalny katalog uploads do przesyłania plików.

    /etc/vsftpd.conf

    user_sub_token=$USER local_root=/home/$USER/ftp

    Metoda 2. - Inną opcją jest dodanie następującej dyrektywy do pliku konfiguracyjnego vsftpd. Użyj tej opcji, jeśli musisz przyznać użytkownikowi prawo do zapisu w jego katalogu domowym.

    /etc/vsftpd.conf

    allow_writeable_chroot=YES

4. Pasywne połączenia FTP

vsftpd może używać dowolnego portu do pasywnych połączeń FTP. Określymy minimalny i maksymalny zasięg portów, a później otworzymy zasięg w naszej zaporze ogniowej.

Dodaj następujące wiersze do pliku konfiguracyjnego:

/etc/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5. Ograniczanie logowania użytkownika

Aby zezwolić tylko niektórym użytkownikom na logowanie się do serwera FTP, dodaj następujące wiersze na końcu pliku:

/etc/vsftpd.conf

userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

Gdy ta opcja jest włączona, musisz jawnie określić, którzy użytkownicy mogą się zalogować, dodając nazwy użytkowników do pliku /etc/vsftpd.user_list (jeden użytkownik na linię).

6. Zabezpieczanie transmisji za pomocą SSL / TLS

Aby zaszyfrować transmisje FTP za pomocą SSL / TLS, musisz mieć certyfikat SSL i skonfigurować serwer FTP, aby go używał.

Możesz użyć istniejącego certyfikatu SSL podpisanego przez zaufany urząd certyfikacji lub utworzyć samopodpisany certyfikat.

W tym samouczku wygenerujemy samopodpisany certyfikat SSL za pomocą polecenia openssl .

Następujące polecenie utworzy 2048-bitowy klucz prywatny i samopodpisany certyfikat ważny przez 10 lat. Zarówno klucz prywatny, jak i certyfikat zostaną zapisane w tym samym pliku:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Po utworzeniu certyfikatu SSL otwórz plik konfiguracyjny vsftpd:

sudo nano /etc/vsftpd.conf

Znajdź dyrektywy rsa_cert_file i rsa_private_key_file , zmień ich wartości na ścieżkę pliku pam i ustaw dyrektywę ssl_enable na YES :

/etc/vsftpd.conf

rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

Jeśli nie określono inaczej, serwer FTP będzie używał tylko TLS do nawiązywania bezpiecznych połączeń.

Uruchom ponownie usługę vsftpd

Po zakończeniu edycji plik konfiguracyjny vsftpd (bez komentarzy) powinien wyglądać mniej więcej tak:

/etc/vsftpd.conf

listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

Zapisz plik i uruchom ponownie usługę vsftpd, aby zmiany odniosły skutek:

sudo systemctl restart vsftpd

Otwieranie zapory

Aby otworzyć port 21 (port poleceń FTP), port 20 (port danych FTP) i 30000-31000 (zakres portów pasywnych), uruchom następujące polecenia:

sudo ufw allow 20:21/tcp sudo ufw allow 30000:31000/tcp

Aby uniknąć zablokowania, otworzymy również port 22 :

sudo ufw allow OpenSSH

Ponownie załaduj reguły UFW, wyłączając i ponownie włączając UFW:

sudo ufw disable sudo ufw enable

Aby zweryfikować zmiany, uruchom:

sudo ufw status

Status: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000:31000/tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)

Tworzenie użytkownika FTP

Aby przetestować nasz serwer FTP, utworzymy nowego użytkownika.

  • Jeśli masz już użytkownika, któremu chcesz przyznać dostęp przez FTP, pomiń pierwszy krok. Jeśli ustawisz allow_writeable_chroot=YES w pliku konfiguracyjnym, pomiń trzeci krok.
  1. Utwórz nowego użytkownika o nazwie newftpuser :

    sudo adduser newftpuser

    Dodaj użytkownika do listy dozwolonych użytkowników FTP:

    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list

    Utwórz drzewo katalogów FTP i ustaw odpowiednie uprawnienia:

    sudo mkdir -p /home/newftpuser/ftp/upload sudo chmod 550 /home/newftpuser/ftp sudo chmod 750 /home/newftpuser/ftp/upload sudo chown -R newftpuser: /home/newftpuser/ftp

    Jak omówiono w poprzedniej sekcji, użytkownik będzie mógł przesłać swoje pliki do katalogu ftp/upload .

W tym momencie twój serwer FTP jest w pełni funkcjonalny i powinieneś być w stanie połączyć się z serwerem za pomocą dowolnego klienta FTP, który można skonfigurować do korzystania z szyfrowania TLS, takiego jak FileZilla.

Wyłączanie dostępu do powłoki

Domyślnie podczas tworzenia użytkownika, jeśli nie zostanie to wyraźnie określone, użytkownik będzie miał dostęp SSH do serwera.

Aby wyłączyć dostęp do powłoki, utworzymy nową powłokę, która po prostu wydrukuje komunikat informujący użytkownika, że ​​jego konto jest ograniczone tylko do dostępu FTP.

Utwórz powłokę /bin/ftponly i /bin/ftponly aby była wykonywalna:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly

Dołącz nową powłokę do listy prawidłowych powłok w /etc/shells :

echo "/bin/ftponly" | sudo tee -a /etc/shells

Zmień powłokę użytkownika na /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Użyj tego samego polecenia, aby zmienić powłokę wszystkich użytkowników, którym chcesz dać dostęp tylko przez FTP.

Wniosek

W tym samouczku nauczyłeś się instalować i konfigurować bezpieczny i szybki serwer FTP w systemie Debian 9.

ftp debian