読者です 読者をやめる 読者になる 読者になる

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」が追加されているので成功