Zoeken op website

Een FTP-server beveiligen met SSL/TLS voor veilige bestandsoverdracht in CentOS 7


Door het oorspronkelijke ontwerp is FTP (File Transfer Protocol) niet veilig, wat betekent dat het de gegevens die tussen twee machines worden verzonden, niet versleutelt, samen met de inloggegevens van de gebruiker. Dit vormt een enorme bedreiging voor zowel de gegevens als de serverbeveiliging.

In deze tutorial leggen we uit hoe je handmatig data-encryptieservices in een FTP-server in CentOS/RHEL 7 en Fedora kunt inschakelen; we zullen verschillende stappen doorlopen om VSFTPD-services (Very Secure FTP Daemon) te beveiligen met behulp van SSL/TLS-certificaten.

Vereisten:

  1. U moet een FTP-server hebben geïnstalleerd en geconfigureerd in CentOS 7

Voordat we beginnen, moet u er rekening mee houden dat alle opdrachten in deze tutorial zullen worden uitgevoerd als root. Gebruik anders de opdracht sudo om root-rechten te verkrijgen als u de server niet bestuurt met behulp van het root-account.

Stap 1. SSL/TLS-certificaat en privésleutel genereren

1. We moeten beginnen met het maken van een submap onder: /etc/ssl/ waar we het SSL/TLS-certificaat en de sleutelbestanden opslaan :

mkdir /etc/ssl/private

2. Voer vervolgens de onderstaande opdracht uit om het certificaat en de sleutel voor vsftpd in één bestand aan te maken. Hier is de uitleg van elke gebruikte vlag.

  1. req – is een opdracht voor het beheer van X.509 Certificate Signing Request (CSR).
  2. x509 – betekent X.509-certificaatgegevensbeheer.
  3. dagen – definieert het aantal dagen dat het certificaat geldig is.
  4. newkey – specificeert de certificaatsleutelprocessor.
  5. rsa:2048 – RSA-sleutelprocessor genereert een privésleutel van 2048 bits.
  6. keyout – stelt het sleutelopslagbestand in.
  7. out – stelt het certificaatopslagbestand in. Houd er rekening mee dat zowel het certificaat als de sleutel in hetzelfde bestand worden opgeslagen: /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

Met het bovenstaande commando wordt u gevraagd de onderstaande vragen te beantwoorden. Vergeet niet waarden te gebruiken die op uw scenario van toepassing zijn.

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 

Stap 2. VSFTPD configureren om SSL/TLS te gebruiken

3. Voordat we VSFTPD-configuraties uitvoeren, openen we de poorten 990 en 40000-50000 om TLS-verbindingen en het poortbereik van passieve poorten mogelijk te maken om respectievelijk in het VSFTPD-configuratiebestand te definiëren:

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

4. Open nu het VSFTPD-configuratiebestand en specificeer daarin de SSL-gegevens:

vi /etc/vsftpd/vsftpd.conf

Zoek naar de optie ssl_enable en stel de waarde ervan in op YES om het gebruik van SSL te activeren. Omdat TSL bovendien veiliger is dan SSL, zullen we VSFTPD beperken in het gebruik van TLS gebruik in plaats daarvan de optie ssl_tlsv1_2:

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

5. Voeg vervolgens de onderstaande regels toe om de locatie van het SSL-certificaat en het sleutelbestand te definiëren:

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

6. Vervolgens moeten we voorkomen dat anonieme gebruikers SSL gebruiken en vervolgens alle niet-anonieme aanmeldingen dwingen een veilige SSL-verbinding te gebruiken voor gegevensoverdracht en het wachtwoord te verzenden tijdens het inloggen:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Daarnaast kunnen we de onderstaande opties toevoegen om de beveiliging van de FTP-server te verbeteren. Wanneer de optie require_ssl_reuse is ingesteld op YES, zijn alle SSL-gegevensverbindingen vereist om hergebruik van SSL-sessies mogelijk te maken; wat bewijst dat ze hetzelfde hoofdgeheim kennen als het controlekanaal.

Daarom moeten we het uitschakelen.

require_ssl_reuse=NO

Opnieuw moeten we selecteren welke SSL-coderingen VSFTPD toestaat voor gecodeerde SSL-verbindingen met de optie ssl_ciphers. Dit kan de inspanningen van aanvallers die proberen een bepaald cijfer te forceren waarin ze waarschijnlijk kwetsbaarheden hebben ontdekt, aanzienlijk beperken:

ssl_ciphers=HIGH

8. Stel nu het poortbereik (min. en max. poort) van passieve poorten in.

pasv_min_port=40000
pasv_max_port=50000

9. Optioneel kunt u SSL-foutopsporing toestaan, wat betekent dat diagnostiek van openSSL-verbindingen wordt vastgelegd in het VSFTPD-logbestand met de optie debug_ssl:

debug_ssl=YES

Sla alle wijzigingen op en sluit het bestand. Laten we vervolgens de VSFTPD-service opnieuw starten:

systemctl restart vsftpd

Stap 3: FTP-server testen met SSL/TLS-verbindingen

10. Nadat u alle bovenstaande configuraties hebt uitgevoerd, test u of VSFTPD SSL/TLS-verbindingen gebruikt door als volgt FTP te gebruiken vanaf de opdrachtregel:

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>

Uit de bovenstaande schermafbeelding kunnen we zien dat er een fout is opgetreden die ons informeert dat VSFTPD de gebruiker alleen kan toestaan in te loggen vanaf clients die coderingsservices ondersteunen.

De opdrachtregel biedt geen coderingsservices, waardoor de fout ontstaat. Om veilig verbinding te kunnen maken met de server hebben we dus een FTP-client nodig die SSL/TLS-verbindingen ondersteunt, zoals FileZilla.

Stap 4: Installeer FileZilla om veilig verbinding te maken met een FTP-server

11. FileZilla is een moderne, populaire en belangrijke platformonafhankelijke FTP-client die standaard SSL/TLS-verbindingen ondersteunt.

Om FileZilla onder Linux te installeren, voert u de onderstaande opdracht uit:

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

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

12. Wanneer de installatie is voltooid (of anders als u deze al hebt geïnstalleerd), opent u deze en gaat u naar Bestand=>Sitesbeheer of (druk op Ctrl+S ) om de onderstaande Site Manager-interface te krijgen.

Klik op de knop Nieuwe site om verbindingsgegevens voor een nieuwe site/host toe te voegen.

13. Stel vervolgens de host-/sitenaam in, voeg het IP-adres toe, definieer het te gebruiken protocol, de codering en het aanmeldingstype zoals in de onderstaande schermafbeelding (gebruik waarden die van toepassing zijn op uw 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 vervolgens op Verbinden om het wachtwoord opnieuw in te voeren, verifieer vervolgens het certificaat dat wordt gebruikt voor de SSL/TLS-verbinding en klik één keer op OK meer om verbinding te maken met de FTP-server:

In dit stadium zouden we succesvol moeten zijn ingelogd op de FTP-server via een TLS-verbinding. Controleer het gedeelte Verbindingsstatus voor meer informatie via de onderstaande interface.

15. Als laatste, maar daarom niet minder belangrijk, probeer bestanden over te zetten van de lokale machine naar de FTP-server in de bestandenmap. Kijk eens naar de onderkant van de FileZilla-interface om deze te bekijken rapporten over bestandsoverdrachten.

Dat is alles! Houd er altijd rekening mee dat FTP standaard niet veilig is, tenzij we het configureren om SSL/TLS-verbindingen te gebruiken, zoals we u in deze tutorial hebben laten zien. Deel uw mening over deze tutorial/onderwerp via het onderstaande feedbackformulier.