CentOS on X40:SSHブルートフォース対策(DenyHosts編)

今朝、ログを見てみると、やっぱりというかなんというか、sshd_configのMaxStartupsは機能していないようでした。

ですので、次の策はDenyHostsを使用してみます。

DenyHostsの仕組みとしては、sshd_configでの対策と似たようなもので、ある条件での連続アクセスがあるとhosts.denyに追加するといったものです。

参考サイト:

DanyHostsはPythonで書かれたものらしく、インストールにはPython関連パッケージがインストールされているか確認します。

pythonとpython-develがあればOKです。

# yum list installed | grep python
dbus-python.i386 0.22-12.EL.7 installed
gnome-python2.i386 2.6.0-3 installed
gnome-python2-bonobo.i386 2.6.0-3 installed
gnome-python2-canvas.i386 2.6.0-3 installed
gnome-python2-gtkhtml2.i386 2.6.0-3 installed
libxml2-python.i386 2.6.16-6 installed
python.i386 2.3.4-14.3 installed
python-devel.i386 2.3.4-14.3 installed
python-elementtree.i386 1.2.6-4.2.1 installed
python-ldap.i386 2.0.1-2 installed
python-sqlite.i386 1.1.7-1.2 installed
python-urlgrabber.noarch 2.9.8-2 installed
rpm-python.i386 4.3.3-18_nonptl installed

DenyHostsのインストール

# yum install denyhosts

設定ファイル(denyhosts.conf)の編集
※ここでは忘れないように項目ごとに説明していきます。いじる必要が無い部分については「(デフォルト)」としてあります。

# vi /etc/denyhosts.conf
【12行目あたり】監視するログファイルの指定(デフォルト)
SECURE_LOG = /var/log/secure
【34行目あたり】拒否アドレスの記述場所(デフォルト)
HOSTS_DENY = /etc/hosts.deny
【69行目あたり】拒否する期間(1時間)
PURGE_DENY = 1h ※永久的に拒否する場合は空欄にすること
【98行目あたり】ブロック対象のサービス(デフォルト)
BLOCK_SERVICE = sshd
【113行目あたり】存在しないユーザログインを拒否するまでの回数
DENY_THRESHOLD_INVALID = 3
【124行目あたり】存在するユーザログインを拒否するまでの回数
DENY_THRESHOLD_VALID = 5
【134行目あたり】rootログインを拒否するまでの回数(デフォルト)
DENY_THRESHOLD_ROOT = 1

基本的にはこれくらいです。何かあれば指定先にメール送信等がありますが、ここではまだやりません。
denyhosts対象外リストの編集

# vi /var/lib/denyhosts/allowed_hosts
# We mustn’t block localhost
127.0.0.1
※ここ以下に対象外のアドレスを記述する

denyhostsの起動

# service denyhosts start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py –daemon –config=/etc/denyhosts.conf
Error sending email
(-2, ‘Name or service not known’)
Email message follows:
From: DenyHosts
To: root
Subject: DenyHosts Report from ドメイン
Date: Tue, 21 Nov 2006 15:10:20 +0900
Added the following hosts to /etc/hosts.deny:
拒否IPアドレスの一覧(ホスト名)
・・・</NOBODY@LOCALHOST>

起動した瞬間sshのログを見て自動的にhosts.denyにアドレスが追加されます。
以下のコマンドを入力してallowed_hostsで入力したアドレスがちゃんと除外されているかどうか確認してください。

# cat /etc/hosts.deny

正常に動いているようであればPC起動時にもサービスを起動するようにします。

# chkconfig denyhosts on

今のところちゃんと動いてる感じ。

・・・これならsshd:ALLにしてhosts.allowに許可していけばいいやって気になってきた。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中