Denyhosts安装与错误排除

Denyhosts安装与错误排除

最近查看 linux 系统日志,发现有很多陌生的公网 ip 在不断对服务器进行暴力破解,企图猜到系统账户和密码,除了设置一个强壮的密码之外,可以使用 denyhosts 来限制这些 ip 的不友好访问。
       Denyhosts 是一个用 Python 编写的脚本,它会分析 sshd 的日志文件,当发现重复的攻击时就会记录 IP /etc/hosts.deny 文件,从而达到自动屏 IP 的功能。具体见原文档:
 
What is DenyHosts?
DenyHosts is a script intended to be run by Linux system administrators to help thwart SSH server attacks (also known as dictionary based attacks and brute force attacks).
If you've ever looked at your ssh log (/var/log/secure on Redhat, /var/log/auth.log on Mandrake, etc...) you may be alarmed to see how many hackers attempted to gain access to your server. Hopefully, none of them were successful (but then again, how would you know?). Wouldn't it be better to automatically prevent that attacker from continuing to gain entry into your system?
 

一、安装

1.       安装 denyhosts
这里我下的版本是 DenyHosts-2.6.tar.gz 。将文件放到 /root/soft 下。
安装步骤:
# cd /root/soft
# tar -zxvf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6
# python setup.py install
默认安装到 /usr/share/denyhosts 目录下。
2.       配置
首先将 denyhosts 注册到服务。
/usr/share/denyhosts 下,
# cp daemon-control-dist daemon-control  // 提出运行脚本, daemon-control 文件
# chown root daemon-control
# chmod 700 daemon-control
进入 etc/init.d
# cd /etc/init.d
# ln -s /usr/share/denyhosts/daemon-control denyhost  // 将脚本文件静态链接到 init.d 下,并命名为 denyhost
# chkconfig �Cadd denyhost // 注册为 denyhost 服务
# chkconfig �Clevel 2345 denyhosts on // 让它自启动 ,这一步也可以在 /etc/rc.local 下添加 /usr/share/denyhosts/daemon-control start 这一行让他自启动。

 
然后修改配置文件:
 
# cd /usr/share/denyhosts/
# cp denyhosts.cfg-dist denyhosts.cfg
# vi denyhosts.cfg
具体修改如下:
vi /etc/denyhosts.cfg
 
SECURE_LOG = /var/log/secure
#ssh 日志文件,它是根据这个文件来判断的。
 
HOSTS_DENY = /etc/hosts.deny
# 控制用户登陆的文件
 
PURGE_DENY = 5m
# 过多久后清除已经禁止的
 
BLOCK_SERVICE  = sshd
# 禁止的服务名
 
DENY_THRESHOLD_INVALID = 1
# 允许无效用户失败的次数
 
DENY_THRESHOLD_VALID = 10
# 允许普通用户登陆失败的次数
 
DENY_THRESHOLD_ROOT = 5
# 允许 root 登陆失败的次数
 
HOSTNAME_LOOKUP=NO
# 是否做域名反解
 
ADMIN_EMAIL = 你的邮箱地址
# 管理员邮件地址 , 它会给管理员发邮件
 
DAEMON_LOG = /var/log/denyhosts
# 自己的日志文件
      
正常情况下,这么安装便可以运行启动了: service denyhost start
/etc/hosts.deny 里面有被禁止的 ip 地址。
 

二、错误排除

在输入运行命令时,有错误提示打不开 denyhosts.py 文件,没有这个目录。如:
 
#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 的安装目录下即可。
       进入 /usr/local/lib/python2.5/site-packages/ 目录
#cd /usr/local/lib/python2.5/site-packages/
#cp �Crp Denyhosts /usr/lib/python2.4/ site-packages/
这样之后便可以启动 Denyhosts 了。
参考: The root cause is that python was upgraded from 2.4 to 2.5. So now denyhosts (and other python scripts) are working from a different directory. Why does this make a difference? The DenyHosts python scripts are located under /usr/lib/python2.4/site-packages/DenyHosts which, unless the script specifies that it is using the old 2.4 environment (DenyHosts doesn’t) then it will look in the new environment location, /usr/lib/python2.5/site-packages/DenyHosts, which of course, doesn’t exist. The quick fix is to cp over the DenyHost directory to the python 2.5 tree.
链接: http://www.linuxscope.com/~ptader/?p=232

你可能感兴趣的:(安装,职场,排错,休闲,denyhosts)