O al menos un intento ya que nadie está absolutamente a salvo… Esto es aplicable a cualquier sitio web sin embargo hay aplicaciones como Pandora FMS que se beneficia de prohibir que cualquier otro sitio lo muestre en un marco. Veamos.
Esta es una serie de artículos, el tercero ya, acerca del «fortalecimiento» de un servidor Open Pandora FMS:
En realidad son configuraciones adicionales al «entorno» donde funciona una Consola web PFMS, el conjunto de servidores PFMS es realmente complejo y donde realmente los usuarios se centran es en la parte visual (en mi caso como programador la API es la que me da bastante, abundante trabajo👷🏽♂️).
Poco tiempo tengo para publicar esto, asi que vamos directo al grano.
Tabla de contenido:
Ejemplos
Es el servidor PFMS nuestro, «fortalecido» y que no se deja mostrar en una ventana dento de una página web:
Esencialmente es inhabilitar que desde cualquier otro dominio muestren en un marco interno nuestro servidor PFMS (la Consola web) para prevenir el clickjacking por medio de que nuestro servidor PFMS solo abra las cookies que permiten su funcionamiento únicamente desde el sitio que las originó (nuestro dominio).
Por supuesto, gente maliciosa abunda en este mundo y en la Wikipedia en inglés describen ocho categorías más de clickjacking… Todavía no termino de asimilar que gente con talento para programar se dedique a realizar este tipo de ataques 😑.
Dicho esto, vamos a configurar nuestro servidor PFMS para que envíe siempre las correspondientes cookies para que sean abiertas por el mismo origen, vean el antes y el después con ayuda de curl.
Verificar mod_headers
Primero debemos verificar que tenemos instalado mod_headers
y que funciona adecuadamente.
Si se cuenta con CentOS 7 u CentOS 8 Stream (nuestro caso):
apachectl -M | grep headers
También pueden usar, de ser necesario:
apache2ctl -M | grep headers
Debería mostrar lo siguiente:
$ headers_module (shared)
Dado el caso no muestra nada, pues lo instalamos:
sudo a2enmod headers
Y reiniciamos el servicio httpd:
systemctl restart httpd
O también:
sudo service apache2 restart
Agregando directiva
Con el editor de texto de su preferencia, agregar al fichero :
/etc/httpd/conf/httpd.conf
las siguientes líneas:
<ifmodule mod_headers.c>
Header always edit Set-Cookie (.*) "$1; SameSite=strict"
</ifmodule>
Reiniciar el servicio httpd y probar con curl el resultado.
frame-ancestors
Me suministraron este enlace y bueno, el que no coge consejo no llega a viejo así que traduzco e introduzco para la próxima entrada en este humilde blog:
Esta directiva es similar al encabezado
https://www.w3.org/TR/CSP2/#frame-ancestors-and-frame-optionsX-Frame-Options
que han implementado varios agentes de usuario. La expresión fuente ‘ninguno’ es aproximadamente equivalente aDENY
de ese encabezado, ‘self’ aSAMEORIGIN
, y así sucesivamente. La principal diferencia es que muchos agentes de usuario implementanSAMEORIGIN
de modo que solo coincide con la ubicación del documento de nivel superior. Esta directiva comprueba cada antepasado. Si algún ancestro no coincide, la carga se cancela. [RFC7034 https://www.w3.org/TR/CSP2/#biblio-rfc7034] La directivaframe-ancestors
deja obsoleto el encabezadoX-Frame-Options
. Si un recurso tiene ambas políticas, la política de ancestros de marco DEBERÍA aplicarse y la política de opciones de marco X DEBERÍA ignorarse.
Fuentes consultadas
- https://es.javascript.info/clickjacking
- https://www.geeksforgeeks.org/http-headers-set-cookie/
- https://ubiq.co/tech-blog/enable-mod_headers-apache-ubuntu/
- https://stackoverflow.com/questions/54104573/how-to-set-samesite-cookie-attribute-using-apache-configuration
- https://httpd.apache.org/docs/2.2/de/mod/mod_headers.html