Wyszukiwanie w witrynie

Bezpieczne połączenia ProFTPD przy użyciu protokołu TLS/SSL w systemie RHEL/CentOS 7


Ze swej natury protokół FTP został zaprojektowany jako protokół niepewny, a wszystkie dane i hasła są przesyłane w postaci zwykłego tekstu, co sprawia, że osobie trzeciej bardzo łatwo jest przechwycić wszystkie transakcje klient-serwer FTP, zwłaszcza nazwy użytkowników i hasła używane w procesie uwierzytelniania.

Wymagania

  1. Instalowanie serwera ProFTPD na RHEL/CentOS 7
  2. Włącz konto anonimowe dla serwera Proftpd w RHEL/CentOS 7

W tym samouczku dowiesz się, jak zabezpieczyć i zaszyfrować komunikację FTP na serwerze ProFTPd w systemie CentOS/RHEL 7 , używając TLS (Transport Layer Security) z jawnym rozszerzeniem FTPS (pomyśl o FTPS tak, jak HTTPS dla protokołu HTTP).

Krok 1: Utwórz plik konfiguracyjny modułu Proftpd TLS

1. Jak omówiono w poprzednim samouczku Proftpd dotyczącym konta Anonymous, w tym przewodniku będzie również stosowane to samo podejście do zarządzania przyszłymi plikami konfiguracyjnymi Proftpd jako modułami, za pomocą enabled_mod i < b>disabled_mod, w których będą znajdować się wszystkie rozszerzone możliwości serwera.

Utwórz więc nowy plik w swoim ulubionym edytorze tekstu o nazwie tls.conf w ścieżce disabled_mod Proftpd i dodaj następujące dyrektywy.

nano /etc/proftpd/disabled_mod/tls.conf

Dodaj następujący fragment konfiguracji pliku TLS.

<IfModule mod_tls.c>
TLSEngine                               on
TLSLog                                  /var/log/proftpd/tls.log
TLSProtocol                             SSLv23
 
TLSRSACertificateFile                   /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile                /etc/ssl/private/proftpd.key

#TLSCACertificateFile                                     /etc/ssl/certs/CA.pem
TLSOptions                      NoCertRequest EnableDiags NoSessionReuseRequired
TLSVerifyClient                         off
TLSRequired                             on
TLSRenegotiate                          required on
</IfModule>

2. Jeśli używasz przeglądarek lub klientów FTP, które nie obsługują połączeń TLS, skomentuj wiersz TLSRRequired on, aby zezwolić na jednoczesne połączenia TLS i inne niż TLS oraz uniknąć komunikatu o błędzie, jak na zrzucie ekranu poniżej.

Krok 2: Utwórz pliki certyfikatów SSL dla TLS

3. Po utworzeniu pliku konfiguracyjnego modułu TLS. który umożliwi FTP przez TLS na Proftpd, musisz wygenerować Certyfikat i Klucz SSL, aby móc korzystać z bezpiecznej komunikacji przez Serwer ProFTPD za pomocą pakietu OpenSSL.

yum install openssl

Możesz użyć jednego długiego polecenia, aby wygenerować pary certyfikatów SSL i kluczy, ale aby uprościć sprawę, możesz utworzyć prosty skrypt bash, który wygeneruje pary SSL o żądanej nazwie i przypisze odpowiednie uprawnienia do pliku klucza.

Utwórz plik bash o nazwie proftpd_gen_ssl w /usr/local/bin/ lub w dowolnej innej wykonywalnej ścieżce systemowej (zdefiniowanej przez zmienną #96 PATH ).

nano /usr/local/bin/proftpd_gen_ssl

Dodaj do niego następującą treść.

#!/bin/bash
echo -e "\nPlease enter a name for your SSL Certificate and Key pairs:"
read name
 openssl req -x509 -newkey rsa:1024 \
          -keyout /etc/ssl/private/$name.key -out /etc/ssl/certs/$name.crt \
          -nodes -days 365\

 chmod 0600 /etc/ssl/private/$name.key

4. Po utworzeniu powyższego pliku nadaj mu uprawnienia do wykonywania, upewnij się, że istnieje katalog /etc/ssl/private i uruchom skrypt w celu utworzenia certyfikatu i klucza SSL pary.

chmod +x /usr/local/bin/proftpd_gen_ssl
mkdir -p /etc/ssl/private
proftpd_gen_ssl

Podaj certyfikat SSL z wymaganymi informacjami, które są oczywiste, ale zwróć uwagę na Nazwę zwyczajową, aby odpowiadała W pełni kwalifikowanej nazwie domeny Twojego hostaFQDN b>.

Krok 3: Włącz TLS na serwerze ProFTPD

5. Ponieważ utworzony wcześniej plik konfiguracyjny TLS wskazuje już właściwy plik certyfikatu i klucza SSL, pozostaje jedynie aktywować moduł TLS poprzez utworzenie łącza symbolicznego tls.conf do katalogu enabled-mod i uruchom ponownie demona ProFTPD, aby zastosować zmiany.

ln -s /etc/proftpd/disabled_mod/tls.conf  /etc/proftpd/enabled_mod/
systemctl restart proftpd

6. Aby wyłączyć moduł TLS, po prostu usuń dowiązanie symboliczne tls.conf z katalogu enabled_mod i zrestartuj serwer ProFTPD, aby zastosować zmiany.

rm /etc/proftpd/enabled_mod/tls.conf
systemctl restart proftpd

Krok 4: Otwórz zaporę sieciową, aby umożliwić komunikację FTP przez TLS

7. Aby klienci mogli uzyskać dostęp do ProFTPD i bezpiecznie przesyłać pliki w Trybie pasywnym, musisz otworzyć cały zakres portów pomiędzy 1024 a 65534 w zaporze RHEL/CentOS, używając następujących poleceń.

firewall-cmd --add-port=1024-65534/tcp  
firewall-cmd --add-port=1024-65534/tcp --permanent
firewall-cmd --list-ports
firewall-cmd --list-services
firewall-cmd --reload

Otóż to. Teraz Twój system jest gotowy do akceptowania komunikacji FTP przez TLS ze strony Klienta.

Krok 5: Uzyskaj dostęp do ProFTPD przez TLS od klientów

8. Przeglądarki internetowe zwykle nie mają wbudowanej obsługi protokołu FTP przez TLS, więc wszystkie transakcje są dostarczane przez niezaszyfrowany protokół FTP. Jednym z najdoskonalszych klientów FTP jest FileZilla, który jest w całości oprogramowaniem typu open source i może działać na prawie wszystkich głównych systemach operacyjnych.

Aby uzyskać dostęp do FTP przez TLS z FileZilla, otwórz Menedżera witryny, wybierz FTP w Protokole i Wymagaj jawnego FTP przez TLS w Z menu rozwijanego Szyfrowanie wybierz Typ logowania jako Normalny, wprowadź dane uwierzytelniające FTP i naciśnij Połącz, aby się połączyć z serwerem.

9. Jeśli łączysz się z serwerem ProFTPD po raz pierwszy, powinno pojawić się wyskakujące okienko z nowym certyfikatem, zaznacz pole z informacją Zawsze ufaj certyfikatowi na przyszłość sesje i naciśnij OK, aby zaakceptować certyfikat i uwierzytelnić się na serwerze ProFTPD.

Jeśli planujesz używać innych klientów niż FileZilla do bezpiecznego dostępu do zasobów FTP, upewnij się, że obsługują one protokół FTP przez TLS. Dobrymi przykładami klientów FTP posługujących się protokołem FTPS są WinSCP dla platform Windows i gFTP lub LFTP (wiersz poleceń) dla NIX.