Di mana server OpenVPN seharusnya menulis lognya, dan mengapa
log, log-append, dan syslog berbeda, dan manajer layanan menyimpan salinannya sendiri. Pilih satu aliran otoritatif, jaga siklus hidup tetap terbaca, dan tetapkan retensi.
Desain log menjawab tiga pertanyaan: proses mana yang menghasilkan catatan, di mana catatan itu mendarat, dan berapa lama ia bertahan. OpenVPN dapat menulis ke berkas, menyerahkan pesan ke logger sistem, atau membiarkannya pada apa yang ditangkap manajer layanan, dan itu bukan tiga salinan dari satu aliran. Setiap pilihan mengubah siapa yang memiliki rotasi, pengguna mana yang dapat membaca hasilnya, dan apa yang terjadi saat mulai. Tetapkan jawabannya sebelum insiden, karena setelahnya Anda mewarisi apa yang sudah dikonfigurasi.
Apa yang sebenarnya dilakukan daemon dengan direktif itu
Direktif bukan abstraksi; masing-masing menentukan di mana proses menulis pesannya. log /path membuka berkas itu, log-append /path membukanya untuk menambahkan, dan syslog menyerahkan pesan ke logger sistem lokal melalui soketnya. Tanpa salah satunya, keluaran pergi ke keluaran standar dan manajer layanan memutuskan apa yang terjadi berikutnya. Baca unit efektif dan profil bersama-sama sebelum menyimpulkan bahwa daemon mengabaikan konfigurasi Anda.
Kasus terakhir umum pada instalasi paket, dan itu menjelaskan mengapa dua administrator tidak sepakat tentang lokasi log. Yang satu membaca journal unit, yang lain membaca berkas yang tidak pernah ditulis daemon.
Periksa konfigurasi yang berjalan, bukan berkas di disk. Penimpaan unit jenis drop-in atau berkas lingkungan dapat mengubah direktif efektif tanpa menyentuh profil yang Anda baca.
log memotong, log-append tidak
log memotong berkas yang ada saat direktif mulai berlaku, sehingga mulai ulang menghapus bukti sebelumnya. log-append mempertahankan apa yang ada dan menambahkan. Tidak ada opsi yang merotasi apa pun, dan tidak ada yang membuka kembali berkas itu sendiri nanti, karena itu rotasi membutuhkan kerja sama.
Jika rotasi mengganti nama berkas sementara daemon terus menulis ke deskriptor lama, berkas baru tetap kosong dan penggunaan disk terus naik di berkas yang diganti nama. Kirim sinyal ke proses untuk membuka kembali, atau rotasi dengan strategi salin-dan-potong serta terima jendela penyalinan.
Direktori, kepemilikan, dan izin adalah bagian dari desain. Daemon dapat berjalan sebagai pengguna tanpa hak istimewa setelah mulai, dan direktori yang dibuat root saat instalasi mungkin tidak dapat ditulis saat itu. Siapkan melalui pengemasan atau proses penyebaran alih-alih memperbaiki izin saat insiden.
Manajer layanan menyimpan salinan kedua
systemd menangkap keluaran standar dan keluaran galat secara default, jadi unit tanpa pengalihan eksplisit sudah memiliki log. Menambahkan direktif berkas memberi dua aliran dengan retensi, pembaca, dan stempel waktu berbeda.
Itu tidak otomatis salah, tetapi harus menjadi keputusan. Simpan catatan mulai di journal, karena kegagalan sebelum berkas yang dikonfigurasi ada tidak muncul di tempat lain. Lalu jadikan berkas otoritatif untuk peristiwa dalam kondisi mantap dan tuliskan itu di runbook. Dua aliran otoritatif berarti dua jawaban untuk setiap pertanyaan.
Konfirmasi pilihan dengan uji yang sengaja gagal. Jalankan daemon dengan sertifikat yang tidak terbaca dan periksa aliran mana yang mencatat galat.
Kegiatan rinci bukan hal yang sama dengan detail yang berguna
Tingkat verb lebih tinggi menambah baris, dan setelah titik tertentu baris yang tidak dibaca siapa pun. Tingkat 3 adalah kondisi mantap yang wajar untuk sebagian besar penyebaran, sedangkan tingkat 4 ke atas cocok untuk penyelidikan terbatas dengan pertanyaan yang diketahui. Penekanan pengulangan mengurangi kebisingan, tetapi tidak boleh menyembunyikan seberapa sering suatu peristiwa berulang. Tetapkan tingkat yang dapat Anda pertahankan, dan naikkan hanya untuk penyelidikan bernama yang memiliki akhir.
Simpan identitas instans dan stempel waktu dalam catatan. Koneksi ulang terlihat persis seperti koneksi pertama ketika berkas telah ditambahi berbulan-bulan dan nama instans tidak ada.
Perhatikan apa lagi yang jatuh ke berkas itu. Keluaran yang dialihkan dapat memuat teks dari skrip yang dipanggil, dan program bantu yang mencetak lingkungannya menaruh kredensial dan jalur kunci ke log yang dapat dibaca. Perlakukan akses log sebagai keputusan keamanan bahkan ketika daemon sendiri tidak mencetak apa pun yang sensitif.
Rotasi, retensi, dan sinyal yang memuat ulang
Putuskan retensi bersama orang yang memiliki disk, dan tetapkan sebelum volume memutuskan untuk Anda. Sinyal muat ulang bukan perintah pemeliharaan log: mengirim yang salah akan memulai ulang terowongan dan memutus setiap pengguna. Tulis prosedur pembukaan kembali di samping aturan rotasi agar keduanya tidak menyimpang.
Hasilnya harus berupa layanan yang dapat dijelaskan operator: satu aliran otoritatif, setiap peristiwa ditempatkan dalam siklus hidup, dan catatan yang dapat diperoleh tanpa mengumpulkan setiap berkas berisi rahasia di host. Deskripsi itu adalah uji penerimaan desain, dan memeriksanya sebelum insiden berikutnya murah.