Bashの脆弱性の問題があり、管理しているサーバー全台でアップデートする必要がありました。
アップデート作業をある程度自動化していると抜けがないかチェックする必要があります。
そこでアップデートが未完了のものをZabbixのダッシュボードに出すようにしました。
アップデート作業中の様子
こんな感じで残り18台が未完了という具合に分かります。
脆弱性対応バージョン(CVE-2014-7169)
CentOS5 | bash-3.2-33.el5_10.4 |
---|---|
CentOS6 | bash-4.1.2-15.el6_5.2 |
CentOS7 | bash-4.2.45-5.el7_0.4 |
バージョンチェックスクリプト
以下のようなバージョンチェックスクリプトを用意します。
Zabbixエージェントがこのバージョンチェックスクリプトを叩き判定します。
Zabbixエージェントが参照できるところに置いてください。
#!/bin/bash EL=`rpm -qf --queryformat="%{VERSION}" /etc/redhat-release` VN=`rpm -q --queryformat="%{VERSION}"-"%{RELEASE}" bash.x86_64` case $EL in 7) if [ "$VN" = "4.2.45-5.el7_0.4" ]; then echo 1 else echo 0 fi ;; 6) if [ "$VN" = "4.1.2-15.el6_5.2" ]; then echo 1 else echo 0 fi ;; 5) if [ "$VN" = "3.2-33.el5_10.4" ]; then echo 1 else echo 0 fi ;; *) echo 0 esac
まずCentOSのバージョン判定を行った後、
Bashのバージョン判定を行っています。
戻り値
成功(アップデート済) | 1 |
---|---|
失敗(アップデート未) | 0 |
としています。
Zabbixアイテムキー
キーは以下のように設定します。
system.run["curl -s http://example.com/bashcheck.sh |sh"]
Zabbixトリガー
{Template_versioncheck:system.run["curl -s http://example.com/bashcheck.sh |sh"].last(0)}=0
トリガー設定で
深刻度 | 情報 |
---|
にします。
※深刻度設定は『情報』でなくてもOKです。既存の設定に影響しない設定にしてください。
これで脆弱性対応バージョンになっていないものがZabbixのダッシュボードに表示され、
未完了サーバーがはっきりします。
アップデート作業が完了すれば最終的に0になります。