security.txt con httpd
Por el 18 de Abril de 2022
El archivo security.txt ofrece a los investigadores de seguridad una manera de contactar con el administrador de un sitio web para comunicar problemas de seguridad de forma segura, evitando que se de el caso de que por no tener una forma de contacto con el administrador legítimo éste no sea advertido del problema.
Archivo security.txt
Primero creo el archivo sin firmar llamado security-unsigned.txt siguiendo las recomendaciones del borrador security.txt, con una duración máxima de un año:
Canonical: https://example.com/.well-known/security.txt
Contact: mailto:security@example.com
Encryption: https://example.com/pgp-key.txt
Expires: 2023-04-17T18:37:07z
Preferred-Languages: en, es
Ten en cuenta que si haces pública tu clave PGP los spammers pueden extraer tu dirección de correo. Para evitar esto puedes omitir el campo Encryption. Una vez creado el archivo original voy a firmarlo:
$ gpg --clearsign -o security.txt security-unsigned.txt
pgp-key.txt es un archivo de texto que contiene la clave pública PGP. Partiendo de que ya tengo el par de claves pública y privada con GnuPG lo genero así:
$ gpg --export -a > pgp-key.txt
Tanto security.txt como pgp-key.txt irán en el directorio raíz de la web, aunque el primero debe ser accesible desde otra localización como te mostraré a continuación.
Configuración de httpd
De acuerdo al RFC 8615 el archivo debe ser accesible desde la localización /.well-known/security.txt y no supone un problema que también sea accesible desde el directorio raíz. Este es el bloque correspondiente del archivo httpd.conf(5) dentro del bloque server
:
location "/.well-known/security.txt" {
root "/htdocs/example.com"
request strip 1
}
Una vez cargada la nueva configuración y con ambos archivos de texto en la raíz de la web, compruebo que ambos archivos son accesibles a través de esta URL:
- https://example.com/.well-known/security.txt