Sèrie RHCE: implementació d'HTTPS mitjançant TLS mitjançant el servei de seguretat de xarxa (NSS) per a Apache - Part 8


Si sou un administrador del sistema que s'encarrega de mantenir i protegir un servidor web, no us podeu permetre el luxe de no dedicar els vostres millors esforços a assegurar-vos que les dades que ofereix el vostre servidor o que passen pel vostre servidor estiguin protegides en tot moment.

Per tal de proporcionar comunicacions més segures entre clients web i servidors, el protocol HTTPS va néixer com una combinació d'HTTP i SSL (Secure Sockets Layer) o més recentment, TLS (Transport Layer Security).

A causa d'algunes bretxes de seguretat greus, SSL ha quedat obsolet a favor del TLS més robust. Per aquest motiu, en aquest article explicarem com assegurar les connexions entre el vostre servidor web i els clients mitjançant TLS.

Aquest tutorial suposa que ja heu instal·lat i configurat el vostre servidor web Apache. Si no, consulteu l'article següent d'aquest lloc abans de continuar.

  1. Instal·leu LAMP (Linux, MySQL/MariaDB, Apache i PHP) a RHEL/CentOS 7

Instal·lació d'OpenSSL i Utilitats

En primer lloc, assegureu-vos que Apache s'està executant i que tant http com https estan permesos a través del tallafoc:

# systemctl start http
# systemctl enable http
# firewall-cmd --permanent –-add-service=http
# firewall-cmd --permanent –-add-service=https

A continuació, instal·leu els paquets necessaris:

# yum update && yum install openssl mod_nss crypto-utils

Important: tingueu en compte que podeu substituir mod_nss per mod_ssl a l'ordre anterior si voleu utilitzar biblioteques OpenSSL en comptes de NSS (Servei de seguretat de la xarxa) per implementar TLS (quina utilitzareu us deixo completament, però utilitzarem NSS). en aquest article, ja que és més robust; per exemple, admet estàndards de criptografia recents com PKCS #11).

Finalment, desinstal·leu mod_ssl si trieu utilitzar mod_nss, o viceversa.

# yum remove mod_ssl

Configuració de NSS (servei de seguretat de xarxa)

Un cop instal·lat mod_nss, el seu fitxer de configuració predeterminat es crea com a /etc/httpd/conf.d/nss.conf. Aleshores, hauríeu d'assegurar-vos que totes les directives Listen i VirtualHost apunten al port 443 (port predeterminat per a HTTPS):

Listen 443
VirtualHost _default_:443

A continuació, reinicieu Apache i comproveu si el mòdul mod_nss s'ha carregat:

# apachectl restart
# httpd -M | grep nss

A continuació, s'han de fer les modificacions següents al fitxer de configuració /etc/httpd/conf.d/nss.conf:

1. Indiqueu el directori de bases de dades NSS. Podeu utilitzar el directori predeterminat o crear-ne un de nou. En aquest tutorial farem servir el valor predeterminat:

NSSCertificateDatabase /etc/httpd/alias

2. Eviteu l'entrada manual de frase de contrasenya a cada inici del sistema desant la contrasenya al directori de la base de dades a /etc/httpd/nss-db-password.conf:

NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

On /etc/httpd/nss-db-password.conf conté NOMÉS la línia següent i mypassword és la contrasenya que establiràs més endavant per a la base de dades NSS:

internal:mypassword

A més, els seus permisos i la propietat s'han d'establir en 0640 i root:apache, respectivament:

# chmod 640 /etc/httpd/nss-db-password.conf
# chgrp apache /etc/httpd/nss-db-password.conf

3. Red Hat recomana desactivar SSL i totes les versions de TLS anteriors a TLSv1.0 a causa de la vulnerabilitat POODLE SSLv3 (més informació aquí).

Assegureu-vos que cada instància de la directiva NSSProtocol digui el següent (és probable que només en trobeu una si no allotgeu altres amfitrions virtuals):

NSSProtocol TLSv1.0,TLSv1.1

4. Apache es negarà a reiniciar-se perquè es tracta d'un certificat autofirmat i no reconeixerà l'emissor com a vàlid. Per aquest motiu, en aquest cas concret haureu d'afegir:

NSSEnforceValidCerts off

5. Encara que no és estrictament obligatori, és important establir una contrasenya per a la base de dades NSS:

# certutil -W -d /etc/httpd/alias