サーバ内のsecureログをなんとなく確認してたら、見慣れないのIPがssh接続を試みた形跡が出力されていました。しかも秒単位で。怖いですね。

セキュリティ対策をしていないサーバは3日以内に不正アクセスされる、という噂はあながち間違いではないように思います。

このサーバはroot直ログインは禁止しているので上記に関しては問題無いのですが、apacheやメールログでも不正アクセスを試みている形跡がいくつかありました。不正アクセスが成功しなくても、秒単位のアクセスはサーバの負荷に繋がるので、対策しなくてはいけないようです。

webで調べたところ、fail2banが良さそうです。ログをチェックして、設定したフィルタにマッチしたIPをiptablesで拒否するものです。早速使ってみます。

インストール

epelパッケージ内にあるとのこと。

うちのサーバ(さくらVPS、CentOS 6.7)では既にインストールされていました。

yumでインストール

バージョンは0.9.3-1でした。

設定

/etc/fail2banディレクトリが作成され、配下にファイルがあります。

まずはfail2ban.confで全体の設定。

次に動作設定を行ないます。jail.confで動作を設定し、filter.d配下のファイルでフィルターを設定する感じです。

動作の一括設定。fail2ban.confの上の方変更箇所だけ。

動作の個別設定。fail2ban.confの下の方。今回はsshd。個別に数値を設定したいものはここに記載します。とりあえずsshdの設定を有効にします。

あと、postfix-saslとdovecotも有効にします。postfix-saslは、なんか2時間に1回アクセスしてくるログがあったので、findtimeを43200秒(12時間)に設定してみます。ここら辺はログを見て調整が必要みたいですね。

プロセス起動。自動起動は最初からonでした。

あと、設定項目を見直していたら、複数回banされたIPを長期banにする項目「recidive」も用意されていましたので、設定してみました。

以下は、【/var/log/fail2ban/fail2ban.log】を見て、一日の間に2回banされたら、一週間banするというものです。

とりあえず様子を見ます。

後日

iptablesを見てみると、「recidive」の項にbanされたIPがありました。

banの際、どんな感じで動作していたのか見たいので、222.82.212.75がban時された時のfail2banのログを見てみます。

[sshd]で3回引っかかってban。[sshd]で2回banで[recidive]に引っかかってban。うまく動作しているようです。

ひとまず以上で設定完了ですが、apache関連のフィルタ設定がまだなので、引き続き設定していこうと思います。