[HOWTO] VSFTPD - server / wirtualni użytkownicy / szyfrowanie- TLS/SSL
: 09 maja 2019, 14:57
Ostatnio musiałem postawić serwer FTP ...padło na VSFTPD i niestety miałem trochę z ty problemu . 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:
Tworzenie certyfikatu SSL z którego będzie korzystał server VSFTPD
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 ... można oczywiście zmienić na zalecany rok / 1024 bit czyli :
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:
Konfiguracja pod wirtualnych użytkowników ( moja własna ):
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
Utworzenie wirtualnych użytkowników i odpowiednich folderów jak w konfiguracji :
Pierwszy użytkownik darek / 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.
Tworzymy folder konfiguracyjny użytkowników wirtualnych i pliki konfiguracyjne do nich :
Wpisujemy ścieżkę do zasobu użytkownika darek ( np : /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 :
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 )
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:
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 ! )
lub pomocne inne :
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 :
mam nadzieję że komuś się przydadzą te objaśnienia
pozdro!
Instalacja:
Kod: Zaznacz cały
apt-get install vsftpd libpam-pwdfile apache2-utils
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
W podanym przykładzie certyfikat będzie ważny 10 lat / szyfrowanie kluczem RSA 2048 bit ... 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
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
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
..................
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
Utworzenie wirtualnych użytkowników i odpowiednich folderów jak w konfiguracji :
Kod: Zaznacz cały
sudo mkdir /etc/vsftpd
Kod: Zaznacz cały
htpasswd -c -p -b /etc/vsftpd/ftpd.passwd darek $(openssl passwd -1 -noverify 'tu_podaj_własne_hasło')
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')
Kod: Zaznacz cały
sudo mkdir /etc/vsftpd_user_conf
Kod: Zaznacz cały
nano /etc/vsftpd_user_conf/darek
Kod: Zaznacz cały
write_enable=YES
allow_writeable_chroot=YES
local_root=/media/nas
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
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
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
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
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
pozdro!