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.

2. Instalacja vsftpd i OpenSSL
Najpierw należy zainstalować serwer vsftpd oraz narzędzie do generowania certyfikatów OpenSSL.
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).
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:
- Otwórz FileZilla.
- Wpisz:
- Host:
ftps://adres_IP_serwera
- Nazwa użytkownika:
ftpuser
- Hasło:
ustawione_hasło
- Port:
21
- Host:
- W zakładce Szyfrowanie wybierz Wymagaj użycia FTP przez TLS.
- 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.