下载地址:https://sourceforge.net/projects/denyhosts/files/
傻瓜式安装:
代码语言:javascript复制# 安装
tar xf DenyHosts-2.6.tar.gz
cd DenyHosts-2.6
python setup.py install
# 制作配置文件
cp denyhosts.cfg-dist /etc/denyhosts.cfg
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control
将daemon-control中的
DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg"
改为
DENYHOSTS_CFG = "/etc/denyhosts.cfg"
命令:
代码语言:javascript复制# python版本报错可以在前面加上python2
# 启动DenyHosts
daemon-control start
# 查看DenyHosts启动状态
daemon-control status
# 停止
daemon-control stop
配置文件
代码语言:javascript复制SECURE_LOG = /var/log/secure #ssh日志文件
HOSTS_DENY = /etc/hosts.deny #控制用户登录的文件
# format is: i[dhwmy]
# Where i is an integer (eg. 7)
# m = minutes
# h = hours
# d = days
# w = weeks
# y = years
# #(h表示小时,d表示天,m表示月,w表示周,y表示年)
# never purge:
HOSTS_DENY = /etc/hosts.deny ##控制用户登陆的文件,将多次连接失败的IP添加到此文件,达到屏蔽的作用
PURGE_DENY = 30m ##过多久后清除已经禁止的,设置为30分钟;,我这里为空表示永远不解禁
PURGE_DENY = 50m #过多久后清除已阻止IP
HOSTS_DENY = /etc/hosts.deny #将阻止IP写入到hosts.deny
BLOCK_SERVICE = #阻止服务名写在后面,如sshd
PURGE_THRESHOLD = #定义了某一IP最多被解封多少次。某IP暴力破解SSH密码被阻止/解封达到了PURGE_THRESHOLD次,则会被永久禁止;
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/denyhosts #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。
HOSTNAME_LOOKUP=NO #是否做域名反解
ADMIN_EMAIL = #设置管理员邮件地址
DAEMON_LOG = /var/log/denyhosts #DenyHosts日志位置
其他 :
#(h表示小时,d表示天,m表示月,w表示周,y表示年)
AGE_RESET_VALID=5d #有效用户登录失败计数归零的时间
AGE_RESET_ROOT=25d #root用户登录失败计数归零的时间
AGE_RESET_RESTRICTED=25d #用户的失败登录计数重置为0的时间(/usr/share/denyhosts/data/restricted-usernames)
AGE_RESET_INVALID=10d #无效用户登录失败计数归零的时间
#用户的登陆失败计数会在多长时间后重置为0
RESET_ON_SUCCESS = yes ##如果一个ip登陆成功后,失败的登陆计数是否重置为0
DAEMON_SLEEP = 30s ##当以 后台方式运行时,每读一次日志文件的时间间隔。
DAEMON_PURGE = 1h #当以后台方式运行时,清除机制在 HOSTS_DENY 中终止旧条目的时间间隔,这个会影响PURGE_DENY的间隔。
RESET_ON_SUCCESS = yes #如果一个ip登陆成功后,失败的登陆计数是否重置为0
查看攻击的ip记录:
代码语言:javascript复制cat /etc/hosts.deny
添加白名单:
代码语言:javascript复制vi /etc/hosts.allow
# 添加sshd: 119.45.*.*: allow
遇到的错误:
错误1:
python: can't open file '/usr/bin/denyhosts.py': [Errno 2] No such file or directory
解决办法:
代码语言:javascript复制# 找denyhosts.py
whereis denyhosts.py
发现正确位置在"/usr/local/bin/denyhosts.py",将daemon-control中的
DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
改为
DENYHOSTS_BIN = "/usr/local/bin/denyhosts.py"
错误2: scode type="red" No such file or directory: '/var/log/secure'[/scode] 解决办法: 这里要打开系统的日志,因系统而异,打开/etc/denyhosts.cfg(配置文件),将
SECURE_LOG = /var/log/secure
,选择
#SECURE_LOG = /var/log/auth.log
并去掉注释
错误3:
Error deleting DenyHosts lock file: /var/lock/subsys/denyhosts [Errno 2] No such file or directory: '/var/lock/subsys/denyhosts'
解决办法:
代码语言:javascript复制mkdir -p /var/lock/subsys/
touch /var/lock/subsys/denyhosts
错误4: scode type="red" File exists: '/var/lock/subsys/denyhosts'[/scode] 解决办法:
代码语言:javascript复制# 删除文件
rm -f /var/lock/subsys/denyhosts
错误5:
NameError: global name 'TupleType' is not defined
解决办法:
代码语言:javascript复制vi /usr/lib/python2.7/site-packages/DenyHosts/report.py
# 将'# from types import ListType, TupleType'的注释去掉