*

fail2banの設定と使い方

投稿日:2014/03/31 最終更新日:2014/04/11

専門職でも高度な知識もない人間が自宅サーバで遊ぶと、思っていた以上にセキュリティに対して不安になる。
知識や経験から攻撃や防御それぞれのアプローチが判らないためだ。

出来る限りはやっているけど、特にCMSが動いていたりすると思いのほかよからぬ来訪者が居るもので、いちいちアクセスを弾くためにiptablesにDROP設定を書いていくのも辛い。
かといって国単位で纏めて弾くのもやりたくない。

なので今回は fail2ban を導入して指定条件のアクセスを自動的にDROPして貰うようにした。

 

fail2ban は指定したログファイルを監視し、指定した条件で指定時間 iptables でDROPできる。
(TCPWrapperもOKとあった気がする)

何かサービスを導入するたびに、よからぬ攻撃パターンを見つけるたびに、対応したフィルタを用意したい。
正直これのおかげでログを眺める作業が少し楽しい。

 

fail2ban のインストール

環境はDebian wheezy 64bit。
インストールは apt で行った。

# apt-get install fail2ban

 
これで完了。
足りないパッケージがあれば同時にインストールされる。

 

fail2ban の初期設定

jail.conf を少しだけ編集する。

# vi /etc/fail2ban/jail.conf

ignoreip = 127.0.0.1/8 192.168.0.0/24
bantime = 2400
backend = gamin

 
ignoreip には無視するIPアドレスを追加しておこう。
主に自分が締め出されないために。

bantime は弾く時間(秒)だけど、フィルタ毎に設定するのが普通なので初期でもよい。

backend はautoのままでも良いのだけど、ちょっと調べてただけで数人ハマっていた「fail2banが動いてない」現象の最もスマートな解決方法っぽかった。
ちなみに gamin は apt-get でインストールした時にくっついてきている。

インストールしてからやることは本当にこれくらいだ。

 

fail2ban の基本的な使い方

fail2ban で新しいフィルタを有効にするのは以下の3ステップ。

  1. /etc/fail2ban/filter.d/ 内にフィルタを用意する
  2. /etc/fail2ban/jail.conf で用意したフィルタの有効設定を行う
  3. fail2ban を再起動する

 

まずフィルタに関しては、デフォルトではsshのみ有効になっている。
デフォルトのsshのフィルタを使う場合、portが初期の22になっているので変更している人は注意して欲しい。

他にも/etc/fail2ban/filter.d/ 内に最初から用意されたフィルタがあり、その中には postfix や dovecot 、proftpd や vsftpd などのフィルタもある。

もちろん hoge.conf のように自由に作って追加でき、柔軟性は非常に高い。

 

フィルタの有効設定に関しては /etc/fail2ban/jail.conf 内に追記していく。
デフォルトでフィルタが用意されているものは、ssh意外無効になっているだけで既に設定自体は書かれている。

項目は以下。

  • enabled 有効/無効設定
  • filter フィルタ
  • action BAN判定した場合の動作
  • logpath 監視対象のログファイルパス
  • maxretry BANとなる失敗回数
  • bantime アクセスを弾く時間(秒)
  • findtime 検出に使う時間

 
少し伝わり辛い項目もあるのでザックリ纏めると。
findtime秒内に maxretry回 filterの条件とマッチすると bantime秒BANされる。

具体的なところは初期のフィルタやjail.confを見て欲しい。

 

Restarting authentication failure monitor: fail2ban failed!

フィルタを作ってjail.confで有効化すると、いよいよ再起動して反映になる。
ただこれはいけなかった。
2014/04/11 追記
更新遅くなったけどこれで良いに決まってた。
フィルタに問題がある際にはrestart時にFAILEDとか出て、start,stopに関しては出ないけどプロセス自体は立ち上がってない。
まず独自で導入したフィルタをjail.confから消して、フィルタ自体を削除なり移動なりしたら治るはず。
エラーメッセージが中途半端なのは起動スクリプトが中途半端な出来のせいだった。
ググっても情報が出ないのは誰も正規表現うっかりミスしなかったからか・・・!

# /etc/init.d/fail2ban restart

 
Restarting authentication failure monitor: fail2ban failed! と言われてFAILEDの赤い文字にビビり、動揺にこんな簡単な英語も理解できぬまま以下のようにしてOKを頂いた。

# /etc/init.d/fail2ban start

 
BAN対象になったものは通常通り iptables を確認したらよい。
何かかかっていたらズラズラと表示されるはずだ。
何もかかっていなくても起動していたら表示される。

# iptables -L

 

わたしのおすすめ

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 1 follow us in feedly

関連記事

no image

163data.com.cn からのコメントスパムを弾く

我が家の自宅サーバには5個くらいWordPressがインストールされて...

記事を読む

iptablesでDROP

GoogleAdSenseのレポートに知らないURLが出た場合の対応と2chleak.net(2chleak.com)の弾き方

GoogleAdSenseは設置こそしているものの普段から放置状態にあ...

記事を読む

新着記事

no image

【WordPress】WP Super Cacheで設定時に500エラーが出るときの対処法

WordPressのページキャッシュ用にWP Super Cacheと...

記事を読む

【Debian】mysqlのスロークエリログを取得する手順

VPSにWordPressをインストールしていると、キャッシュプラグイ...

記事を読む

no image

MIFES10でUWSCの予約語・キーワードを明示する

最近エディタにはMIFES10を利用しているが、UWSCの利用頻度が上...

記事を読む

no image

WordPressでメニューが文字化けする

WordPressでメニューを編集した際、保存を押すと文字化けが起きた...

記事を読む

no image

WEBサイトキャプチャーツール「CrenaHtml2jpg」が便利

WEBサイトのキャプチャを作成したい事は多々ある。 これまでは He...

記事を読む

コメント/トラックバック (1件)

トラックバック用URL:

この投稿のコメント・トラックバックRSS

  1. […] 妄想コバンザメ fail2banについて […]




管理人にのみ公開されます

no image
【WordPress】WP Super Cacheで設定時に500エラーが出るときの対処法

WordPressのページキャッシュ用にWP Super Cacheと...

【Debian】mysqlのスロークエリログを取得する手順

VPSにWordPressをインストールしていると、キャッシュプラグイ...

no image
MIFES10でUWSCの予約語・キーワードを明示する

最近エディタにはMIFES10を利用しているが、UWSCの利用頻度が上...

no image
WordPressでメニューが文字化けする

WordPressでメニューを編集した際、保存を押すと文字化けが起きた...

no image
WEBサイトキャプチャーツール「CrenaHtml2jpg」が便利

WEBサイトのキャプチャを作成したい事は多々ある。 これまでは He...

→もっと見る

PAGE TOP ↑