Sådan sikres en FTP-server ved hjælp af SSL/TLS til sikker filoverførsel i CentOS 7


Ved sit oprindelige design er FTP (File Transfer Protocol) ikke sikker, hvilket betyder, at den ikke krypterer data, der transmitteres mellem to maskiner sammen med brugerens legitimationsoplysninger. Dette udgør en massiv trussel mod data såvel som serversikkerhed.

I denne tutorial forklarer vi, hvordan man manuelt aktiverer datakrypteringstjenester i en FTP-server i CentOS/RHEL 7 og Fedora; vi vil gennemgå forskellige trin for at sikre VSFTPD (Very Secure FTP Daemon) -tjenester ved hjælp af SSL/TLS-certifikater.

  1. Du skal have installeret og konfigureret en FTP-server i CentOS 7

Før vi starter, skal du være opmærksom på, at alle kommandoerne i denne vejledning køres som root, ellers skal du bruge sudo-kommandoen for at få root-rettigheder, hvis du ikke styrer serveren ved hjælp af root-kontoen.

Trin 1. Generering af SSL/TLS-certifikat og privat nøgle

1. Vi er nødt til at starte med at oprette en underkatalog under: /etc/ssl/, hvor vi gemmer SSL/TLS-certifikatet og nøglefiler:

# mkdir /etc/ssl/private

2. Kør derefter kommandoen nedenfor for at oprette certifikatet og nøglen til vsftpd i en enkelt fil, her er forklaringen på hvert anvendt flag.

  1. req - er en kommando til styring af X.509 Certificate Signing Request (CSR).
  2. x509 - betyder X.509 certifikatdatastyring.
  3. dage - definerer antallet af dage, certifikatet er gyldigt i.
  4. ny nøgle - specificerer certifikatnøgleprocessor.
  5. rsa: 2048 - RSA-nøgleprocessor genererer en 2048 bit privat nøgle.
  6. keyout - indstiller nøgleopbevaringsfilen.
  7. ud - indstiller certifikatlagerfilen, bemærk at både certifikat og nøgle er gemt i den samme fil: /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

Ovenstående kommando beder dig om at besvare nedenstående spørgsmål. Husk at bruge værdier, der gælder for dit scenario.

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 

Trin 2. Konfiguration af VSFTPD til brug af SSL/TLS

3. Inden vi udfører VSFTPD-konfigurationer, skal vi åbne portene 990 og 40000-50000 for at tillade TLS-forbindelser og portområdet for passive porte at definere i henholdsvis VSFTPD-konfigurationsfilen:

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

4. Åbn nu VSFTPD-konfigurationsfilen, og angiv SSL-detaljerne i den:

# vi /etc/vsftpd/vsftpd.conf

Se efter indstillingen ssl_enable og indstil dens værdi til YES for at aktivere brugen af SSL, og da TSL er mere sikker end SSL, begrænser vi VSFTPD til at anvende TLS i stedet ved hjælp af indstillingen ssl_tlsv1_2:

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

5. Tilføj derefter nedenstående linjer for at definere placeringen af SSL-certifikatet og nøglefilen:

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

6. Dernæst skal vi forhindre anonyme brugere i at bruge SSL, og derefter tvinge alle ikke-anonyme login til at bruge en sikker SSL-forbindelse til dataoverførsel og sende adgangskoden under login:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Derudover kan vi tilføje nedenstående muligheder for at øge FTP-serverens sikkerhed. Når indstillingen require_ssl_reuse er indstillet til JA , skal alle SSL-dataforbindelser udvise genbrug af SSL-session; bevis for, at de kender den samme masterhemmelighed som kontrolkanalen.

Derfor er vi nødt til at slukke for det.

require_ssl_reuse=NO

Igen er vi nødt til at vælge, hvilke SSL-cifre VSFTPD tillader for krypterede SSL-forbindelser med indstillingen ssl_ciphers. Dette kan i høj grad begrænse angribernes indsats, der forsøger at tvinge en bestemt kryptering, som de sandsynligvis opdagede sårbarheder i:

ssl_ciphers=HIGH

8. Indstil nu portområdet (min og max port) for passive porte.

pasv_min_port=40000
pasv_max_port=50000

9. Tillad eventuelt SSL-fejlretning, hvilket betyder, at diagnosticering af openSSL-forbindelse registreres i VSFTPD-logfilen med indstillingen debug_ssl:

debug_ssl=YES

Gem alle ændringerne, og luk filen. Lad os derefter genstarte VSFTPD-tjenesten:

# systemctl restart vsftpd

Trin 3: Test af FTP-server med SSL/TLS-forbindelser

10. Efter at have udført alle ovenstående konfigurationer, test om VSFTPD bruger SSL/TLS-forbindelser ved at forsøge at bruge FTP fra kommandolinjen som følger:

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

Fra ovenstående skærmbillede kan vi se, at der er en fejl, der informerer os om, at VSFTPD kun kan tillade brugeren at logge ind fra klienter, der understøtter krypteringstjenester.

Kommandolinjen tilbyder ikke krypteringstjenester, hvilket giver fejlen. Så for at oprette forbindelse sikkert til serveren har vi brug for en FTP-klient, der understøtter SSL/TLS-forbindelser såsom FileZilla.

Trin 4: Installer FileZilla for sikkert at oprette forbindelse til en FTP-server

11. FileZilla er en moderne, populær og vigtigere FTP-klient på tværs af platforme, der som standard understøtter SSL/TLS-forbindelser.

For at installere FileZilla i Linux skal du køre kommandoen nedenfor:

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

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

12. Når installationen er afsluttet (ellers hvis du allerede har den installeret), skal du åbne den og gå til File => Sites Manager eller (tryk Ctrl + S ) for at få Site Manager-grænsefladen nedenfor.

Klik på knappen Nyt sted for at tilføje et nyt websted/værtsforbindelsesdetaljer.

13. Indstil derefter værts-/stednavnet, tilføj IP-adressen, definer den protokol, der skal bruges, kryptering og logon-type som i skærmbilledet nedenfor (brug værdier, der gælder for dit scenario):

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. Klik derefter på Opret forbindelse for at indtaste adgangskoden igen, og bekræft derefter det certifikat, der bruges til SSL/TLS-forbindelsen, og klik igen OK for at oprette forbindelse til FTP-serveren:

På dette tidspunkt skulle vi have logget ind med succes på FTP-serveren via en TLS-forbindelse. Tjek afsnittet om forbindelsesstatus for mere information fra nedenstående interface.

15. Sidst men ikke mindst, prøv at overføre filer fra den lokale maskine til FTP-filen i filmappen. Se i den nedre ende af FileZilla-grænsefladen for at se rapporter om filoverførsler.

Det er alt! Husk altid, at FTP ikke er sikker som standard, medmindre vi konfigurerer den til at bruge SSL/TLS-forbindelser, som vi viste dig i denne vejledning. Del dine tanker om denne tutorial/emne via feedbackformularen nedenfor.