使用DenyHos防止ssh穷举爆破

本文介绍了如何使用DenyHosts来防范SSH的穷举攻击,包括DenyHosts的工作原理、安装过程、配置方法以及黑白名单设置。此外,还提到了TCPWrappers作为替代方案,但指出RHEL8不再支持。文章详细展示了DenyHosts的主要配置参数,并提供了安装脚本和配置文件下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

防止ssh穷举爆破

项目地址: https://github.com/denyhosts/denyhosts
代码的最后更新时间是:2020年,版本最后发布时间是2015年,可能过于老旧不建议使用。
Linux安装DenyHost防止ssh暴力破解
https://www.cnblogs.com/kerrycode/p/6514101.html

DenyHosts 是一个基于 Python 编写的轻量级工具,可以监控 SSH 日志文件,并自动拉黑多次登录失败的 IP 地址。
DenyHosts 的工作原理是读取 SSH 日志文件,分析其中的登录失败记录,将登录失败次数超过设定阈值的 IP 地址加入到 hosts.deny 文件中,从而阻止这些 IP 地址的访问。
DenyHosts优点简单易用缺点是功能相对较为简单,只能针对 SSH 登录失败进行拉黑,不能对其他恶意行为进行处理。

TCP Wrappers(也称为 tcpd)是一种网络访问控制工具,可以在 Linux 和其他类 Unix 操作系统上使用。它是通过在系统上的网络服务二进制文件和系统上的主机访问控制文件之间插入一个守护进程来工作的。

RHEL8并不使用TCP Wrappers,所以DenyHos对RHEL8无效


黑名单白名单

  • 禁止策略:/etc/hosts.deny
  • 允许策略:/etc/hosts.allow
# hosts.allow(hosts.deny同规则)
sshd:*.*.*.*


白名单还应为iptabels添加ACCEPT规则

# 放行指定IP
iptables -I INPUT -s 89.64.89.64 -j ACCEPT

安装denyhosts

依赖python2

https://blog.51cto.com/feko/2735467

# 下载脚本
wget -c https://raw.githubusercontent.com/omaidb/qiaofei_notes/main/shell_code/infosec/install_denyhosts.sh

# 执行安装脚本
bash install_denyhosts.sh

# 启动服务并开机自启
systemctl enable --now denyhosts

配置denyhosts

配置参考
https://blog.youkuaiyun.com/hjd199464/article/details/78315909

配置文件路径 /etc/denyhosts.conf

# 下载配置文件
wget -P /etc/ -c https://raw.githubusercontent.com/omaidb/qiaofei_notes/main/config_bak/denyhosts.conf

修改主要配置项:

# 配置(yum安装时,大部分配置已写好,稍作改动即可)
# 无效用户名限制登陆次数
DENY_THRESHOLD_INVALID=5
# 有效用户名限制登陆次数
DENY_THRESHOLD_VALID=10
# root限制登陆次数
DENY_THRESHOLD_ROOT=5
# root用户登录失败计数归零的时间
AGE_RESET_ROOT=1d
# 管理员邮箱
ADMIN_EMAIL= root@localhost



完整配置参数

############ 这些设置是必需的 ############

# 指定系统安全日志文件的路径
# SECURE_LOG = /var/log/auth.log
SECURE_LOG = /var/log/secure

# 指定拉黑 IP 地址的文件路径
HOSTS_DENY = /etc/hosts.deny

# 指定清除拉黑 IP 地址的时间间隔(为空表示不清除)
PURGE_DENY =

# 指定要监控的服务名称(默认为 sshd)
BLOCK_SERVICE = sshd

# 无效用户登录失败次数阈值
DENY_THRESHOLD_INVALID = 2

# 普通用户登录失败次数阈值
DENY_THRESHOLD_VALID = 2

# root 用户登录失败次数阈值
DENY_THRESHOLD_ROOT = 5

# 受限用户登录失败次数阈值
DENY_THRESHOLD_RESTRICTED = 1

# 工作目录的路径
WORK_DIR = /var/lib/denyhosts

# 配置文件的路径
ETC_DIR = /etc

# 启用此选项将允许 DenyHosts 在日志文件中记录来自允许列表中的主机的登录尝试,以便管理员可以查看这些尝试是否可疑。
# 默认情况下,此选项为 NO,不记录来自允许列表中的主机的登录尝试。
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=NO

# 启用此选项将禁用 DenyHosts 对允许列表和拒绝列表中的主机名进行反向 DNS 查询。
# 默认情况下,此选项为 YES,DenyHosts 会尝试对主机名进行反向 DNS 查询,以便更好地识别恶意主机。
HOSTNAME_LOOKUP=YES

# 指定 DenyHosts 守护进程的锁文件路径,用于保证只有一个 DenyHosts 进程在运行。
# 默认情况下,此选项为 /tmp/denyhosts.lock,但是在某些系统上,/tmp 目录可能会被设置为不可写,
# 因此需要指定其他目录作为锁文件的路径。
LOCK_FILE=/var/run/denyhosts.pid

############ 这些设置是可选的 ############

# 指定 iptables 的路径
IPTABLES = /sbin/iptables

# 管理员邮箱地址
ADMIN_EMAIL = root@localhost

# SMTP 服务器的主机名或 IP 地址
SMTP_HOST = localhost

# SMTP 服务器的端口号
SMTP_PORT = 25

# 发件人的地址
SMTP_FROM = DenyHosts <nobody@localhost>

# 邮件的主题
SMTP_SUBJECT = DenyHosts Report

# 是否进行允许列表主机名解析
ALLOWED_HOSTS_HOSTNAME_LOOKUP=NO

# 普通用户登录失败计数器重置时间
AGE_RESET_VALID=5d

# root 用户登录失败计数器重置时间
AGE_RESET_ROOT=25d

# 受限用户登录失败计数器重置时间
AGE_RESET_RESTRICTED=25d

# 无效用户登录失败计数器重置时间
AGE_RESET_INVALID=10d

######### 这些设置是特定于守护进程模式的 ##########

# 守护进程日志文件的路径
DAEMON_LOG = /var/log/denyhosts

# 守护进程休眠时间
DAEMON_SLEEP = 30s

# 守护进程清除日志的时间间隔
DAEMON_PURGE = 1h

######### 这些设置是特定于守护进程同步的 ##########

# 是否启用上传同步功能
SYNC_UPLOAD = no

# 是否启用下载同步功能
SYNC_DOWNLOAD = no
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

教Linux的李老师

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值