[HOWTO] VSFTPD - server / wirtualni użytkownicy / szyfrowanie- TLS/SSL

Awatar użytkownika
kobrawerde
Wytworny Kaczor
Wytworny Kaczor
Posty: 460
Rejestracja: 10 wrz 2006, 16:00
Płeć: Mężczyzna
Wersja Ubuntu: 18.04
Środowisko graficzne: MATE
Architektura: x86_64

[HOWTO] VSFTPD - server / wirtualni użytkownicy / szyfrowanie- TLS/SSL

Post autor: kobrawerde » 09 maja 2019, 14:57

Ostatnio musiałem postawić serwer FTP ...padło na VSFTPD i niestety miałem trochę z ty problemu :oops: . Postaram się opisać jak udało mi się postawić w/w serwer z tzw opcją wirtualnych użytkowników co ponoć przekłada się na większe bezpieczeństwo w samym systemie linux.
Instalacja:

Kod: Zaznacz cały

apt-get install vsftpd libpam-pwdfile apache2-utils
Tworzenie certyfikatu SSL z którego będzie korzystał server VSFTPD

Kod: Zaznacz cały

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Wypełniamy w terminalu poszczególne zapytania np. kraj : PL / region np: małopolska / email ... itd
W podanym przykładzie certyfikat będzie ważny 10 lat / szyfrowanie kluczem RSA 2048 bit :razz: ... można oczywiście zmienić na zalecany rok / 1024 bit czyli :

Kod: Zaznacz cały

sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Ale uwaga po roku serwer będzie wymagał / żądał zmiany certyfikatu !
Edytujemy standardowy plik konfiguracyjny vsftpd i wpisujemy utworzony certyfikat czyli wpisy / ścieżki do w/w:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Kod: Zaznacz cały

sudo nano /etc/vsftpd.conf
Konfiguracja pod wirtualnych użytkowników ( moja własna ):

Kod: Zaznacz cały

anonymous_enable=NO
listen_port=49144
local_enable=YES
chroot_local_user=YES
virtual_use_local_privs=YES
dual_log_enable=YES
listen=YES
tcp_wrappers=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
user_config_dir=/etc/vsftpd_user_conf
guest_enable=NO
pam_service_name=ftp
nopriv_user=jacek
nopriv_user=darek
allow_writeable_chroot=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
xferlog_enable=YES
write_enable=YES
download_enable=YES
write_enable=YES
anon_other_write_enable=YES
utf8_filesystem=YES
use_localtime=YES
ssl_ciphers=HIGH
ascii_upload_enable=YES
ascii_download_enable=YES
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=65535
Pewne dane podajemy indywidualnie według uznania i konfiguracji np.
..................
pasv_min_port=1024
pasv_max_port=65535
- pasywne porty na serwerze ( indywidualny wybór - można w/w zakres przekierować na routerze )
.................
nopriv_user=kris
nopriv_user=darek
- loginy utworzonych użytkowników
.................
pam_service_name=ftp - nazwa pliku pam używanego przez vsftpd w konfiguracji ( standardowo to plik vsftpd w ścieżce: /etc/pam.d/vsftpd )
......................
user_config_dir=/etc/vsftpd_user_conf - ścieżka do konfiguracji wirtualnych użytkowników
....................
listen_port=49144 - port na którym serwer będzie pracował ( standardowo 21 jeśli tej opcji nie wpiszemy ).Uwaga w/w port trzeba przekierować na IP serwera w routerze jeśli takowy posiadamy :razz:
Utworzenie wirtualnych użytkowników i odpowiednich folderów jak w konfiguracji :

Kod: Zaznacz cały

sudo mkdir /etc/vsftpd
Pierwszy użytkownik darek / hasło :

Kod: Zaznacz cały

htpasswd -c -p -b /etc/vsftpd/ftpd.passwd darek $(openssl passwd -1 -noverify 'tu_podaj_własne_hasło')
oczywiście w opcji: 'tu_podaj_własne_hasło' wpisujemy indywidualne hasło w ' '
Drugi użytkownik np. jacek i następni !!! / kolejni już bez opcji -c np.

Kod: Zaznacz cały

htpasswd -p -b /etc/vsftpd/ftpd.passwd jacek $(openssl passwd -1 -noverify 'tu_podaj_własne_hasło')
Tworzymy folder konfiguracyjny użytkowników wirtualnych i pliki konfiguracyjne do nich :

Kod: Zaznacz cały

sudo mkdir /etc/vsftpd_user_conf

Kod: Zaznacz cały

nano /etc/vsftpd_user_conf/darek
Wpisujemy ścieżkę do zasobu użytkownika darek ( np : /media/nas ) :

Kod: Zaznacz cały

write_enable=YES
allow_writeable_chroot=YES
local_root=/media/nas
Uwaga w tym wpisie nie zmieniamy kolejności czyli local_root=/media/nas mam zawsze na końcu inaczej są jakieś błędy w połączeniu.
zapisujemy w nano Ctrl+x ....t..... enter
Analogicznie dla użytkownika jacek i tej samej ścieżki ..... itd .....z możliwością zmiany zasobu / ścieżki :

Kod: Zaznacz cały

nano /etc/vsftpd_user_conf/jacek

Kod: Zaznacz cały

write_enable=YES
allow_writeable_chroot=YES
local_root=/media/nas
cmds_denied=DELE,RMD
W ty przypadku wpis : cmds_denied=DELE,RMD uniemożliwi użytkownikowi jacek opcję osuwania danych.
Dodajemy (w systemie i nadajemy odpowiednie uprawnienia ) wirtualnych użytkowników... np brak dostępu do shell-a / systemu linux ( większe bezpieczeństwo ). Wyczytałem iż pierwszy użytkownik powinien już być w systemie np. /home/darek ....inni już nie są wymagani a są pod niego podpinani. ( teoria )

Kod: Zaznacz cały

useradd --home /media/nas --gid nogroup -m --shell /bin/false darek

Kod: Zaznacz cały

useradd --home /media/nas --gid nogroup -m --shell /bin/false jacek
itd.
W całej konfiguracji zapomniałem iż trzeba także zmienić pewne opcje w pliku : /etc/pam.d/vsftpd ! ...jednak ja nie zmieniałem w/w bo może się przydać tylko utworzyłem nowy o nazwie ftp w tej samej ścieżce czyli /etc/pam.d/ftp z wpisem:

Kod: Zaznacz cały

auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so
teraz już tylko zapis ctrl+x ..t ..enter i potem test działania naszego serwera FSFTPD czyli ...
Restart programu VSFTPD i sprawdzenie poprawnego logowania np. w kliencie FTP FileZilla ( która obsługuje szyfrowanie SSL ! )

Kod: Zaznacz cały

sudo service vsftpd restart
lub pomocne inne :

Kod: Zaznacz cały

/etc/init.d/vsftpd restart
/etc/init.d/vsftpd reload
/etc/init.d/vsftpd status


Jak zwykle w systemie linux przyda się znajomość nadania odpowiednich uprawnień do plików zasobów które mogą być pomocne jeśli coś nie będzie działało np.
chown -R darek:nogroup /media/nas
chown -R jacek:nogroup /media/nas
chmod -R 777 /media/nas
Jeśli coś pójdzie nie tak i będziemy chcieli ustawić wszystko od nowa.... lub po prostu odinstalować VSFTPD :

Kod: Zaznacz cały

sudo apt-get purge --auto-remove vsftpd
mam nadzieję że komuś się przydadzą te objaśnienia :razz:
pozdro!
ODPOWIEDZ

Wróć do „Software-Sieć”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość