CentOS7下使用DenyHosts阻止SSH暴力攻击

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: CentOS7下使用DenyHosts阻止SSH暴力攻击

640.jpg

DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能,以帮助阻止SSH 服务器攻击(也称为基于字典的攻击和暴力破解攻击)。


当你的linux服务器暴露在互联网之中,该服务器将会遭到互联网上的扫描软件进行扫描,并试图猜测SSH登录口令。你会发现,每天会有多条SSH登录失败纪录。那些扫描工具将对你的服务器构成威胁,你必须设置复杂登录口令,并将尝试多次登录失败的IP给阻止掉,让其在一段时间内不能访问该服务器。


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

640.png


本文参考如下链接文章完成


https://linoxide.com/install-denyhosts-centos-7/


1、CentOS7下载并安装denyhosts


尝试过使用EPEL源,yum search denyhosts未能找到denyhosts

建议如下链接地址进行手动下载安装


http://mirror.neu.edu.cn/fedora-epel/7/x86_64/d/denyhosts-2.9-4.el7.noarch.rpm


手动下载rpm,使用rpm -ivh安装


wget http://mirror.neu.edu.cn/fedora-epel/7/x86_64/d/denyhosts-2.9-4.el7.noarch.rpm
rpm -ivh denyhosts-2.9-4.el7.noarch.rpm


640.jpg


  • 查看denyhosts相关文件所在路径


rpm -ql denyhosts



640.jpg


  • 查看denyhosts手册


man denyhosts


640.jpg


2、修改配置文件


vim /etc/denyhosts.conf


我们来看一下默认的配置文件


grep -v "^#" /etc/denyhosts.conf | grep -v "^$"
具体配置文件的解释如下
       ############ THESE SETTINGS ARE REQUIRED ############
SECURE_LOG = /var/log/secure #ssh 日志文件,它是根据这个文件来判断的。
HOSTS_DENY = /etc/hosts.deny #控制用户登陆的文件
PURGE_DENY = 4w  #过多久后清除已经禁止的IP,其中w代表周,d代表天,h代表小时,s代表秒,m代表分钟
BLOCK_SERVICE  = sshd #denyhosts所要阻止的服务名称
DENY_THRESHOLD_INVALID = 5 #允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 10 #允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 1 #允许ROOT用户登录失败的次数
DENY_THRESHOLD_RESTRICTED = 1 #在失败次数后阻止每个主机登录尝试次数已超过此值。该值适用于只出现在 WORK_DIR/restricted-usernames 文件中的用户名。
WORK_DIR = /var/lib/denyhosts #denyhosts工作数据目录,将deny的host或ip记录到WORK_DIR中 
ETC_DIR = /etc
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=NO #是否做域名反解 
LOCK_FILE = /var/lock/subsys/denyhosts #将DenyHost启动的pid记录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务
       ############ THESE SETTINGS ARE OPTIONAL ############
ADMIN_EMAIL = root@localhost #设置管理员邮件地址  
SMTP_HOST = localhost 
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
ALLOWED_HOSTS_HOSTNAME_LOOKUP=NO
AGE_RESET_VALID=5d #有效用户登录失败计数归零的时间
AGE_RESET_ROOT=25d #ROOT用户登录失败计数归零的时间
AGE_RESET_RESTRICTED=25d #用户的失败登录计数重置为0的时间
AGE_RESET_INVALID=10d #无效用户登录失败计数归零的时间
   ######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE  ##########
DAEMON_LOG = /var/log/denyhosts #denyhost服务日志文件
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h #该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间
   #########   THESE SETTINGS ARE SPECIFIC TO     ##########
   #########       DAEMON SYNCHRONIZATION         ##########
SYNC_UPLOAD = no
SYNC_DOWNLOAD = no


640.jpg

当然为了不影响正常SSH登录,建议的时间与次数配置如下


[root@centos opt]# grep -v ^# /etc/denyhosts.conf | grep -v  ^$
       ############ THESE SETTINGS ARE REQUIRED ############
SECURE_LOG = /var/log/secure
HOSTS_DENY = /etc/hosts.deny
PURGE_DENY = 5m
BLOCK_SERVICE  = sshd
DENY_THRESHOLD_INVALID = 8
DENY_THRESHOLD_VALID = 8
DENY_THRESHOLD_ROOT = 8
DENY_THRESHOLD_RESTRICTED = 8
WORK_DIR = /var/lib/denyhosts
ETC_DIR = /etc
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=NO
LOCK_FILE = /var/lock/subsys/denyhosts
       ############ THESE SETTINGS ARE OPTIONAL ############
ADMIN_EMAIL = root@localhost
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
ALLOWED_HOSTS_HOSTNAME_LOOKUP=NO
AGE_RESET_VALID=3m
AGE_RESET_ROOT=3m
AGE_RESET_RESTRICTED=3m
AGE_RESET_INVALID=3m
   ######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE  ##########
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP =30s
DAEMON_PURGE = 5m
   #########   THESE SETTINGS ARE SPECIFIC TO     ##########
   #########       DAEMON SYNCHRONIZATION         ##########
SYNC_UPLOAD = no
SYNC_DOWNLOAD = no


640.jpg

3、启动denyhosts服务


systemctl enable denyhosts
systemctl start denyhosts


4、测试SSH暴力破解登录

640.jpg

640.jpg


5、验证denyhosts阻断效果


可以看到超过登录尝试阀值就会进行阻断

640.jpg


6、查看denyhosts运行状态


systemctl status denyhosts


7、查看denyhosts日志


tail -f /var/log/denyhosts

640.jpg



640.jpg


总结:当然也有其它方式阻止SSH暴力攻击,可以参考之前的历史文章

使用pam_tally2锁定和解锁SSH失败的登录尝试

CentOS7云主机部署Fail2ban阻断SSH暴力破解

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
8月前
|
Linux 网络安全
CentOS7服务器SSH登陆时自动显示服务器基础信息
CentOS7服务器SSH登陆时自动显示服务器基础信息
185 0
|
7月前
|
网络协议 Linux 网络安全
蓝易云 - centos用ssh登录连接缓慢处理
请根据自己的实际情况尝试以上方法,找出导致SSH登录缓慢的原因,并进行相应的处理。
64 1
|
7月前
|
网络协议 Linux 网络安全
CentOS7增加或修改SSH端口号
CentOS7增加或修改SSH端口号
421 1
|
7月前
|
网络协议 Linux Shell
如何在 CentOS 中配置 SSH 服务的 TCP 端口转发
如何在 CentOS 中配置 SSH 服务的 TCP 端口转发
280 0
|
8月前
|
网络协议 物联网 Linux
你不能不知道的:无公网IP,SSH远程连接CentOS服务器【内网穿透】
你不能不知道的:无公网IP,SSH远程连接CentOS服务器【内网穿透】
399 0
|
8月前
|
安全 关系型数据库 MySQL
CentOS 7系统加固详细方案SSH FTP MYSQL加固
CentOS 7系统加固详细方案SSH FTP MYSQL加固
|
8月前
|
监控 Linux 网络安全
百度搜索:蓝易云【CentOS7如何使用fail2ban防范SSH暴力破解攻击?】
请注意,fail2ban还有其他功能和配置选项可供使用,您可以进一步定制以满足您的需求。您可以查阅fail2ban的官方文档或其他资源以了解更多详细信息和配置选项。
83 1
|
8月前
|
Linux 网络安全
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
125 1