《Linux系统安全:纵深防御、安全扫描与入侵检测 》 —2.5 利用DenyHosts防止暴力破解

华章计算机 发表于 2019/11/14 11:42:55 2019/11/14
【摘要】 本节书摘来自华章计算机《Linux系统安全:纵深防御、安全扫描与入侵检测》一书中第2章,第2.5节,作者是胥峰。

2.5 利用DenyHosts防止暴力破解

在2.2节和2.4节我们介绍了使用iptables和TCP Wrappers来进行访问控制的方案。以上的措施,全部基于白名单机制,对于没有固定来源IP地址但又需要进行防护的场景来说,使用DenyHosts来防止暴力破解是一种非常有效的措施。

DenyHosts由Phil Schwartz编写,其官方网站是http://denyhosts.sourceforge.net。

DenyHosts是使用Python开发的,它通过监控系统安全日志(例如,/var/log/secure)来分析是否存在对OpenSSH的暴力破解行为。如发现暴力破解,则其从该系统安全日志中分析出来源IP地址,然后通过在/etc/hosts.deny中加入相应的条目来使用TCP Wrappers禁止该IP地址的后续连接尝试。

DenyHosts的安装和启动脚本如代码清单2-3所示。

代码清单2-3 DenyHosts的安装和启动脚本

image.png

下面我们来看看DenyHosts的几个核心配置片段(文件/usr/share/denyhosts/denyhosts.cfg)。

SECURE_LOG:指定系统安全日志的位置,在CentOS和Redhat系统中设为/var/log/secure。

HOSTS_DENY:检测到暴力破解后,指定在哪个文件中添加相应的恶意IP并禁止,在CentOS和Redhat系统中设为/etc/hosts.deny。

BLOCK_SERVICE:检测到暴力破解后,指定封停来源IP访问哪些服务,可以指定sshd或者ALL(即封停来源IP访问任何使用了libwrap的服务程序)。

DENY_THRESHOLD_INVALID:对于在/etc/passwd不存在的用户名的暴力尝试,指定发现多少次以后封停,这个值使用默认的5即可。

DENY_THRESHOLD_VALID:对于在/etc/passwd存在的用户名(除root外)的暴力尝试,指定发现多少次以后封停。建议适当调大这个值(如设置为20),以避免合法用户自己输错密码导致的无法继续登录。

DENY_THRESHOLD_ROOT:对于root账户的暴力尝试,指定发现多少次以后封停。建议适当调大这个值(如设置为10),以避免合法root用户自己输错密码导致的无法继续登录。

HOSTNAME_LOOKUP:指定是否启用来源IP到完整域名(Fully Qualified Domain Name,FQDN)的解析,建议设置为NO,以节省服务器尝试反向解析的开销。

在安装和启动了DenyHosts以后,我们可以通过/etc/hosts.deny来查看效果。一般情况下,在较短的时间内就可以发现其已经封停了大量的暴力破解尝试。由此,也可以看出,互联网上时时刻刻存在着风险,总有一些不怀好意的人利用工具来发现可能的“猎物”。

以下是实际生产中抓到的一些恶意IP地址来源,我们可以看到,DenyHosts在记录该IP地址的同时记录了其添加到系统访问控制列表的时间:

# DenyHosts: Thu Dec  6 14:44:33 2018 | sshd: 177.114.90.32

sshd: 177.114.90.32

# DenyHosts: Thu Dec  6 14:44:33 2018 | sshd: 171.11.231.58

sshd: 171.11.231.58

# DenyHosts: Thu Dec  6 14:44:33 2018 | sshd: 193.112.128.197

sshd: 193.112.128.197


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。