Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【Ask_AI】zabbixのログイン攻撃対策

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!
AI による概要
Zabbixに対するログイン攻撃(ブルートフォース攻撃など)は、フロントエンドの標準機能による一定回数の失敗時の自動ロックダウンと、Webサーバー(Apache/Nginx)やFWでのIP制限を組み合わせて防御します。 [1, 2]
1. Zabbix標準のログイン保護機能
Zabbixはデフォルトで総当たり攻撃に対する保護機能が有効になっています。 [1]
  • 動作: 5回連続でログインに失敗すると、辞書攻撃やブルートフォース攻撃を防ぐためにインターフェースが 30秒間一時停止 します。
  • ブロック解除: 管理者が[ユーザー]メニューから手動で解除することも可能です。 [1, 2]
2. 失敗回数のしきい値設定
アカウントがロック(ブロック)されるまでのログイン試行回数を変更できます。 [1, 2]
  1. Zabbix UIにログインし、左メニューの [管理 (Administration)] > [一般設定 (General)] を開きます。
  2. 右上のドロップダウンから [その他 (Other)] を選択します。
  3. [ログイン失敗の試行回数の最大値] をデフォルトの「5」から、必要に応じてより少ない値(3など)に変更して更新します。 [1, 2]
3. Webサーバー(Apache / Nginx)でのIP制限
インターネット経由でZabbixを公開している場合は、特定のIPアドレス(管理者や社内ネットワーク)からのみアクセスを許可する設定が最も効果的です。
  • Apacheの場合/etc/httpd/conf.d/zabbix.conf など)
<Directory "/usr/share/zabbix">
    # 全てのアクセスを拒否してから許可する
    Require all denied
    # 管理者のIPアドレスを許可
    Require ip 192.168.0.0/24
    Require ip 203.0.113.10
</Directory>
  • Nginxの場合 (Zabbix用confファイル)
location /zabbix {
    # 管理者のIPアドレスを許可
    allow 192.168.0.0/24;
    allow 203.0.113.10;
    # その他は全て拒否
    deny all;
    
    # FastCGIなどの設定
}
4. 攻撃元IPの特定とログ確認
攻撃の状況を把握するには、以下のログや画面を確認します。
  • ログイン成功時の通知: ログイン成功時に「前回のログイン試行に失敗したIPアドレス」が表示されるため、該当IPの確認が可能です。
  • 監査ログ: [レポート] > [監査ログ] から、ログイン試行の履歴(成功・失敗・対象ユーザー)を確認できます。
  • OSログ: Zabbix自体ではなく、Webサーバー側(例: /var/log/httpd/access_log/var/log/nginx/access.log)のアクセスログを監視・解析することで、攻撃元のIPを特定し、ファイアウォール(FW)やセキュリティグループで直接ブロックすることが推奨されます。 []
詳細なセキュリティのベストプラクティスについては、Zabbix公式のセキュリティベストプラクティス を参照してください。
ZabbixのWeb管理画面(フロントエンド)へのログイン失敗を検知してFail2banでIPブロックを行うには、Zabbixが生成するログイン失敗のログをFail2banで監視する必要があります。 [1, 2, 3]
具体的なブロック手順は以下の通りです。
1. Zabbixのログレベル変更
Fail2banがログイン失敗を検知できるよう、Zabbixサーバーの設定ファイル(zabbix_server.conf)でログレベルを4(Debug)に変更します。 [1]
text
DebugLevel=4
コードは注意してご使用ください。

設定後、Zabbixサーバーを再起動します。
2. Fail2banのフィルター(Filter)設定
ログの中から「ログイン失敗」と「接続元IPアドレス」を正規表現で抽出するフィルターファイルを作成します。
/etc/fail2ban/filter.d/zabbix-web.conf を新規作成し、以下を記述します。 [1]
text
[Definition]
failregex = ^.*] Incorrect user name or password or account is temporarily blocked for.*from <HOST>$
ignoreregex =
コードは注意してご使用ください。

3. Fail2banのジェイル(Jail)設定
監視ルールを定義します。/etc/fail2ban/jail.d/zabbix.conf に以下を追加します。 [1, 2]
text
[zabbix-web]
enabled  = true
port     = http,https
filter   = zabbix-web
logpath  = /var/log/zabbix/zabbix_server.log
maxretry = 5
findtime = 600
bantime  = 1800
コードは注意してご使用ください。

(上記は10分間に5回ログイン失敗した場合、30分間アクセスを遮断する設定例です) [1]
4. Fail2banの再起動
設定を反映するため、Fail2banを再起動します。 [1]
bash
sudo systemctl restart fail2ban
コードは注意してご使用ください。

設定が完了したら、実際にわざとログインを数回失敗させてみて、Fail2banのログ(/var/log/fail2ban.log)にブロック(Ban)記録が残るか確認してください。

【注意事項】
Zabbixのログレベルを4にするとディスク消費が激しくなるため、本番環境では注意してください。Fail2banの詳細は Fail2banとは – IT用語辞典 e-Words も参考にしてください。 [1]

タイトルとURLをコピーしました