Како безбедно да се испратат дневниците на уредот до далечен собирач
Прилагодете го транспортот на она што уредот може да го испушти: TLS syslog, SFTP датотеки, локален портал или рутиран тунел. Потоа напишете го договорот за достава.
Уредот може да испушта дневници, собирачот стои од другата страна на интернет, и првото прашање што сите го поставуваат е кој тунел да се изгради. Оваа рамка започнува од погрешно место. Транспортот го одредуваат форматот што уредот може да го создаде, автентикацијата што собирачот ќе ја прифати и тоа што „доставено“ треба да значи кога врската ќе падне. Запишете ги тие три одговори и транспортот обично сам се избира.
Започнете од она што уредот може да го испушти
Во практиката има само три форми. Поединечни syslog настани преку UDP или TCP, автентифицирано HTTPS качување вградено во производот, или цели датотеки запишани на диск што треба да се преместат. Огнениот ѕид што може да испраќа само UDP syslog нема да стане TLS испраќач затоа што додадовте тунел; тој сѐ уште ќе испраќа непотврдени датаграми, сега во шифрирана обвивка.
Затоа прво направете попис на испраќачот: протокол, TLS поддршка и која TLS библиотека, дали може да го провери сертификатот на собирачот, дали може да претстави клиентски сертификат и дали баферот за испраќање го преживува рестартирањето. Сѐ што уредот не може да го направи мора да го направи нешто друго на патеката, и тоа нешто друго станува дел од вашиот дизајн.
TLS syslog: најкратката патека кога двата краја го зборуваат
Ако уредот поддржува syslog преку TLS и собирачот го завршува, користете го тоа и застанете. Апликацискиот протокол се штити себеси, собирачот го автентифицира испраќачот, и нема дополнителен скок чија достапност сега ја поседувате. Задршката е во тоа што „TLS syslog“ покрива широк опсег на имплементации, и актуелните упатства за безбеден syslog отидоа подалеку од шифрите во старите упатства, и затоа работен препраќач станува расипан по надградба на библиотека.
Во rsyslog, самото име на транспортниот модул кажува во која ера сте: lmnsd_gtls го обвиткува GnuTLS, додека lmnsd_ossl го обвиткува OpenSSL и тоа го испорачуваат актуелните 8.x пакети. Дејство за препраќање со проверка на сертификат изгледа приближно вака, и точните имиња на параметрите вреди да се проверат со инсталираната верзија:
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")
Проверете ја крајната точка пред да го дебагирате испраќачот. openssl s_client -connect collector.example:6514 -servername collector.example -CAfile /etc/pki/ca.pem -verify_return_error или завршува ракување со валиден синџир или ви кажува точно која проверка не успеала. Тестирајте од уредот, не од лаптопот, зашто складиштето на доверба на уредот е она што е важно.
SFTP: добар за датотеки, погрешен за текови
Доставата врз основа на датотеки одговара на уреди што пишуваат ротирачки дневници и ништо друго. Преносот преку SSH ви дава клучеви на домаќинот, клучеви по сметка и датотечен систем што можете да го ревидирате, што е разумна приказна за доверба за уред што воопшто не може TLS. Тоа е лош избор за текови на настани, каде „датотеката се пишува секој час“ значи дека прекин ве чини опашката на тековниот час.
Држете ја проверката на домаќинот вклучена. Пакетно повикување што ја исклучува за да избегне барање ја уништува единствената автентикација што ја има транспортот:
sftp -b /etc/logship/batch -o BatchMode=yes -o StrictHostKeyChecking=yes -o IdentitiesOnly=yes -i /etc/logship/id_ed25519 [email protected]
Прикачете го клучот на домаќинот во known_hosts на сметката при подготвувањето, ограничете ја сметката на целната папка и претпочитајте го потсистемот internal-sftp со chroot. Испланирајте ја и приказната за повторно испраќање: ако датотека се испрати повторно по делумен неуспех, собирачот мора да разликува дупликат од нова датотека, обично по име плус контролна сума, а не по време на пристигнување.
Кога локалниот портал или тунелот е чесниот одговор
Некои уреди можат да зборуваат само формат што никој не сака да го изложи. Во тој случај авторизиран собирач на мрежата на самиот уред го прима матичниот формат и го препраќа понатаму преку TLS. Тоа е легитимен дизајн, но бидете прецизни за тоа што го купува: шифрирањето што започнува на порталот не го штити ретроактивно сегментот помеѓу уредот и порталот, па тој скок сѐ уште бара своја граница на доверба и контрола на пристап.
Рутиран тунел на локација или уред е најтешката опција и вистинската кога собирачот мора да задржи приватна адреса и да носи неколку услуги, не само дневници. Тој носи планирање на адреси, правила за пристап, повратни патишта и животниот циклус на крајната точка на тунелот. Тој исто така не го подобрува внатрешниот протокол: UDP syslog во IPsec тунел сѐ уште е датаграмска услуга без потврда за достава.
Што и да изберете, држете ја авторизацијата на собирачот потесна од транспортот. Идентитетот на тунелот припаѓа на крајна точка и не кажува ништо за тоа кој понизок уред го создал даденото поле за име на домаќин во порака.
Напишете го договорот за достава пред да испратите
Шифрирањето, автентикацијата и задржувањето одговараат на различни прашања, а редицата не е политика за задржување. Пред првиот дневник да го напушти уредот, одлучете што навистина значи потврда на овој собирач: примено на жицата, прифатено за обработка или трајно запишано во складиште. Тоа се три различни гаранции и само последната го преживува рестартирањето на собирачот.
Потоа одговорете писмено на оперативните прашања. Каде чекаат неиспратените настани и дали тој бафер преживува прекин на струја? Што се случува кога ќе се наполни и кого известуваат? Како се ограничени повторувањата и како се идентификуваат дупликатите? Кое поле го докажува идентитетот на испраќачот, имајќи предвид дека скокот за препраќање може да го препише името на домаќинот?
Држете го дизајнот доволно мал за да се објасни во еден пасус: најмалиот поддржан транспорт што ги носи потребните настани, плус јасна изјава за гаранциите што не ги дава. Ако одговорот бара два скока, кажете го тоа во runbook и дајте на секој скок сопственик.