#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だと一応デフォルトでログローテーションが有効になっている。 -そのままにしておく。