fail2banをインストールしたときのメモ
サーバ監視ツールでグラフを見ていたらアクセスも少ないのにロードアベレージが高い時間があったので調べてみたらSSHで不正アクセスの嵐が来ておりました。
基本的に鍵認証なのでアクセス出来ないんですがどうも負荷が高くなるのが気に入りません。
そこでfail2banというツールを導入することにしました。
fail2banは対象ログから指定した不正アクセスとみなす設定文字列を検出し指定回数出現した場合にFirewallを設定を変更して対象ログのIPをブロックするツールです。
これはAWSのEC2/amazonlinuxインストールした場合の参考です。
インストール
epel-releaseリポジトリからインストールします
epel-releaseリポジトリがインストールされていなければインストール
# sudo yum install epel-release
# sudo yum install --enablerepo=epel fail2ban
ログの場所を作る
# sudo mkdir /var/log/fail2ban
ログの場所を指定
# sudo vim /etc/fail2ban/fail2ban.conf
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# logtarget = SYSLOG # コメントアウト
logtarget = /var/log/fail2ban/fail2ban.log # 追加
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
インスタンス起動時に有効になっておくようにしておきます
# sudo chkconfig --list
# sudo chkconfig fail2ban on
whoisを使えるようにしておく(IP情報をメールで送るときに使う)
# yum install jwhois
SSHのフィルタリング設定をしていきます
# vim /etc/fail2ban/jail.conf
sshを設定していきます
[ssh]セクションの
enabled = true
にして有効にします。
※ちょっと前に作業したときのメモをみて書いていたんですが曖昧のところがあったので今ローカルのdockerコンテナでインストールしてみたら[ssh-iptables]になっていました。デフォルトで有効にもなっていました。ここらへんは今のものに置き換えて対応してみてください。
独自のセクションを作って /etc/fail2ban/filter.d/ の中に名前とマッチするフィルターを置くことで独自設定も可能です。
例えば[dame-access]を作って/etc/fail2ban/filter.d/dame-access.confを作って設定をすることが可能。
本題に戻りフィルタリングルールを設定していきますがデフォルトである程度の記述がしてあるのでそのまま使えていました。しかしこれだけだとメールの送信などちゃんとできないこともあるので実際に設定してみての説明を以下に。
ですので他の設定項目について説明していこうと思います。
/etc/fail2ban/jail.conf
各セクションの中の設定
actionはフィルタリングに引っかかったときのアクションです
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
iptables[name=SSH, port=ssh, protocol=tcp]
iptables-multiport[name=dovecot, port="pop3,pop3s,submission,imap,imaps", protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
name(名称)
※ここのnameは同じポートの場合は一緒になる。例えばhttpでhttp-authやhttp-nohomeなど複数設定する場合は同じnameになります
port(対象ポート※multiportは複数設定できる)
protocol(対象プロトコル)
iptables(単体ポート)、iptables-multiport(複数ポート指定)
sendmail-whoisはnameは対象フィルタ名でdestでしていしたアドレスにメール送信します。senderは送信元メールアドレス、sendernameは送信者名です。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
logpathはフィルタ検出対象ログです。
maxretryは制限をかける回数設定
findtimeは出現制限時間(この時間内にmaxretryの回数出現してはならない)
bantimeはブロックしている時間
SSHのログインに対するブロック設定をした例です
/etc/fail2ban/jail.conf 内の既存項目を編集
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=送信先メール, sender=送信メールアドレス, sendername="Fail2Ban"]
logpath = /var/log/secure
bantime = 3600
maxretry = 3
※これでデフォルトの10分間に3回失敗すると1時間ブロックになります
以上、使ってみた個人メモでした。
コメント
コメントを投稿