Jak skonfigurować FTP z TLS w Ubuntu

Jak skonfigurować FTP z TLS w Ubuntu
FTP (protokół transferu plików) służy przede wszystkim do przesyłania plików między komputerami. FTP działa w architekturze klienta-serwera, w której klient prosi o plik z serwera, a serwer zwraca wymagany plik do klienta. Na komputerze klienckim aplikacja kliencka FTP służy do komunikacji z serwerem. Możliwe jest również dostęp do serwera FTP w przeglądarce. Domyślnie FTP komunikuje się przez kanał niepewny, ale możliwe jest skonfigurowanie FTP do przesyłania danych przez bezpieczny kanał. W tym samouczku dowiesz się, jak skonfigurować serwer FTP z TLS, a następnie użyć FileZilla jako aplikacji klienta do łączenia się z serwerem FTP.

Instalowanie VSFTPD

VSFTPD (bardzo bezpieczny Demon FTP) to program używany do konfigurowania FTP na serwerze. W tym samouczku VSFTPD będzie używane do konfiguracji serwera FTP na komputerze. Przed zainstalowaniem VSFTPD zaktualizuj repozytoria na serwerze, wydając następujące polecenie.

Ubuntu@ubuntu: ~ $ sudo apt -get aktualizacja -y

Następnie zainstaluj VSFTPD za pomocą następującego polecenia.

Ubuntu@ubuntu: ~ $ sudo apt -get instaluj vsftpd -y

Na koniec sprawdź instalację, sprawdzając wersję VSFTPD za pomocą następującego polecenia.

ubuntu@ubuntu: ~ $ vsftpd -v

Powyższe polecenie wyprowadzi wersję VSFTPD, jeśli instalacja się powiedzie.

FTP w trybie aktywnym

W trybie aktywnym klient FTP rozpoczyna sesję, ustanawiając połączenie kontrolne TCP z dowolnego losowego portu na komputerze klienckim do portu 21 serwera. Następnie klient rozpoczyna słuchanie w losowym porcie X dla połączenia danych i informuje serwer za pośrednictwem połączenia sterującego TCP, że klient czeka na połączenie danych na porcie x. Następnie serwer ustanawia połączenie danych z portu 20 do portu X na komputerze klienckim.

Problem może pojawić się tam, gdzie klient znajduje się za zaporą, a port X jest zablokowany. W takim przypadku serwer nie jest w stanie nawiązać połączenia danych z klientem. Aby uniknąć tego problemu, serwer FTP jest najczęściej używany w trybie pasywnym, który omówimy w dalszej części tego artykułu. Domyślnie VSFTPD używa trybu pasywnego, więc będziemy musieli zmienić go na tryb aktywny.

Najpierw otwórz plik konfiguracyjny VSFTPD.

Ubuntu@ubuntu: ~ $ sudo nano /etc /vsftpd.conf

Dodaj następujący wiersz do końca pliku.

Pasv_enable = nie

Upewnij się również, że opcja „Connect_From_Port_20” jest ustawiona na „Tak.„Ta opcja zapewnia, że ​​połączenie danych jest ustanowione na porcie 20 serwera.

Następnie utwórz katalog, którego serwer FTP użyje do przechowywania plików. W tym samouczku skonfigurujemy „/home/ubuntu/ftp/” jako ścieżkę główną dla serwera FTP.

Ubuntu@ubuntu: ~ $ sudo mkdir/home/ubuntu/ftp

Teraz określ ten katalog w pliku konfiguracyjnym, zmieniając opcję „Local_root”. Poniższy parametr skonfiguruje ścieżkę główną serwera.

local_root =/home/ubuntu/ftp

Opcja „Write_enable” musi być włączona, aby umożliwić użytkownikom zapisywanie na serwerze FTP.

Za każdym razem, gdy zmienisz plik konfiguracyjny, zawsze uruchom ponownie serwer.

Ubuntu@ubuntu: ~ $ sudo systemctl restart vsftpd

Ustawienie hasła dla użytkownika

Klient FTP łączy się z serwerem za pomocą nazwy użytkownika i hasła. Ustaw hasło dla użytkownika na komputerze za pomocą następującego polecenia.

Ubuntu@ubuntu: ~ $ sudo passwd ubuntu

Powyższe polecenie poprosi o hasło dla użytkownika „Ubuntu”.

Konfigurowanie zapory dla trybu aktywnego

Jeśli FTP jest używany w trybie aktywnym, serwer FTP użyje dwóch portów do komunikowania się z klientem, portem 21 i 22. Port 21 służy do przekazywania poleceń do klienta, a port 20 służy do przesyłania danych do dowolnego losowego portu klienta. Użyjemy UFW do skonfigurowania zapory na serwerze. Zainstaluj UFW za pomocą następującego polecenia.

Ubuntu@ubuntu: ~ $ sudo apt-get instaluj UFW

Teraz, po stronie serwera, otworzymy porty 20, 21 i 22 (dla połączenia SSH).

Ubuntu@ubuntu: ~ $ sudo ufw zezwalaj z dowolnego portu proto tcp

Włącz i sprawdź status UFW za pomocą następujących poleceń.

Ubuntu@ubuntu: ~ $ sudo ufw
Ubuntu@ubuntu: ~ $ sudo UFW status

NOTATKA: Jeśli konfigurujesz swój serwer FTP w chmurze, musisz również zezwolić na porty 20, 21 i 22 w grupie bezpieczeństwa.

OSTRZEŻENIE: Zawsze włącz port 22 wraz z wymaganymi portami, przed włączeniem UFW w systemie zdalnym. Domyślnie UFW blokuje ruch z portu 22, więc nie będziesz mógł uzyskać dostępu do zdalnego serwera za pomocą SSH, jeśli włączysz UFW bez umożliwienia ruchu z portu 22.

Instalowanie klienta FTP

Teraz nasz serwer jest skonfigurowany w trybie aktywnym i możemy uzyskać do niego dostęp ze strony klienta. Do aplikacji klienckiej użyjemy pliku, aplikacji klienta FTP. Zainstaluj FileZilla za pomocą następującego polecenia.

Ubuntu@ubuntu: ~ $ sudo apt -get instaluj filezilla -y

Otwórz aplikację klienta FTP i wprowadź publiczny adres IP i inne poświadczenia serwera FTP.

Po kliknięciu „QuickConnect” połączysz się z serwerem FTP i automatycznie zostanie przeniesiony do katalogu określonego w pliku konfiguracyjnym „local_root” w pliku konfiguracyjnym „/home/ubuntu/ftp”.

Problemy w trybie aktywnym

Korzystanie z FTP w trybie aktywnym rodzi problemy, gdy klient jest za zaporą ogniową. Po wprowadzeniu początkowych poleceń sterowania, gdy serwer tworzy połączenie danych z klientem w losowym porcie, port może zostać zablokowany przez zaporę na klienta, powodując awarię przesyłania danych. FTP może być używane w trybie pasywnym do rozwiązania problemów z zaporą zapory.

FTP w trybie pasywnym

W trybie pasywnym klient tworzy połączenie kontrolne z serwerem na porcie 21 serwera. Klient następnie wysyła specjalne polecenie „PASV”, aby poinformować serwer, że połączenie danych zostanie ustalone przez klienta zamiast serwera. W odpowiedzi klient odbiera numer IP serwera i numer losowego portu (ten numer portu zostanie skonfigurowany na serwerze). Klient używa tego adresu IP i portu do utworzenia połączenia danych z serwerem. W trybie pasywnym zarówno połączenia danych, jak i kontrolne są ustalane przez klienta, dzięki czemu zapora nie zakłóca komunikacji między klientem a serwerem.

Otwórz plik konfiguracyjny FTP w swoim ulubionym edytorze.

Ubuntu@ubuntu: ~ $ sudo nano /etc /vsftpd.conf

Ustaw opcję „Pasv_enable” na „Tak” w pliku, aby serwer mógł komunikować się z klientem w trybie pasywnym. Ustaw także opcję „Local_root”, aby określić katalog główny serwera i ustaw opcję „Write_enable” na „Tak”, aby umożliwić użytkownikom przesyłanie plików na serwer.

Jak wspomniano wcześniej, połączenie danych jest ustalane przez klienta, a serwer wysyła do klienta swój publiczny adres IP i losowy port w celu utworzenia połączenia danych. Ten losowy port na serwerze można określić z zakresu portów w pliku konfiguracyjnym.

Połączenie danych między serwerem a klientem zostanie ustanowione na porcie między 1024 a 1048. Uruchom ponownie serwer FTP po zmianie pliku konfiguracyjnego.

Ubuntu@ubuntu: ~ $ sudo systemctl restart vsftpd

Konfigurowanie zapory w trybie pasywnym

Jeśli użyjemy FTP w trybie pasywnym, połączenie danych zostanie ustanowione w dowolnym porcie od 1024 do 1048, więc konieczne jest zezwolenie na wszystkie te porty na serwerze FTP.

Ubuntu@ubuntu: ~ $ sudo ufw zezwalaj z dowolnego portu proto tcp

Po zezwoleniu na wszystkie porty w zaporze, aktywuj UFW, uruchamiając następujące polecenie.

Ubuntu@ubuntu: ~ $ sudo ufw

Zawsze zezwalaj na porty na serwerze przed włączeniem zapory; W przeciwnym razie nie będziesz mógł uzyskać dostępu do swojego serwera przez SSH jako UFW, który domyślnie blokuje port 22.

Testowanie połączenia

Teraz skonfigurowaliśmy serwer FTP w trybie pasywnym i możemy sprawdzić połączenie FTP z aplikacją klienta. Otwórz FileZilla w twoim systemie, aby to zrobić.

Po wejściu do hosta, nazwy użytkownika, hasła i portu, teraz możesz połączyć się z serwerem. Teraz, gdy jesteś podłączony do serwera FTP działającego w trybie pasywnym, możesz przesyłać pliki do serwera.

Konfigurowanie certyfikatów SSL z serwerem FTP

Domyślnie serwer FTP ustanawia połączenie między klientem a serwerem nad niezabezpieczonym kanałem. Tego rodzaju komunikacja nie powinna być używana, jeśli chcesz udostępniać poufne dane między klientem a serwerem. Aby komunikować się na bezpiecznym kanale, konieczne jest użycie certyfikatów SSL.

Generowanie certyfikatów SSL

Użyjemy certyfikatów SSL, aby skonfigurować bezpieczną komunikację między klientem a serwerem. Wygenerujemy te certyfikaty za pomocą OpenSSL. Poniższe polecenie wygeneruje certyfikaty SSL dla twojego serwera.

Ubuntu@ubuntu: ~ $ sudo openssl req -x509 -nodes -Day 365 -Newkey RSA: 2048 -Keyout/etc/ssl/private/vsftpd.PEM -OUT/etc/ssl/private/vsftpd.pem

Po uruchomieniu powyższego polecenia otrzymasz kilka pytań. Po odpowiedzi na te pytania certyfikaty zostaną wygenerowane. Możesz sprawdzić certyfikaty w terminalu.

Ubuntu@ubuntu: ~ $ sudo ls/etc/ssl/private/

Korzystanie z certyfikatów w pliku konfiguracyjnym

Teraz nasze certyfikaty są gotowe do użycia. Skonfigurujemy „VSFTPD.plik CONF, aby użyć certyfikatów SSL do komunikacji. Otwórz plik konfiguracyjny za pomocą następującego polecenia.

Ubuntu@ubuntu: ~ $ sudo nano /etc /vsftpd.conf

Dodaj następujące wiersze na koniec plików. Zmiany te zapewnią, że serwer FTP korzysta z nowo wygenerowanych certyfikatów SSL do bezpiecznej komunikacji z klientem.

ssl_enable = tak
Force_Local_Data_SSL = NO
Force_local_logins_ssl = no
SSL_TLSV1 = Tak
SSL_SSLV2 = nie
SSL_SSLV3 = nie
rsa_cert_file =/etc/ssl/private/vsftpd.pem
rsa_private_key_file =/etc/ssl/private/vsftpd.pem

Uruchom ponownie serwer FTP, aby zastosować te zmiany.

Ubuntu@ubuntu: ~ $ sudo systemctl restart vsftpd

Po ponownym uruchomieniu serwera spróbuj połączyć się z serwerem za pomocą aplikacji klienta FileZilla. Tym razem wniosek o klienta zapyta, czy zaufać tym certyfikatom.

Jeśli masz certyfikaty z zaufanego organu ds. Certyfikatów, to ostrzeżenie nie powinno się pojawiać. Wygenerowaliśmy nasze certyfikaty za pomocą OpenSSL, które nie są zaufanym organem certyfikacyjnym, dlatego w naszym przypadku poprosił o uwierzytelnianie certyfikatów. Teraz możemy komunikować się między klientem a serwerem nad bezpiecznym kanałem.

Anonimowa konfiguracja

Możesz także włączyć anonimowy login na swoim serwerze FTP. Dzięki tej konfiguracji każdy użytkownik może zalogować się na serwerze FTP z dowolną nazwą użytkownika i hasłem. Poniższe parametry w pliku konfiguracyjnym sprawi, że serwer FTP będzie dostępny anonimowo.

Powyższa konfiguracja ustawia ścieżkę główną dla anonimowych użytkowników, aby być „/home/ubuntu/ftp/anon” i nie będzie monituje o hasło, gdy anonimowy użytkownik zaloguje się.

NOTATKA: Upewnij się, że na serwerze FTP istnieje ścieżka „/home/ubuntu/ftp/anon”.

Teraz uruchom ponownie serwer FTP.

Ubuntu@ubuntu: ~ $ sudo systemctl restart vsftpd

Po ponownym uruchomieniu serwera spróbujemy połączyć się z serwerem za pośrednictwem przeglądarki Google Chrome. Przejdź do następującego adresu URL.

ftp: // 3.8.12.52

Powyższy adres URL zabierze Cię do katalogu głównego serwera FTP, jak określono w pliku konfiguracyjnym. Z wyłączonym anonimowym loginem, gdy próbujesz połączyć się z serwerem FTP za pomocą przeglądarki, najpierw zostaniesz poproszony o uwierzytelnianie, a następnie zostaniesz przeniesiony do katalogu głównego serwera.

Skonfiguruj dostęp lokalny

Możemy również pozwolić lub zablokować lokalny dostęp do serwera FTP, zmieniając plik konfiguracyjny. Obecnie możemy uzyskać dostęp do naszego serwera FTP lokalnie bez korzystania z aplikacji klienta FTP, ale możemy zablokować ten dostęp. Aby to zrobić, musimy zmodyfikować parametr „local_enable”.

Najpierw uruchom ponownie serwer FTP.

Ubuntu@ubuntu: ~ $ sudo systemctl restart vsftpd

Po ponownym uruchomieniu serwera spróbuj uzyskać dostęp do serwera FTP lokalnie za pomocą interfejsu wiersza polecenia. Zaloguj się do swojego zdalnego serwera za pomocą SSH.

Ubuntu@ubuntu: ~ $ ssh [email protected] -I

Teraz wydaj następujące polecenie, aby zalogować się na serwerze FTP lokalnie za pomocą interfejsu wiersza polecenia.

Ubuntu@ubuntu: ~ $ ftp LocalHost

Po uruchomieniu powyższego polecenia spowoduje to błąd 500.

Wniosek

Protokół transferu plików jest używany od wielu lat do przesyłania plików i dokumentów przez Internet. VSFTPD jest jednym z pakietów używanych jako serwer FTP na twoim komputerze. VSFTPD zawiera różne konfiguracje, których można użyć do dostosowania serwera FTP. Ten samouczek pokazał, jak skonfigurować serwer FTP z TLS dla ulepszonego bezpieczeństwa. Aby dowiedzieć się więcej o konfiguracjach FTP, odwiedź następujący link.

http: // vsftpd.Bestie.org/vsftpd_conf.html