VSFTPD - konfigurace FTP serveru

Konfigurace ftp serveru pro uživatele ftpcamera. Chtěl jsem zapnout chroot tak, aby uživatel neměl přístup do jiných adresářů na disku. Zároveň by měl být přístup pouze na jednoho uživatele a na nikoho jiného.

anonymous_enable=NO
local_enable=YES

#bez tohoto nebylo možné na disk zapisovat
write_enable=YES
local_umask=022

#bez tohoto nebylo možné vylistovat obsah adresáře
dirmessage_enable=YES

use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES

chroot_local_user=YES             
user_sub_token=$USER              
local_root=/mnt/ftpcamera  
userlist_enable=YES               
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO                  

utf8_filesystem=YES
                   
# tohle je rozsah portů pro přístup pro data. Tyto parametry vůbec nebyly 
# obsaženy v konfiguračním souboru a musel jsem je tam dopsat.
pasv_min_port=40000
pasv_max_port=50000

V dalším kroku jsem musel nastavit kvůli chrootu práva.

chown root:root /mnt/ftpcamera
mkdir /mnt/ftpcamera/upload
chown ftpcamera:ftpcamera /mnt/ftpcamera/upload

Ještě nastavit seznam povolených uživatelů.

echo "ftpcamera" | sudo tee -a /etc/vsftpd.userlist

A restart serveru:

systemctl restart vsftpd

V případě problémů je dobré sledovat

tail -f /var/log/vsftpd.log 

firewall

FTP server jsem chtěl povolit pouze ve vnitřní síti na bridge. Musí se povolit port 21 pro připojení, tak i porty pro data - v mém případě to jsou 40000 - 50000.

ufw allow in on br0 from 192.168.0.1/24 to 192.168.1.1/32 port 21 proto tcp comment "FTP"
ufw allow in on br0 from 192.168.0.1/24 to 192.168.1.1/32 port 40000:50000 proto tcp comment "FTP vsftpd"