fail2banでBanする時間に上限があった

はじめに

fail2banでお呼びでない方にお引取り願っているのですが、どうも様子がおかしい。いつぞやのUnban連発によく似た流れのログが出ていたので確認してみると、なんとFailed to execute ban jailの文字が!

状況の確認と障害対応に入ります。

エラーの内容

Failed to execute ban jail周辺のログを確認します。

ふむふむ。
iptables-restoreCOMMAND_FAILED
ipsetSyntax error: '86400000' is out of range 0-2147483

なにかの値が上限を超えてしまっていたことが原因です。

ipset create ** hash:ip timeout 86400000

上限を超えていたのはipsetのtimeoutでした。

ipsetとは?

ipsetはIPやポートをひとまとめにして管理するツールらしいです。firewalldiptablesで1つずつルールを作っていくのではなく、ある程度IPやポートをまとめて1つのルールで縛ってしまうもののようですね。なるほどfail2banにとっては使い勝手の良いツールですね。

そのipsetでエラーが発生していたようです。

障害対応

ログにズバリ解決方法が書いてありますね。

timeoutの時間の上限は2,147,483秒です。これを超える値を設定すると、ipsetのコマンド自体が失敗しiptablesへのルール設定も行われないようです。

timeout時間をfail2banjail.localで調整します。ひとまずこれで様子を見ます。

ちなみに、ipset公式サイトのmanページにしっかりと書いてありました。

The largest possible timeout value is 2147483 (in seconds).

http://ipset.netfilter.org/ipset.man.html