Linuxサーバ

sshdへの不正アタック対策「DenyHosts」

不正アタックを防ぐために

色々と調べてみた結果、一定回数以上ログインに失敗したIPやrootで直接ログインしようとしたIPを「/etc/hosts.deny」に登録(ブラックリストみたいなもんですな)して、以降の接続を拒否する方法を発見しましたので実行すると共に備忘録として。

 

DenyHostsとは

このソフト、上で書いたとおり不正アタックを仕掛けたと思しきIPアドレスをブラックリストに登録して次回以降シャットアウト!してくれる心強いものです。

 

何回のアタック失敗でブラリ登録するか、や何分後にリストから削除、など柔軟な設定も可能なようですので早速インストールしてみます。

 

まずはインストール

# apt-get update
# apt-get install denyhosts

 

これでサクっとインストール完了。続いて設定を行います。

 

設定ファイルの編集

設定ファイルのパスは「/etc/denyhosts.conf」ということなのでviエディタで開いてみます。

# vi /etc/denyhosts.conf

 

ちなみに以下は自分が設定をいじった項目になります。必要に応じて値を修正するなり他の項目もメンテするなりした方がよい場合もあるかと思いますので参考までにお願いします。

PURGE_DENY

hosts.denyに登録した後、どの程度時間を置いてブロックを解除するか?という項目になります。

 

故意ではなく誤ってログインに失敗した際に永久にブロックしたままというのも具合が悪いので、ひとまずは3時間程度で解除することにします。

PURGE_DENY = 3h

 

PURGE_THRESHOLD

ブロックの自動解除を何回まで行うか?という設定です。同じサーバから複数回不正アタックを喰らうのはイヤなので2回までとしました。

PURGE_THRESHOLD = 2

 

DENY_THRESHOLD_INVALID

存在しないユーザでのログイン認証を何回まで許可するか?という設定です。現状自分しかログインすることは有り得ないうえに今後増えることもそう無いと思いますので2回までとします。

DENY_THRESHOLD_INVALID = 5

 

DENY_THRESHOLD_VALID

上の項目とは反対で、存在するユーザに対する試行回数の設定。こちらは5回までとしました。

DENY_THRESHOLD_VALID = 5

 

ADMIN_EMAIL

不正アタックが発生した時に通知メールを送信する宛て先となります。admin宛としました。(そのまま普段使いのアドレスに転送されるため)

ADMIN_EMAIL = admin@chee-s.net

 

DenyHostsを再起動して設定を反映する

先ほどの設定を反映させるためにDenyHostsを再起動します。

/etc/init.d/denyhosts restart

 

これでインストールから設定まで完了のはずです。

 

まとめ

sshdへの不正アタック対策としてDenyHostsをインストール・設定してみました。

 

これでどの程度効果があるかは分かりませんが、1ヵ月後ぐらいにログを調査して動向を調べてみたいと思います。

 

攻撃が減ってくれたらいいんですけどね。

 

あとはこれと併用して更なる防御策がないか引き続き検証してみます。

オススメの記事

-Linuxサーバ
-, ,