URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

CentOS 6.5でfail2banを設定

 特に変わったことをしたわけではないのですが、これまで意外と使う機会が無かったのでメモです。
 今回の目的は、「SSHポートへの不正なアクセスを検知して、一定時間ブロックすると共に管理者へメール送信する」という、ごく基本的な内容です。

 CentOS 6はepelレポジトリからインストールすることができます。

# yum install fail2ban

 基本設定ファイル"/etc/fail2ban/fail2ban.conf"を編集します。
 今回の変更点は、ログファイルの出力先のみです(初期値は"SYSLOG")。
 ログの出力先は"/var/log/fail2ban.log"にすることが多いようですが、個人的には特定のフォルダ内に分けたかったので"/var/fail2ban/fail2ban.log"にしました。

 最終的な設定値は以下の通りです(空行とコメント行は省略)。

[Definition] loglevel = 3 logtarget = /var/log/fail2ban/fail2ban.log socket = /var/run/fail2ban/fail2ban.sock pidfile = /var/run/fail2ban/fail2ban.pid

 ログ出力先の設定に合わせて、ログローテーションの設定"/etc/logrotate.d/fail2ban"に記載してあるパスも変更します。

/var/log/fail2ban/fail2ban.log { rotate 7 missingok compress postrotate /usr/bin/fail2ban-client flushlogs 1>/dev/null || true endscript }

 続いて"/etc/fail2ban/jail.conf"でルールを設定します。
 SSHを対象とする場合、初期のjail.confで既に"[ssh-iptables]"という部分があるので、ここを変更します。

 最終的な[ssh-iptables]ブロックは以下の通りです。

[ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=root@mydomain.local, sender=fail2ban@mydomain.local, sendername="Fail2Ban"] logpath = /var/log/secure bantime = 3600 maxretry = 3
  • action … 不正アクセスを検知したときの動作
  • bantime … 検知した不正アクセス元のIPアドレスを記憶している時間
  • maxretry … 不正アクセスとして検知するまでの接続回数

actionについては、
iptables[name=SSH, port=ssh, protocol=tcp]
 → 不正アクセス元のIPアドレスをiptablesでREJECTする

sendmail-whois[name=SSH, dest=root@mydomain.local, sender=fail2ban@mydomain.local, sendername="Fail2Ban"]
 → 不正アクセスを検知したときに"dest"で指定したメールアドレスにメール通知
  ("sender"は送信元アドレス、"sendername"は送信者名になる)

 メール送信についてはローカルにPostfix等のMTAを動かしておく必要あり。

 ここまで設定したらサービスの起動と自動起動の設定をしておく(今回の場合はyumインストールの時点で自動起動になっていた)。

# service fail2ban start
# chkconfig fail2ban on

 で、さっそく不正アクセスがありました。
不正アクセスがあったときに送信されるメールは、既定だとこんな感じ("xxx.xxx.xxx.xxx"が不正アクセス元アドレス)。

Subject : [Fail2Ban] SSH: banned xxx.xxx.xxx.xxx from myhost.mydomain.local
---
Hi,

The IP xxx.xxx.xxx.xxx has just been banned by Fail2Ban after
3 attempts against SSH.


Here is more information about xxx.xxx.xxx.xxx:

missing whois program

Regards,

Fail2Ban

 この時のログは、こんな感じ。

2014-09-16 15:41:07,345 fail2ban.actions[7952]: WARNING [ssh-iptables] Ban xxx.xxx.xxx.xxx 2014-09-16 16:41:07,938 fail2ban.actions[7952]: WARNING [ssh-iptables] Unban xxx.xxx.xxx.xxx

 きっちり1時間(3600秒)の間アクセスを禁止しています。


    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

プロフィール

1020@管理人

都内を彷徨っているインフラエンジニアとかいう雑用係。いつだって眠い…。

最近のつぶやき

@umkn1020 (07/03-18:57)
RT @kamo_hiroyasu: 「人口の1割は複文が処理できないのだから、そのつもりで行動しろ」と助言することが時々あるのですが、「何もしなければ、42万人死亡する」を「42万人死亡する」と誤読して「外した」と煽る人がわらわらと湧いてきたことで、説得力が増しました。
@umkn1020 (07/03-18:49)
RT @taijijiji: 外資企業が日本市場でhiring難しいとは聞いていましたがこれほどとは。。日本人の転職の心理的ハードルの高さ、英語ポジションへの苦手意識が伺える。。英語は実質的な語学スキルよりも「やっていける自信がない」「怖い」「どうせ落とされる」というメンタリテ…
@umkn1020 (07/03-13:03)
RT @yuutosi_hiyuu: 声だして笑った https://t.co/EjqAUuT3z0
@umkn1020 (07/02-16:02)
Smart LifeでIFTTT使えなくなっていたのか…
@umkn1020 (07/01-17:23)
RT @rioriost: だーかーらー、HAクラスタをすぐ組もうとしない!w オンプレの発想をそのまま持ってくるんじゃなく、クラウドに合ったやり方を学びましょうよ。 できるよ、IaaSでHAクラスタも組めるよ。 でも、スタンバイノードのコストを払い続けるの、なんかおかし…

エントリーリスト

カテゴリーリスト

タグ