Plantillas para comunicaciones seguras de servidores
FuncionalidadEsta guía consta de plantillas genéricas para realizar una correcta configuración de servidores Apache, Tomcat y Nginx. Además de una explicación más concreta de los aspectos más importantes por si fuera necesario personalizar la plantilla de configuración. | RequisitosComunicaciones entre cliente-servidor (básico) Métodos de cifrado Configuración del servidor utilizado (Apache, Nginx, Tomcat) |
Descripción
Este acelerador tiene como objetivo reducir el tiempo invertido en la configuración de los servidores de aplicaciones (Apache, Nginx y Tomcat). Para ello se facilitarán a continuación unas plantillas de cada uno de los servidores, las cuales los dotarán de una mayor seguridad en las comunicaciones entre cliente-servidor.
Beneficios
Proteger la información sensible: evitar que la información viaje en claro y pueda ser interceptada por un atacante, el cual podría visualizar o modificar dicha información, afectando a la confidencialidad, integridad y disponibilidad de los datos.
Generar confianza: entre cliente-servidor, garantizando la identidad del nombre del dominio donde se encuentra su servicio Web por medio de los certificados.
Lograr el cumplimiento de normativas: en materia de seguridad informática (RDPG, ENS, PCI-DSS, etc.).
Evidencias
Configuración por defecto | Configuración personalizada |
---|---|
Permitir el uso de protocolos inseguros como TLS 1.0 y 1.1 puede causar vulnerabilidades, puesto que pueden ser utilizados en ataques Downgrade attack. Se recomienda deshabilitarlos por completo de modo que nuestro servidor solo acepte protocolos seguros (TLS 1.2 y 1.3).
|
|
Riesgos de seguridad
Problema | Vulnerabilidad | Mitigación | Referencias |
---|---|---|---|
Comunicaciones inseguras |
Fuga de información |
Correcta configuración de los servidores | http://nginx.org/en/docs/http/ngx_http_ssl_module.html?ref=hackernoon.com https://httpd.apache.org/docs/trunk/ssl/ssl_howto.html#intranet https://tomcat.apache.org/tomcat-10.0-doc/ssl-howto.html#SSL_and_Tomcat https://www.ssl.com/es/gu%C3%ADa/tls-cumplimiento-de-normas/ |
Recuerda
Las suite de cifrado de estas plantillas son orientativas, recuerda que si quieres saber más sobre ello o ya tienes las tuyas propias puedes verificar si son lo suficientemente seguras en la entrada del marco de seguridad Suites de cifrado TLS/SSL
Plantillas de servidor de aplicaciones
Plantilla servidor Apache
Si quieres mas información sobre configuraciones Apache puedes dirigirte a Configuración Servidor Apache
Configuración segura Apache
SSLCipherSuite TLSv1.3 TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256
SSLCipherSuite SSL ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256
# Requires Apache 2.4.36 & OpenSSL 1.1.1
SSLProtocol -all +TLSv1.3 +TLSv1.2
SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
# Older versions
# 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 |
Plantilla servidor Nginx
Si quieres mas información sobre configuraciones Nginx puedes dirigirte a Configuración Servidor Nginx
/etc/nginx/nginx.conf
http {
server {
#Configuración de TLS
listen 443 ssl http2;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256;
ssl_ecdh_curve secp384r1;
ssl_certificate ruta_certificado; #Indica la ruta de tu certificado
ssl_certificate_key ruta_clave; #Indica la ruta de tu certificado
ssl_stapling on;
ssl_stapling_verify on;
ssl_session_cache shared:SSL:40m;
ssl_session_timeout 4h;
ssl_session_tickets off;
#Añadir cabeceras y DNS en función de tu producto
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
}
} |
Plantilla servidor Tomcat
Si quieres mas información sobre configuraciones Tomcat puedes dirigirte a Configuración Servidor Tomcat
/etc/tomcat9/server.xml
<Server>
<Service>
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
keystoreFile="Añade aqui la ruta de tu certificado"
keystorePass="Contraseña del certificado"
clientAuth="false"
sslProtocol="TLSv1.2, TLSv1.3"
sslEnabledProtocols="TLSv1.2, TLSv1.3"
ciphers="ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256"
/>
</Service>
</Server> |