sshのブルートフォースアタックが凄まじいのでdenyhostsを入れてみた

サーバのログを見ると、毎日毎日延々アタックを続けられていて精神衛生上良くありません。

  1. hosts.denyで特定のIPアドレスからしか入れないようにする
  2. firewallで特定のIPアドレスからしか入れないようにする
  3. 公開鍵認証にする

等をやっておくのが基本的な解決だろうとは思いますが、公開鍵認証だけの場合、攻撃側にその事がわからないようで延々アタックを続けられたりします。攻撃側の接続頻度が高い場合自分が接続できなかったりしてリソースの無駄遣いだなぁと思ったりしたので、denyhostsを入れてみることにしました。

denyhostsは、同一のIPアドレスからsshの認証エラーが続いた場合に、/etc/hosts.deny にそのIPアドレスを追加して一定期間(任意の時間に設定可能)接続をご遠慮いただく(banする)というものです。

Welcome to DenyHosts
http://denyhosts.sourceforge.net/

↑のDownloadリンクから最新版をゲットします。最新版といっても2006年12月ですが、メンテされてないというよりは安定していると考えることにします。

RPMファイルもあるようですが、今回はパッケージ管理してないサーバからインストールを始めたのでソースから入れてみました。

CODE:
  1. wget http://nchc.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6.tar.gz
  2. tar zxvf DenyHosts-2.6.tar.gz
  3. cd DenyHosts-2.6
  4. sudo python setup.py install

これで /usr/share/denyhosts に関連ファイルがインストールされます。

CODE:
  1. cd /usr/share/denyhosts
  2. sudo cp denyhosts.cfg-dist denyhosts.cfg
  3. sudo cp daemon-control-dist daemon-control
  4. sudo chown root daemon-control
  5. sudo chmod 700 daemon-control

自動起動するようにします。

CODE:
  1. cd /etc/init.d
  2. sudo ln -s /usr/share/denyhosts/daemon-control denyhosts
  3. sudo chkconfig --add denyhosts (FedoraやCenOSやRHELの場合)

とりあえず今回は手動で起動します。

CODE:
  1. sudo /etc/init.d/denyhosts start

denyhosts.cfg の設定を変更することにより、何回の認証エラーでbanするかや、banする期間を変更したり、banしたIPアドレスをメールで送信したりすることができます。

CODE:
  1. PURGE_DENY = (banする期間。ここで設定した時間を過ぎると hosts.denyから削除されます)
  2. DENY_THRESHOLD_INVALID = (存在しないユーザの認証エラーが何回続いた時にbanするか)
  3. DENY_THRESHOLD_VALID = (存在するユーザの認証エラーが何回続いた時にbanするか)
  4. DENY_THRESHOLD_ROOT = (rootの認証エラーを何回でbanするか)
  5. DENY_THRESHOLD_RESTRICTED = (restricted-usernamesに書かれているユーザを何回でbanするか)
  6. ADMIN_EMAIL = (メールを送る場合の送信先メールアドレス。複数の場合はカンマで区切る)
  7. SMTP_USERNAME = (SMTP-Authの場合の設定)
  8. SMTP_PASSWORD = (SMTP-Authの場合の設定)
  9. SMTP_FROM = (メールの送信者の設定)
  10. SMTP_SUBJECT = (メールのタイトル)

他にもいろいろありますが、このへんで。

私は携帯にメールを送るようにしていますが、結構な量のメールが届きます。

それと、自分でopensshをコンパイルしてdaemonとして動かしている場合は、configureオプションで --with-tcp-wrappers をつけてないと機能しません。

/etc/hosts.deny は以下のような感じで書き換えられます。

CODE:
  1. # DenyHosts: Thu Jul 17 08:22:44 2008 | sshd: 218.7.xx.xxx
  2. sshd: 218.7.xx.xxx
  3. # DenyHosts: Thu Jul 17 18:46:29 2008 | sshd: 202.105.xxx.xx
  4. sshd: 202.105.xxx.xx
  5. # DenyHosts: Thu Jul 17 18:59:32 2008 | sshd: 60.248.xx.xxx
  6. sshd: 60.248.xx.xxx
  7. # DenyHosts: Thu Jul 17 19:11:06 2008 | sshd: 202.86.xx.x
  8. sshd: 202.86.xx.x
  9. # DenyHosts: Fri Jul 18 03:33:02 2008 | sshd: 210.56.xx.xxx
  10. sshd: 210.56.xx.xxx
  11. # DenyHosts: Fri Jul 18 03:35:02 2008 | sshd: 202.108.xxx.xxx
  12. sshd: 202.108.xxx.xxx
  13. # DenyHosts: Fri Jul 18 04:13:12 2008 | sshd: 218.24.xxx.xxx
  14. sshd: 218.24.xxx.xxx

関連すると思われる記事:

タグ: , ,

コメントをどうぞ