DenyHostsでブルートフォースや辞書攻撃を阻止

※Linux関連記事についてはsnagplaces on @wikiにまとめていますので、そちらをご参照ください。

前提条件:

  • Pythonがインストール済み
  • rpmforgeリポジトリがインストール済み

iptablesの設定だけでブルートフォースや辞書攻撃を防ぐ手法があるのですが、recentモジュールとかいうのを入れないと使えない上、その手順もめんどくさそうなのでDenyHostsを使います。

DenyHostsはsecureのログを監視して、rootでログインしてきたとか登録していないユーザ名でログインしてきた等の条件を満たした場合にhosts.denyに追加していくものです。

CentOS 4.7のときはリポジトリなしでインストールできてたようなのですが、5.2ではリポジトリを追加しないとインストールできないっぽいです。

DenyHostsのインストール

# yum –enablerepo=rpmforge install denyhosts

設定ファイルの編集

参考サイト:DenyHosts 設定方法

# vi /etc/denyhosts/denyhosts.cfg
【12行目あたり確認】監視するログファイルの指定
SECURE_LOG = /var/log/secure
【34行目あたり確認】拒否するアドレスの記述場所
HOSTS_DENY = /etc/hosts.deny
【58行目あたり確認】拒否する期間
PURGE_DENY = ※空欄にすると永久拒否
【91行目あたりコメントを外す】拒否するサービス
BLOCK_SERVICE = ALL ※すべてのサービスを拒否
【97行目あたりコメントアウト】
#BLOCK_SERVICE =
【108行目あたり変更】存在しないユーザでログインを試みてきたとき拒否する回数
DENY_THRESHOLD_INVALID = 1 ※1回で拒否
【121行目あたり変更】存在するユーザでログインを試みてきたときに拒否する回数
DENY_THRESHOLD_VALID = 3
【129行目あたり確認】rootでログインを試みてきたときに拒否する回数
DENY_THRESHOLD_ROOT = 1
【206~273行目あたり】検出があったときに送信するメールアドレス設定
※sendmailの設定が終わってから追記します。

対象外リストの編集

パスワードの間違いでDenyhostsに拒否されてしまっても大丈夫なように、あらかじめ決められた許可したいアドレスがわかっていれば登録しておきます。出先でログインしようとする場合は当然ながら登録されていないので注意しましょう。

denyhosts自身が持つallowed_hostsに記述する方法と、hosts.allowに記述する方法がありまが、 allowed_hostsに記述しても結局hosts.allowにコピーされるだけなので、あらかじめhosts.allowに記述しておきます。

# vi /etc/hosts.allow
ALL: 127.0.0.1 ※localhost
ALL: 192.168.24. ※LAN内のアドレス
ALL: xxx.xxx. ※リモートアドレス
以降、対象外にしたいアドレスを追記していく

サービスの起動と自動起動登録

# service denyhosts start
# chkconfig denyhosts on

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中