Bezpečný FTP server na Ubuntu 10.04 LTS
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 vsftpdVytvoř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 uploadNyní 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.soNyní 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 ucetanonymous_enable=NO# Zapnout lokalni uctylocal_enable=YES# Zapis anowrite_enable=YES
# Dalsi nastaveni dle libosti (neni nutne ale nic menit)
# Nasledujici radek ZAKOMENTUJTE#rsa_cert_file=/etc/ssl/private/vsftpd.pemNyní 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.04rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pemrsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
# Aktivace SSL a nastaveni (pouze pro lokalni)ssl_enable=YESforce_local_data_ssl=YESforce_local_logins_ssl=YESssl_tlsv1=YESssl_sslv2=YESssl_sslv3=YES
# Omezeni portu kvuli firewallupasv_min_port=12000pasv_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 restartA 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.