Bezpieczny serwer FTP (vsftpd z SSL/TLS) – szyfrowanie i konfiguracja
Linux

Bezpieczny serwer FTP (vsftpd z SSL/TLS) – szyfrowanie i konfiguracja

Bezpieczny serwer FTP (vsftpd z SSL/TLS) – szyfrowanie i konfiguracja

Bezpieczeństwo w transmisji danych to kluczowy element każdej infrastruktury IT. Protokół FTP, choć popularny, w swojej podstawowej formie nie zapewnia szyfrowania, co naraża przesyłane dane na przechwycenie. Rozwiązaniem tego problemu jest konfiguracja vsftpd (Very Secure FTP Daemon) z wykorzystaniem protokołu SSL/TLS, który szyfruje dane przesyłane między klientem a serwerem.

W tym artykule przedstawimy, jak skonfigurować bezpieczny serwer FTP z SSL/TLS, generować certyfikaty oraz zwiększyć bezpieczeństwo transmisji danych.


1. Dlaczego warto używać FTP z SSL/TLS?

Szyfrowana transmisja – zapobiega podsłuchiwaniu danych przez niepowołane osoby.
Zabezpieczone logowanie – dane uwierzytelniające nie są przesyłane jako otwarty tekst.
Kompatybilność – większość klientów FTP obsługuje SSL/TLS, np. FileZilla.
Prosty sposób na zwiększenie bezpieczeństwa – konfiguracja jest łatwa i nie wymaga dużych zasobów systemowych.

Wymaga certyfikatów SSL/TLS – trzeba je wygenerować lub uzyskać od zaufanego urzędu certyfikacji.
Mniejsza wydajnośćszyfrowanie danych może zwiększyć obciążenie serwera.

Bezpieczny serwer FTP (vsftpd z SSL/TLS) – szyfrowanie i konfiguracja
Bezpieczny serwer FTP (vsftpd z SSL/TLS) – szyfrowanie i konfiguracja

2. Instalacja vsftpd i OpenSSL

Najpierw należy zainstalować serwer vsftpd oraz narzędzie do generowania certyfikatów OpenSSL.

W systemach Debian/Ubuntu:

sudo apt update
sudo apt install vsftpd openssl -y

W systemach CentOS/RHEL:

sudo dnf install vsftpd openssl -y

W systemie Arch Linux:

sudo pacman -S vsftpd openssl

Po instalacji warto sprawdzić status usługi:

sudo systemctl status vsftpd

Jeśli serwer nie działa, uruchamiamy go:

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

3. Generowanie certyfikatu SSL/TLS

vsftpd wymaga certyfikatu do szyfrowania połączeń. Możemy użyć własnego certyfikatu samopodpisanego lub uzyskać certyfikat od zaufanego urzędu certyfikacji (np. Let’s Encrypt).

Czytaj  Serwer FTP z anonimowym dostępem (vsftpd) – konfiguracja i bezpieczeństwo

Aby utworzyć samopodpisany certyfikat dla serwera FTP, wykonujemy następujące kroki:

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

Podczas generowania certyfikatu należy podać podstawowe informacje, np.:

  • Country Name (PL – Polska)
  • State or Province Name
  • Locality Name
  • Organization Name
  • Common Name (nazwa serwera, np. ftp.mojadomena.com)

Po wygenerowaniu certyfikat będzie znajdować się w /etc/ssl/private/vsftpd.pem.


4. Konfiguracja vsftpd z SSL/TLS

Teraz edytujemy plik konfiguracyjny vsftpd:

sudo nano /etc/vsftpd.conf

Dodajemy lub modyfikujemy następujące linie:

a) Włączenie obsługi SSL/TLS

ssl_enable=YES

b) Wskazanie ścieżki do certyfikatu SSL/TLS

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

c) Wymuszenie szyfrowania dla logowania i transferu plików

force_local_logins_ssl=YES
force_local_data_ssl=YES

d) Ustawienia trybu TLS

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

e) Ograniczenie dostępu do określonych użytkowników

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

Tworzymy plik vsftpd.user_list i dodajemy do niego użytkowników, którzy mają dostęp:

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

f) Tryb pasywny (opcjonalnie)

Jeśli używasz trybu pasywnego, dodaj:

pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000

Zapisujemy zmiany (Ctrl + X, potem Y i Enter) i restartujemy serwer:

sudo systemctl restart vsftpd

5. Testowanie połączenia z klientem FTP

Aby sprawdzić, czy serwer działa, możemy użyć klienta FTP, np. FileZilla:

  1. Otwórz FileZilla.
  2. Wpisz:
    • Host: ftps://adres_IP_serwera
    • Nazwa użytkownika: ftpuser
    • Hasło: ustawione_hasło
    • Port: 21
  3. W zakładce Szyfrowanie wybierz Wymagaj użycia FTP przez TLS.
  4. Połącz się z serwerem.

Jeśli wszystko działa poprawnie, FileZilla wyświetli komunikat o bezpiecznym połączeniu.


6. Dodatkowe zabezpieczenia serwera FTP

Aby zwiększyć bezpieczeństwo serwera FTP, warto zastosować dodatkowe środki:

a) Blokowanie dostępu dla użytkownika root

ftp_username=root

b) Ustawienie limitu połączeń

max_clients=5
max_per_ip=3

c) Zabezpieczenie firewalla

Otwieramy porty dla FTP i TLS (jeśli używamy trybu pasywnego):

sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp

Podsumowanie

Konfiguracja vsftpd z SSL/TLS pozwala na bezpieczną transmisję plików i szyfrowanie połączenia FTP. Dzięki wykorzystaniu certyfikatów SSL/TLS możemy chronić dane przed przechwyceniem, zapewniając większe bezpieczeństwo użytkownikom. Warto pamiętać, że vsftpd obsługuje różne mechanizmy zabezpieczeń, ale w przypadku wrażliwych danych lepiej rozważyć użycie SFTP (SSH File Transfer Protocol), który oferuje natywne szyfrowanie.

Czytaj  Plik CSR w certyfikacie SSL — co to jest, do czego służy i jak go wygenerować
Polecane wpisy
Czym Są Prawa Dostępu w Linuxie i Jak z Nimi Pracować
Czym Są Prawa Dostępu w Linuxie i Jak z Nimi Pracować

W systemie Linux, prawa dostępu do plików i katalogów określają, kto może wykonywać na nich różne operacje. Prawa te są Czytaj dalej

Hardenizacja serwera Linux
Hardenizacja serwera Linux

Hardenizacja serwera Linux: przewodnik krok po kroku Hardenizacja serwera Linux ma na celu wzmocnienie jego bezpieczeństwa i zmniejszenie podatności na Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.