Ondertekenen van een bestand met een GPG sleutel in linux

Security.txt

Internet.nl heeft voor haar testen een verdere proeve van bekwaamheid toegevoegd: de aanwezigheid van een tekstbestand met de naam security.txt. “Dit is een gestandaardiseerd tekstbestand met contactinformatie dat je op je webserver plaatst. Beveiligingsonderzoekers kunnen deze informatie gebruiken om direct contact met de juiste afdeling of persoon binnen je organisatie op te nemen over kwetsbaarheden die zij in je website of IT-systemen hebben gevonden. Dit kan het verhelpen van de gevonden kwetsbaarheden versnellen, waardoor kwaadwillenden minder kans krijgen om er misbruik van te maken. Kortom: test je eigen domein en voeg een security.txt-bestand toe!” aldus internet.nl.

Aanmaken van een sleutel

Het bestand dient versleuteld te zijn opdat de lezer zo nodig zelf kan verifiëren dat met het bestand niet gerommeld is en dat de (contact)gegevens correct zijn. Het bestand heeft een standaard formaat dat zowel voor een computer als voor een mens leesbaar is. Digital Trust Center (DTC) heeft een gids gepubliceerd die in vier stappen uitlegt hoe je een security.txt bestand aanmaakt. Ik heb daar twee stappen aan toegevoegd, met uitleg hoe je het bestand versleutelt en ondertekent.

Stap 1

Kies het contactadres. Bij wie wil je dat de melding binnenkomt? Bij je bedrijf of bij je IT-dienstverlener? Maak hiervoor de inschatting wie iets met de meldingen kan of gaat doen.

Stap 2

Gebruik de tool op securitytxt.org en vul daar in ieder geval het contactadres en vervaldatum in. Maak vervolgens met één klik je eigen security.txt-bestand.

Stap 3

Versleutel en onderteken het bestand met een publieke sleutel van opensource programma PGP. Met de opdracht gpg –clearsign maakt de PGP software een versleuteld tekstbestand. Alvorens deze opdracht uit te voeren, moeten eerst de sleutels worden gegenereerd. Open een terminal in linux en bepaal de sleutels met de volgende opdracht:

gpg --full-generate-key

  1. Specificeer het type versleuteling of druk op enter om de standaardversleutelingsmethode toe te passen (RSA en RSA)
  2. Specificeer de omvang van de sleutel of druk op enter om de standaardwaarde toe te passen (3072 bits)
  3. Specificeer de geldigheidsduur van de sleutel waarbij de standaardwaarde is dat de sleutel geen expiratietermijn heeft
  4. Voer je naam in en vervolgens het email adres
  5. Bevestig de opgegeven instellingen door de hoofdletter O in te tikken
  6. Voer een wachtwoordzin in om de nieuwe sleutel te beschermen

Het resultaat wordt in de terminal weergegeven. Bewaar deze sleutelgegevens op een veilige plek, inclusief de wachtwoordzin.

voorbeeld sleutel
Figuur output terminal na genereren van de sleutel

De opdracht gpg --clearsign is alleen van toepassing op tekstbestanden. De optie ‘–clearsign’ zorgt ervoor dat het document van een ASCI-beschermde digitale handtekening wordt voorzien die het document zelf echter niet aantast. Met de opdracht gpg --clearsign security.txt wordt een “security.txt.asc” bestand gegenereerd dat met elke teksteditor te openen is.

De sleutels zijn opvraagbaar met de opdracht gpg --list-keys.

Stap 4
  • Met de sleutels kan nu het security.txt bestand worden versleuteld.
  • Gebruik het security.txt bestand uit stap 2.
  • Onderstaande opdracht versleutelt het bestand en voegt de sha512 hash toe aan het tekstbestand.
  • Je krijgt vervolgens een melding om een bepaalde sleutel te gebruiken met benaming en comment (zie stap 1).

gpg --clear-sign security.txt

Verifieer of het bestand goed versleuteld is:
gpg --verify security.txt

Dit geeft onderstaande output in de terminal:

root@ubuntu:/web/wordpress/.well-known# gpg --verify security.txt
gpg: Signature made Tue Dec 5 22:25:16 2023 CET
gpg: using RSA key [vingerafdruk van de sleutel]
gpg: Good signature from "Bart Vrancken (admin) <info@adagia.eu>" [ultimate]
Stap 5

Maak op je webserver een map aan met de naam “.well-known”. Deze map staat dus een niveau onder de hoofdmap waarop je website beschikbaar is (zie voorbeeld hierboven). Plaats in deze map het met de sleutel beveiligde security.txt-bestand.

Security.txt voor adagia.eu ziet er zo uit:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Contact: mailto:info@adagia.eu
Expires: 2024-12-03T00:00:00z
Encryption: https://adagia.eu/disclosure
Canonical: https://adagia.eu/.well-known/security.txt
Preferred-Languages: nl,en,de
-----BEGIN PGP SIGNATURE-----

iQGzBAEBCgAdFiEE2Gjx8OmOgvA8LJrTnOfKGavfIuQFAmVvlTwACgkQnOfKGavf
IuSh8Qv/WkkbRBCflbQNjZmC24oIGpTetlmS0hirqBG3JM/ji+olRKDwDTj1AYl9
B95stxx1YcuS2ZG/HsDfsAIFXjbJd6lxnVCTIB8Bwh4+27CDduRZBzSu0/zk/WdL
lRLROvngAERr4fXRRdPR/nge8j7IMZqDTOvopv1VRXCZanQkanwigYwga85vloHQ
OKEMgMGqYR9pYE9UoxbeZ3RNe1hCo2RQD/ZY5kjR74aU7V1sfS88RwXfku4RlmVu
lXfggQFCnVNzT7dVAa2b41uTERLrXtVkIWJk6zDjPWGxjeA8aD7VHMLr2zO41Q6C
U+nwAT6PpzlzNNzSlzU/vggpqym7AypE0UjzDNuDOo3BxK3v6HmyrR77IJbj32/X
XErPHUERmtezsz9WeWCl3I5cuMsaMW8+RZxI4ZWRxsherWAIzHjLqZSpMI4AZBqR
DfOs0oDXcfrPcwG3wKCxPD1H4rKgfI+tUnp0ImeD6mTGy4W3+eTEpARbaGb0nNdn
qQ4xYn2N
=cqn+
-----END PGP SIGNATURE-----
Stap 6

Gebruik de tool op internet.nl om te controleren of je security.txt goed geïmplementeerd hebt. Als de test niet voldoende is, geeft internet.nl aan wat nog moet worden verbeterd.