Poradnik

FTP na VPS — instalacja i lepsza alternatywa

SFTP masz od razu przez SSH. Klasyczny FTP (vsftpd) tylko gdy klient tego wymaga — z chrootem i pasywnymi portami.

FTP to stary protokół do wgrywania plików. Hasło leci często otwartym tekstem, a zapora musi puścić nie tylko port 21, ale też zakres portów pasywnych. Na VPS w 99% przypadków wystarczy SFTP — to transfer po SSH, ten sam login co do serwera, bez osobnej usługi.

Klasyczny FTP instalujesz, gdy program (stary CMS, konkretny klient) nie umie SFTP. Inaczej nie otwieraj 21 na świat.

SFTP — bez instalacji

Z FileZilli albo WinSCP wybierz protokół SFTP, host = adres VPS, port z panelu (zwykle 22), ten sam użytkownik co do SSH.

Z terminala:

sftp użytkownik@ADRES
put lokalny.txt /home/użytkownik/
get /home/użytkownik/plik.txt

Katalogi: rsync -avz ./strona/ użytkownik@ADRES:/var/www/strona/. Szybciej niż FTP przy wielu plikach.

Na hostingu WWW pliki wgrywasz przez panel / menedżer plików albo SFTP konta hostingowego — nie stawiasz vsftpd na VPS, którego nie masz.

vsftpd, gdy naprawdę potrzebujesz FTP

Debian / Ubuntu:

sudo apt update
sudo apt install -y vsftpd
sudo systemctl enable --now vsftpd

Edytuj /etc/vsftpd.conf. Sensowne minimum:

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100

Potem:

sudo systemctl restart vsftpd

Załóż osobnego użytkownika tylko do plików, nie pracuj na root przez FTP:

sudo adduser --shell /usr/sbin/nologin ftpuser
sudo mkdir -p /home/ftpuser/pliki
sudo chown ftpuser:ftpuser /home/ftpuser/pliki

nologin odcina powłokę SSH temu kontu, jeśli nie ma tam być logowania — dostosuj, gdy to samo konto ma też SSH.

Zapora

Na VPS b00ber domyślnie otwarte jest logowanie, nie FTP. Musisz puścić 21/tcp oraz 40000-40100/tcp (ten sam zakres co w pasv_*). Najpierw sudo nft list ruleset, potem dopisz reguły i zapisz je na stałe. Bez pasywnego zakresu klient w sieci za NAT „wisi” po zalogowaniu.

Nie otwieraj 20/tcp „na wszelki wypadek”, jeśli używasz tylko trybu pasywnego.

TLS i czego unikać

Zwykły FTP bez TLS wysyła hasło w sieci. Jeśli już FTP, włącz FTPS w vsftpd (certyfikat i ssl_enable=YES) albo zostań przy SFTP. Anonimowego FTP nie włączaj. Nie wiąż vsftpd z kontem, które ma sudo.

Sprawdzenie nasłuchu: ss -tlnp | grep vsftpd.

W skrócie

SFTP = SSH, zero nowej dziury. vsftpd tylko pod konkretny program: bez anonima, chroot, wąski pasywny zakres, otwarte w zaporze wyłącznie te porty. Resztę zostaw zamkniętą.

Wszystkie artykuły