前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7下使用DenyHosts阻止SSH暴力攻击

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

作者头像
yuanfan2012
发布2021-07-16 11:00:44
1.6K0
发布2021-07-16 11:00:44
举报
文章被收录于专栏:WalkingCloudWalkingCloud

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的目的。

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

代码语言:javascript
复制
https://linoxide.com/install-denyhosts-centos-7/

1、CentOS7下载并安装denyhosts

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

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

代码语言:javascript
复制
http://mirror.neu.edu.cn/fedora-epel/7/x86_64/d/denyhosts-2.9-4.el7.noarch.rpm

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

代码语言:javascript
复制
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

(图片可放大查看)

  • 查看denyhosts相关文件所在路径
代码语言:javascript
复制
rpm -ql denyhosts

(图片可放大查看)

  • 查看denyhosts手册
代码语言:javascript
复制
man denyhosts

(图片可放大查看)

2、修改配置文件

代码语言:javascript
复制
vim /etc/denyhosts.conf 

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

代码语言:javascript
复制
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

(图片可放大查看)

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

代码语言:javascript
复制
[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

(图片可放大查看)

3、启动denyhosts服务

代码语言:javascript
复制
systemctl enable denyhosts
systemctl start denyhosts

4、测试SSH暴力破解登录

(图片可放大查看)

(图片可放大查看)

5、验证denyhosts阻断效果

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

(图片可放大查看)

6、查看denyhosts运行状态

代码语言:javascript
复制
systemctl status denyhosts

7、查看denyhosts日志

代码语言:javascript
复制
tail -f /var/log/denyhosts 

(图片可放大查看)

(图片可放大查看)

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WalkingCloud 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、CentOS7下载并安装denyhosts
  • 2、修改配置文件
  • 3、启动denyhosts服务
  • 4、测试SSH暴力破解登录
  • 5、验证denyhosts阻断效果
  • 6、查看denyhosts运行状态
  • 7、查看denyhosts日志
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档