Android

Protejați apache cu ajutorul criptării centos 7

Secure Your Apache Server From Attacker and Hacker Part -1

Secure Your Apache Server From Attacker and Hacker Part -1

Cuprins:

Anonim

Let's Encrypt este o autoritate de certificare gratuită, automatizată și deschisă, dezvoltată de Grupul de cercetare în domeniul securității internetului (ISRG). Certificatele emise de Let’s Encrypt sunt valabile timp de 90 de zile de la data emiterii și sunt încredințate de toate browserele principale de astăzi.

În acest tutorial, vom acoperi pașii necesari pentru a instala un certificat SSL gratuit Encrypt SSL pe un server CentOS 7 care rulează Apache ca server web. Vom folosi utilitatea certbot pentru a obține și reînnoi certificatele Let's Encrypt.

Cerințe preliminare

Asigurați-vă că ați îndeplinit următoarele cerințe înainte de a continua cu acest tutorial:

  • Puneți un nume de domeniu îndreptat către IP-ul serverului dvs. public. Vom folosi example.com Apache este instalat și funcționează pe serverul dvs.. Aveți gazda virtuală Apache pentru domeniul dvs..Porturile 80 și 443 sunt deschise în firewallul dvs.

Instalați următoarele pachete care sunt necesare pentru un server web criptat SSL:

yum install mod_ssl openssl

Instalați Certbot

Certbot este un instrument care simplifică procesul de obținere a certificatelor SSL de la Let's Encrypt și auto-activarea HTTPS pe serverul dvs.

Pachetul certbot este disponibil pentru instalare de la EPEL. Dacă depozitul EPEL nu este instalat pe sistemul dvs., îl puteți instala folosind următoarea comandă:

sudo yum install epel-release

După ce depozitul EPEL este activat, instalați pachetul certbot tastând:

sudo yum install certbot

Generați grupul puternic Dh (Diffie-Hellman)

Schimbul de chei Diffie – Hellman (DH) este o metodă de a schimba în siguranță cheile criptografice pe un canal de comunicare nesecurizat. Generați un nou set de parametri DH 2048 biți pentru a consolida securitatea:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 Puteți modifica dimensiunea până la 4096 de biți, dar în acest caz, generația poate dura mai mult de 30 de minute în funcție de entropia sistemului.

Obținerea unui certificat SSL Encrypt

Pentru a obține un certificat SSL pentru domeniul nostru, vom folosi pluginul Webroot care funcționează prin crearea unui fișier temporar pentru validarea domeniului solicitat în directorul ${webroot-path}/.well-known/acme-challenge . Serverul Let's Encrypt face solicitări HTTP la fișierul temporar pentru a valida dacă domeniul solicitat se rezolvă la serverul unde rulează certificbot.

Pentru a fi mai simplu, vom face o hartă a tuturor cererilor HTTP pentru .well-known/acme-challenge către un singur director, /var/lib/letsencrypt .

Execută thr următoarele comenzi pentru a crea directorul și a face să fie scris pentru serverul Apache:

sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp apache /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt

Pentru a evita duplicarea codului, creați următoarele două fragmente de configurații:

/etc/httpd/conf.d/letsencrypt.conf

Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS /etc/httpd/conf.d/ssl-params.conf

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder On Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff # Requires Apache >= 2.4 SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb:logs/stapling-cache(150000)" # Requires Apache >= 2.4.11 SSLSessionTickets Off

Fragmentul de mai sus folosește cipurile recomandate de Cipherli.st, permite OCSP Stapling, HTTP Strict Transport Security (HSTS) și aplică puține anteturi HTTP concentrate pe securitate.

Reîncărcați configurația Apache pentru ca modificările să aibă efect:

sudo systemctl reload

Acum, putem rula instrumentul Certbot cu pluginul webroot și să obținem fișierele de certificare SSL tastând:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

Dacă certificatul SSL este obținut cu succes, certificbot va imprima următorul mesaj:

IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2018-12-07. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

CentOS 7 este livrat cu versiunea 2.4.6 de la Apache, care nu include directiva SSLOpenSSLConfCmd . Această directivă este disponibilă doar pe Apache 2.4.8 și este utilizată pentru configurarea parametrilor OpenSSL, cum ar fi schimbul de chei Diffie – Hellman (DH).

Va trebui să creăm un nou fișier combinat folosind certificatul Let's Encrypt SSL și fișierul DH generat. Pentru a face acest lucru, tastați:

cat /etc/letsencrypt/live/example.com/cert.pem /etc/ssl/certs/dhparam.pem >/etc/letsencrypt/live/example.com/cert.dh.pem

Acum că totul este configurat, modificați configurația gazdei virtuale a domeniului după cum urmează:

/etc/httpd/conf.d/example.com.conf

ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ ServerName example.com ServerAlias www.example.com Redirect permanent / https://example.com/ DocumentRoot /var/www/example.com/public_html ErrorLog /var/log/httpd/example.com-error.log CustomLog /var/log/httpd/example.com-access.log combined SSLEngine On SSLCertificateFile /etc/letsencrypt/live/example.com/cert.dh.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem # Other Apache Configuration

Cu configurația de mai sus, forțăm HTTPS și redirecționăm de la www la versiunea non-www. Nu vă rugăm să reglați configurația în funcție de nevoile dvs.

Reporniți serviciul Apache pentru ca modificările să aibă efect:

sudo systemctl restart

Acum puteți deschide site-ul dvs. utilizând https:// și veți observa o pictogramă de blocare verde.

Reînnoire automată Let's Encrypt SSL certificate

Certificatele Let's Encrypt sunt valabile 90 de zile. Pentru a reînnoi automat certificatele înainte de a expira, vom crea un cronjob care va rula de două ori pe zi și va reînnoi automat orice certificat cu 30 de zile înainte de expirarea acestuia.

Rulați comanda crontab pentru a crea un nou cronjob care va reînnoi certificatul, creează un nou fișier combinat, inclusiv cheia DH și reporniți apache:

sudo crontab -e

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload

Salvați și închideți fișierul.

Pentru a testa procesul de reînnoire, puteți utiliza comanda certbot urmată de comutatorul --dry-run :

sudo certbot renew --dry-run

Dacă nu există erori, înseamnă că procesul de reînnoire a avut succes.

Concluzie

În acest tutorial, ați folosit certificatul de client Let's Encrypt pentru a descărca certificate SSL pentru domeniul dvs. De asemenea, ați creat fragmente Apache pentru a evita duplicarea codului și ați configurat Apache pentru a utiliza certificatele. La sfârșitul tutorialului, ați configurat un cronjob pentru reînnoirea automată a certificatelor.

apache centos hai să criptăm certbot ssl

Această postare face parte din seria Instalare LAMP Stack pe CentOS 7.

Alte postări din această serie:

• Cum se instalează Apache pe CentOS 7 • Instalează MySQL pe CentOS 7 • Cum se configurează gazdele virtuale Apache pe CentOS 7 • Se securizează Apache cu ajutorul criptării pe CentOS 7