snagplaces on @wiki
DenyHostsでSSHブルートフォースや辞書攻撃を阻止
最終更新:
snagplaces
-
view
最終更新日時:2009年12月11日 (金) 12時08分01秒[編集]
はじめに
iptablesの設定だけでブルートフォースや辞書攻撃を防ぐ手法があるのですが、recentモジュールとかいうのを入れないと使えない上、その手順もめんどくさそうなのでDenyHostsを使います。
DenyHostsはsecureのログを監視して、rootでログインしてきたとか登録していないユーザ名で何回ログインしたかなどの条件を満たした場合にhosts.denyに追加していくものです。
CentOS 4.7のときはリポジトリなしでインストールできてたようなのですが、5.2ではリポジトリを追加しないとインストールできないっぽいです。
DenyHostsはsecureのログを監視して、rootでログインしてきたとか登録していないユーザ名で何回ログインしたかなどの条件を満たした場合にhosts.denyに追加していくものです。
CentOS 4.7のときはリポジトリなしでインストールできてたようなのですが、5.2ではリポジトリを追加しないとインストールできないっぽいです。
注意事項
- Pythonがインストール済み
- rpmforgeリポジトリがインストール済み
参考サイト
DenyHostsのインストール
# yum --enablerepo=rpmforge install 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に記述しておきます。
出先でログインしようとする場合は当然ながら登録されていないので注意しましょう。
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
[▲上へ]