Serwer FTP z wirtualnymi użytkownikami (vsftpd) – konfiguracja i bezpieczeństwo
vsftpd (Very Secure FTP Daemon) to jeden z najbezpieczniejszych i najwydajniejszych serwerów FTP dla systemów Linux. W domyślnej konfiguracji wymaga kont systemowych do autoryzacji użytkowników, co nie zawsze jest pożądane. Lepszym rozwiązaniem jest użycie wirtualnych użytkowników, którzy nie mają dostępu do systemu operacyjnego, ale mogą korzystać z FTP.
W tym artykule omówimy:
- Tworzenie serwera FTP z wirtualnymi użytkownikami
- Konfigurację plikowej bazy użytkowników
- Zabezpieczenia i kontrolę dostępu
1. Dlaczego warto używać wirtualnych użytkowników FTP?
✅ Bezpieczeństwo – użytkownicy nie posiadają kont w systemie, co eliminuje ryzyko włamań.
✅ Lepsza kontrola dostępu – można precyzyjnie ustalić uprawnienia dla każdego użytkownika.
✅ Łatwe zarządzanie – dodawanie użytkowników nie wymaga modyfikacji systemowych kont.
✅ Mniejsze obciążenie systemu – brak potrzeby tworzenia fizycznych kont użytkowników.

2. Instalacja vsftpd i wymaganych narzędzi
Na początku instalujemy vsftpd oraz libpam-pwdfile, które umożliwia autoryzację użytkowników FTP za pomocą plikowej bazy danych.
sudo apt update
sudo apt install vsftpd libpam-pwdfile -y
Po zakończeniu instalacji warto sprawdzić status serwera FTP:
sudo systemctl status vsftpd
Jeśli usługa nie działa, uruchamiamy ją:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
3. Tworzenie plikowej bazy użytkowników
a) Dodanie użytkowników do pliku haseł
Tworzymy katalog, w którym będziemy przechowywać listę użytkowników FTP:
sudo mkdir /etc/vsftpd
Dodajemy użytkownika ftpuser1 z hasłem:
sudo htpasswd -c /etc/vsftpd/ftpusers.db ftpuser1
System poprosi o podanie hasła dla nowego użytkownika.
Jeśli chcemy dodać kolejnych użytkowników, używamy:
sudo htpasswd /etc/vsftpd/ftpusers.db ftpuser2
Plik /etc/vsftpd/ftpusers.db zawiera listę wirtualnych użytkowników i ich zaszyfrowane hasła.
b) Konfiguracja PAM dla vsftpd
Tworzymy nowy plik vsftpd-virtual w katalogu PAM:
sudo nano /etc/pam.d/vsftpd-virtual
Dodajemy następującą konfigurację:
auth required pam_pwdfile.so pwdfile=/etc/vsftpd/ftpusers.db
account required pam_permit.so
Zapisujemy zmiany (Ctrl + X, potem Y i Enter).
4. Konfiguracja vsftpd dla wirtualnych użytkowników
Edytujemy główny plik konfiguracyjny vsftpd:
sudo nano /etc/vsftpd.conf
Dodajemy lub modyfikujemy następujące ustawienia:
a) Wyłączenie dostępu dla rzeczywistych użytkowników
local_enable=YES
virtual_use_local_privs=YES
guest_enable=YES
guest_username=ftp
b) Wskazanie modułu PAM dla wirtualnych użytkowników
pam_service_name=vsftpd-virtual
c) Włączenie trybu „chroot” (użytkownicy będą mieli dostęp tylko do swojego katalogu)
chroot_local_user=YES
allow_writeable_chroot=YES
d) Utworzenie osobnych katalogów dla użytkowników
Każdy użytkownik powinien mieć własny katalog, np.:
sudo mkdir -p /home/ftpusers/ftpuser1
sudo mkdir -p /home/ftpusers/ftpuser2
Ustawiamy odpowiednie uprawnienia:
sudo chown -R ftp:ftp /home/ftpusers
sudo chmod -R 750 /home/ftpusers
Każdy nowo dodany użytkownik FTP będzie miał dostęp tylko do własnego katalogu.
Zapisujemy zmiany i restartujemy vsftpd:
sudo systemctl restart vsftpd
5. Testowanie połączenia FTP
Aby sprawdzić, czy konfiguracja działa poprawnie, możemy użyć FileZilla lub wbudowanego polecenia ftp:
Test połączenia przez terminal:
ftp adres_IP_serwera
Podajemy nazwę użytkownika (ftpuser1) i hasło. Jeśli konfiguracja jest poprawna, powinien pojawić się dostęp do katalogu użytkownika.
6. Opcjonalne zabezpieczenia
a) Blokowanie dostępu do powłoki systemowej
Ponieważ wirtualni użytkownicy nie powinni logować się do systemu, dodajemy ich do /etc/ftpusers:
echo "ftpuser1" | sudo tee -a /etc/ftpusers
echo "ftpuser2" | sudo tee -a /etc/ftpusers
b) Ograniczenie liczby połączeń
W vsftpd.conf możemy ustawić limity:
max_clients=10
max_per_ip=3
c) Otworzenie portów w firewallu
Jeśli korzystamy z zapory ufw, otwieramy porty FTP:
sudo ufw allow 21/tcp
Dla pasywnego FTP otwieramy zakres portów:
sudo ufw allow 40000:50000/tcp
Podsumowanie
Konfiguracja serwera vsftpd z wirtualnymi użytkownikami pozwala na:
✅ Bezpieczny dostęp do FTP bez konieczności tworzenia kont systemowych.
✅ Lepszą kontrolę dostępu do plików – każdy użytkownik ma własny katalog.
✅ Łatwe zarządzanie użytkownikami – dodawanie nowych użytkowników jest szybkie i wygodne.
Jest to idealne rozwiązanie dla firm i administratorów, którzy chcą udostępniać pliki klientom lub pracownikom w sposób bezpieczny i wydajny.






