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


Prema svom izvornom dizajnu, FTP (File Transfer Protocol) nije siguran, što znači da ne šifrira podatke koji se prenose između dva računala, zajedno s korisničkim vjerodajnicama. To predstavlja ogromnu prijetnju podacima kao i sigurnosti poslužitelja.

U ovom vodiču objasnit ćemo kako ručno omogućiti usluge šifriranja podataka na FTP poslužitelju u CentOS/RHEL 7 i Fedori; proći ćemo kroz različite korake osiguravanja VSFTPD (Vrlo siguran FTP Daemon) usluga pomoću SSL/TLS certifikata.

Preduvjeti:

  1. Morate imati instaliran i konfiguriran FTP poslužitelj u CentOS 7

Prije nego što počnemo, imajte na umu da će se sve naredbe u ovom vodiču izvoditi kao root, inače koristite naredbu sudo za dobivanje root privilegija ako ne kontrolirate poslužitelj koristeći root račun.

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

1. Moramo započeti stvaranjem poddirektorija pod: /etc/ssl/ gdje ćemo pohraniti SSL/TLS certifikat i ključne datoteke :

mkdir /etc/ssl/private

2. Zatim pokrenite donju naredbu za stvaranje certifikata i ključa za vsftpd u jednoj datoteci, ovdje je objašnjenje svake korištene oznake.

  1. req – je naredba za upravljanje zahtjevom za potpisivanje certifikata X.509 (CSR).
  2. x509 – znači upravljanje podacima certifikata X.509.
  3. Dani – definira koliko dana vrijedi certifikat.
  4. newkey – navodi procesor ključa certifikata.
  5. rsa:2048 – RSA procesor ključa, generira 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 naredba tražit će od vas da odgovorite na donja pitanja, ne zaboravite koristiti 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-a za korištenje SSL/TLS-a

3. Prije nego što izvedemo bilo kakvu VSFTPD konfiguraciju, otvorimo portove 990 i 40000-50000 kako bismo omogućili TLS veze i raspon portova pasivnih portova definirati u konfiguracijskoj datoteci VSFTPD 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 njezinu vrijednost na YES kako biste aktivirali 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 donje retke kako biste definirali 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, zatim prisiliti sve neanonimne prijave da koriste sigurnu SSL vezu za prijenos podataka i da pošalju lozinku tijekom prijave:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Osim toga, možemo dodati opcije u nastavku za povećanje sigurnosti FTP poslužitelja. Kada je opcija require_ssl_reuse postavljena na YES, tada su sve SSL podatkovne veze potrebne za izlaganje ponovne upotrebe 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 dopustiti za šifrirane SSL veze s opcijom ssl_ciphers. Ovo može uvelike ograničiti napore napadača koji pokušavaju nametnuti određenu šifru u kojoj su vjerojatno otkrili ranjivosti:

ssl_ciphers=HIGH

8. Sada postavite raspon portova (min. i maks. port) pasivnih portova.

pasv_min_port=40000
pasv_max_port=50000

9. Opcionalno, dopustite SSL ispravljanje pogrešaka, što znači da se dijagnostika openSSL veze bilježi u VSFTPD log datoteku s opcijom debug_ssl:

debug_ssl=YES

Spremite sve promjene i zatvorite datoteku. Zatim ponovno pokrenimo VSFTPD uslugu:

systemctl restart vsftpd

Korak 3: Testiranje FTP poslužitelja sa SSL/TLS vezama

10. Nakon što izvršite sve gore navedene konfiguracije, testirajte koristi li VSFTPD SSL/TLS veze pokušajem korištenja FTP-a iz naredbenog retka 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>

Na gornjoj snimci zaslona vidimo da postoji pogreška koja nas obavještava da VSFTPD može korisniku dopustiti samo prijavu s klijenata koji podržavaju usluge šifriranja.

Naredbeni redak ne nudi usluge enkripcije, što dovodi do pogreške. Dakle, za sigurno povezivanje s poslužiteljem potreban nam je FTP klijent koji podržava SSL/TLS veze kao što je FileZilla.

Korak 4: Instalirajte FileZillu za sigurno povezivanje s FTP poslužiteljem

11. FileZilla je moderan, popularan i što je najvažnije višeplatformski FTP klijent koji prema zadanim postavkama podržava SSL/TLS veze.

Da biste instalirali FileZillu u Linux, pokrenite naredbu ispod:

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

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

12. Kada instalacija završi (ili ako je već imate instaliranu), otvorite je i idite na File=>Sites Manager ili (pritisnite Ctrl+S ) da biste dobili donje sučelje Upravitelja lokacije.

Kliknite na gumb Nova stranica da biste dodali nove pojedinosti o vezi stranice/hosta.

13. Zatim postavite naziv hosta/stranice, dodajte IP adresu, definirajte protokol za korištenje, šifriranje i vrstu prijave kao na snimci zaslona u nastavku (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 se kako biste ponovno unijeli lozinku, a zatim potvrdite certifikat koji se koristi za SSL/TLS vezu i jednom kliknite OK više za spajanje na FTP poslužitelj:

U ovoj fazi, trebali smo se uspješno prijaviti na FTP poslužitelj preko TLS veze, provjerite odjeljak statusa veze za više informacija iz donjeg sučelja.

15. Posljednje, ali ne i najmanje važno, pokušajte prenijeti datoteke s lokalnog računala na FTP poslužitelj u mapi s datotekama, pogledajte donji dio sučelja FileZilla za pregled izvješća 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 donjeg obrasca za povratne informacije.