Wyszukiwanie w witrynie

Konfigurowanie bezpiecznego serwera FTP przy użyciu protokołu SSL/TLS w systemie Ubuntu


W tym samouczku opiszemy, jak zabezpieczyć serwer FTP (VSFTPD oznacza „Very Secure FTP Daemon”) przy użyciu SSL /TLS w Ubuntu 16.04/16.10.

Jeśli chcesz skonfigurować bezpieczny serwer FTP dla dystrybucji opartych na CentOS, możesz przeczytać – Zabezpiecz serwer FTP za pomocą SSL/TLS w CentOS

Po wykonaniu różnych kroków opisanych w tym przewodniku nauczymy się podstaw włączania usług szyfrowania na serwerze FTP w celu zapewnienia bezpiecznego przesyłania danych.

Wymagania

  1. Musisz zainstalować i skonfigurować serwer FTP w Ubuntu

Zanim przejdziemy dalej, upewnij się, że wszystkie polecenia opisane w tym artykule zostaną uruchomione na koncie uprzywilejowanym root lub sudo.

Krok 1: Generowanie certyfikatu SSL/TLS dla FTP na Ubuntu

1. Zaczniemy od utworzenia podkatalogu w: /etc/ssl/ do przechowywania certyfikatu SSL/TLS i plików kluczy, jeśli tak się nie stanie nie istnieje:

sudo mkdir /etc/ssl/private

2. Teraz wygenerujmy certyfikat i klucz w jednym pliku, uruchamiając poniższe polecenie.

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

Powyższe polecenie poprosi Cię o udzielenie odpowiedzi na poniższe pytania. Nie zapomnij wpisać wartości, które mają zastosowanie w Twoim scenariuszu.

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email 

Krok 2: Konfigurowanie VSFTPD do korzystania z protokołu SSL/TLS w systemie Ubuntu

3. Zanim wykonamy jakąkolwiek konfigurację VSFTPD, dla tych, którzy mają włączoną zaporę UFW, należy otworzyć porty 990 i 40000 -50000, aby umożliwić ustawienie połączeń TLS i zakresu portów pasywnych w pliku konfiguracyjnym VSFTPD:

sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw status

4. Teraz otwórz plik konfiguracyjny VSFTPD i zdefiniuj w nim szczegóły protokołu SSL:

sudo vi /etc/vsftpd/vsftpd.conf
OR
sudo nano /etc/vsftpd/vsftpd.conf

Następnie dodaj lub zlokalizuj opcję ssl_enable i ustaw jej wartość na YES, aby aktywować użycie SSL, ponieważ TLS jest bezpieczniejszy niż SSL, ograniczymy VSFTPD do zamiast tego użyj TLS, włączając opcję ssl_tlsv1:

ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. Następnie skomentuj poniższe wiersze, używając znaku # w następujący sposób:

#rsa_cert_file=/etc/ssl/private/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Następnie dodaj poniższe linie, aby określić lokalizację certyfikatu SSL i pliku klucza:

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

6. Teraz musimy także uniemożliwić anonimowym użytkownikom korzystanie z protokołu SSL, a następnie zmusić wszystkie nieanonimowe logowania do korzystania z bezpiecznego połączenia SSL do przesyłania danych i wysyłania hasła podczas logowania:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Ponadto możemy skorzystać z poniższych opcji, aby dodać więcej funkcji bezpieczeństwa na serwerze FTP. W przypadku opcji require_ssl_reuse=YES wszystkie połączenia danych SSL muszą wykazywać ponowne wykorzystanie sesji SSL; udowadniając, że znają ten sam główny sekret, co kanał kontrolny. Powinniśmy więc to wyłączyć.

require_ssl_reuse=NO

Dodatkowo możemy ustawić, które szyfry SSL VSFTPD pozwolą na szyfrowane połączenia SSL za pomocą opcji ssl_ciphers. Pomoże to udaremnić wszelkie wysiłki atakujących próbujących wymusić określony szyfr, w którym prawdopodobnie odkryli luki:

ssl_ciphers=HIGH

8. Następnie zdefiniujmy zakres portów (min. i maks.) portów pasywnych.

pasv_min_port=40000
pasv_max_port=50000

9. Aby włączyć debugowanie SSL, co oznacza, że diagnostyka połączenia openSSL jest rejestrowana w pliku dziennika VSFTPD, możemy użyć opcji debug_ssl:

debug_ssl=YES

Na koniec zapisz plik i zamknij go. Następnie uruchom ponownie usługę VSFTPD:

systemctl restart vsftpd

Krok 3: Zweryfikuj FTP za pomocą połączeń SSL/TLS w systemie Ubuntu

10. Po wykonaniu wszystkich powyższych konfiguracji sprawdź, czy VSFTPD używa teraz połączeń SSL/TLS, próbując użyć protokołu FTP z wiersza poleceń, jak poniżej.

W wynikach poniżej pojawia się komunikat o błędzie informujący nas, że VSFTPD może zezwalać użytkownikom (nieanonimowym) tylko na logowanie się z bezpiecznych klientów obsługujących usługi szyfrowania.

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

Wiersz poleceń nie obsługuje usług szyfrowania, co powoduje powyższy błąd. Dlatego, aby bezpiecznie połączyć się z serwerem FTP z włączonymi usługami szyfrowania, potrzebujemy klienta FTP domyślnie obsługującego połączenia SSL/TLS, takiego jak FileZilla.

Krok 4: Zainstaluj FileZilla na klientach, aby bezpiecznie łączyć się z FTP

FileZilla to potężny, szeroko używany wieloplatformowy klient FTP, który obsługuje FTP przez SSL/TLS i nie tylko. Aby zainstalować FileZilla na komputerze klienckim z systemem Linux, użyj następującego polecenia.

--------- On Debian/Ubuntu ---------
sudo apt-get install filezilla   

--------- On CentOS/RHEL/Fedora --------- 
yum install epel-release filezilla

--------- On Fedora 22+ --------- 
sudo dnf install filezilla

12. Po zakończeniu instalacji otwórz go i przejdź do Plik=>Menedżer witryn lub (naciśnij Ctrl+S), aby uzyskać Interfejs >Menedżera witryny poniżej.

13. Teraz zdefiniuj nazwę hosta/strony, dodaj adres IP, zdefiniuj używany protokół, szyfrowanie i typ logowania jak na zrzucie ekranu poniżej (użyj wartości, które dotyczą Twojego scenariusza):

Kliknij przycisk Nowa witryna, aby skonfigurować nowe połączenie witryna/host.

Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password	        #recommended 
User: username

14. Następnie kliknij Połącz w powyższym interfejsie, aby wprowadzić hasło, a następnie sprawdź certyfikat używany do połączenia SSL/TLS, i jeszcze raz kliknij OK, aby połączyć się z serwerem FTP:

15. Teraz powinieneś pomyślnie zalogować się do serwera FTP za pośrednictwem połączenia TLS. Sprawdź sekcję stanu połączenia, aby uzyskać więcej informacji z poniższego interfejsu.

16. Na koniec prześlijmy pliki z komputera lokalnego na serwer FTP w folderze plików, spójrz na dolną część interfejsu FileZilla, aby wyświetlić raporty dotyczące transferów plików.

To wszystko! Zawsze pamiętaj, że instalacja serwera FTP bez włączenia usług szyfrowania ma pewne konsekwencje dla bezpieczeństwa. Jak wyjaśniliśmy w tym samouczku, możesz skonfigurować serwer FTP tak, aby korzystał z połączeń SSL/TLS w celu wdrożenia zabezpieczeń w Ubuntu 16.04/16.10.

Jeśli napotkasz jakiekolwiek problemy podczas konfigurowania protokołu SSL/TLS na serwerze FTP, skorzystaj z poniższego formularza komentarza, aby podzielić się swoimi problemami lub przemyśleniami dotyczącymi tego samouczka/tematu.