Latar Belakang : Agregasi log jarak jauh dianggap sebagai cara untuk meningkatkan keamanan. Secara umum, ini mengatasi risiko bahwa penyerang yang berkompromi dengan sistem dapat mengedit atau menghapus log untuk menggagalkan analisis forensik. Saya telah meneliti opsi keamanan di alat log umum.
Tapi ada yang terasa salah. Saya tidak bisa melihat cara mengkonfigurasi remote logger yang umum (mis. Rsyslog, syslog-ng, logstash) untuk mengautentikasi bahwa pesan yang masuk benar-benar berasal dari host yang diklaim. Tanpa semacam batasan kebijakan, satu pembuat log dapat memalsukan pesan atas nama pembuat log yang lain.
Penulis rsyslog tampaknya memperingatkan tentang otentikasi data log :
Satu kata peringatan terakhir: transport-tls melindungi koneksi antara pengirim dan penerima. Itu tidak selalu melindungi terhadap serangan yang hadir dalam pesan itu sendiri. Khususnya dalam lingkungan relai, pesan mungkin berasal dari sistem jahat, yang menempatkan nama host yang tidak valid dan / atau konten lainnya ke dalamnya. Jika tidak ada ketentuan terhadap hal-hal seperti itu, catatan ini dapat muncul di repositori penerima. -transport-tls tidak melindungi dari ini (tetapi mungkin membantu, digunakan dengan benar). Perlu diingat bahwa syslog-transport-tls menyediakan keamanan hop-by-hop. Itu tidak memberikan keamanan ujung ke ujung dan itu tidak mengotentikasi pesan itu sendiri (hanya pengirim terakhir).
Jadi pertanyaan lanjutannya adalah: apakah konfigurasi yang baik / praktis (dalam alat log umum pilihan Anda - rsyslog, syslog-ng, logstash, dll.) Yang menyediakan sejumlah keaslian?
Atau ... jika tidak ada yang mengotentikasi data log, lalu mengapa tidak ?
-
(Selain itu: Dalam membahas / membandingkan, mungkin membantu menggunakan beberapa diagram atau terminologi dari RFC 5424: Bagian 4.1: Contoh Skenario Penempatan - misalnya "originator" vs "relay" vs "collector")
Jawaban:
Ini pertanyaan yang bagus.
Saya menggunakan logstash untuk mencapai sesuatu seperti apa yang Anda usulkan. Menggunakan logstash (atau logstash-forwarder) untuk mengirimkan log ke sistem pengumpulan pusat Anda, tambahkan konfigurasi logstash untuk menambahkan bidang kunci ke pesan, dengan nilainya menjadi string acak yang panjang dan unik untuk setiap server.
Kemudian di sisi penerima, Anda dapat menambahkan aturan terkait untuk membuang (atau mengingatkan) pesan apa pun di mana kunci host tertentu tidak cocok dengan apa yang Anda harapkan untuk nama hostnya.
Ini bukan anti-peluru, tapi ini adalah langkah solid ke arah yang benar.
sumber
Hal yang benar untuk digunakan adalah TLS dengan sertifikat klien mesin.
rsyslog melakukan ini sejak sekitar 2008, dan memiliki instruksi hebat: http://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_summary.html
Prosesnya sangat sederhana, begini:
Kemudian, komputer Anda tidak dapat saling meniru dan tidak ada yang bisa masuk ke server log Anda tanpa salah satu sertifikat Anda.
Saya melihat Anda sudah menemukan itu, tetapi Anda masih khawatir tentang peringatan mereka. Saya tidak akan terlalu khawatir tentang itu. Injeksi kayu memang suatu hal, tetapi banyak hal, termasuk injeksi melalui aplikasi dan injeksi ke dalam proses logging. Rsyslog terotentikasi tidak akan melindungi Anda jika seseorang memiliki serangan injeksi log dalam perangkat lunak aplikasi Anda, tetapi tidak ada yang bisa atau bisa; hanya memperbaiki aplikasi yang dapat membantu itu. Ini hanya akan melindungi Anda dari log palsu.
Peringatan lainnya dapat dengan mudah dikurangi dengan tidak menggunakan relay, yang sebenarnya tidak ada banyak alasan untuk melakukannya. Jika Anda tidak memiliki relay, dan Anda menggunakan opsi x509 / name untuk driver koneksi gtls di server rsyslog, Anda seharusnya tidak mengalami masalah.
Lihat juga gtls config doc: http://www.rsyslog.com/doc/v8-stable/concepts/ns_gtls.html
sumber