まさかのグーグル先生が教えてくれないこと。
先日とある方に質問されて、私も検索したけれど、本当になかった… なぜなんだろう? 順位が上がってこないだけなのであろうか?
たどり着いた先には「multiportではプロトコルがallにできない。」と書いてあって、結局解決できないページばかりです。
安心してください、簡単ですよ。専用のアクションを作ってしまうなど面倒なので、一番手軽な方法を一つ紹介しておきます。
ベースのアクションを読み込んで、[Definition]を上書きしましょう。私はベースに「iptables-common.conf」を選びました。
ふた手間です。まずは「/etc/fail2ban/action.d/jpu.conf」を作成して「-p all」を決め打ちした下記をコピペしてください。もちろんアクション名は既存に被っていなければ何でもいいですし、独自アクションも「.local」でそろえたら良いかもしれません。
[INCLUDES]
before = iptables-common.conf
[Definition]
actionstart = <iptables> -N f2b-<name>
<iptables> -A f2b-<name> -j <returntype>
<iptables> -I <chain> -p all -j f2b-<name>
actionstop = <iptables> -D <chain> -p all -j f2b-<name>
<iptables> -F f2b-<name>
<iptables> -X f2b-<name>
actioncheck = <iptables> -n -L <chain> | grep -q 'f2b-<name>[ \t]'
actionban = <iptables> -I f2b-<name> 1 -s <ip> -j <blocktype>
actionunban = <iptables> -D f2b-<name> -s <ip> -j <blocktype>
デフォルトであるアクションフィルタはそちらのコピーを上記を参考に上書きして「.local」で保存してください。ただ、そこまでするよりデフォルトは無視して独自にfilter.dへフィルタを作った方が早いと思うますん…
そしたら「jail.local」の変更したいフィルタルールへactionを追加して先ほどのファイルを指定します。すでにactionに指定があったら、ベースはそのアクションファイルが良いかもしれませんね。
[jpu-org]
enabled = true
action = jpu
logpath = /home/host1/www/1forf2b/forf2b.log
bantime = 3600
findtime = 10
maxretry = 5
ここまで来てなんですが、マルチ前提で作られたデフォルトのルール変更は面倒です。「ん?俺はpostfixとかの設定で両方バンバンしたかってん…」との突っ込みのお客様、たいへん申し訳ございません。そんな方が来てしまうことも想定しております。しかしながら、食い止めることができませんでした。先に深く受け止めておきます。
ただ、ただですよ、独自で用意すればいけるじゃニャァですか! 現時点でそれさえグーグル先生は教えていなかったです!!
ちなみに、sshdは上記方法でいけます。iptables-commonの中にsshdって文字が出現している通り、使えることは想像できますね。あと、recidiveにもiptables-commonベースで同様に設定できます。
さてさて、どうなってますかね? カタカタ「iptables -nvxL」と打ち込むか、ポチポチとコピペしてみて下さいよ。
allになってますね。fail2banの再起動は「service fail2ban stop」後に「iptables -nvxL」できちんとiptablesがfail2ban起動前までリセットされてるか確認してから「service fail2ban start」して下さいね。
fail2banはrestartだとエラー設定だけが反映されずに前のが残っていたりします。変なのがあったらOSスタート時の「/etc/network/if-pre-up.d/iptables-up」など実行権限のついたiptables設定ファイルを適応してください。エラーを残したままだと次回OS再起動したときに「たまたま想定通りの現状」と同じルールで始まらないときがあります。
設定が効かないなど想定した動きをしないときは「fail2banストップ→iptablesリセット→fail2banスタート」と順を踏んで確かめてみてください。
ということで、今年はお世話になりました。おそらく最後です。
2022/12/27
--------------------------------