====== 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"