DenyHosts防止ssh爆破

2023-07-30 17:32:25 浏览数 (1)

下载地址: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'的注释去掉

0 人点赞