Uppdaterat 8 augusti, 2019.

I mitt tidigare inlägg skrev jag angående GDPR och kryptering. För den som är intresserad, skriver jag nedan om att kryptera loggfiler i Linux-miljö. Inlägget är inspirerat av det som skrevs i ctrl.blog, eftersom skribenten inte gick djupare i det ämnet. Förhoppningsvis kan mitt inlägg ge lite bättre svar i ämnet.

Blogginlägget är licensierat under en Creative Commons Erkännande-DelaLika 4.0 Internationell Licens.

Bild som kan exemplifera resultatet av att kryptera loggfiler.
Icons”. Bild av geralt. Licens: CC0.

1. Skapa ett nyckelpar, i båda maskiner

GnuPG är ett fritt program som implementerar OpenPGP-standarden enligt RFC4880 (även känt som PGP). För att öka säkerheten bör ett nyckelpar skapas i en separat maskin. Det minskar eventuella skador, om någon obehörig skulle ta över måldatorn som skall kryptera loggfilerna.

Nyckelpar kan skapas i Linux-, Windows- och Mac-datorer i olika program. Github har skrivit ett inlägg om hur man skapar ett nyckelpar med GPG.

Tips om gpg hänger sig

Om man har en Debian- eller Ubuntu-maskin, får man gärna se till att installera programmet gpg2. Kommandon nämnda nedan är testade på en Ubuntu-maskin.

sudo apt-get install gnupg2

Därefter får man installera programmet rng-tools. Detta fungerar som en brygga mellan datorns hårdvarubaserade slumpnummergenerator och Linux slumpnummer-generator.

sudo apt-get install rng-tools

(Tack till Deligthly Linux för dessa instruktioner)

2. Importera enbart den publika nyckeln

För att kryptera loggfilerna i servern måste gpg2 vara installerad i servern. Därefter måste den publika nyckeln importeras till loggservern. Nyckeln används för att kryptera filerna, och kan inte användas för att avkryptera dem. När nyckeln hos på den berörda användaren som exekverar logrotate, skall även nyckeln importeras med kommandot nedan (förutsatt att den publika nyckeln heter public.key):

gpg --import public.key

Det viktiga är också att nyckeln är betrodd. För att få nyckelidentiteter som man har på Linux-servern kör man nedan kommando.

gpg --list-keys --keyid-format LONG

Nyckeln som man importerat kan man också modifiera, om den inte känns igen som betrodd. Kör då nedan kommando (obs! Du bör vara helt säker på att detta är din importerade nyckel):

gpg --edit-key keyid

Därefter väljs förtroende för denna nyckel, som är viktig för att kunna kryptera loggfilerna framöver.

gpg> trust

Välj nu hur mycket du litar på nyckeln.

3. Modifiera konfigurationsfilen för att kryptera loggfiler

Lägg till nedan kod för de program som du önskar krypteras. Keyid är det användar-id som är lagrat med nyckeln (exempelvis namn@e-post.com). ”Shred” tar bort loggen i klartext efter att den krypteras och komprimeras. Loggen finns i maskinen enbart 24 timmar i klartext innan den komprimeras och krypteras:

daily
shred
compress
compresscmd /usr/bin/gpg2
compressoptions --encrypt --default-key keyid
compressext .gpg

4. Testa och implementera konfigurationen

För att testa konfigurationen kan du nu köra nedan kommando. Ändra <loggfil> till den filen du modifierade, exempelvis /etc/logrotate.conf

sudo logrotate -df <loggfil>

Allt är klart om testet fungerade felfritt. Konfigurationen implementeras automatiskt då logrotate körs via crontab och är därmed schemalagd att köras redan.