Twitterに投稿 はてなブックマークに追加 Google Bookmarksに追加

目次 >> SSH >> denyhosts

SSHの設定 - DenyHostsでSSHへの攻撃を防ぐ

例えばopenSUSE 10.0で/var/log/messagesを見ると時々

Mar 26 22:01:32 linux sshd[18645]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:34 linux sshd[18647]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:35 linux sshd[18649]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:37 linux sshd[18651]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:38 linux sshd[18653]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:40 linux sshd[18655]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:41 linux sshd[18657]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:43 linux sshd[18659]: Invalid user test12 from 65.205.238.12
Mar 26 22:01:44 linux sshd[18661]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:46 linux sshd[18663]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:47 linux sshd[18665]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:49 linux sshd[18667]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:50 linux sshd[18669]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:51 linux sshd[18671]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:53 linux sshd[18673]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:54 linux sshd[18675]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:56 linux sshd[18677]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:57 linux sshd[18679]: Invalid user test123 from 65.205.238.12
Mar 26 22:01:59 linux sshd[18681]: Invalid user tester from 65.205.238.12
Mar 26 22:02:00 linux sshd[18683]: Invalid user tester from 65.205.238.12
Mar 26 22:02:02 linux sshd[18685]: Invalid user tester from 65.205.238.12
Mar 26 22:02:03 linux sshd[18687]: Invalid user tester from 65.205.238.12
Mar 26 22:02:05 linux sshd[18689]: Invalid user tester from 65.205.238.12
Mar 26 22:02:06 linux sshd[18691]: Invalid user tester from 65.205.238.12
Mar 26 22:02:08 linux sshd[18693]: Invalid user tester from 65.205.238.12
Mar 26 22:02:09 linux sshd[18695]: Invalid user tester from 65.205.238.12
Mar 26 22:02:11 linux sshd[18697]: Invalid user tester from 65.205.238.12

このようなログが記録されていることがある。また、FC5でも、/var/log/secure内のログを見ると、似たようなsshを拒否したログを見つけることができる。これは、SSH対する辞書攻撃を試みているのであるが、これを簡単に防ぐにはDenyHostsが有効である。

DenyHostsはログファイルをcronで時々監視して攻撃してきたホストを/etc/hosts.denyに追加するPythonで書かれたスクリプトである。

DenyHostsのインストール

Fedoraの場合はyumを使って簡単にインストールすることができる(yum install denyhostsでインストールして、/etc/init.d/denyhosts startで起動するだけである。)。Ubuntuの場合もapt-getで簡単にインストールできる。
openSUSE 10.0やCentOSの様にソースを取ってきてインストールする必要がある場合は、ファイルは、ここ(http://denyhosts.sourceforge.net/)からダウンロードする。

yumでインストールする場合は、

# yum install denyhosts
Loaded plugins: refresh-packagekit
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package denyhosts.noarch 0:2.6-13.fc10 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
denyhosts noarch 2.6-13.fc10 fedora 97 k

Transaction Summary
================================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 97 k
Is this ok [y/N]: y
Downloading Packages:
denyhosts-2.6-13.fc10.noarch.rpm | 97 kB 00:02
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : denyhosts 1/1

Installed:
denyhosts.noarch 0:2.6-13.fc10

Complete!

ubuntuの場合は、apt-get install denyhostsで、

$ sudo apt-get install denyhosts
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
denyhosts
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 64.4 kB of archives.
After this operation, 442 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu/ natty/universe denyhosts all 2.6-8.1 [64.4 kB]
Fetched 64.4 kB in 1s (55.6 kB/s)
Selecting previously deselected package denyhosts.
(Reading database ... 134352 files and directories currently installed.)
Unpacking denyhosts (from .../denyhosts_2.6-8.1_all.deb) ...
Processing triggers for man-db ...
Processing triggers for ureadahead ...
Setting up denyhosts (2.6-8.1) ...
* Starting DenyHosts denyhosts
...done.
Processing triggers for python-central ...

DenyHostsの設定

設定ファイルは

/etc/denyhosts.conf

にある。必要であれば設定を書き換える。通常はデフォルトの設定で問題ない場合が多い。

あとは、

/etc/init.d/denyhosts start

で起動する。
また、Fedora、Suseの場合は

# chkconfig denyhosts on

Ubuntuの場合は、sysv-rc-confを使って、サーバ起動時に、自動的にDenyHostsも起動するようにしておく。(DenyHostsをインストールした際に自動的に設定されている場合もある)

ホワイトリストを設定する

/var/lib/denyhosts/allowed-hosts

というファイルの中に、IPアドレスを書き連ねていけばよい。

もしすでにブロックされてしまっていたら、

/etc/hosts.deny

から該当するIPアドレスを削除するのを忘れないように。

DenyHostsをソースからインストールする

一方ソースからインストールする場合は、

# tar zxvf DenyHosts-2.4b.tar.gz
# cd DenyHosts-2.4b/
# python setup.py install

これで、/usr/share/denyhosts/にインストールされるはずである。

一度インストールする際に、下記のようなエラーが起きた。
# python setup.py install
Traceback (most recent call last):
File "setup.py", line 4, in ?
from distutils.core import setup
ImportError: No module named distutils.core
ここで、python-develをインストールしたら問題なくインストールすることができた。

そして、

# cd /usr/share/denyhosts/
# cp denyhosts.cfg-dist denyhosts.cfg

として、デフォルトの設定ファイルをコピーする。

openSUSE 10.0の場合は、下記の行のコメントを外し、他のOSの行はコメントアウトする。

SECURE_LOG = /var/log/messages

次に、

# cp daemon-control-dist daemon-control

daemon-controlファイルで変更できる箇所は、次の3つの行のみである。通常はデフォルトのままで動くはずであるが、必要であれば変更する。

DENYHOSTS_BIN	 = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK	= "/var/lock/subsys/denyhosts"
DENYHOSTS_CFG 	= "/usr/share/denyhosts/denyhosts.cfg"

もしdaemon-controlのownerがrootになっていないようであれば、rootに変更する。

# chown root daemon-control

また、アクセス権は0700にする。

# chmod 700 daemon-control

あとは、

# ./daemon-control start

でデーモンとして起動する。

# cd /etc/init.d
# ln -s /usr/share/denyhosts/daemon-control denyhosts

とすると、

# /etc/init.d/denyhosts start

で起動できるようになる。サーバ起動時に、自動的にDenyHostsも起動するようにするには下記のように打つ。

# chkconfig denyhosts on

なお、SSHに対する攻撃に対しては、SSHのポート番号を変えてしまうというのも一つの手である。


最終更新日


本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて20.04、21.04のようにバージョン番号をつけて区別しています。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2021 Chikuma Engineering Co., Ltd. All Rights Reserved.