Wéi Séchert e FTP Server Mat SSL/TLS fir Secure File Transfer am CentOS 7


Duerch säin ursprénglechen Design ass FTP (File Transfer Protocol) net sécher, dat heescht datt et keng Daten verschlësselt, déi tëscht zwou Maschinnen iwwerdroe ginn, zesumme mat de Benotzer Umeldungsinformatiounen. Dëst stellt eng massiv Bedrohung fir Daten souwéi Serversécherheet duer.

An dësem Tutorial wäerte mir erkläre wéi manuell Dateverschlësselungsservicer an engem FTP-Server an CentOS/RHEL 7 a Fedora aktivéiert ginn; mir ginn duerch verschidde Schrëtt fir VSFTPD (Very Secure FTP Daemon) Servicer mat SSL/TLS Zertifikater ze sécheren.

  1. Dir musst en FTP-Server am CentOS 7 installéiert a konfiguréiert hunn

Ier mer ufänken, bemierkt datt all Kommandoen an dësem Tutorial als Root ausgeführt ginn, soss benotzt de sudo Kommando fir Root Privilegien ze kréien wann Dir de Server net mam Root Account kontrolléiert.

Schrëtt 1. Generéiere SSL/TLS Zertifikat a private Schlëssel

1. Mir mussen ufänken mat engem Ënnerverzeechnes ënner: /etc/ssl/ ze kreéieren wou mir den SSL/TLS Zertifikat a Schlësseldateien späicheren:

# mkdir /etc/ssl/private

2. Fuert dann de Kommando hei ënnen fir den Zertifikat an de Schlëssel fir vsftpd an enger eenzeger Datei ze kreéieren, hei ass d'Erklärung vun all Fändel benotzt.

  1. req - ass e Kommando fir X.509 Certificate Signing Request (CSR) Gestioun.
  2. x509 - heescht X.509 Zertifikat Datemanagement.
  3. Deeg - definéiert d'Zuel vun den Deeg Zertifikat gëlteg fir.
  4. newkey - spezifizéiert Zertifikatschlësselprozessor.
  5. rsa:2048 - RSA Schlësselprozessor, generéiert en 2048 Bit private Schlëssel.
  6. Keyout - setzt d'Schlëssellagerdatei.
  7. aus - setzt d'Zertifikatspäicherdatei fest, notéiert datt souwuel Zertifikat a Schlëssel an der selwechter Datei gespäichert sinn: /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

Deen uewe genannte Kommando freet Iech op d'Froen hei drënner ze beäntweren, erënnert un d'Wäerter ze benotzen déi op Äre Szenario gëllen.

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 

Schrëtt 2. Konfiguratioun vun VSFTPD Fir SSL/TLS ze benotzen

3. Ier mir all VSFTPD Konfiguratiounen ausféieren, loosst eis d'Ports 990 an 40000-50000 opmaachen fir TLS Verbindungen an d'Port Palette vu passive Ports z'erméiglechen an der VSFTPD Konfiguratiounsdatei respektiv ze definéieren:

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

4. Elo, öffnen d'VSFTPD Configuratiounsdatei a spezifizéiert d'SSL Detailer dran:

# vi /etc/vsftpd/vsftpd.conf

Kuckt no der Optioun ssl_enable a setzt säi Wäert op JO fir d'Benotzung vum SSL z'aktivéieren, ausserdeem, well TSL méi sécher ass wéi SSL, wäerte mir VSFTPD beschränken fir TLS ze benotzen amplaz, mat der ssl_tlsv1_2 Optioun:

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

5. Füügt dann d'Linnen hei ënnen un fir de Standort vum SSL Zertifikat a Schlësseldatei ze definéieren:

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

6. Als nächst musse mir anonyme Benotzer verhënnere fir SSL ze benotzen, da forcéiere all net-anonym Login eng sécher SSL Verbindung fir Datenübertragung ze benotzen an d'Passwuert beim Login ze schécken:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Zousätzlech kënne mir d'Optiounen hei drënner addéieren fir FTP-Serversécherheet ze stäerken. Wann d'Optioun require_ssl_reuse op JO gesat ass, da sinn all SSL-Dateverbindunge erfuerderlech fir SSL-Sessioun-Wiederverwendung ze weisen; beweist, datt se déi selwecht Meeschtesch geheime wéi d'Kontroll Kanal wëssen.

Dofir musse mir et ausschalten.

require_ssl_reuse=NO

Elo musse mir auswielen wéi eng SSL Chifferen VSFTPD fir verschlësselte SSL Verbindunge mat der ssl_ciphers Optioun erlaabt. Dëst kann Efforte vun Ugräifer staark limitéieren, déi probéieren e bestëmmte Chiffer ze zwéngen, an deem se wahrscheinlech Schwachstelle entdeckt hunn:

ssl_ciphers=HIGH

8. Elo, setzen d'Port Gamme (min a Max port) vun passiv Häfen.

pasv_min_port=40000
pasv_max_port=50000

9. Optional erlaabt SSL Debugging, dat heescht datt d'OpenSSL Verbindungsdiagnostik an der VSFTPD Log Datei mat der Debug_ssl Optioun opgeholl gëtt:

debug_ssl=YES

Späichert all d'Ännerungen a schléisst d'Datei zou. Da loosst eis de VSFTPD Service nei starten:

# systemctl restart vsftpd

Schrëtt 3: Testen FTP Server Mat SSL/TLS Verbindungen

10. Nodeems Dir all déi uewe genannte Konfiguratiounen gemaach hutt, testen ob VSFTPD SSL/TLS Verbindungen benotzt andeems Dir probéiert FTP vun der Kommandozeil ze benotzen wéi follegt:

# 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>

Vum Écran uewendriwwer kënne mir gesinn datt et e Feeler ass deen eis informéiert datt VSFTPD nëmmen de Benotzer erlaabt Iech vu Clienten unzemellen déi Verschlësselungsservicer ënnerstëtzen.

D'Kommandozeil bitt keng Verschlësselungsservicer, sou datt de Feeler produzéiert gëtt. Also, fir sécher mam Server ze verbannen, brauche mir e FTP Client deen SSL/TLS Verbindungen wéi FileZilla ënnerstëtzt.

Schrëtt 4: Installéiert FileZilla fir sécher mat engem FTP Server ze verbannen

11. FileZilla ass e modernen, populäre a wichtegen Cross-Plattform FTP Client deen SSL/TLS Verbindungen als Standard ënnerstëtzt.

Fir FileZilla op Linux z'installéieren, fuert de Kommando hei ënnen:

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

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

12. Wann d'Installatioun fäerdeg ass (oder soss wann Dir se schonn installéiert hutt), öffnen se a gitt op Datei=>Site Manager oder (dréckt Ctrl+S) fir de Site Manager Interface hei drënner ze kréien.

Klickt op Neie Site Knäppchen fir en neie Site/Hostverbindungsdetailer derbäi ze ginn.

13. Als nächst setzt den Host/Site Numm, füügt d'IP Adress derbäi, definéiert de Protokoll fir ze benotzen, Verschlësselung a Logontyp wéi am Bildschierm hei drënner (benotzt Wäerter déi op Äre Szenario gëllen):

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. Da klickt op Connect fir d'Passwuert erëm anzeginn, a verifizéiert dann de Certificat deen fir d'SSL/TLS Verbindung benotzt gëtt a klickt nach eng Kéier op OK fir mam FTP-Server ze verbannen:

Op dëser Etapp solle mir erfollegräich an de FTP Server iwwer eng TLS Verbindung ageloggt hunn, kontrolléiert d'Verbindungsstatus Sektioun fir méi Informatioun vun der Interface hei drënner.

15. Lescht awer net zulescht, probéiert d'Dateien vun der lokaler Maschinn op den FTP-Server am Fichier Dossier ze transferéieren, kuckt um ënneschten Enn vun der FileZilla Interface fir Berichter iwwer Dateietransferen ze gesinn.

Dat ass alles! Bedenkt ëmmer datt FTP net als Standard sécher ass, ausser mir konfiguréieren et fir SSL/TLS Verbindungen ze benotzen wéi mir Iech an dësem Tutorial gewisen hunn. Deelt Är Gedanken iwwer dëst Tutorial/Thema iwwer de Feedbackform hei ënnen.