美文网首页
Denyhost安装配置

Denyhost安装配置

作者: laod_wh | 来源:发表于2019-11-07 21:24 被阅读0次

背景介绍
当你的linux服务器暴露在互联网之中,该服务器将会遭到互联网上的扫描软件进行扫描,并试图猜测SSH登录口令。

你会发现,每天会有多条SSH登录失败纪录。那些扫描工具将对你的服务器构成威胁,你必须设置复杂登录口令,并将尝试多次登录失败的IP给阻止掉,让其在一段时间内不能访问该服务器。

用DenyHosts可以阻止试图猜测SSH登录口令,它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。

解压源码包
tar zxvf DenyHosts-2.6.tar.gz
进入到解压目录
cd DenyHosts-2.6
通过Python安装
提前确认下python的版本,并且确认下系统安装了几个版本的python,如果是两个,可能会出问题

python setup.py install
进入到安装目录
cd /usr/share/denyhosts
修改配置文件的名字

denyhosts.cfg为配置文件

cp denyhosts.cfg denyhosts.cfg-dist
cp daemon-control-dist daemon-control
ln -s /usr/share/denyhosts/daemon-control /etc/init.d
启动denyhosts
/etc/init.d/daemon-control start
设置开机启动
chkconfig daemon-control on
配置文件说明
SECURE_LOG = /var/log/secure #ssh日志文件

format is: i[dhwmy]

Where i is an integer (eg. 7)

m = minutes

h = hours

d = days

w = weeks

y = years

never purge:

PURGE_DENY = 50m #过多久后清除已阻止IP
HOSTS_DENY = /etc/hosts.deny #将阻止IP写入到hosts.deny
BLOCK_SERVICE = sshd #阻止服务名
DENY_THRESHOLD_INVALID = 1 #允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 10 #允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 5 #允许root登录失败的次数
WORK_DIR = /usr/local/share/denyhosts/data
#将deny的host或ip纪录到Work_dir中
DENY_THRESHOLD_RESTRICTED = 1 #设定 deny host 写入到该资料夹
LOCK_FILE = /var/lock/subsys/denyhost #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。
HOSTNAME_LOOKUP=NO #是否做域名反解
ADMIN_EMAIL = #设置管理员邮件地址
DAEMON_LOG = /var/log/denyhosts #自己的日志文件
DAEMON_PURGE = 10m #该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间
解绑
1.解锁特定的IP地址

vi /etc/hosts.allow

在末尾添加解绑IP地址
sshd: 212.237.2.160
2.解锁所有的IP地址

第一种方法:停止denyhosts 服务
停止denyhosts 服务,那么所有的IP地址都会被解锁。当你重启 denyhosts,如果这些异常地址的发生时间仍然在禁止时间内,那么denyhosts会重新将这些IP地址禁止。
第二种方法:日志滚动

logrotate -f /etc/logrotate.conf

查看/var/log/secure有无被清理,如果没有,手动清理
清理/etc/hosts.deny 文件
重启denyhosts

/etc/init.d/denyhosts restart

=========================================

问题处理
下面是由于python版本引发的问题 问题现象:

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 –rp Denyhosts /usr/lib/python2.4/ site-packages/

这样之后便可以启动Denyhosts了。

附安装脚本

!/bin/bash

cd /usr/local/src
wget http://jaist.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6.tar.gz
tar zxf DenyHosts-2.6.tar.gz
cd DenyHosts-2.6
python setup.py install
cd /usr/share/denyhosts/
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control
grep -v "^#" denyhosts.cfg-dist > denyhosts.cfg
echo "/usr/share/denyhosts/daemon-control start" >>/etc/rc.local
cd /etc/init.d
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig --add denyhosts
chkconfig --level 345 denyhosts on
service denyhosts start

相关文章

网友评论

      本文标题:Denyhost安装配置

      本文链接:https://www.haomeiwen.com/subject/yhszvctx.html