DenyHosts 阻止SSH暴力攻击

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

当你的 Linux 服务器暴露在互联网之中,该服务器将会遭到互联网上的扫描软件进行扫描,并试图猜测SSH登录口令。

你会发现,每天会有多条SSH登录失败纪录。那些扫描工具将对你的服务器构成威胁,你必须设置复杂登录口令,并将尝试多次登录失败的IP给阻止掉,让其在一段时间内不能访问该服务器。

用DenyHosts可以阻止试图猜测SSH登录口令,它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。


一、yum 安装 denyhosts

yum search denyhosts(denyhosts.noarch : A script to help thwart ssh server attacks)
yum install denyhosts

二、rpm -ql denyhosts 查看 denyhosts 安装路径

这边说下几个比较重要的目录

该目录中主要存放计划任务,日志压缩 以及 chkconfig 和 service 启动的文档

/etc/cron.d/denyhosts
/etc/denyhosts.conf
/etc/logrotate.d/denyhosts
/etc/rc.d/init.d/denyhosts
/etc/sysconfig/denyhosts

该目录中主要存放 denyhosts 所拒绝及允许的一些主机信息

/var/lib/denyhosts/allowed-hosts
/var/lib/denyhosts/allowed-warned-hosts
/var/lib/denyhosts/hosts
/var/lib/denyhosts/hosts-restricted
/var/lib/denyhosts/hosts-root
/var/lib/denyhosts/hosts-valid
/var/lib/denyhosts/offset
/var/lib/denyhosts/suspicious-logins
/var/lib/denyhosts/sync-hosts
/var/lib/denyhosts/users-hosts
/var/lib/denyhosts/users-invalid
/var/lib/denyhosts/users-valid
/var/log/denyhosts

三、来看看 /etc/denyhosts.conf 中的配置参数

[root@denyhosts ~]# egrep -v "(^$|^#)" /etc/denyhosts.conf 

       ############ THESE SETTINGS ARE REQUIRED ############
# 系统安全日志文件,主要获取ssh信息
SECURE_LOG = /var/log/secure

# 拒绝写入IP文件 hosts.deny
HOSTS_DENY = /etc/hosts.deny

# #过多久后清除已经禁止的,其中w代表周,d代表天,h代表小时,s代表秒,m代表分钟
PURGE_DENY = 4w

# denyhosts所要阻止的服务名称
BLOCK_SERVICE  = sshd

# 允许无效用户登录失败的次数
DENY_THRESHOLD_INVALID = 3

# 允许普通用户登录失败的次数
DENY_THRESHOLD_VALID = 10

# 允许ROOT用户登录失败的次数
DENY_THRESHOLD_ROOT = 6

# 设定 deny host 写入到该资料夹
DENY_THRESHOLD_RESTRICTED = 1

# 将deny的host或ip纪录到Work_dir中 
WORK_DIR = /var/lib/denyhosts

SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES

# 是否做域名反解
HOSTNAME_LOOKUP=YES

# 将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务
LOCK_FILE = /var/lock/subsys/denyhosts

       ############ THESE SETTINGS ARE OPTIONAL ############
# 管理员Mail地址
ADMIN_EMAIL = root
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]

# 有效用户登录失败计数归零的时间
AGE_RESET_VALID=5d

# ROOT用户登录失败计数归零的时间
AGE_RESET_ROOT=25d

# 用户的失败登录计数重置为0的时间(/usr/share/denyhosts/restricted-usernames)
AGE_RESET_RESTRICTED=25d

# 无效用户登录失败计数归零的时间
AGE_RESET_INVALID=10d

   ######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE  ##########
# denyhosts log文件
DAEMON_LOG = /var/log/denyhosts

DAEMON_SLEEP = 30s

# 该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间
DAEMON_PURGE = 1h

[root@denyhosts ~]# 

四、启动 denyhosts 服务并查看状态

这里写图片描述

五、通过测试 invalid、valid、root 等用户设置不同的ssh连接失败次数,来测试 denyhosts ,我这边只测试使用系统中不存在的用户进行失败登录尝试~

我们允许 invalid 用户只能失败4次、ROOT 用户失败7次、valid用户失败10次

DENY_THRESHOLD_INVALID = 4
DENY_THRESHOLD_VALID = 10
DENY_THRESHOLD_ROOT = 7

测试:使用一个没有创建的用户失败登录四次,并查看 /etc/hosts.deny

echo -n ""  > /var/log/secure
tail -f /var/log/secure
tail -f /etc/hosts.deny

/var/log/secure 日志信息:

这里写图片描述

/etc/hosts.deny 信息:

这里写图片描述

用户登录信息:

这里写图片描述


六、关于清除及添加可信主机记录

如果想删除一个已经禁止的主机IP,只在 /etc/hosts.deny 删除是没用的。需要进入 /var/lib/denyhosts 目录,进入以下操作:

1、停止DenyHosts服务:service denyhosts stop

2、在 /etc/hosts.deny 中删除你想取消的主机IP

3、编辑 DenyHosts 工作目录的所有文件 /var/lib/denyhosts,并且删除已被添加的主机信息。

/var/lib/denyhosts/hosts
/var/lib/denyhosts/hosts-restricted
/var/lib/denyhosts/hosts-root
/var/lib/denyhosts/hosts-valid
/var/lib/denyhosts/users-hosts
/var/lib/denyhosts/users-invalid
/var/lib/denyhosts/users-valid

4、添加你想允许的主机IP地址到
/var/lib/denyhosts/allowed-hosts

5、启动DenyHosts服务: service denyhosts start


七、通过邮件接收 denyhosts 所发送的信息

1、修改 /etc/denyhosts.conf 配置档,并重启 denyhosts 服务

ADMIN_EMAIL = hongxue@showjoy.com
SMTP_HOST = mail.showjoy.com
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>

2、通过其他客户端进行多次失败登录尝试

3、打开mail,查看邮件

这里写图片描述

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7月前
|
监控 Linux 网络安全
百度搜索:蓝易云【CentOS7如何使用fail2ban防范SSH暴力破解攻击?】
请注意,fail2ban还有其他功能和配置选项可供使用,您可以进一步定制以满足您的需求。您可以查阅fail2ban的官方文档或其他资源以了解更多详细信息和配置选项。
79 1
|
安全 物联网 Linux
通过 SSH 暴力攻击 Linux 服务器
通过 SSH 暴力攻击 Linux 服务器
|
缓存 安全 网络安全
【SSH远程连接问题】在校园网内使用SSH服务远程访问云服务器,结果连接不上,误以为是服务器被攻击了。结果是因为......
【SSH远程连接问题】在校园网内使用SSH服务远程访问云服务器,结果连接不上,误以为是服务器被攻击了。结果是因为......
549 0
|
Linux 网络安全 数据安全/隐私保护
CentOS7下使用DenyHosts阻止SSH暴力攻击
CentOS7下使用DenyHosts阻止SSH暴力攻击
451 1
CentOS7下使用DenyHosts阻止SSH暴力攻击
|
监控 网络安全 数据安全/隐私保护
|
Linux 网络安全 Python
CentOS7下安装SSHGuard阻止SSH暴力破解攻击
CentOS7下安装SSHGuard阻止SSH暴力破解攻击
433 0
CentOS7下安装SSHGuard阻止SSH暴力破解攻击
|
供应链 安全 测试技术
【技术干货】剖析pip ssh-decorate供应链攻击
通过对这个真实的供应链安全问题的分享,希望提高大家对这类安全问题的感知。
3019 0
|
安全 网络安全 数据安全/隐私保护
使用pam_abl防止SSH遭暴力破解攻击
  翻译、参考自StoneLion的http://security.linux.com/article.
1116 0
|
Linux 网络安全 Unix
pam_abl 防暴力SSH攻击Linux PAM模块
PAM(Pluggable Authenticatiion Modules)开发的pam_abl模块能实现自动对试图登录ssh的每个认证进行统计,对大量错误的试图尝试通过认证的登录进行必要的封杀,这样对于 使用SSH服务的Unix和Linux服务器管理人员来说,方便了很多,在我们面临大量的针对SSH的暴力攻击头疼的时候,完全可以采用此模块实现防御。
974 0