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!