GNU/Linux >> Znalost Linux >  >> Linux

Jak povolit dokonalé dopředné utajení SSL/TLS v Apache nebo Nginx

Tento článek poskytuje přehled dokonalého dopředného utajení (PFS) a jak jej povolit na webových serverech Apache® nebo Nginx®.

Co je PFS?

PFS chrání data sdílená mezi klientem a serverem, i když je soukromý klíč kompromitován. Můžete toho dosáhnout vygenerováním klíče relace pro každou uskutečněnou transakci.

Proč implementovat PFS na web?

Certifikát TLS nebo SSL funguje pomocí veřejného klíče a soukromého klíče. Když si webový prohlížeč a server vymění klíče, systém vytvoří klíč relace pomocí mechanismu výměny klíčů nazývaného RSA, kde jsou všechny informace mezi klientem a serverem šifrovány. RSAvytváří propojení mezi soukromým klíčem serveru a klíčem relace vytvořeným pro každou relaci uniquesecure.

Relace může být napadena hrubou silou – jedná se o útok, který do serveru vloží kombinace bezpečnostních klíčů, dokud nenajde ten správný. I když tento proces může trvat dlouho, pokud dojde ke kompromitaci soukromého klíče serveru, útočníci uvidí jak data relace, tak všechny klientské transakce.

Jak PFS chrání web

PFS umožňuje serveru nespoléhat se na jeden klíč relace. Namísto použití stejného šifrovacího klíče, kdykoli uživatel nebo služba naváže připojení, PFS vygeneruje pro každé připojení jedinečný klíč relace.

Povolte PFS pomocí mechanismů výměny – Ephemeral Diffie-Hellman (DHE) aElliptic Curve Diffie-Hellman (ECDHE) . Pokud útočníci hrubou silou vynutí klíč relace, mohou dešifrovat informace pouze z této relace a nikoli z ostatních.

Požadavky na implementaci PFS na webovém serveru

K implementaci PFS použijte jeden z následujících nástrojů:

  • OpenSSL 1.0.1c+
  • Apache 2.4 nebo
  • Nginx 1.0.6+ a 1.1.0+

Verze těchto balíčků můžete zkontrolovat spuštěním následujících příkazů:

Poznámka :Výsledky se mohou lišit podle toho, jak prodejci uvolňují nové verze.

[root@rackspace-test ~]$ openssl version
OpenSSL 1.1.1g FIPS  21 Apr 2020

[root@rackspace-test ~]$ httpd -v
Server version: Apache/2.4.37 (centos)
Server built:   Nov  4 2020 03:20:37

Pro servery s operačními systémy Debian® nebo Ubuntu® je příkaz apache2ctl -v .

[root@rackspace-test ~]$ nginx -v
nginx version: nginx/1.14.1

Konfigurace protokolu SSL

Zkontrolujte, které webové stránky mají implementováno SSL spuštěním příkazů v následujících částech.

Tyto ukázky implementují PFS v doméně s názvem example.com .

Pokyny pro Apache

Existují dvě možnosti, jak zkontrolovat, které webové stránky mají certifikát SSL:

[root@rackspace-test ~]# grep -ir "SSLEngine" /etc/httpd/
/etc/httpd/conf.d/example.com.conf:     SSLEngine on

Poznámka: Výchozí cesta pro virtuální hostitele Apache je v adresáři /etc/httpd/conf.d/ . Adresáře se mohou lišit podle vaší konfigurace.

Nebo můžete použít příkazy httpd -S nebo apachectl -S pro CentOS ® nebo RedHat® Enterprise Linux ® (RHEL) a apache2ctl -S pro operační systémy Debian nebo Ubuntu.

[root@rackspace-test ~]# httpd -S | grep 443
*:443                  is a NameVirtualHost
     port 443 namevhost www.example.com (/etc/httpd/conf.d/example.com.conf:10)

Přidejte do konfigurace vhost pomocí svého oblíbeného textového editoru následující parametry:

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"

Když hledáte slovo SSL ve vhost by měl výstup po implementaci vypadat podobně jako následující:

[root@rackspace-test ~]# egrep 'SSL' /etc/httpd/conf.d/example.com.conf
     SSLEngine on
     SSLProtocol all -SSLv2 -SSLv3
     SSLHonorCipherOrder on
     SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
     SSLCertificateFile       /etc/ssl/certs/2022-example.com.crt
     SSLCertificateKeyFile    /etc/ssl/private/2022-example.com.key

Ujistěte se, že je syntaxe správná a restartujte Apache.

[root@rackspace-test ~]# httpd -t
Syntax OK
[root@rackspace-test ~]# apachectl -k restart
Pokyny Nginx

Seznam webů, které mají nainstalovaný certifikát SSL:

[root@rackspace-test ~]# egrep -ir 'SSL' /etc/nginx/conf.d/
/etc/nginx/conf.d/example.com.conf:        listen 443 ssl;
/etc/nginx/conf.d/example.com.conf:        ssl_certificate       /etc/ssl/certs/2022-example.com.chained.crt;
/etc/nginx/conf.d/example.com.conf:        ssl_certificate_key   /etc/ssl/private/2022-example.com.key;

Poznámka: Výchozí cesta pro bloky Nginx je v adresáři/etc/nginx/conf.d/ . Adresáře se mohou lišit podle vaší konfigurace.

Přidejte do konfigurace vhost pomocí svého oblíbeného textového editoru následující parametry:

ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

Když hledáte slovo SSL ve vhost by měl výstup po implementaci vypadat podobně jako následující:

[root@racksapce-test ~]# egrep -ir 'SSL' /etc/nginx/conf.d/example.com.conf
     listen          443 ssl;
     ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
     ssl_prefer_server_ciphers on;
     ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
     ssl_certificate         /etc/ssl/certs/2022-example.com.chained.crt;
     ssl_certificate_key     /etc/ssl/private/2022-example.com.key;

Ujistěte se, že je syntaxe správná a restartujte Nginx.

[root@rackspace-test ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@rackspace-test ~]# nginx -s reload

Pomocí předchozích kroků můžete správně implementovat PFS pro své webové stránky.

Pomocí karty Zpětná vazba můžete přidat komentáře nebo položit otázky. Můžete s námi také zahájit konverzaci.


Linux
  1. Co je NGINX? Jak to funguje?

  2. Jak povolit protokol HTTPS s Apache 2 na Ubuntu 20.04

  3. CentOS / RHEL:Jak povolit SSL pro Apache

  1. Jak povolit HTTP2 v NGINX

  2. Jak povolit zásady HSTS (HTTP Strict Transport Security) v Nginx &Apache

  3. Oprávnění pro klíč SSL?

  1. Jak nastavit SSL/TLS s Apache httpd na Red Hat

  2. Jak povolit HTTP/2 v Nginx

  3. Jak povolit TLS 1.3 v Nginx