Kako osigurati FTP server koristeći SSL/TLS za siguran prijenos datoteka u CentOS 7


Po svom originalnom dizajnu, FTP (File Transfer Protocol) nije siguran, što znači da ne šifrira podatke koji se prenose između dva računala, zajedno sa korisničkim vjerodajnicama. Ovo predstavlja ogromnu prijetnju podacima kao i sigurnosti servera.

U ovom vodiču ćemo objasniti kako ručno omogućiti usluge šifriranja podataka na FTP serveru u CentOS/RHEL 7 i Fedori; proći ćemo kroz različite korake osiguranja VSFTPD (Very Secure FTP Daemon) usluga korištenjem SSL/TLS certifikata.

Preduvjeti:

  1. Morate imati instaliran i konfiguriran FTP server u CentOS 7

Prije nego što počnemo, imajte na umu da će se sve naredbe u ovom vodiču izvoditi kao root, u suprotnom koristite naredbu sudo da dobijete root privilegije ako ne kontrolirate server koristeći root račun.

Korak 1. Generiranje SSL/TLS certifikata i privatnog ključa

1. Moramo početi kreiranjem poddirektorija pod: /etc/ssl/ gdje ćemo pohraniti SSL/TLS certifikat i fajlove ključeva :

mkdir /etc/ssl/private

2. Zatim pokrenite naredbu ispod da kreirate certifikat i ključ za vsftpd u jednoj datoteci, ovdje je objašnjenje svake korištene zastavice.

  1. req – je naredba za upravljanje zahtjevima za potpisivanje X.509 certifikata (CSR).
  2. x509 – znači upravljanje podacima certifikata X.509.
  3. dani – definira broj dana za koje certifikat važi.
  4. newkey – specificira procesor ključa certifikata.
  5. rsa:2048 – RSA ključ procesor, generiraće privatni ključ od 2048 bita.
  6. keyout – postavlja datoteku za pohranu ključa.
  7. out – postavlja datoteku za pohranu certifikata, imajte na umu da su i certifikat i ključ pohranjeni u istoj datoteci: /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

Gornja komanda će od vas tražiti da odgovorite na pitanja u nastavku, ne zaboravite da koristite vrijednosti koje se odnose na 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 korištenje SSL/TLS

3. Prije nego izvedemo bilo kakve VSFTPD konfiguracije, otvorimo portove 990 i 40000-50000 da omogućimo TLS veze i raspon portova pasivnih portova definirati u VSFTPD konfiguracijskoj datoteci, odnosno:

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

4. Sada otvorite VSFTPD konfiguracijsku datoteku i navedite SSL detalje u njoj:

vi /etc/vsftpd/vsftpd.conf

Potražite opciju ssl_enable i postavite njenu vrijednost na YES da aktivirate korištenje SSL-a, osim toga, budući da je TSL sigurniji od SSL-a, ograničit ćemo VSFTPD da koristi TLS umjesto toga, koristeći opciju ssl_tlsv1_2:

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

5. Zatim dodajte redove ispod da definirate lokaciju SSL certifikata i datoteke ključa:

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

6. Zatim moramo spriječiti anonimne korisnike da koriste SSL, a zatim prisiliti sve neanonimne prijave da koriste sigurnu SSL vezu za prijenos podataka i da pošalju lozinku tokom prijave:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Osim toga, možemo dodati donje opcije za povećanje sigurnosti FTP servera. Kada je opcija require_ssl_reuse postavljena na YES, tada su sve SSL podatkovne veze potrebne za ponovno korištenje SSL sesije; dokazujući da znaju istu glavnu tajnu kao i kontrolni kanal.

Stoga ga moramo isključiti.

require_ssl_reuse=NO

Opet, moramo odabrati koje će SSL šifre VSFTPD dozvoliti za šifrirane SSL veze s opcijom ssl_ciphers. Ovo može uvelike ograničiti napore napadača koji pokušavaju forsirati određenu šifru u kojoj su vjerovatno otkrili ranjivosti:

ssl_ciphers=HIGH

8. Sada postavite opseg portova (min i maksimalni port) pasivnih portova.

pasv_min_port=40000
pasv_max_port=50000

9. Opciono, dozvolite SSL otklanjanje grešaka, što znači da se dijagnostika openSSL veze snima u VSFTPD log datoteku s opcijom debug_ssl:

debug_ssl=YES

Sačuvajte sve promjene i zatvorite datoteku. Zatim ponovo pokrenimo VSFTPD uslugu:

systemctl restart vsftpd

Korak 3: Testiranje FTP servera sa SSL/TLS konekcijama

10. Nakon što izvršite sve gore navedene konfiguracije, testirajte da li VSFTPD koristi SSL/TLS veze tako što ćete pokušati koristiti FTP iz komandne linije na sljedeći način:

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>

Sa gornje slike ekrana, možemo vidjeti da postoji greška koja nas obavještava da VSFTPD može dozvoliti korisniku da se prijavi samo sa klijenata koji podržavaju usluge šifriranja.

Komandna linija ne nudi usluge šifriranja, što dovodi do greške. Dakle, da bismo se bezbedno povezali sa serverom, potreban nam je FTP klijent koji podržava SSL/TLS veze kao što je FileZilla.

Korak 4: Instalirajte FileZilla za bezbedno povezivanje sa FTP serverom

11. FileZilla je moderan, popularan i što je važno višeplatformski FTP klijent koji podrazumevano podržava SSL/TLS veze.

Da biste instalirali FileZilla u Linux, pokrenite naredbu ispod:

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

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

12. Kada se instalacija završi (ili ako je već imate instaliranu), otvorite je i idite na File=>Upravitelj stranica ili (pritisnite Ctrl+S ) da dobijete Site Manager interfejs ispod.

Kliknite na dugme Nova web lokacija da dodate detalje o novoj web lokaciji/host povezivanju.

13. Zatim postavite naziv hosta/stranice, dodajte IP adresu, definirajte protokol koji ćete koristiti, šifriranje i tip prijave kao na snimku ekrana ispod (koristite vrijednosti koje se odnose na 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. Zatim kliknite na Poveži da ponovo unesete lozinku, a zatim potvrdite da se certifikat koristi za SSL/TLS vezu i jednom kliknite OK više za povezivanje na FTP server:

U ovoj fazi, trebali smo se uspješno prijaviti na FTP server preko TLS veze, provjerite odjeljak o statusu veze za više informacija iz sučelja ispod.

15. Na kraju, ali ne i najmanje važno, pokušajte prenijeti fajlove sa lokalnog računara na FTP server u folderu fajlova, pogledajte donji kraj interfejsa FileZilla da vidite izvještaje o prijenosu datoteka.

To je sve! Uvijek imajte na umu da FTP nije siguran prema zadanim postavkama, osim ako ga ne konfiguriramo da koristi SSL/TLS veze kao što smo vam pokazali u ovom vodiču. Podijelite svoje mišljenje o ovom vodiču/temi putem obrasca za povratne informacije ispod.