Zabezpečení FTP
Vsftpd je široce používaný ftp server, a pokud jej nastavujete na svém serveru pro přenos souborů, uvědomte si problémy se zabezpečením, které přicházejí. Protokol ftp má slabé zabezpečení, které je vlastní jeho návrhu. Přenáší všechna data v prostém textu (nešifrovaně) a ve veřejné/nezabezpečené síti je to něco příliš riskantního.
K vyřešení problému máme FTPS. Zabezpečuje FTP komunikaci šifrováním pomocí SSL/TLS. A tento příspěvek ukazuje, jak nastavit šifrování SSL pomocí vsftpd.
Nainstalujte vsftpd
Vsftpd je k dispozici ve výchozích repozitářích všech hlavních distribucí včetně debian, ubuntu, centos a fedora a lze jej nainstalovat bez jakýchkoli potíží. Existuje pouze jeden konfigurační soubor s názvem vsftpd.conf, který se nachází v adresáři /etc.
# ubuntu/debian$ sudo apt-get install vsftpd# centos/fedora# sudo yum install vsftpd
Zbývá nakonfigurovat vsftpd tak, aby pro ftp komunikaci používal šifrování ssl. Jedná se pouze o dvoukrokový proces.
Vygenerujte certifikát SSL
Prvním krokem je vytvoření ssl certifikátu a souboru klíče, který vsftpd použije pro šifrování. Konfigurační parametr "rsa_cert_file" musí obsahovat cestu k souboru certifikátu. Má výchozí hodnotu, kterou lze nalézt v manuálové stránce.
$ man vsftpd.conf | grep rsa_cert_file -A 5 rsa_cert_file Tato volba určuje umístění certifikátu RSA, který se má použít pro připojení šifrovaná SSL. Výchozí:/usr/share/ssl/certs/vsftpd.pem
Je to rozdíl mezi Ubuntu a CentOS. Můžeme jej uložit na libovolné místo.
Vytvořte ssl certifikát pomocí příkazu openssl. Certifikát a klíč dáváme dohromady do jednoho souboru.
# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Odpovězte na následující otázky a za několik sekund by měl být soubor certifikátu připraven. Výstup by vypadal nějak takto
# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pemGenerování 1024bitového soukromého klíče RSA. ...........++++++....++++++zápis nového soukromého klíče do '/etc/ssl/private/vsftpd.pem'-----Vy budete požádáni o zadání informací, které budou začleněny do vaší žádosti o certifikát. To, co se chystáte zadat, je to, co se nazývá rozlišovací jméno nebo DN. Existuje poměrně málo polí, ale některá můžete nechat prázdná. Některá pole budou výchozí hodnota, Pokud zadáte '.', pole zůstane prázdné.-----Název země (dvoupísmenný kód) [XX]:Název státu nebo provincie USA (celý název) []:NYNázev lokality (např. město) [Výchozí město]:Název organizace (např. společnost) [Výchozí společnost Ltd]:Název organizační jednotky (např. sekce) []:Běžný název (např. vaše jméno nebo název hostitele vašeho serveru) []:E-mailová adresa [] :
Nakonfigurujte Vsftpd pro SSL
Dalším úkolem je nakonfigurovat vsftpd tak, aby používal tento ssl certifikát pro šifrování. Soubor vsftpd.conf lze nalézt na následujícím umístění
# Ubuntu/Debian/etc/vsftpd.conf # CentOS/Fedora/etc/vsftpd/vsftpd.conf
Otevřete soubor vsftpd.conf a upravte jej, jak je uvedeno níže
Následující sdělí vsftpd umístění souboru certifikátu/klíče, který má použít.
rsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pem
Chcete-li zapnout SSL, přidejte následující možnosti. Povolí SSL a vynutí šifrování pro datové přenosy i přihlášení.
ssl_enable=YESallow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YES
Následující řádky řeknou vsftpd, aby v případě potřeby použil TLS, který je bezpečnější než jeho předchůdce SSL.
ssl_tlsv1=ANOssl_sslv2=YESssl_sslv3=ANO
Byly přidány všechny potřebné konfigurační směrnice. Uložte soubor a restartujte vsftpd
# service vsftpd restart# or# sudo /etc/init.d/vsftpd restart
Otestujte SSL na vsftpd
Nyní, když je naše nastavení dokončeno, je čas jej otestovat.
Nejprve se zkuste připojit pomocí příkazu plain ftp a neměl by selhat s dotazem na šifrování.
$ ftp 192.168.1.5Připojeno k 192.168.1.5.220 (vsFTPd 2.2.2)Název (192.168.1.5:enlightened):pal530 Neanonymní relace musí používat šifrování.Přihlášení se nezdařilo.ftp>Dále ověřte, zda šifrování SSL funguje správně. Gui ftp klienti, jako je FileZilla, mohou používat FTPS, ale pro pohodlí se uchýlíme k nástroji příkazového řádku zvanému curl a zde je velmi jednoduchý příkaz, který by se měl připojit k serveru FTPS a vypsat seznam souborů
$ curl --ftp-ssl --insecure --ftp-port 192.168.1.2:6003 --user pal:pal ftp://192.168.1.5-rw-r--r-- 1 0 0 0 leden 03 06:10 abcd.txt-rw-r--r-- 1 0 0 0 led 03 06:10 cdefg.txt
Tyto soubory jsou v domovském adresáři uživatele pal na ftp serveru. Ujistěte se, že máte nějaké soubory na domovské stránce serveru, abyste je dostali do seznamu a ověřili. Jinak by zvlnění vrátilo prázdné místo.
Zde je rychlé vysvětlení možností zvlnění, které jsme použili.
ftp-ssl :Řekne curl použít ftpsinsecure :Řekne curl nepoužít žádný ssl certifikát k ověření a rovnou se připojit.ftp-port :Řekne curl, že jsme v AKTIVNÍM režimu. V režimu ACTIVE musí klient sdělit serveru název hostitele a číslo portu, ke kterému se má připojit. Pokud jste nakonfigurovali pasivní režim ftp, nepoužívejte this.user :Určuje uživatelské jméno a heslo spojené dvojtečkou. Poslední věcí je ftp url.
Pokud neurčíte ftp port u ftp připojení v AKTIVNÍM režimu, zobrazí se chyba „Žádná trasa k hostiteli
“.
Pokud dostanete "bind() selhalo, došly nám porty!" chyba, pak jednoduše změňte číslo portu.
Můžete také použít adresu URL, jako je tato
$ curl ftps://192.168.1.5 ...
Pak by se ale curl pokusil připojit k portu 990 a pokud jste nenakonfigurovali vsftpd tak, aby sloužil na tomto portu, nebude to fungovat.
Pokud se curl nepodaří připojit k vsftpd nebo správně vypsat soubory, použijte možnost verbose (-v) a podívejte se na další podrobnosti o tom, co se pokazilo, a pak to opravte.
Další poznámky
FTPS zabezpečuje FTP přidáním šifrování SSL do komunikačního kanálu. Dalším doporučeným způsobem vytvoření zabezpečeného připojení je použití protokolu SFTP (SSH File Transfer Protocol). Populární balíček OpenSSH, který poskytuje službu ssh, poskytuje vedle sebe také SFTP, aniž by bylo potřeba jakékoli další nastavení nebo konfigurace. Ne všichni FTP klienti a nástroje pro vývoj webu však SFTP podporují.