Použil jsem vsftpd server.
# sudo apt-get install openssl vsftpd
Vytvořil jsem uživatele "upload" s domovským adresářem jinde než v /home.
# useradd -d /mnt/bigdata/UPLOAD -s /bin/false upload
# chown upload /mnt/bigdata/UPLOAD
# passwd upload
Nyní zapeklitý krok, který mě stál 20 minut bádání. Je potřeba vypnout kontrolu shellu pro uživatele. Toto se sice dá vypnout přímo v konfiguračním souboru vsftpd (check_shell=NO), ale pakliže vsftpd použivá PAM (v Ubuntu standardně ano), tak by to nefungovalo. Je potřeba zakomentovat řádek v souboru /etc/pam.d/vsftpd (ten poslední) takto:
# Standard behaviour for ftpd(8).
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
# Standard pam includes
@include common-account
@include common-session
@include common-auth
#auth required pam_shells.so
Nyní můžeme přistoupit ke konfiguraci vsftpd. Standardní konfigurace až na jednu výjimku bude vyhovovat, takže nejprve zeditujeme soubor /etc/vsftpd.conf, projdeme si nastavení a nastavíme tyto hodnoty:
# Vypnout anonymni ucet
anonymous_enable=NO
# Zapnout lokalni ucty
local_enable=YES
# Zapis ano
write_enable=YES
# Dalsi nastaveni dle libosti (neni nutne ale nic menit)
# Nasledujici radek ZAKOMENTUJTE
#rsa_cert_file=/etc/ssl/private/vsftpd.pem
Nyní by FTP server měl fungovat lokálně s lokálními účty. Můžete to vyzkoušet příkazem telnet localhost 21 a zadáním příkazů USER xxx a PASS xxx. Poté dejte QUIT.
Nyní nastavíme zabezpečení (SSL/TLS), jeho vynucení a nastavíme správné certifikáty (v default konfiguraci nebyla cesta k certifikátu správná):
# Certifikaty z Ubuntu LTS 10.04
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# Aktivace SSL a nastaveni (pouze pro lokalni)
ssl_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
# Omezeni portu kvuli firewallu
pasv_min_port=12000
pasv_max_port=12100
Nemusíte žádné certifikáty generovat - použil jsem ty základní, které se automaticky generují při instalaci balíku openssl. Restart.
# service vsftpd restart
A je to. Nyní zbývá nastavit firewall, aby byl server dostupný z internetu. Může to být ADSL modem nebo WIFI AP, cokoli. Stačí vám přesměřovat na lokální server následující externí porty: 21, 12000-12100.
Nyní se můžete připojit z internetu. Nezapomeňte použít TLS/SSL připojení (normální nebude fungovat) a také pasivní režim.