Server FTP na Debianie – vsftpd – Jako serwer publiczny i SSL (szyfrowany)

W internecie jest wiele opisów – jak zainsalować na serwerze z systemem Debian czy pochodnym, serwer FTP.
Wcześniej, używałęm ProFTPd, ale na Debianie Jessie, który obecnie jest w fazie testów, proces po prostu się wyłączał, a w logach było głucho..
Jako że czasem używam FTP na moim domowym serwerze, postanowiłem zainstalować vsftpd.

vsftpd (“Very Secure FTP Daemon”) na systemie Debian:

adduser ftp-pub --disabled-password -q
apt-get update; apt-get install vsftpd nano openssl

Serwer już jest na naszym serwerze zainstalowany, pozostaje go odpowiednio skonfigurować, pokaże jak zrobic to z obsługą szyfrowanych połączeń ( w przypadku połączenia użytkownika) a publiczny katalog bedzie bez szyfrowanego połączenia.

Taka konfiguracja działa u mnie, i jest jak najbardziej możliwa.

Generowanie certyfikatu:

openssl req -x509 -nodes -days 365 -newkey rsa:1024 \
-keyout /etc/ssl/private/vsftpd.pem \
-out /etc/ssl/private/vsftpd.pem 

Plik konfiguracyjny programu vsftpd:

nano /etc/vsftpd.conf

 

ftpd_banner="grucha.no-ip.pl / vsFTPd " ##nazwa twojego serwera

# Poziom z którego zostaje uruchomiony serwer
nopriv_user=ftp

# Uruchamianie serwera w trybie standalone, czyli osobnego procesu
listen=YES

# Okrelenie portu, na którym serwer ma nasłuchiwać
# (domylnym jest port 21, sugeruję tak zostawić)
listen_port=21

# Zabronienie na logowanie się użytkownikom anonimowym
anonymous_enable=YES

# Zezwolenie na logowanie się użytkownikom lokalnym
local_enable=YES

# Zezwolenie na zapis w katalogu użytkownika lokalnego
write_enable=YES

# Umask (w większoci serwerów używany jest 022)
local_umask=022

# limit szybkoci podawany jest w bajtach na sekundę,
# jeli jest ustawiony na 0 to brak jakiegokolwiek limitu
local_max_rate=0

# Włšczenie logowania
xferlog_enable=YES

# cieżka do pliku z logami
xferlog_file=/var/log/vsftpd.log

# Maksymalna liczba połšczonych użytkowników
max_clients=500

# Maksymalna liczba użytkowników mogących się połączyć z tego samego adresu IP
max_per_ip=20

# Banner, który będzie wyswietlany podczas logowania.
# W jego stworzeniu może być pomocny program app-misc/figlet.
banner_file=/etc/vsftpd.banner

# Ograniczenie użytkownikom do poruszania się jedynie w obrębie katalogu domowego
chroot_local_user=NO

# Katalog dla chroot'a
secure_chroot_dir=/home/

# Dodanie użytkowników, którzy mogš poruszać się poza katalogiem domowym
chroot_list_enable=NO

# Dodajemy użytkownika z przywilejami poruszania się poza katalogiem domowym np:
# echo "USER" >> /etc/chroot.list
chroot_list_file=/etc/chroot.list

# Katalog wyświetlany w przypadku logowania anonimowego
anon_root=/home/ftp-pub
no_anon_password=YES

# USTAWIENIA SSL!

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH

Postarałem się wytłumaczyć mniej więcej co oznaczają poszczególne parametry ustawień vsftpd.
Na końcu konfiguracji znajdują się parametry ustawień funkcji SSL czyli protokołu FTPS

Teraz tworzyy powitalną wiadomość pokazującą się podczas nawiązywania połączenia:

touch /etc/vsftpd.banner; touch /etc/chroot.list
echo "Witam na moim serwerze FTP" >> /etc/vsftpd.banner

Teraz przeładowujemy konfiguracje:

/etc/init.d/vsftpd restart


I dodajemy do autostartu:

update-rc.d vsftpd defaults

Jak się połączyć z serwerem FTP posiadającym certyfikat SSL ?
TotalCommander: https://pomoc.home.pl/faq/300
FlashFXP (polecam): http://ishell.pl/laczenie-sie-z-serwerem-ftp–tlsssl.html

P.S
Jeżeli nie chcesz łączyć sie poprzez SSL, wystarczy że zmieniasz

ssl_enable=YES

na

ssl_enable=NO

W wyżej podanym pliku konfiguracyjnym.