Nginx y Apache Security Headers

Escrito el 2022-10-05 por Alberto Ferrer
Tiempo de lectura: 2 minuto(s)
Etiquetas: nginx apache security headers

Security Headers para Apache y Nginx actualizados, una breve reseña de los mismos. Este breve articulo no es mas que una nota o cheatsheet de los security headers a utilizar y requeridos en su mayoría. Si desean leer sobre el tema pueden seguir el siguiente enlace.

    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Permitted-Cross-Domain-Policies "none" always;
    add_header Feature-Policy "microphone none;camera none;geolocation none;";
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "no-referrer-when-downgrade" always;
    add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    add_header Expect-CT "max-age=31536000; report-uri=https://www.barrahome.org/contact";
    add_header Access-Control-Allow-Origin "*" always;

El equivalente para Apache seria utilizando algo como esto:

    <IfModule mod_headers.c>
       Header always set X-XSS-Protection "1; mode=block"
    <IfModule mod_headers.c>

Pueden observar los resultados aplicados en este blog visitando el sitio de Serpworx.

Actualización: Si gustan aprender sobre los distintos headers de seguridad los invito a visitar el sitio de Scott Helme el cual contiene un extenso articulo sobre COEP COOP CORP CORS CORB y mas.

Ahí mismo encontraran las explicaciones para:

  • COEP: Cross Origin Embedder Policy
  • COOP: Cross Origin Opener Policy
  • CORP: Cross Origin Resource Policy
  • CORS: Cross Origin Resource Sharing
  • CORB: Cross Origin Read Blocking

La salida de las cabeceras se ven de la siguiente forma:

    curl -I https://www.barrahome.org
    HTTP/2 200
    server: nginx
    date: Tue, 18 Oct 2022 23:20:03 GMT
    content-type: text/html; charset=UTF-8
    vary: Accept-Encoding
    x-powered-by: Myself & few nerds.
    x-frame-options: SAMEORIGIN
    x-permitted-cross-domain-policies: none
    feature-policy: microphone none;camera none;geolocation none;
    permissions-policy: microphone none;camera none;geolocation none;
    x-xss-protection: 1; mode=block
    x-content-type-options: nosniff
    referrer-policy: no-referrer-when-downgrade
    content-security-policy: default-src * data: 'unsafe-eval' 'unsafe-inline'
    strict-transport-security: max-age=31536000; includeSubDomains; preload
    expect-ct: max-age=31536000; report-uri=https://www.barrahome.org/contacto
    access-control-allow-origin: https://www.barrahome.org/