使用DenyHos防止ssh穷举爆破
防止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