rsyslog: remote logging en hoe ik alles voor niets doe [1/2]
Een van de (vele) dingen die ontbreken in m'n lab is remote logging. Het nut ervan is misschien omstreden omdat ik een zero-trust policy over m'n eigen LAN nu nog te ver vind gaan. Ik verwacht niet dat hackers inbreken en de lokale logbestanden verwijderen en als alles werkt heb je geen logging nodig. Toch?
Toch is het fijn om het te hebben. Logs zijn makkelijker te analyseren als het op een centrale plek staat. Daarnaast kan met Grafana/Loki of Greylog met een statistische analyse mooi in de gaten gehouden worden welke storingen het meest voorkomen.
rsyslog is hiervoor in het leven geroepen. Door middel van een server/client model kunnen logs extern aangeboden worden. Daarnaast ondersteunt rsyslog TCP en TLS zodat we zeker weten dat al het verkeer aankomt en dat er niet gerotzooid is met de logs door een kwaadwillend persoon. Filtering kan toegepast worden op de logging zodat we de ruis kunnen verminderen. Met een extra tool is log rotatie ook mogelijk zodat we orde kunnen scheppen in de ogenschijnlijke wanorde van logs.
Als test case wil ik remote logging toepassen op een Docker host, Proxmox node, OPNsense en een TrueNAS box. Ik begin met het aanmaken van een CT op RouterBox omdat die server op papier de hoogste uptime heeft. Veel bronnen heeft ie niet nodig, 1 vCore en 512 MB RAM is prima voor dit soort doeleinde. Voor het gemak maar even SSHd aangezet met PermitRootLogin yes. Daarna 'apt install rsyslog logrotate' om de kern van dit project te downloaden.

Vervolgens moeten we rsyslog configureren als server of 'listener' en aangeven dat we voor elke host een eigen log en map willen hebben. Daarna rsyslog installeren op de Proxmox node Routerbox en aangeven dat het een client of 'talker' moet worden. We kunnen hier ervoor kiezen welke logs we willen doorsturen. Voor nu willen we alles hebben. Waar ik tegenaan liep is dat als de verbinding tussen de client en de server wegvalt, de logging niet wordt gesynchroniseerd als de verbinding weer up is. Hiervoor was extra configuratie nodig.
Na de configuratie maak ik een test entry in het logbestand op de client. Na een grep gedaan te hebben op de listener zie ik die entry mooi terugkomen.

Dezelfde configuratie passen we toe bij de Docker host DockerLocker, immers draait die ook op Debian. Voor OPNsense is het een iets ander verhaal; Die draait xBSD als besturingssysteem en heeft een mooie web-UI waar remote logging aangezet kan worden.

Als laatste is TrueNAS Scale aan de beurt. Ondanks het op de achtergrond draait op Debian wil ik zo min mogelijk handmatig dingen doen in de CLI. Ook tNAS heeft een web-UI en daarnaast is het geen garantie dat handmatige instellingen nog steeds werken na een versie upgrade.

Graylog: Een Web-UI voor inzage
Om alle ingress van informatie een beetje inzichtelijk te hebben, is het makkelijk als de log via een Web-UI te benaderen zijn. Grafana/Loki is een veelgebruikte stack en is redelijk geavanceerd. Gezien ik een leek ben als het gaat om het analyseren van logbestanden, besloot ik om voor Greylog te gaan. Volgens ingewijden is dat een stuk meer behapbaar dan die andere meuk.
Greylog draait in combinatie met Opensearch om te zoeken en MongoDB om de configuratie op te slaan. Meestal draait deze stack in een Docker omgeving, echter wil ik niet nog een docker host en vind ik het onzinnig om Docker te installeren voor een enkele container. Daarnaast zit ik niet te wachten op de extra overhead die Docker met zich meebrengt. Bare-metal it is! Het betekent wel dat we de CT wat meer bronnen moeten geven. vCore zetten we op 2 en we wijzen een barmhartige 6 GiB RAM toe.
MongoDB heeft zijn eigen repository. We halen eerst de GPG key binnen en voegen de repo toe aan sources.list. na een apt update en install krijgen we de volgende melding:

Wat is er loos ... De CT draait op Debian 13 en SHA-1 is nu deprecated. Dat betekent dat de bestanden van de repo als onveilig worden beschouwd. ChatGPT adviseert me om terug te gaan naar Debian 12. ChatGPT moet zijn mond houden. De boel wordt er niet minder onveilig door, door te switchen naar Debian 12. Het probleem is immers de repo en niet het OS. In sources.list forceer ik om de Mongo repo te vertrouwen en doe ik daarna een nieuwe apt update & install. Shit, ook dat werkt niet. Als laatste strohalm probeer ik MongoDB uit de Debian repo te halen maar die versie komt uit de tijd dat we nog met spijkerschrift werken.
To be continued ...