概要
Fail2banは、誤解を恐れずに言うと
1)様々な種類のログファイルを監視して、
2)特定のパターンにマッチしたログ情報(主にアクセス元IP)を元に
3)アクション(主にiptablesで接続拒否)を行う
ためのツール。
2)の特定のパターンにマッチさせる設定ファイルは「フィルター」と呼ばれ
デフォルトで入っているフィルターをそのまま使う、またはカスタマイズするか、
独自フィルターを作成することも可能
デフォルトで使用できるフィルターはsshdだけではなく
postfix, qmail, dovecot, proftpd, vsftpd, apache, PHP, phpmyadmin, nginx, mysql 等の有名所のログにも対応しているフィルターが入っている。
3)のアクション内容が定義された設定ファイルはiptablesだけではなく、sendmail, cloudflare, abuseipdb 等がある。
また独自アクションも作成可能。ちなみにアクションは複数設定が可能(例:攻撃元サイトをブロックし、sendmailで通知)
詳細は以下のサイトを参考にされたし。
不正アクセスからサーバを守るfail2ban。さくらのクラウド、VPSで使ってみよう! | さくらのナレッジ
第94回 サイトの防御とFail2ban[その1]:玩式草子─ソフトウェアとたわむれる日々|gihyo.jp … 技術評論社
fail2ban で対象 IP アドレスの第 2 オクテット(Class B)から遮断する - Qiita
※ [追記]
自分の勝手な勘違いだが、既に存在しているログファイルの行に対してもfail2banが対象になると思っていたが
それは勘違いで、fail2banがBanしてくれるログはあくまでも”監視中"のもののみのよう。
ログファイルの場所
/var/log/fail2ban.log
設定
主に以下の2つ。
1)/etc/fail2ban/fail2ban.conf・・・一般設定を行うファイル
2)/etc/fail2ban/jail.conf・・・どのログファイルを監視するかの設定を行うファイル。
ただし上記のファイルを直接触れるのは、fail2ban更新時に設定がすべて消えてしまうためご法度。
そのため、以下のファイルを別途新規に作る。
3)/etc/fail2ban/fail2ban.local
4)/etc/fail2ban/jail.local
3)と4)は1)と2)の内容を受け継ぎ、1)と2)の設定を上書きする。
そのため全部の設定を書く必要はなく、上書きしたい設定のみを書けば良い。
fail2ban.localの例
[Defination] # change loglevel - CRITICAL, ERROR, WARNING, NOTICE, INFO, DEBUG loglevel = INFO # change log file location if required logtarget = /var/log/fail2ban.log # change pidfile location if required pidfile = /var/run/fail2ban/fail2ban.pid
/etc/fail2ban/jail.localの例でsshdのみを設定
[DEFAULT] # "bantime" is the number of seconds that a host is banned. bantime = 15m # A host is banned if it has generated "maxretry" during the last "findtime" seconds. findtime = 15m # "maxretry" is the number of failures before a host get banned. maxretry = 6 [ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 4
現在の設定の確認コマンド
$ fail2ban-client status
特定のJailの確認コマンド
ex) sshd
$ fail2ban-client status sshd
独自フィルタと独自アクション
独自フィルタは「/etc/fail2ban/filter.d/」内に作成する。
拡張子は「.conf」か「.local」かを選べるがデフォルトのものと見分けるために「.local」で作成する方が良い。
独自アクション「/etc/fail2ban/action.d/」内に作成する。
独自フィルタと同じく、拡張子は「.local」を使用する。
詳細は別の記事で。
[参考]
How to use Fail2ban on Ubuntu 18.04 - LaymanClass
Using Fail2ban to Secure Your Server - A Tutorial | Linode