Vyhledávání na webu

Jak zabezpečit FTP server pomocí SSL/TLS pro bezpečný přenos souborů v CentOS 7


Podle původního návrhu není FTP (File Transfer Protocol) zabezpečený, což znamená, že nešifruje data přenášená mezi dvěma počítači spolu s přihlašovacími údaji uživatele. To představuje obrovskou hrozbu pro data i zabezpečení serveru.

V tomto tutoriálu vysvětlíme, jak ručně povolit služby šifrování dat na FTP serveru v CentOS/RHEL 7 a Fedoře; projdeme různými kroky zabezpečení služeb VSFTPD (Very Secure FTP Daemon) pomocí certifikátů SSL/TLS.

Předpoklady:

  1. Musíte mít nainstalovaný a nakonfigurovaný FTP server v CentOS 7

Než začneme, všimněte si, že všechny příkazy v tomto tutoriálu budou spuštěny jako root, jinak použijte příkaz sudo k získání práv root, pokud server neovládáte pomocí účtu root.

Krok 1. Vygenerování certifikátu SSL/TLS a soukromého klíče

1. Musíme začít vytvořením podadresáře pod: /etc/ssl/, kde budeme ukládat certifikát SSL/TLS a soubory klíčů :

mkdir /etc/ssl/private

2. Poté spusťte níže uvedený příkaz a vytvořte certifikát a klíč pro vsftpd v jediném souboru, zde je vysvětlení každého použitého příznaku.

  1. req – je příkaz pro správu žádosti o podpis certifikátu X.509 (CSR).
  2. x509 – znamená správu dat certifikátu X.509.
  3. dny – určuje počet dní platnosti certifikátu.
  4. nový klíč – určuje procesor klíče certifikátu.
  5. rsa:2048 – procesor klíče RSA, vygeneruje 2048bitový soukromý klíč.
  6. keyout – nastavuje soubor úložiště klíčů.
  7. out – nastaví soubor úložiště certifikátu, všimněte si, že certifikát i klíč jsou uloženy ve stejném souboru: /etc/ssl/private/vsftpd.pem.
openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

Výše uvedený příkaz vás požádá, abyste odpověděli na níže uvedené otázky, nezapomeňte použít hodnoty, které platí pro váš scénář.

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email 

Krok 2. Konfigurace VSFTPD pro použití SSL/TLS

3. Než provedeme jakékoli konfigurace VSFTPD, otevřeme porty 990 a 40000–50000, abychom umožnili připojení TLS a rozsah portů pasivních portů definovat v konfiguračním souboru VSFTPD, resp.:

firewall-cmd --zone=public --permanent --add-port=990/tcp
firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
firewall-cmd --reload

4. Nyní otevřete konfigurační soubor VSFTPD a zadejte v něm podrobnosti SSL:

vi /etc/vsftpd/vsftpd.conf

Chcete-li aktivovat používání SSL, vyhledejte možnost ssl_enable a nastavte její hodnotu na YES. Navíc, protože TSL je bezpečnější než SSL, omezíme VSFTPD na použití TLS místo toho pomocí možnosti ssl_tlsv1_2:

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. Poté přidáním řádků níže definujte umístění certifikátu SSL a souboru klíče:

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

6. Dále musíme zabránit anonymním uživatelům v používání SSL a poté vynutit všem neanonymním přihlášením použití zabezpečeného připojení SSL pro přenos dat a zaslání hesla během přihlášení:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Kromě toho můžeme přidat níže uvedené možnosti pro zvýšení zabezpečení serveru FTP. Když je možnost require_ssl_reuse nastavena na YES, pak všechna datová připojení SSL musí vykazovat opětovné použití relace SSL; prokázat, že znají stejné hlavní tajemství jako kontrolní kanál.

Proto jej musíme vypnout.

require_ssl_reuse=NO

Opět musíme vybrat, které šifry SSL VSFTPD povolí pro šifrovaná připojení SSL pomocí možnosti ssl_ciphers. To může značně omezit úsilí útočníků, kteří se snaží vynutit konkrétní šifru, v níž pravděpodobně objevili zranitelnost:

ssl_ciphers=HIGH

8. Nyní nastavte rozsah portů (minimální a maximální port) pasivních portů.

pasv_min_port=40000
pasv_max_port=50000

9. Volitelně povolte ladění SSL, což znamená, že diagnostika připojení openSSL se zaznamenává do souboru protokolu VSFTPD s možností debug_ssl:

debug_ssl=YES

Uložte všechny změny a zavřete soubor. Poté restartujeme službu VSFTPD:

systemctl restart vsftpd

Krok 3: Testování FTP serveru s připojením SSL/TLS

10. Po provedení všech výše uvedených konfigurací otestujte, zda VSFTPD používá připojení SSL/TLS tím, že se pokusíte použít FTP z příkazového řádku následovně:

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

Z výše uvedeného snímku obrazovky vidíme, že došlo k chybě, která nás informuje, že VSFTPD může uživateli povolit přihlášení pouze z klientů, kteří podporují šifrovací služby.

Příkazový řádek nenabízí šifrovací služby, čímž dochází k chybě. Abychom se mohli bezpečně připojit k serveru, potřebujeme FTP klienta, který podporuje připojení SSL/TLS, jako je FileZilla.

Krok 4: Nainstalujte FileZilla pro bezpečné připojení k FTP serveru

11. FileZilla je moderní, oblíbený a především multiplatformní FTP klient, který ve výchozím nastavení podporuje připojení SSL/TLS.

Chcete-li nainstalovat FileZilla v systému Linux, spusťte příkaz níže:

--------- On CentOS/RHEL/Fedora --------- 
yum install epel-release filezilla

--------- On Debian/Ubuntu ---------
sudo apt-get install  filezilla   

12. Po dokončení instalace (nebo pokud ji již máte nainstalovanou), otevřete ji a přejděte do File=>Sites Manager nebo (stiskněte Ctrl+S ), abyste získali níže uvedené rozhraní Site Manager.

Kliknutím na tlačítko Nový web přidáte podrobnosti o připojení nového webu/hostitele.

13. Dále nastavte název hostitele/webu, přidejte IP adresu, definujte protokol, který se má použít, šifrování a typ přihlášení jako na snímku obrazovky níže (použijte hodnoty, které platí pro váš scénář):

Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password	        #recommended 
User: username

14. Poté klikněte na Připojit, zadejte heslo znovu a poté ověřte certifikát používaný pro připojení SSL/TLS a jednou klikněte na OK více pro připojení k FTP serveru:

V této fázi bychom se měli úspěšně přihlásit k serveru FTP prostřednictvím připojení TLS. Další informace z níže uvedeného rozhraní naleznete v části o stavu připojení.

15. V neposlední řadě zkuste přenést soubory z místního počítače na server FTP ve složce souborů, podívejte se na spodní konec rozhraní FileZilla a prohlédněte si zprávy týkající se přenosu souborů.

To je vše! Vždy mějte na paměti, že FTP není ve výchozím nastavení zabezpečený, pokud jej nenakonfigurujeme tak, aby používal připojení SSL/TLS, jak jsme si ukázali v tomto tutoriálu. Podělte se o své názory na tento tutoriál/téma prostřednictvím formuláře pro zpětnou vazbu níže.