Baru-baru ini, kami memiliki tugas untuk memantau periode validitas sertifikat pada server dengan Windows. Nah, bagaimana saya bangun, setelah sertifikat berubah menjadi labu beberapa kali, pada saat yang sama kolega berjanggut yang bertanggung jawab atas pembaruan mereka sedang berlibur. Setelah itu, kami
mencurigai sesuatu dan memutuskan untuk memikirkannya. Karena kami secara perlahan memperkenalkan sistem pemantauan NetXMS, itu telah menjadi kandidat utama dan, pada prinsipnya, satu-satunya kandidat untuk tugas ini.
Hasilnya akhirnya diperoleh sebagai berikut:

Dan prosesnya sendiri lebih jauh.
Ayo pergi. Tidak ada penghitung bawaan untuk sertifikat yang kedaluwarsa di NetXMS, jadi Anda perlu membuat skrip Anda sendiri dan menggunakan skrip untuk menyediakannya dengan data. Tentu saja, di Powershell, ini Windows. Script harus membaca semua sertifikat di sistem operasi, mengambil tanggal kedaluwarsa dalam beberapa hari dari sana, dan mentransfer nomor ini ke NetXMS. Melalui agennya. Mari kita mulai dengannya.
Opsi satu , yang termudah. Dapatkan jumlah hari sebelum sertifikat berakhir dengan tanggal terdekat.
Agar server NetXMS belajar tentang keberadaan parameter khusus kami, ia harus menerimanya dari agen. Jika tidak, parameter ini tidak dapat ditambahkan karena tidak ada. Oleh karena itu, dalam file konfigurasi agen
nxagentd.conf , kami menambahkan baris parameter eksternal dengan nama
HTTPS.CertificateExpireDateSimple , di mana kami menulis skrip untuk dijalankan:
ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "\\server\share\NetXMS_CertExpireDateSimple.ps1"
Mengingat bahwa skrip berjalan melalui jaringan, Anda perlu mengingat tentang
Kebijakan Eksekusi , serta "-NoLogo -NoProfile -NonInteractive" lainnya, yang saya hapus untuk keterbacaan kode yang lebih baik.
Akibatnya, konfigurasi agen terlihat seperti ini:
# # NetXMS agent configuration file # Created by agent installer at Thu Jun 13 11:24:43 2019 # MasterServers = netxms.corp.testcompany.ru ConfigIncludeDir = C:\NetXMS\etc\nxagentd.conf.d LogFile = {syslog} FileStore = C:\NetXMS\var SubAgent = ecs.nsm SubAgent = filemgr.nsm SubAgent = ping.nsm SubAgent = logwatch.nsm SubAgent = portcheck.nsm SubAgent = winperf.nsm SubAgent = wmi.nsm ExternalParameter = HTTPS.CertificateExpireDateSimple: powershell.exe -File "\\server\share\NetXMS_CertExpireDateSimple.ps1"
Setelah itu, Anda perlu menyimpan konfigurasi dan memulai kembali agen. Anda dapat melakukan ini dari konsol NetXMS: buka konfigurasi (file konfirmasi agen Edit), edit, jalankan Simpan & Terapkan, sebagai akibatnya, hal yang persis sama akan terjadi. Kemudian baca kembali konfigurasi (Poll> Configuration), jika sama sekali tidak ada kekuatan untuk menunggu. Setelah langkah-langkah ini, Anda harus dapat menambahkan parameter khusus kami.
Di konsol NetXMS, kita pergi ke
Konfigurasi Pengumpulan Data dari server eksperimental di mana kita akan memantau sertifikat dan membuat parameter baru di sana (di masa depan, setelah pengaturan, masuk akal untuk mentransfernya ke template). Kami memilih HTTPS.CertificateExpireDateSimple dari daftar, masukkan Deskripsi dengan nama yang ramah, atur tipe ke Integer dan atur interval polling. Tidak masuk akal untuk membuatnya terlalu pendek agar tidak menyumbat database dengan informasi yang tidak perlu, akan merepotkan untuk menunggu terlalu lama saat memeriksa. Untuk sertifikat, saya biasanya menetapkan 600 detik. Pada saat debugging, masuk akal untuk membuatnya lebih pendek, 30 detik, misalnya:

Semuanya siap, selama cukup. Anda dapat memeriksa ... tidak, masih terlalu dini. Sekarang, tentu saja, kami tidak akan mendapatkan apa-apa. Hanya karena skripnya belum ditulis. Kami memperbaiki kekurangan ini. Script akan memberikan nomor saja, jumlah hari yang tersisa sampai sertifikat berakhir. Yang terkecil dari semua tersedia. Skrip contoh:
try {
Ternyata seperti ini:

723 hari, sebelum sertifikat berakhir hampir dua tahun lagi. Itu logis, karena saya baru-baru ini menandatangani ulang sertifikat di Exchange testbed.
Itu pilihan yang mudah. Mungkin seseorang akan senang dengan itu, tetapi kami menginginkan lebih. Kami menetapkan sendiri tugas mendapatkan daftar semua sertifikat di server, berdasarkan nama, dan untuk masing-masing untuk melihat jumlah hari yang tersisa hingga sertifikat berakhir.
Opsi kedua , sedikit lebih rumit.
Sekali lagi kami mengedit konfigurasi agen dan di sana alih-alih dengan ExternalParameter kami menulis dua lainnya:
ExternalList = HTTPS.CertificateNames: powershell.exe -File "\\server\share\netxms_CertExternalNames.ps1" ExternalParameter = HTTPS.CertificateExpireDate(*): powershell.exe -File "\\server\share\netxms_CertExternalParameter.ps1" -CertificateId "$1"
Di
ExternalList, kami hanya mendapatkan daftar string. Dalam kasus kami, daftar string dengan nama sertifikat. Daftar baris-baris ini kita dapatkan skripnya. Nama daftar adalah
HTTPS.CertificateNames .
Script NetXMS_CertNames.ps1:
Dan sudah di
ExternalParameter kita memberi makan baris dari daftar ExternalList, dan pada output kita mendapatkan jumlah hari yang sama untuk masing-masing. Identifier adalah sertifikat Thumbprint. Harap perhatikan bahwa HTTPS.CertificateExpireDate dalam opsi ini berisi tanda bintang (*). Ini diperlukan agar dapat menerima variabel eksternal, cukup CertificateId kami.
Script NetXMS_CertExpireDate.ps1:
Di Konfigurasi Server Pengumpulan Data, buat parameter baru. Di Parameter, pilih
HTTPS.CertificateExpireDate (*) kami dari daftar, dan (perhatian!) Ubah tanda bintang menjadi
{instance} . Poin penting ini akan memungkinkan Anda untuk membuat penghitung terpisah untuk setiap instance (sertifikat). Sisanya diisi, seperti pada versi sebelumnya:

Agar penghitung menjadi sesuatu untuk dibuat, pada tab Instance Discovery, pilih Daftar Agen dari daftar dan di bidang Nama Daftar masukkan nama ExternalList kami dari skrip - HTTPS.CertificateNames.
Hampir siap, tunggu sebentar atau paksa Poll> Configuration and Poll> Instance Discovery, jika benar-benar mustahil untuk menunggu. Akibatnya, kami mendapatkan semua sertifikat kami dengan tanggal kedaluwarsa:

Apa yang dibutuhkan? Ya, hanya worm perfeksionisme yang melihat Thumbprint yang tidak perlu ini atas nama konter dengan mata sedih dan tidak memungkinkan untuk menyelesaikan artikel. Untuk memberinya makan, buka kembali properti penghitung dan pada tab Penemuan
Instan di bidang "Script penemuan filter Instance" tambahkan skrip yang ditulis dalam
NXSL (bahasa internal
NetXMS ):
instance = $1; if (instance ~= "^(.*)\s\-\s\[T\:[a-zA-Z0-9]+\]$") { return %(true, instance, $1); } return true;
yang akan memfilter cap jempol:

Dan untuk menampilkannya difilter, pada tab Umum di bidang Deskripsi, ubah CertificateExpireDate: {instance} ke
CertificateExpireDate: {instance-name} :

Semuanya, akhirnya selesai dari
KDPV :

Kecantikan
Tetap mengkonfigurasi peringatan agar mereka tiba melalui pos ketika sertifikat berakhir pada akhir yang logis.
1. Pertama, Anda perlu membuat Templat Peristiwa untuk mengaktifkannya ketika menurunkan nilai penghitung ke beberapa ambang batas yang ditetapkan oleh kami. Di
Konfigurasi Acara, buat dua templat baru dengan nama, misalnya
CertificateExpireDate_Threshold_Aktifkan dengan status Peringatan:

dan
CertificateExpireDate_Threshold_Deactivate yang serupa dengan status Normal.
2. Selanjutnya, buka properti penghitung dan atur ambang pada tab Tresholds:

tempat kami memilih acara yang kami buat CertificateExpireDate_Threshold_Activate dan CertificateExpireDate_Threshold_Deactivate, setel jumlah pengukuran (Sampel) 1 (khusus, tidak ada gunanya menetapkan penghitung tertentu), nilainya 30 (hari), misalnya, dan, yang penting, kami menetapkan waktu pengulangan acara. Untuk sertifikat dalam produksi, saya atur sekali sehari (86400 detik), jika tidak Anda bisa tenggelam dalam peringatan (yang, omong-omong, terjadi sekali, dan terlebih lagi, kotak surat penuh selama akhir pekan). Untuk debugging, masuk akal untuk mengatur kurang, 60 detik, misalnya.
3. Dalam
Konfigurasi Tindakan, buat templat pesan peringatan, seperti ini:

Semua ini% m,% S, dll. - makro di mana nilai dari parameter kami akan diganti. Mereka dijelaskan secara lebih rinci dalam
manual NetXMS.
4. Dan akhirnya, dengan menggabungkan poin-poin sebelumnya, dalam
Kebijakan Pemrosesan Acara, buat aturan dengan mana Alarm akan dibuat dan pesan akan dikirim:

Kami menjaga kebijakan, semuanya bisa diuji. Tetapkan ambang batas lebih tinggi untuk verifikasi. Sertifikat terdekat saya kedaluwarsa dalam 723 hari, saya menetapkan 724 untuk verifikasi. Sebagai hasilnya, kami mendapatkan alarm berikut:

dan peringatan email semacam itu:

Nah, itu saja. Anda bisa, tentu saja, mengatur dasbor, membuat grafik, tetapi untuk sertifikat itu akan menjadi garis lurus yang agak tidak berarti dan membosankan, tidak seperti grafik CPU atau pemuatan memori, misalnya. Tapi, entah bagaimana lain kali.