Hoe u apparaatlogboeken veilig naar een externe collector stuurt
Pas het transport aan op wat het apparaat kan uitsturen: TLS-syslog, SFTP-bestanden, een lokale gateway of een gerouteerde tunnel. Schrijf daarna het leveringscontract op.
Het apparaat kan logboeken uitsturen, de collector staat aan de andere kant van het internet, en de eerste vraag die iedereen stelt is welke tunnel er gebouwd moet worden. Dat kader begint op de verkeerde plek. Wat het transport bepaalt, is het formaat dat het apparaat kan produceren, de authenticatie die de collector accepteert, en wat „afgeleverd“ moet betekenen wanneer de verbinding wegvalt. Schrijf die drie antwoorden op, en het transport kiest meestal zichzelf.
Begin bij wat het apparaat kan uitsturen
In de praktijk bestaan er maar drie vormen. Losse syslog-gebeurtenissen over UDP of TCP, een geauthenticeerde HTTPS-upload die in het product is ingebouwd, of volledige bestanden die naar schijf worden geschreven en verplaatst moeten worden. Een firewall die alleen UDP-syslog kan versturen, wordt geen TLS-verzender omdat u een tunnel hebt toegevoegd; hij blijft niet-bevestigde datagrammen sturen, nu in een versleutelde envelop.
Inventariseer dus eerst de verzender: protocol, TLS-ondersteuning en welke TLS-bibliotheek, of hij het certificaat van de collector kan valideren, of hij een clientcertificaat kan presenteren, en of de verzendbuffer een herstart overleeft. Alles wat het apparaat niet kan, moet iets anders op het pad doen, en dat iets anders wordt deel van uw ontwerp.
TLS-syslog: het kortste pad wanneer beide kanten het spreken
Als het apparaat syslog over TLS ondersteunt en de collector dat termineert, gebruik dat dan en stop. Het applicatieprotocol beschermt zichzelf, de collector authenticeert de verzender, en er is geen extra hop waarvan u nu de beschikbaarheid bezit. De valkuil is dat „TLS-syslog“ een breed scala aan implementaties dekt, en de huidige richtlijnen voor veilige syslog zijn verder gegaan dan de cijferlijsten in oudere handleidingen, en daarom wordt een werkende doorstuurder kapot na een bibliotheekupdate.
Bij rsyslog vertelt de naam van de transportmodule al in welk tijdperk u zit: lmnsd_gtls wikkelt GnuTLS in, terwijl lmnsd_ossl OpenSSL inwikkelt en dat leveren de huidige 8.x-pakketten. Een doorstuuractie met certificaatvalidatie ziet er ongeveer zo uit, en de exacte parameternamen zijn het waard om tegen uw geïnstalleerde versie te controleren:
action(type="omfwd" target="collector.example" port="6514" protocol="tcp"
StreamDriver.Name="ossl" StreamDriver.Mode="1" StreamDriver.AuthMode="x509/name"
StreamDriver.CAFile="/etc/pki/ca.pem"
queue.type="LinkedList" queue.filename="fwdq" queue.maxDiskSpace="1g"
queue.saveOnShutdown="on" action.resumeRetryCount="-1")
Valideer het eindpunt voordat u de verzender debugt. openssl s_client -connect collector.example:6514 -servername collector.example -CAfile /etc/pki/ca.pem -verify_return_error voltooit ofwel een handshake met een geldige keten of vertelt u precies welke controle is mislukt. Test vanaf het apparaat, niet vanaf uw laptop, want de truststore van het apparaat is degene die telt.
SFTP: goed voor bestanden, verkeerd voor streams
Levering op basis van bestanden past bij apparaten die roterende logboeken schrijven en niets anders. Overdracht via SSH geeft u hostsleutels, sleutels per account en een bestandssysteem dat u kunt auditen, wat een redelijk vertrouwensverhaal is voor een apparaat dat helemaal geen TLS kan. Het is een slechte keuze voor gebeurtenisstromen, waar „het bestand wordt elk uur geschreven“ betekent dat een storing u de staart van het huidige uur kost.
Laat hostverificatie aan staan. Een batch-aanroep die het uitzet om een prompt te vermijden, vernietigt de enige authenticatie die het transport heeft:
sftp -b /etc/logship/batch -o BatchMode=yes -o StrictHostKeyChecking=yes -o IdentitiesOnly=yes -i /etc/logship/id_ed25519 [email protected]
Pin de hostsleutel tijdens het inrichten in de known_hosts van het account, beperk het account tot de doeldirectory, en geef de voorkeur aan het internal-sftp-subsysteem met chroot. Plan ook het verhaal van opnieuw verzenden: als een bestand na een gedeeltelijke fout opnieuw wordt verzonden, moet de collector een duplicaat van een nieuw bestand kunnen onderscheiden, meestal op naam plus controlesom en niet op aankomsttijd.
Wanneer een lokale gateway of een tunnel het eerlijke antwoord is
Sommige apparaten kunnen alleen een formaat spreken dat niemand wil blootstellen. In dat geval ontvangt een geautoriseerde collector op het eigen netwerk van het apparaat het native formaat en stuurt het verder over TLS. Dat is een legitiem ontwerp, maar wees precies over wat het koopt: versleuteling die bij de gateway begint, beschermt het segment tussen apparaat en gateway niet met terugwerkende kracht, dus die hop heeft nog steeds zijn eigen vertrouwensgrens en toegangscontrole nodig.
Een gerouteerde site- of apparaattunnel is de zwaarste optie en de juiste wanneer de collector een privéadres moet behouden en meerdere diensten moet dragen, niet alleen logboeken. Hij brengt adresplanning, toegangsregels, retourpaden en de levenscyclus van het tunneleindpunt mee. Hij verbetert ook het binnenste protocol niet: UDP-syslog in een IPsec-tunnel blijft een datagramdienst zonder leveringsbevestiging.
Wat u ook kiest, houd de autorisatie van de collector nauwer dan het transport. Een tunnelidentiteit hoort bij een eindpunt, en zegt niets over welk stroomafwaarts apparaat een bepaald hostnaamveld in een bericht heeft geproduceerd.
Schrijf het leveringscontract voordat u verzendt
Versleuteling, authenticatie en bewaring beantwoorden verschillende vragen, en een wachtrij is geen bewaringsbeleid. Voordat het eerste logboek het apparaat verlaat, beslist u wat een bevestiging op deze collector werkelijk betekent: ontvangen op de lijn, geaccepteerd voor verwerking, of duurzaam naar opslag geschreven. Dat zijn drie verschillende garanties en alleen de laatste overleeft een herstart van de collector.
Beantwoord daarna de operationele vragen schriftelijk. Waar wachten onverzonden gebeurtenissen, en overleeft die buffer een stroomstoring? Wat gebeurt er als hij vol raakt, en wie wordt er ingelicht? Hoe zijn herhalingen begrensd, en hoe worden duplicaten geïdentificeerd? Welk veld bewijst de identiteit van de verzender, gezien het feit dat een doorstuurstap de hostnaam kan herschrijven?
Houd het ontwerp klein genoeg om het in één alinea uit te leggen: het kleinste ondersteunde transport dat de vereiste gebeurtenissen draagt, plus een expliciete verklaring van de garanties die het niet biedt. Als het antwoord twee hops nodig heeft, zeg dat dan in de runbook en geef elke hop een eigenaar.