Cum să trimiți jurnalele unui aparat către un colector la distanță în siguranță
Potriviți transportul cu ceea ce aparatul poate emite: syslog TLS, fișiere SFTP, un gateway local sau un tunel rutat. Apoi scrieți contractul de livrare.
Aparatul poate emite jurnale, colectorul stă de cealaltă parte a internetului, iar prima întrebare pe care o pune toată lumea este ce tunel să construim. Această abordare începe în locul greșit. Transportul este decis de formatul pe care aparatul îl poate produce, de autentificarea pe care o va accepta colectorul și de ce ar trebui să însemne „livrat” atunci când legătura cade. Scrieți cele trei răspunsuri, iar transportul se alege de obicei singur.
Începeți cu ceea ce aparatul poate emite
În practică există doar trei forme. Evenimente syslog individuale prin UDP sau TCP, o încărcare HTTPS autentificată inclusă în produs, sau fișiere complete scrise pe disc care trebuie mutate. Un firewall care poate trimite doar syslog UDP nu va deveni un expeditor TLS pentru că ați adăugat un tunel; va trimite în continuare datagrame neconfirmate, acum într-un plic criptat.
Așadar, inventariați mai întâi expeditorul: protocol, suport TLS și ce bibliotecă TLS, dacă poate valida certificatul colectorului, dacă poate prezenta un certificat de client și dacă tamponul de trimitere supraviețuiește unei reporniri. Tot ce aparatul nu poate face trebuie făcut de altceva pe cale, iar acel altceva devine parte din proiectul dumneavoastră.
Syslog TLS: cea mai scurtă cale când ambele capete îl vorbesc
Dacă aparatul acceptă syslog prin TLS și colectorul îl termină, folosiți-l și opriți-vă. Protocolul aplicației se protejează singur, colectorul autentifică expeditorul și nu există niciun salt suplimentar a cărui disponibilitate o dețineți acum. Capcana este că „syslog TLS” acoperă o gamă largă de implementări, iar îndrumările actuale pentru syslog sigur au depășit listele de cifruri din tutorialele vechi, și de aceea un forwarder funcțional se strică după o actualizare de bibliotecă.
În rsyslog, numele modulului de transport spune singur în ce eră sunteți: lmnsd_gtls învelește GnuTLS, în timp ce lmnsd_ossl învelește OpenSSL și asta livrează pachetele 8.x actuale. O acțiune de redirecționare cu validarea certificatului arată aproximativ așa, iar numele exacte ale parametrilor merită verificate față de versiunea instalată:
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")
Verificați punctul final înainte de a depana expeditorul. openssl s_client -connect collector.example:6514 -servername collector.example -CAfile /etc/pki/ca.pem -verify_return_error fie finalizează un handshake cu un lanț valid, fie vă spune exact ce verificare a eșuat. Testați de pe aparat, nu de pe laptop, pentru că depozitul de încredere al aparatului este cel care contează.
SFTP: bun pentru fișiere, greșit pentru fluxuri
Livrarea bazată pe fișiere se potrivește aparatelor care scriu jurnale rotative și nimic altceva. Transferul prin SSH vă oferă chei de gazdă, chei pe cont și un sistem de fișiere pe care îl puteți audita, ceea ce este o poveste de încredere rezonabilă pentru un dispozitiv care nu poate deloc TLS. Este o alegere slabă pentru fluxurile de evenimente, unde „fișierul este scris în fiecare oră” înseamnă că o întrerupere vă costă coada orei curente.
Lăsați verificarea gazdei activată. Un apel în lot care o dezactivează pentru a evita un prompt distruge singura autentificare pe care o are transportul:
sftp -b /etc/logship/batch -o BatchMode=yes -o StrictHostKeyChecking=yes -o IdentitiesOnly=yes -i /etc/logship/id_ed25519 [email protected]
Fixați cheia de gazdă în known_hosts contului în timpul provizionării, limitați contul la directorul țintă și preferați subsistemul internal-sftp cu chroot. Planificați și povestea retransmisiei: dacă un fișier este retrimis după o eșec parțial, colectorul trebuie să distingă un duplicat de un fișier nou, de obicei după nume plus suma de control și nu după ora sosirii.
Când un gateway local sau un tunel este răspunsul onest
Unele aparate pot vorbi doar un format pe care nimeni nu vrea să îl expună. În acest caz, un colector autorizat din rețeaua proprie a aparatului primește formatul nativ și îl redirecționează mai departe prin TLS. Este un proiect legitim, dar fiți preciz în privința a ceea ce cumpără: criptarea care începe la gateway nu protejează retroactiv segmentul dintre aparat și gateway, așa că acel salt are în continuare nevoie de propria graniță de încredere și control de acces.
Un tunel rutat de site sau de dispozitiv este opțiunea cea mai grea și cea corectă atunci când colectorul trebuie să păstreze o adresă privată și să transporte mai multe servicii, nu doar jurnale. Aduce planificarea adreselor, regulile de acces, căile de întoarcere și ciclul de viață al punctului final al tunelului. De asemenea, nu îmbunătățește protocolul intern: syslog UDP într-un tunel IPsec rămâne un serviciu de datagrame fără confirmare de livrare.
Orice ați alege, păstrați autorizarea colectorului mai îngustă decât transportul. Identitatea unui tunel aparține unui punct final și nu spune nimic despre ce aparat din aval a produs un anumit câmp de nume de gazdă într-un mesaj.
Scrieți contractul de livrare înainte de a trimite
Criptarea, autentificarea și retenția răspund la întrebări diferite, iar o coadă nu este o politică de retenție. Înainte ca primul jurnal să părăsească aparatul, decideți ce înseamnă cu adevărat o confirmare la acest colector: primit pe fir, acceptat pentru procesare sau scris durabil în stocare. Acestea sunt trei garanții diferite și doar ultima supraviețuiește unei reporniri a colectorului.
Apoi răspundeți în scris la întrebările operaționale. Unde așteaptă evenimentele netrimise și acel tampon supraviețuiește unei pene de curent? Ce se întâmplă când se umple și cine este anunțat? Cum sunt limitate reîncercările și cum sunt identificate duplicatele? Care câmp dovedește identitatea expeditorului, dat fiind că un salt de redirecționare poate rescrie numele de gazdă?
Păstrați proiectul suficient de mic pentru a fi explicat într-un paragraf: cel mai mic transport acceptat care duce evenimentele necesare, plus o declarație explicită a garanțiilor pe care nu le oferă. Dacă răspunsul are nevoie de două salturi, spuneți-o în runbook și dați fiecărui salt un responsabil.