Serwer FTP z wirtualnymi użytkownikami (vsftpd) – konfiguracja i bezpieczeństwo
Linux

Serwer FTP z wirtualnymi użytkownikami (vsftpd) – konfiguracja i bezpieczeństwo

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.

Serwer FTP z wirtualnymi użytkownikami (vsftpd) – konfiguracja i bezpieczeństwo
Serwer FTP z wirtualnymi użytkownikami (vsftpd) – konfiguracja i bezpieczeństwo

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.

Czytaj  Jak przeskanować sieć w poszukiwaniu aktywnych adresów IP na systemie Linux

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.

Czytaj  ProFTPD z Wymuszonym TLS – Zwiększenie Bezpieczeństwa Serwera FTP

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.

Polecane wpisy
Linux jak sprawdzić IP
Linux jak sprawdzić IP

Aby sprawdzić adres IP w systemie Linux, możesz skorzystać z kilku różnych poleceń. Oto kilka przykładów: Czytaj dalej

Przydatne Skrypty i Aliasy dla Efektywnego Korzystania z Terminala
Przydatne Skrypty i Aliasy dla Efektywnego Korzystania z Terminala

Terminal jest potężnym narzędziem, które pozwala na wykonywanie wielu zadań w systemie Linux. Jednak korzystanie z terminala może być czasem 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.