とーますメモ

Ruby on Rails / Goなどの学習メモ

【fail2ban】基本的な使い方

概要

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