Bash脆弱性対応アップデート状況をZabbixで監視

Bashの脆弱性の問題があり、管理しているサーバー全台でアップデートする必要がありました。
アップデート作業をある程度自動化していると抜けがないかチェックする必要があります。

そこでアップデートが未完了のものをZabbixのダッシュボードに出すようにしました。

アップデート作業中の様子
f:id:tsunokawa:20140925200448p:plain
こんな感じで残り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になります。