ใช้ zabbix monitor certificate หมดอายุ
วันที่ ๒๓ มีนาคม ๒๕๖๔
สมัยนี้ web เกือบทุก site น่าจะเป็น https กันไปหมดแล้ว แต่จะเป็นยังไงถ้า ssl certificate ที่ลงไว้เกิดหมดอายุขึ้นมาโดยไม่รู้ตัว….
แต่ก่อนเพื่อเลี่ยงปัญหาที่จะเกิดขึ้นกับการที่ ssl certificate หมดอายุ เราก็มักจะขอ certificate ให้มีอายุยาวนาน เพื่อที่จะใช้เวลานานกว่าที่มันจะหมดอายุ (อย่างน้อยก็ให้มันไม่จบที่รุ่นเรา) แต่เดี๋ยวนี้อายุของ ssl certificate ที่ใช้กันก็มีอายุน้อยลงเรื่อย ๆ เช่นลองดูจาก google หรือ let encrypt ตัว certificate จะมีอายุแค่ 2–3 เดือนเท่านั้น แล้วจะ renew certificate ใหม่ ยิ่งสมัยนี้มีการใช้ certificate เพิ่มมากขึ้นเรื่อย ๆ แล้วจะดูแล certificate ยังไงไม่ให้เกิดปัญหาว่าหมดอายุโดยไม่รู้ตัว
ลองหาดู software ที่ทำหน้าที่บริหารจัดการ certificate ก็มีอยู่หลายตัว แต่ตอนนี้ต้องหาของฟรีใช้ก่อน หาไปหามาก็เจอว่าตัว zabbix เองก็สามารถนำมาใช้ในการ monitor certificate เหมือนกัน 😄 งั้นเอามาลองใช้เลยแล้วกัน
ก่อนจะเริ่มแนะนำวิธีทำ ขออนุญาตอ้างอิงแหล่งที่มาที่นำมาใช้ทำก่อน ที่มาของที่นำมาทดลองก็มาจากที่ต่าง ๆ ดังนี้
https://www.muutech.com/en/monitor-your-https-certificates-with-zabbix/
https://community.spiceworks.com/how_to/173380-zabbix-monitor-ssl-certificate-validity
เริ่มกันเลย….
การจะใช้ zabbix monitor certificate ได้ จะต้องลงชุดคำสั่ง (script) ที่ใช้สำหรับตรวจสอบ certificate ลงไปที่เครื่องที่ใช้สำหรับจะใช้ในการตรวจสอบ ในที่นี้จะใช้เครื่อง zabbix server ทำหน้าที่ในการตรวจสอบ (หากใช้เครื่อง zabbix proxy ก็นำ script ไปลงที่เครื่อง zabbix proxy)
ให้ทำการย้าย directory ไปที่เก็บ external command ของ zabbix
cd /usr/lib/zabbix/externalscripts
จากนั้นให้ทำการ download script สำหรับใช้ในการตรวจสอบ
wget https://raw.githubusercontent.com/selivan/https-ssl-cert-check-zabbix/master/ssl_cert_check.sh
จากนั้นก็ตามด้วย download template สำหรับใช้ในการสร้าง item ในการ monitor certificate
wget https://www.zabbix.org/mw/images/7/76/Zbx_export_templates.xml
จากนั้นให้ทำการแก้ไข permission ของ script ให้สามารถ run ได้ โดยใช้คำสั่ง
chmod a+x ssl_cert_check.sh
จากนั้นลองทดสอบการทำงานของ script ดู โดยการตรวจสอบว่า certificate ของ www.google.com เหลืออีกกี่วันถึงจะหมดอายุ โดยใช้คำสั่ง
./ssl_cert_check.sh expire www.google.com
จะได้ผลลัพธ์ดังนี้
คือเหลืออีก 56 วัน certificate ของ www.google.com จะหมดอายุ ลองเข้าไปดูจาก browser ดูว่าตรงกันไม๊
ตรงกันเป๊ะ 😆
โอเค ถึงตรงนี้ตัว script ใช้งานได้แล้ว ต่อไปก็มาแก้ไขที่ตัว template กันต่อ
ให้เปิด file “Zbx_export_templates.xml” แล้วหาบรรทัดที่มีคำว่า
zext_ssl_cert.sh[-d,{HOST.CONN},{$SSL_PORT},{$SNI}]
ทุกบรรทัด แล้วแทนที่ด้วยค่านี้
ssl_cert_check.sh[expire,{HOST.CONN},{$SSL_PORT}]
(หากอยากทราบว่าทำไม ต้องไปอ่านจาก link ที่อ้างอิงไว้สองตัวแรก)
มีทั้งหมด 14 บรรทัดที่ต้องแก้ (หรือจะใช้ text editor ทำการ replace all เลยก็ได้)
จากนั้นก็ทำการ import template เข้าไปให้ตัว zabbix server แต่ก่อนจะ import ยังต้องแก้ไขเพิ่มเติมอีกหน่อย ไม่งั้นจะเกิด error เวลา import
โดยใน file “Zbx_export_templates.xml” ให้ไปแทรกบรรทัด
<logtimefmt/>
เพิ่มใน section item ในทุก section (มีทั้งหมด 3 sections)
จากนั้นให้ทำการ save
เมื่อเราได้ template ที่พร้อมนำไปใช้แล้วเราก็ไปที่ตัว zabbix server แล้วเลือกเมนู template
จากนั้นเลือก “import template”
เลือก file template ที่เราแก้ไขจากขั้นตอนก่อนหน้านี้
เสร็จแล้วกดปุ่ม “import”
เท่านี้ก็เรียบร้อย พร้อมใช้งานได้แล้ว
เราจะทดสอบโดยการให้ zabbix server ทำการ monitor certificate ของ google (www.google.com)
เริ่มโดยไปที่เมนู host แล้วเลือก zabbix server แล้วเลือกไปที่ “items”
เลือก create item
ตั้งชื่อ item ว่า “Check expire certificate for www.google.com
type เป็น External check
key อันนี้เป็นคำสั่งที่ใช้ในการตรวจสอบ ให้ใส่ ssl_cert_check.sh[expire,www.google.com]
Type of information เป็น Numeric (unsigned)
Update interval เป็น 1m (หนึ่งนาที ใช้จริง ๆ ตั้งให้เช็ควันละครั้งก็พอ)
Application เป็น SSL Certificate (อันนี้จะเอาไว้ตอนเลือกดูข้อมูล)
เสร็จแล้วให้กด Add
เท่านี้ก็เป็นอันเรียบร้อย
มาลองดูผลกันครับ ให้ไปที่เมนู Monitoring เลือกดู Latest data แล้วเลือก Host ที่เราสร้าง item ไว้ (คือ zabbix server) แล้วเลือก Application “SSL certificate” ตามที่เราเคยระบุไว้ตอนสร้าง เวลามันแสดงค่าขึ้นมาจะได้ไม่เอาข้อมูลอื่นขึ้นมาแสดงด้วย เสร็จแล้วกดที่ปุ่ม Apply
เท่าที่เราก็จะสามารถ monitor certificate ของ web server ที่เราต้องการได้แล้วครับ หากต้องการให้ zabbix alert ก่อนที่ certificate จะหมดอายุ ก็สามารถเข้าไป set ที่ trigger ต่อได้เลยครับ