Potřeboval jsem rozjet zabezpečený FTP server pro jednoho uživatele. To znamená žádný anonymní přístup, přístup pouze pro lokálního uživatele. Jelikož byly nutné nějaké ty úpravy v konfiguračních souborech, tak se o to s vámi podělím.
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.
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)
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.