Prevenir el secuestro de clics en Pandora FMS

Download PDF

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.

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.

curl http upgrade h2
curl http upgrade h2

pfms set cookie samesite strict
pfms set cookie samesite strict
pfms set cookie samesite strict
pfms set cookie samesite strict

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 X-Frame-Options que han implementado varios agentes de usuario. La expresión fuente ‘ninguno’ es aproximadamente equivalente a DENY de ese encabezado, ‘self’ a SAMEORIGIN, y así sucesivamente. La principal diferencia es que muchos agentes de usuario implementan SAMEORIGIN 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 directiva frame-ancestors deja obsoleto el encabezado X-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.

https://www.w3.org/TR/CSP2/#frame-ancestors-and-frame-options

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
Download PDF
Por favor, lea también   Monitorización de Entornos Virtuales desde cero