Cara menghantar log perkakas ke pengumpul jauh dengan selamat
Padankan pengangkutan dengan apa yang perkakas boleh keluarkan: syslog TLS, fail SFTP, get laluan tempatan atau terowong dihalakan. Kemudian tulis kontrak penghantaran.
Perkakas boleh mengeluarkan log, pengumpul berada di seberang internet, dan soalan pertama yang semua orang tanya ialah terowong mana yang perlu dibina. Rangka kerja itu bermula di tempat yang salah. Yang menentukan pengangkutan ialah format yang boleh dihasilkan perkakas, pengesahan yang akan diterima pengumpul, dan apa yang “dihantar” patut bermakna apabila pautan terputus. Tulis ketiga-tiga jawapan itu, dan pengangkutan biasanya memilih dirinya sendiri.
Mulakan dengan apa yang perkakas boleh keluarkan
Dalam praktiknya hanya ada tiga bentuk. Peristiwa syslog individu melalui UDP atau TCP, muat naik HTTPS disahkan yang terbina dalam produk, atau fail lengkap yang ditulis ke cakera dan perlu dipindahkan. Tembok api yang hanya boleh menghantar syslog UDP tidak akan menjadi penghantar TLS kerana anda menambah terowong; ia masih menghantar datagram tidak disahkan, kini di dalam sampul tersulit.
Jadi inventori penghantar dahulu: protokol, sokongan TLS dan pustaka TLS yang mana, sama ada ia boleh mengesahkan sijil pengumpul, sama ada ia boleh mengemukakan sijil klien, dan sama ada penimbal hantar bertahan selepas but semula. Apa sahaja yang perkakas tidak boleh lakukan mesti dilakukan oleh sesuatu yang lain di laluan, dan sesuatu yang lain itu menjadi sebahagian daripada reka bentuk anda.
Syslog TLS: laluan terpendek apabila kedua-dua hujung bercakap
Jika perkakas menyokong syslog melalui TLS dan pengumpul menamatkannya, gunakan itu dan berhenti. Protokol aplikasi melindungi dirinya sendiri, pengumpul mengesahkan penghantar, dan tiada lonjakan tambahan yang ketersediaannya kini anda miliki. Perangkapnya ialah “syslog TLS” meliputi pelbagai pelaksanaan, dan panduan syslog selamat semasa telah bergerak melepasi senarai sifer dalam tutorial lama, dan sebab itulah penghantar yang berfungsi menjadi rosak selepas peningkatan pustaka.
Dalam rsyslog, nama modul pengangkutan sahaja sudah memberitahu anda zaman mana anda berada: lmnsd_gtls membalut GnuTLS, manakala lmnsd_ossl membalut OpenSSL dan itulah yang dibekalkan pakej 8.x semasa. Tindakan penghantaran dengan pengesahan sijil kelihatan lebih kurang seperti ini, dan nama parameter yang tepat wajar diperiksa terhadap versi yang dipasang:
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")
Sahkan titik akhir sebelum menyahpepijat penghantar. openssl s_client -connect collector.example:6514 -servername collector.example -CAfile /etc/pki/ca.pem -verify_return_error sama ada melengkapkan jabat tangan dengan rantai sah atau memberitahu anda dengan tepat pemeriksaan mana yang gagal. Uji dari perkakas, bukan dari komputer riba anda, kerana stor kepercayaan perkakas yang penting.
SFTP: baik untuk fail, salah untuk aliran
Penghantaran berasaskan fail sesuai untuk perkakas yang menulis log berputar dan tiada yang lain. Pemindahan berasaskan SSH memberi anda kunci hos, kunci setiap akaun dan sistem fail yang boleh diaudit, yang merupakan kisah kepercayaan munasabah untuk peranti yang tidak boleh TLS langsung. Ia pilihan yang buruk untuk aliran peristiwa, di mana “fail ditulis setiap jam” bermakna gangguan merugikan anda ekor jam semasa.
Biarkan pengesahan hos dihidupkan. Panggilan kelompok yang mematikannya untuk mengelakkan gesaan memusnahkan satu-satunya pengesahan yang ada pada pengangkutan:
sftp -b /etc/logship/batch -o BatchMode=yes -o StrictHostKeyChecking=yes -o IdentitiesOnly=yes -i /etc/logship/id_ed25519 [email protected]
Pin kunci hos dalam known_hosts akaun semasa penyediaan, hadkan akaun kepada direktori sasaran, dan utamakan subsistem internal-sftp dengan chroot. Rancang juga kisah penghantaran semula: jika fail dihantar semula selepas kegagalan separa, pengumpul mesti membezakan pendua daripada fail baharu, biasanya melalui nama tambah checksum dan bukan masa ketibaan.
Apabila get laluan tempatan atau terowong ialah jawapan jujur
Sesetengah perkakas hanya boleh bercakap format yang tiada siapa mahu dedahkan. Dalam kes itu pengumpul dibenarkan di rangkaian perkakas itu sendiri menerima format asli dan menghantarnya ke hadapan melalui TLS. Itu reka bentuk yang sah, tetapi tepat tentang apa yang ia beli: penyulitan yang bermula di get laluan tidak melindungi segmen antara perkakas dan get laluan secara retroaktif, jadi lonjakan itu masih memerlukan sempadan kepercayaan dan kawalan aksesnya sendiri.
Terowong tapak atau peranti dihalakan ialah pilihan paling berat dan yang betul apabila pengumpul mesti mengekalkan alamat peribadi dan membawa beberapa perkhidmatan, bukan hanya log. Ia membawa perancangan alamat, peraturan akses, laluan balik dan kitaran hayat titik akhir terowong. Ia juga tidak memperbaiki protokol dalaman: syslog UDP di dalam terowong IPsec masih perkhidmatan datagram tanpa pengakuan penghantaran.
Apa pun yang anda pilih, kekalkan kebenaran pengumpul lebih sempit daripada pengangkutan. Identiti terowong milik titik akhir, dan ia tidak mengatakan apa-apa tentang perkakas hiliran mana yang menghasilkan medan nama hos tertentu dalam mesej.
Tulis kontrak penghantaran sebelum anda menghantar
Penyulitan, pengesahan dan pengekalan menjawab soalan berbeza, dan baris gilir bukan dasar pengekalan. Sebelum log pertama meninggalkan perkakas, tentukan apa yang pengakuan benar-benar bermaksud pada pengumpul ini: diterima di wayar, diterima untuk diproses, atau ditulis secara tahan lama ke storan. Itu tiga jaminan berbeza dan hanya yang terakhir bertahan selepas pengumpul dimulakan semula.
Kemudian jawab soalan operasi secara bertulis. Di mana peristiwa yang belum dihantar menunggu, dan adakah penimbal itu bertahan selepas gangguan kuasa? Apa yang berlaku apabila ia penuh, dan siapa yang dimaklumkan? Bagaimana cubaan semula dihadkan, dan bagaimana pendua dikenal pasti? Medan mana yang membuktikan identiti penghantar, memandangkan lonjakan penghantaran boleh menulis semula nama hos?
Kekalkan reka bentuk cukup kecil untuk dijelaskan dalam satu perenggan: pengangkutan disokong terkecil yang membawa peristiwa yang diperlukan, serta pernyataan jelas tentang jaminan yang tidak diberikannya. Jika jawapannya memerlukan dua lonjakan, nyatakan itu dalam runbook dan beri setiap lonjakan seorang pemilik.