Inyectar la respuesta HTTP con la cabecera segura puede mitigar la mayoría de las vulnerabilidades de seguridad web
Si está gestionando un entorno de producción o una aplicación relacionada con pagos, entonces también le pedirá el equipo de pruebas de seguridad/penetración que implemente la cabecera HTTP necesaria para cumplir con la norma de seguridad PCI-DSS
Tener una cabecera segura instruye al navegador para hacer o no hacer ciertas cosas para prevenir ciertos ataques de seguridad
La mayoría de ustedes podría estar utilizando un servidor web como Apache, Nginx, IIS frente a Tomcat por lo que puede implementar las cabeceras directamente en el servidor web
Sin embargo, si no tiene ningún servidor web delante o necesita implementar directamente en Tomcat entonces buenas noticias si está usando Tomcat 8
Tomcat 8 ha añadido soporte para las siguientes cabeceras de respuesta HTTP
- X-Frame-Options – para prevenir ataques de clickjacking
- X-XSS-Protection – para evitar el ataque cross-site scripting
- X-Content-Type-Options – bloquear el sniffing del tipo de contenido
- HSTS – añadir seguridad de transporte estricta
Lo he probado con Apache Tomcat 8.5.15 en un servidor Digital Ocean Linux (distro CentOS)
Nota: Si usted está buscando para el endurecimiento general y la seguridad, entonces usted puede referirse a esta guía
Como mejor práctica, haga una copia de seguridad del archivo de configuración necesario antes de realizar cambios o realice pruebas en un entorno que no sea de producción
- Inicie sesión en el servidor Tomcat
- Vaya a la carpeta conf bajo la ruta donde está instalado Tomcat
- Descomente el siguiente filtro (por defecto está comentado)
<filtro> <nombre-del-filtro>httpHeaderSecurity</nombre-del-filtro> <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> <async-supported>true</async-supported> </filtro>
Al descomentar lo anterior, le indica a Tomcat que admita el filtro de seguridad de encabezado HTTP
- Añada lo siguiente justo después del filtro anterior
<filtro-mapa> <filtro-nombre>httpHeaderSecurity</filtro-nombre> <url-pattern>/*</url-pattern> </filtro-mapa>
Añadiendo lo anterior se ordena a Tomcat que inyecte el encabezado HTTP en todas las URL de la aplicación
- Reinicie el Tomcat y acceda a la aplicación para verificar las cabeceras.
Puede utilizar una herramienta en línea para verificar la cabecera o utilizar F12 en un navegador para inspeccionar
He aquí una referencia rápida del filtro tomada de un archivo web.xml
Habilitar el encabezado seguro en Tomcat 8 es sencillo y, como administrador, debería planificar su implementación para mejorar la seguridad
Si es nuevo en Tomcat, puede que le interese realizar este curso de administración de Apache Tomcat.