#author("2022-03-31T05:17:15+00:00","default:src128","src128")
#author("2022-03-31T05:22:46+00:00","default:src128","src128")
&tag(fail2ban);
*目次 [#o5017a23]
#contents
*関連ページ [#ma5e3b0a]
*参考情報 [#yea18fc1]

*概要 [#g017303f]
-不正なアクセスを自動で弾くサーバー用設定。
-不正な条件に合致したタイミングでiptablesやufwに除外ルールを追加することで実現。

*インストール [#bd06ef0a]
-Ubuntu 20.04の場合
 sudo apt install fail2ban
-インストールで自動起動が有効になる(?)
-以下のコマンドで確認。Activeと表示されれば起動中。
 sudo systemctl status fail2ban
-もしくは以下のコマンド
 ps aucx |  grep f2b

-Ubuntuの場合、jail.confではsshに対する設定が無効かされているが、filter.d/sshd.confで有効になっているので、sshだけデフォルトで有効化されている。
*設定 [#d741965e]

**基本設定 [#paa0509f]
-設定ファイルの上書きを防ぐため「jail.local」を作成 する。
-デフォルトのbanactionを変更。
#pre{{
#banaction = iptables-multiport
banaction = ufw
}}

**apacheで403/404アクセスを除外する [#h95c1365]
-[[Apache向けfail2banの簡易構築手順 - Qiita:https://qiita.com/bloodia/items/1af483fdd490d2d2032f]]

***jail.localの編集 [#zbecaece]
-jail.localの末尾に追加。
#pre{{
[apache-403]
enabled = true
filter = apache-403
logpath = /var/log/apache2/access.log
action = ufw
maxretry = 10
findtime = 30
bantime = 1800

[apache-404]
enabled = true
filter = apache-404
logpath = /var/log/apache2/access.log
action = ufw
maxretry = 10
findtime = 30
bantime = 1800
}}

***フィルターの作成 [#i42eaf9b]
-failregexに合致する文字列がlogに含まれているかどうか。
-/etc/fail2ban/filter.d/apache-403.confを作成
#pre{{
[Definition]
failregex =  ^<HOST>.*"(GET|POST).*" 403 .*$                      # フィルター
ignoreregex = 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 # ホワイトリスト
}}
-/etc/fail2ban/filter.d/apache-404.confを作成
#pre{{
[Definition]
failregex =  ^<HOST>.*"(GET|POST).*" 403 .*$                      # フィルター
ignoreregex = 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 # ホワイトリスト
}}


**apache-badbots: 悪いロボットを除外する [#i802b444]

***jail.localの編集 [#t237f864]
-jail.localを編集する。
#pre{{
[apache-badbots]
## Ban hosts which agent identifies spammer robots crawling the web
## for email addresses. The mail outputs are buffered.
enabled = true
filter = apache-badbots
port     = http,https
logpath  = /var/log/apache2/access.log
action = ufw
bantime  = 48h
maxretry = 1
}}
***フィルターの変更 [#zf88984f]
-/etc/fail2ban/filter.d/apache-badbots.confを編集。failregexは初期状態だと最後のUserAgentに完全一致になっている。".*"を前後に追加して部分一致で良くする(そのかわり過剰にマッチしないか気にしないとイケない)。
#pre{{

[Definition]
#failregex = ^<HOST>.*"(GET|POST|HEAD).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s).*"$
failregex = ^<HOST>.*"(GET|POST|HEAD).*HTTP.*".*(?:%(badbots)s|%(badbotscustom)s).*"$

ignoreregex =

datepattern = ^[^\[]*\[({DATE})
              {^LN-BEG}
}}


**ログローテーション [#lcea418b]
-ubuntuだと一応デフォルトでログローテーションが有効になっている。
-そのままにしておく。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS