[Security] Fail2banとCloudFlare API v4を統合する方法

fail2banのカスタムアクションで CloudFlare API v4 を統合して、Webサーバーへの攻撃/アタックをブロックします。(2018/02/07作成)

Flare Designerkottayam / Pixabay

Cloudflareとは

Cloudflare(クラウドフレア)は、コンテンツデリバリーネットワークや分散型ドメイン名サーバシステムを提供するアメリカ合衆国の企業で、ウェブサイトにリバースプロキシを動作させることで閲覧者と自社ユーザーのホスティングプロバイダー間を取り持っている。(出典: Wikipedia)

fail2banとは

fail2ban(フェイルトゥバン)は、SSH等の不正アクセス(ログイン失敗)を検知し、一定時間そのIPアドレスからのアクセスをブロックするソフトである。 通常、fail2banは単体では使用せず、ファイアウォールソフト(iptablesやfirewalld)ともに使用する。 この記事では、firewalldを使用する。(出典: Google)

1.fail2banとCloudFlare API v4を統合する概要

・Nginx側の環境整備を行う
・cURLを使用してCloudFlare API v4をテストする
・fail2banとの統合用カスタムCloudFlareアクションの作成する

2.Nginx側の環境整備

・Cloudflareの使用中にfail2banを使用することはできますか? →answer
・Nginxでオリジナルの訪問者IPを復元するにはどうすればよいですか? →answer

3.cURLを使用してCloudFlare API v4をテストする

1)インストール環境

2)CloudFlare API v4のテスト【禁止ルール追加】

ここ から CloudFlare API Key を取得して 下の値に置き換えて、IPアドレス「 1.2.3.4 」をテストとして禁止します。以下は、fail2ban禁止アクションになります。

◆リクエスト例

※IPルールが CloudFlareに追加された場合は、success: true がレスポンスされます。

◆レスポンス例

3)CloudFlare API v4のテスト【禁止ルール削除】

先程作成したCloudFlareファイアウォールの禁止ルールを削除してテストします。これは fail2ban unbanアクションに使用されます。
注:これはネストされたcURLコマンドを使用しています。削除するためにルールIDを取得する必要があります。

◆リクエスト例

※IPルールが CloudFlareから削除された場合は、success: true がレスポンスされます。

◆レスポンス例

4.fail2banとの統合用カスタムCloudFlareアクションの作成

1)CloudFlare fail2banアクションを作成

先にテストしたこの設定をCloudFlareのAPI v4を使用して fail2banのカスタムアクションを作成します。
unbanアクションは、fail2banの bantimeが期限切れになったときに禁止を削除する上からのネストcURLコマンドです。これにより CloudFlare側の IPブラックリストがきれいに保たれます。

設定箇所
・CloudFlareのユーザー名(あなたのメールアドレス)を cfuserに設定。
・CloudFlare API Key を cftoken に設定。

2)fail2banのfilter定義

3)fail2banのJail(ban)定義

このJail(檻)設定内容をまとめると「 /etc/fail2ban/filter.d/nginx-dos.conf フィルターファイルのルールに、3秒間で12回一致したら、そのIPアドレスを1日ブロック」する。CloudFlareのAPI v4 を用いて、IPアドレスを「Block」する。ブロック結果は root宛にメール配信する。

4)起動/自動起動設定

5.参考文献

How to Integrate fail2ban with CloudFlare API v4 Guide
https://guides.wp-bullet.com/integrate-fail2ban-cloudflare-api-v4-guide/

以上

Pocket

About yoshimasa

埼玉県さいたま市在住、2男3女のパパです。Linux系の技術情報を中心にまとめています。1978年2月生まれ。

コメントを残す

This site uses Akismet to reduce spam. Learn how your comment data is processed.