CentOS 6.6 - Fail2banでSSHによる不正アクセス対策
私のサーバにも、見に覚えのないIPアドレスからのアクセスが。。。
# grep -E "Failed|Invalid" /var/log/secure Feb 22 08:34:54 hoge sshd[7365]: Failed password for root from 153.xxx.248.xxx port 41166 ssh2 Feb 22 08:34:54 hoge sshd[7365]: Failed password for root from 203.xxx.48.xxx port 41166 ssh2 Feb 22 08:34:54 hoge sshd[7365]: Failed password for root from 153.xxx.248.xxx port 41166 ssh2
※一応、IPアドレスは隠しますね。
hosts.allowで制限したいけど、私も固定IPアドレス以外からアクセスするし・・・不審なSSHアクセスだけ、ブロックしたい。。。
そんなきに、さくらインターネットの記事で「Fail2ban」を知りました。
「Fail2ban」は、ログから不正接続を検知してiptablesで一定期間アクセスをブロックしてくれるそうです。
本投稿では、「Fail2ban」のインストールと設定の方法を紹介します。
はじめに
作業環境
- さくらのVPS/512M
- CentOS 6.6
Yumリポジトリを追加
Fail2banのインストールに必要となる、Yumリポジトリ「EPEL」を追加する。
# yum install -y epel-release
普段は、標準レポジトリを利用するため「enabled」の値を1 → 0へ変更しておく。
# sed -i -e '/^enabled/d' /etc/yum.repos.d/epel.repo # sed -i -e 's/\]$/\]\nenabled=0/g' /etc/yum.repos.d/epel.repo
Fail2banをセットアップ
Fail2banをインストール
Yumリポジトリ「EPEL」を指定して、Fail2banをインストールする。
# yum --enablerepo=epel -y install fail2ban
※「/etc/fail2ban/fail2ban.conf」は、デフォルトのままでいい。
監視サービスを登録
Fail2banでは、監視サービスとルールを「/etc/fail2ban/jail.conf」へ登録する仕組みとなっている。
監視サービスを登録
SSHを監視対象に加える。事前にサンプル設定が準備されている。
# vim /etc/fail2ban/jail.conf
~略~ [ssh-iptables] enabled = true filter = sshd logpath = /var/log/secure action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"] maxretry = 5 ~略~
上記のサンプル設定を元に項目を追加する。一定期間に5回、SSH接続に失敗すると接続元IPアドレスを12時間ブロックするようにした。
※一定期間とは、「jail.conf」で指定されている「findtime = 600」の値である。
~略~ [ssh-iptables] enabled = true filter = sshd logpath = /var/log/secure action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"] bantime = 43200 ; #12時間 maxretry = 5 ~略~
Fail2banを起動
Fail2banを起動させることで、SSHの監視がはじまる。
# service fail2ban start
自動起動設定へ追加する。
# chkconfig fail2ban on # chkconfig --list fail2ban fail2ban 0:off 1:off 2:on 3:on 4:on 5:on 6:off
動作確認
iptablesを確認
Fail2banの起動後、正常に起動していればiptablesに「fail2ban-SSH」が表示される。
# iptables -nvL Chain INPUT (policy ACCEPT 102 packets, 10431 bytes) pkts bytes target prot opt in out source destination 98 9968 fail2ban-SSH tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 66 packets, 9440 bytes) pkts bytes target prot opt in out source destination Chain fail2ban-SSH (1 references) pkts bytes target prot opt in out source destination 98 9968 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
「fail2ban-SSH」が追加されているので成功