例えば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で書かれたスクリプトである。
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 ...
設定ファイルは
/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アドレスを削除するのを忘れないように。
一方ソースからインストールする場合は、
# tar zxvf DenyHosts-2.4b.tar.gz
# cd DenyHosts-2.4b/
# python setup.py install
これで、/usr/share/denyhosts/にインストールされるはずである。
一度インストールする際に、下記のようなエラーが起きた。# python setup.py installここで、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のポート番号を変えてしまうというのも一つの手である。
最終更新日