Serwer FTP z ograniczonym dostępem (vsftpd) – konfiguracja i zabezpieczenia
vsftpd (Very Secure FTP Daemon) to jeden z najczęściej używanych serwerów FTP w systemach Linux. Jego popularność wynika z wysokiego poziomu bezpieczeństwa oraz wydajności. W wielu przypadkach konieczne jest ograniczenie dostępu użytkowników do określonych katalogów, co zapobiega nieautoryzowanemu dostępowi do wrażliwych danych.
W tym artykule dowiesz się, jak:
- Skonfigurować vsftpd z ograniczonym dostępem do katalogów
- Zabezpieczyć serwer FTP przed nieautoryzowanym dostępem
- Ustawić odpowiednie prawa dostępu dla użytkowników
1. Dlaczego warto ograniczyć dostęp do katalogów?
✅ Zwiększone bezpieczeństwo – użytkownicy mają dostęp tylko do wybranych katalogów.
✅ Izolacja danych – każdy użytkownik może pracować tylko w swoim obszarze.
✅ Ochrona przed nieautoryzowanym dostępem – brak możliwości podglądu katalogów systemowych.
✅ Kontrola uprawnień – precyzyjne zarządzanie dostępem i modyfikacjami plików.
2. Instalacja i konfiguracja vsftpd
a) Instalacja serwera FTP vsftpd
Najpierw instalujemy vsftpd na systemie Ubuntu/Debian:
sudo apt update
sudo apt install vsftpd -y
Po zakończeniu instalacji sprawdzamy status usługi:
sudo systemctl status vsftpd
Jeśli serwer FTP nie jest uruchomiony, włączamy go:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
3. Tworzenie użytkowników FTP i katalogów z ograniczonym dostępem
W celu lepszego zarządzania dostępem utworzymy dedykowaną grupę ftpusers, do której będą należeć wszyscy użytkownicy FTP.
sudo groupadd ftpusers
Dodajemy nowego użytkownika ftpuser1 i przypisujemy go do grupy:
sudo useradd -m -d /home/ftpusers/ftpuser1 -s /usr/sbin/nologin -G ftpusers ftpuser1
Ustawiamy hasło dla użytkownika:
sudo passwd ftpuser1
Tworzymy katalog FTP dla użytkownika:
sudo mkdir -p /home/ftpusers/ftpuser1/ftp
Nadajemy odpowiednie uprawnienia:
sudo chown -R root:root /home/ftpusers/ftpuser1
sudo chmod 755 /home/ftpusers/ftpuser1
sudo chown -R ftpuser1:ftpusers /home/ftpusers/ftpuser1/ftp
Dzięki tym ustawieniom użytkownik ftpuser1 nie będzie mógł wychodzić poza katalog /home/ftpusers/ftpuser1/ftp
, ale nadal może przesyłać pliki do katalogu FTP.

4. Konfiguracja vsftpd z ograniczeniem dostępu
Edytujemy główny plik konfiguracyjny vsftpd:
sudo nano /etc/vsftpd.conf
Dodajemy lub modyfikujemy następujące ustawienia:
a) Włączenie trybu lokalnego użytkownika
local_enable=YES
write_enable=YES
Dzięki temu lokalni użytkownicy będą mogli się logować i przesyłać pliki.
b) Ograniczenie dostępu do katalogu użytkownika (chroot)
chroot_local_user=YES
allow_writeable_chroot=YES
To kluczowe ustawienie zabezpieczające przed wyjściem użytkowników poza przypisany katalog domowy.
c) Utworzenie listy użytkowników FTP
Dodajemy sekcję, która ograniczy dostęp tylko dla wybranych użytkowników:
userlist_enable=YES
userlist_file=/etc/vsftpd.allowed_users
userlist_deny=NO
Teraz tworzymy plik /etc/vsftpd.allowed_users
i dodajemy użytkowników FTP:
echo "ftpuser1" | sudo tee -a /etc/vsftpd.allowed_users
d) Ograniczenie dostępu do katalogów systemowych
Blokujemy dostęp do powłoki systemowej, zmieniając domyślną powłokę użytkownika:
sudo usermod -s /usr/sbin/nologin ftpuser1
Sprawdzamy, czy zmiana się powiodła:
cat /etc/passwd | grep ftpuser1
Powinno się pojawić:
ftpuser1:x:1001:1001::/home/ftpusers/ftpuser1:/usr/sbin/nologin
5. Dodatkowe zabezpieczenia
a) Ograniczenie liczby sesji FTP
Aby uniknąć nadmiernej liczby połączeń od jednego użytkownika, w pliku /etc/vsftpd.conf
dodajemy:
max_clients=10
max_per_ip=3
b) Wymuszenie trybu pasywnego
Aby uniknąć problemów z firewallem, dodajemy:
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
c) Zablokowanie dostępu anonimowego
Domyślnie vsftpd pozwala na logowanie anonimowych użytkowników, co jest niebezpieczne. Aby to wyłączyć:
anonymous_enable=NO
d) Otworzenie portów w firewallu
Jeśli korzystamy z zapory ufw
, musimy otworzyć port 21 oraz zakres dla trybu pasywnego:
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
6. Restart serwera FTP
Po dokonaniu zmian restartujemy vsftpd:
sudo systemctl restart vsftpd
Sprawdzamy status usługi:
sudo systemctl status vsftpd
7. Testowanie połączenia FTP
Możemy teraz przetestować połączenie z serwerem FTP za pomocą terminala lub klienta FTP (np. FileZilla).
Aby połączyć się przez terminal:
ftp adres_IP_serwera
Podajemy nazwę użytkownika i hasło. Jeśli konfiguracja jest poprawna, użytkownik powinien mieć dostęp tylko do swojego katalogu FTP.
Podsumowanie
Konfiguracja vsftpd z ograniczonym dostępem do katalogów pozwala na:
✅ Bezpieczne udostępnianie plików – użytkownicy FTP nie mogą przeglądać katalogów systemowych.
✅ Lepszą kontrolę nad danymi – każdy użytkownik ma własny, odseparowany katalog.
✅ Proste zarządzanie dostępem – możliwość definiowania listy dozwolonych użytkowników.
✅ Zabezpieczenie serwera – blokada powłoki systemowej i ograniczenie liczby sesji FTP.
Dzięki tej konfiguracji vsftpd staje się bardziej bezpieczny, a dostęp do plików jest ściśle kontrolowany.