denyhost启动时错误提示和解决方法

DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。以下内容是出现的错误及解决办法。

出现:

./daemon-control start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg
Can't read: /private/var/log/system.log
[Errno 2] No such file or directory: '/private/var/log/system.log'
Error deleting DenyHosts lock file: /var/lock/subsys/denyhosts
[Errno 2] No such file or directory: '/var/lock/subsys/denyhosts'

使用:

mkdir -p /private/var/log/
mkdir -p /var/lock/subsys/
./daemon-control start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg
Can't read: /private/var/log/system.log
[Errno 2] No such file or directory: '/private/var/log/system.log'
Error deleting DenyHosts lock file: /var/lock/subsys/denyhosts
[Errno 2] No such file or directory: '/var/lock/subsys/denyhosts'

使用:

touch /private/var/log/system.log
touch /var/lock/subsys/denyhosts

./daemon-control start

出现:

starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg
DenyHosts could not obtain lock (pid: )
[Errno 17] File exists: '/var/lock/subsys/denyhosts'

使用:

rm -f /var/lock/subsys/denyhosts
./daemon-control start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py –daemon –config=/usr/share/denyhosts/denyhosts.cfg
OK!

启动完成啦。
你可以使用
service denyhosts status来查看运行状态
DenyHosts is running with pid = 25874 表示已经启动起来了。
接下来就可以使用
cat /etc/hosts.deny来查看记录了

#service denyhost start
starting DenyHosts:   /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg
python: can't open file '/usr/bin/denyhosts.py': [Errno 2] No such file or directory

经过查找发现denyhosts.py在目录/usr/local/bin/目录下,于是修改daemon-control文件

#vi daemon-control
DENYHOSTS_BIN   = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK  = "/var/lock/subsys/denyhosts"
DENYHOSTS_CFG   = "/usr/share/denyhosts/denyhosts.cfg"

将第一行修改为DENYHOSTS_BIN   = "/usr/local/bin/denyhosts.py"

在运行还会提示错误:导入Python版本错误的提示。如:

Traceback (most recent call last):
File "/usr/local/bin/denyhosts.py", line 5, in
import DenyHosts.python_version
ImportError: No module named DenyHosts.python_version

到这里错误很明了了,经过查询发现版本不对会导致这个问题。
 分析后发现原因在此:以前本机已经有一个python2.4的版本,使用rpm安装的,默认的路径是/usr/lib/python2.4,因为要升级python到2.5,也没有对卸载这个2.4的版本,使用编译安装的python2.5,安装路径并没有配置,这默认安装到/usr/local/lib/python2.5这个路径,而目前激活的python环境是2.5的,可能因为denyhosts安装时会根据环境查找安装,因此会在/usr/local/lib/python2.5/site-packages路径下安装Denyhosts这个文件夹。当运行denyhosts时,脚本会指定使用的是/usr/lib/python*这个路径的python里(暂时没找到脚本哪个地方指定),因此它无法定位python的版本,会出现这个错误。
最快速的解决方法是把/usr/local/lib/python2.5/site-packages路径下的Denyhosts文件夹整个拷贝到2.4的安装目录下即可。

cd /usr/local/lib/python2.5/site-packages/
cp -rp Denyhosts /usr/lib/python2.4/site-packages/

这样之后便可以启动Denyhosts了。
关于错误

Traceback (most recent call last):
File "/usr/local/python-2.4/bin/denyhosts.py", line 5, in
import DenyHosts.python_version
ImportError: No module named DenyHosts.python_version

需要修改下面的部分:
1、/usr/share/denyhosts/daemon-control

PYTHON_BIN      = "/usr/bin/env python"

改为

PYTHON_BIN     = "/usr/local/python-2.4/bin/python"

#!/usr/bin/env python

改为

#!/usr/local/python-2.4/bin/python

DENYHOSTS_BIN   = "/usr/bin/denyhosts.py"

改为

DENYHOSTS_BIN   = "/usr/local/python-2.4/bin/denyhosts.py"

2.

cp -rp /usr/local/python-2.4/lib/python2.4/site-packages/DenyHosts/  /usr/local/python-2.4/lib/python2.4/

原文地址:http://blog.sina.com.cn/s/blog_4ab15f5f0101e0a0.html

本文链接:https://jeff.xin/post/42.html

--EOF--

Comments

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。