Kako zaščititi strežnik FTP s pomočjo SSL/TLS za varen prenos datotek v CentOS 7


FTP (File Transfer Protocol) po svoji prvotni zasnovi ni varen, kar pomeni, da ne šifrira podatkov, ki se prenašajo med dvema računalnikoma, skupaj z uporabniškimi poverilnicami. To predstavlja veliko grožnjo za podatke in varnost strežnika.

V tej vadnici bomo razložili, kako ročno omogočiti storitve šifriranja podatkov v strežniku FTP v CentOS/RHEL 7 in Fedora; opravili bomo različne korake za zaščito storitev VSFTPD (Very Secure FTP Daemon) s pomočjo potrdil SSL/TLS.

  1. V CentOS 7 morate imeti nameščen in konfiguriran strežnik FTP

Preden začnemo, upoštevajte, da se bodo vsi ukazi v tej vadnici izvajali kot root, sicer uporabite ukaz sudo za pridobitev korenskih pravic, če strežnika ne nadzorujete s korenskim računom.

Korak 1. Ustvarjanje potrdila SSL/TLS in zasebnega ključa

1. Za začetek moramo ustvariti podimenik pod: /etc/ssl/, kamor bomo shranili potrdilo SSL/TLS in datoteke ključev:

# mkdir /etc/ssl/private

2. Nato zaženite spodnji ukaz, da ustvarite potrdilo in ključ za vsftpd v eni datoteki, tukaj je razlaga vsake uporabljene zastavice.

  1. req - je ukaz za upravljanje zahteve za podpis potrdila X.509 (CSR).
  2. x509 - pomeni upravljanje podatkov potrdila X.509.
  3. dni - določa, koliko dni velja potrdilo.
  4. newkey - določa procesor ključa potrdila.
  5. rsa: 2048 - RSA ključni procesor bo ustvaril 2048-bitni zasebni ključ.
  6. keyout - nastavi datoteko za shranjevanje ključev.
  7. out - nastavi datoteko za shranjevanje potrdil, upoštevajte, da sta potrdilo in ključ shranjena v isti datoteki: /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

Zgornji ukaz vas bo pozval, da odgovorite na spodnja vprašanja. Ne pozabite uporabiti vrednosti, ki veljajo za vaš scenarij.

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 

Korak 2. Konfiguriranje VSFTPD za uporabo SSL/TLS

3. Preden izvedemo kakršno koli konfiguracijo VSFTPD, odprimo vrata 990 in 40000-50000, da omogočimo povezave TLS in obseg vrat pasivnih vrat v konfiguracijski datoteki VSFTPD:

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

4. Zdaj odprite konfiguracijsko datoteko VSFTPD in v njej določite podrobnosti SSL:

# vi /etc/vsftpd/vsftpd.conf

Poiščite možnost ssl_enable in nastavite njeno vrednost na YES , da aktivirate uporabo SSL, poleg tega pa, ker je TSL varnejši od SSL, bomo VSFTPD namesto tega uporabili TLS z možnostjo ssl_tlsv1_2:

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

5. Nato dodajte spodnje vrstice, da določite mesto potrdila SSL in datoteke ključa:

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

6. Nato moramo anonimnim uporabnikom preprečiti uporabo SSL, nato pa prisiliti vse neanonimne prijave, da uporabljajo varno povezavo SSL za prenos podatkov in pošiljanje gesla med prijavo:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Poleg tega lahko spodaj dodamo možnosti za povečanje varnosti strežnika FTP. Ko je možnost require_ssl_reuse nastavljena na YES , potem so vse podatkovne povezave SSL potrebne za prikaz ponovne uporabe seje SSL; dokazujejo, da poznajo isto glavno skrivnost kot nadzorni kanal.

Zato ga moramo izklopiti.

require_ssl_reuse=NO

Spet moramo izbrati, katere šifre SSL bo VSFTPD dovolil za šifrirane SSL povezave z možnostjo ssl_ciphers. To lahko močno omeji prizadevanja napadalcev, ki poskušajo vsiliti določeno šifro, v kateri so verjetno odkrili ranljivosti:

ssl_ciphers=HIGH

8. Zdaj nastavite obseg vrat (min in max vrata) pasivnih vrat.

pasv_min_port=40000
pasv_max_port=50000

9. Izbirno dovolite odpravljanje napak SSL, kar pomeni, da se diagnostika povezave openSSL zabeleži v datoteko dnevnika VSFTPD z možnostjo debug_ssl:

debug_ssl=YES

Shranite vse spremembe in zaprite datoteko. Nato znova zaženimo storitev VSFTPD:

# systemctl restart vsftpd

3. korak: Testiranje strežnika FTP s povezavami SSL/TLS

10. Po vseh zgornjih konfiguracijah preizkusite, ali VSFTPD uporablja povezave SSL/TLS, tako da poskusite uporabiti FTP iz ukazne vrstice, kot sledi:

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

Na zgornjem posnetku zaslona vidimo, da je prišlo do napake, ki nas je obvestila, da lahko VSFTPD dovoli uporabniku prijavo samo od odjemalcev, ki podpirajo storitve šifriranja.

Ukazna vrstica ne ponuja storitev šifriranja, kar povzroča napako. Za varno povezavo s strežnikom potrebujemo odjemalca FTP, ki podpira povezave SSL/TLS, kot je FileZilla.

4. korak: Namestite FileZilla za varno povezavo s strežnikom FTP

11. FileZilla je sodoben, priljubljen in pomemben odjemalnik FTP med platformami, ki privzeto podpira povezave SSL/TLS.

Če želite namestiti FileZilla v Linux, zaženite spodnji ukaz:

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

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

12. Ko se namestitev konča (ali če ste jo že namestili), jo odprite in pojdite na File => Sites Manager ali (pritisnite Ctrl + S ), da spodaj dobite vmesnik Site Manager.

Kliknite gumb Novo spletno mesto, če želite dodati novo podrobnost povezave spletnega mesta/gostitelja.

13. Nato nastavite ime gostitelja/spletnega mesta, dodajte naslov IP, določite protokol za uporabo, šifriranje in vrsto prijave kot na spodnjem posnetku zaslona (uporabite vrednosti, ki veljajo za vaš scenarij):

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. Nato kliknite Poveži, da znova vnesete geslo, nato pa preverite potrdilo, ki se uporablja za povezavo SSL/TLS, in še enkrat kliknite OK , da se povežete s strežnikom FTP:

Na tej stopnji bi se morali uspešno prijaviti v strežnik FTP prek povezave TLS, za več informacij v spodnjem vmesniku preverite razdelek o stanju povezave.

15. Nenazadnje poskusite prenesti datoteke z lokalnega računalnika na FTP sever v mapi z datotekami, za ogled poročil o prenosu datotek si oglejte spodnji del vmesnika FileZilla.

To je vse! Vedno imejte v mislih, da FTP privzeto ni varen, razen če ga konfiguriramo za uporabo povezav SSL/TLS, kot smo vam pokazali v tej vadnici. Delite svoje misli o tej vadnici/temi prek spodnjega obrazca za povratne informacije.