FTP

Jak skonfigurować FTP z TLS w Ubuntu?

Jak skonfigurować FTP z TLS w Ubuntu?
FTP (File Transfer Protocol) służy przede wszystkim do przesyłania plików między komputerami. FTP działa w architekturze klient-serwer, w której klient prosi o plik z serwera, a serwer zwraca wymagany plik do klienta. Na komputerze klienckim do komunikacji z serwerem używana jest aplikacja klienta FTP. Możliwy jest również dostęp do serwera FTP w przeglądarce. Domyślnie FTP komunikuje się przez niezabezpieczony kanał, 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żywać FileZilla jako aplikacji klienckiej do łączenia się z serwerem FTP.

Instalowanie VSFTPD

VSFTPD (Very Secure FTP Daemon) to program służący do konfiguracji FTP na serwerze. W tym samouczku VSFTPD zostanie użyty do konfiguracji serwera FTP na komputerze. Przed zainstalowaniem VSFTPD zaktualizuj repozytoria na swoim serwerze, wydając następujące polecenie.

[ochrona poczty e-mail]:~$ sudo apt-get update -y

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

[ochrona poczty e-mail]:~$ sudo apt-get install vsftpd -y

Na koniec zweryfikuj instalację, sprawdzając wersję vsftpd za pomocą następującego polecenia.

[ochrona poczty e-mail]:~$ vsftpd -v

Powyższe polecenie wyświetli wersję vsftpd, jeśli instalacja się powiedzie.

FTP w trybie aktywnym

W trybie aktywnym klient FTP rozpoczyna sesję, ustanawiając połączenie sterujące TCP z dowolnego losowego portu na komputerze klienta do portu 21 serwera. Następnie klient zaczyna nasłuchiwać na losowym porcie X dla połączenia danych i informuje serwer poprzez połączenie TCP Control, że klient czeka na połączenie danych na porcie X. Następnie serwer nawiązuje połączenie danych ze swojego portu 20 do portu X na komputerze klienckim.

Problem może pojawić się, gdy klient znajduje się za zaporą sieciową, 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 używany głównie 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.

[ochrona poczty e-mail]:~$ sudo nano /etc/vsftpd.konf

Dodaj następujący wiersz na końcu 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 nawiązywane na porcie 20 serwera.

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

[ochrona poczty e-mail]:~$ 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 pisanie na serwerze FTP.

Za każdym razem, gdy zmieniasz plik konfiguracyjny, zawsze restartuj serwer.

[ochrona poczty e-mail]:~$ sudo systemctl restart vsftpd

Ustawianie 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 urządzeniu za pomocą następującego polecenia.

[chroniony adres e-mail]: ~ $ sudo passwd ubuntu

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

Konfiguracja zapory w trybie aktywnym

Jeśli FTP jest używany w trybie aktywnym, serwer FTP użyje dwóch portów do komunikacji z klientem, portów 21 i 22. Port 21 służy do przekazywania poleceń klientowi, 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.

[ochrona poczty e-mail]:~$ sudo apt-get install ufw

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

[email protected]:~$ sudo ufw zezwalaj z dowolnego na dowolny port proto tcp

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

[ochrona poczty e-mail]: ~ $ sudo ufw włącz
[email chroniony]:~$ status sudo ufw

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

OSTRZEŻENIE: Zawsze włączaj port 22 wraz z wymaganymi portami przed włączeniem ufw na zdalnym systemie. 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 zezwolenia na ruch z portu 22.

Instalowanie klienta FTP

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

[ochrona poczty e-mail]:~$ sudo apt-get install filezilla -y

Otwórz aplikację klienta FTP i wprowadź publiczny adres IP oraz inne dane uwierzytelniające serwera FTP.

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

Problemy w trybie aktywnym

Korzystanie z FTP w trybie aktywnym powoduje problemy, gdy klient znajduje się za zaporą sieciową. Po wprowadzeniu początkowych poleceń sterujących, gdy serwer tworzy połączenie danych z klientem na losowym porcie, port może zostać zablokowany przez zaporę sieciową na kliencie, powodując niepowodzenie transmisji danych. FTP może być używany w trybie pasywnym, aby rozwiązać te problemy z zaporą sieciową.

FTP w trybie pasywnym

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

Otwórz plik konfiguracyjny FTP w swoim ulubionym edytorze.

[ochrona poczty e-mail]:~$ sudo nano /etc/vsftpd.konf

Ustaw opcję „pasv_enable” na „TAK” w pliku, aby serwer mógł komunikować się z klientem w trybie pasywnym. Ustaw również 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 nawiązywane przez klienta, a serwer wysyła swój publiczny adres IP i losowy port do klienta 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 nawiązane na porcie między 1024 a 1048. Zrestartuj serwer FTP po zmianie pliku konfiguracyjnego.

[ochrona poczty e-mail]:~$ sudo systemctl restart vsftpd

Konfiguracja zapory w trybie pasywnym

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

[email protected]:~$ sudo ufw zezwalaj z dowolnego na dowolny port proto tcp

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

[ochrona poczty e-mail]: ~ $ sudo ufw włącz

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

Testowanie połączenia

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

Po wprowadzeniu hosta, nazwy użytkownika, hasła i portu możesz teraz połączyć się ze swoim serwerem. Teraz, gdy jesteś połączony z serwerem FTP działającym w trybie pasywnym, możesz przesyłać pliki na serwer.

Konfiguracja certyfikatów SSL z serwerem FTP

Domyślnie serwer FTP nawiązuje połączenie między klientem a serwerem przez niezabezpieczony kanał. Ten rodzaj komunikacji nie powinien być używany, jeśli chcesz udostępniać poufne dane między klientem a serwerem. Aby komunikować się przez bezpieczny kanał, 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. Następujące polecenie wygeneruje certyfikaty SSL dla twojego serwera.

[ochrona poczty e-mail]:~$ 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 zostaniesz poproszony o kilka pytań. Po udzieleniu odpowiedzi na te pytania zostaną wygenerowane certyfikaty. Certyfikaty możesz sprawdzić w terminalu.

[ochrona poczty e-mail]:~$ sudo ls /etc/ssl/private/

Korzystanie z certyfikatów w pliku konfiguracyjnym

Teraz nasze certyfikaty są gotowe do użycia. Skonfigurujemy 'vsftpd.conf', aby używać certyfikatów SSL do komunikacji. Otwórz plik konfiguracyjny za pomocą następującego polecenia.

[ochrona poczty e-mail]:~$ sudo nano /etc/vsftpd.konf

Dodaj następujące wiersze na końcu plików. Zmiany te zapewnią, że serwer FTP będzie używał nowo wygenerowanych certyfikatów SSL do bezpiecznej komunikacji z klientem.

ssl_enable=TAK
force_local_data_ssl=NIE
force_local_logins_ssl=NIE
ssl_tlsv1=TAK
ssl_sslv2=NIE
ssl_sslv3=NIE
rsa_cert_file=/etc/ssl/prywatny/vsftpd.Pem
rsa_private_key_file=/etc/ssl/prywatny/vsftpd.Pem

Uruchom ponownie serwer FTP, aby zastosować te zmiany.

[ochrona poczty e-mail]:~$ sudo systemctl restart vsftpd

Po ponownym uruchomieniu serwera spróbuj połączyć się z serwerem za pomocą aplikacji klienckiej FileZilla. Tym razem aplikacja kliencka zapyta, czy ufać tym certyfikatom.

Jeśli masz certyfikaty z zaufanego urzędu certyfikacji, to ostrzeżenie nie powinno się pojawiać. Nasze certyfikaty wygenerowaliśmy za pomocą openssl, który nie jest zaufanym urzędem certyfikacji, dlatego w naszym przypadku poprosił o uwierzytelnienie certyfikatu. Teraz możemy komunikować się między klientem a serwerem przez bezpieczny kanał.

Konfiguracja anonimowa

Możesz także włączyć anonimowe logowanie na swoim serwerze FTP. Po włączeniu tej konfiguracji każdy użytkownik może zalogować się do serwera FTP za pomocą dowolnej nazwy użytkownika i hasła. Następujące parametry w pliku konfiguracyjnym sprawią, że serwer FTP będzie dostępny anonimowo.

Powyższa konfiguracja ustawia ścieżkę root dla anonimowych użytkowników na '/home/ubuntu/ftp/anon' i nie będzie pytać o hasło podczas logowania anonimowego użytkownika.

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

Teraz uruchom ponownie serwer FTP.

[ochrona poczty e-mail]:~$ sudo systemctl restart vsftpd

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

ftp://3.8.12.52

Powyższy adres URL przeniesie Cię do katalogu głównego serwera FTP, określonego w pliku konfiguracyjnym. Przy wyłączonym logowaniu anonimowym przy próbie połączenia się z serwerem FTP za pomocą przeglądarki najpierw zostaniesz poproszony o uwierzytelnienie, a następnie zostaniesz przeniesiony do katalogu głównego serwera.

Skonfiguruj dostęp lokalny

Możemy również zezwolić 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.

[ochrona poczty e-mail]:~$ sudo systemctl restart vsftpd

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

[chroniony adres e-mail]:~$ ssh [email protected] -i

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

[email chroniony]:~$ ftp localhost

Po uruchomieniu powyższego polecenia zostanie wyświetlony błąd 500.

Wniosek

Protokół przesyłania plików jest używany od wielu lat do przesyłania plików i dokumentów przez Internet. VSFTPD to jeden 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 FTP. Ten samouczek pokazał, jak skonfigurować serwer FTP z TLS w celu zwiększenia bezpieczeństwa. Aby dowiedzieć się więcej o konfiguracjach FTP, odwiedź poniższy link.

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

Gry Jak korzystać z GameConqueror Cheat Engine w systemie Linux
Jak korzystać z GameConqueror Cheat Engine w systemie Linux
Artykuł zawiera przewodnik dotyczący korzystania z silnika oszukującego GameConqueror w systemie Linux. Wielu użytkowników, którzy grają w gry w syste...
Gry Najlepsze emulatory konsoli do gier dla systemu Linux
Najlepsze emulatory konsoli do gier dla systemu Linux
W tym artykule wymienimy popularne oprogramowanie do emulacji konsoli do gier dostępne dla systemu Linux. Emulacja to warstwa kompatybilności oprogram...
Gry Najlepsze dystrybucje Linuksa do gier w 2021 r
Najlepsze dystrybucje Linuksa do gier w 2021 r
System operacyjny Linux przeszedł długą drogę od pierwotnego, prostego, serwerowego wyglądu. Ten system operacyjny znacznie się poprawił w ostatnich l...