专栏首页WalkingCloudCentOS7下使用DenyHosts阻止SSH暴力攻击

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

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

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

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

(图片可放大查看)

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

(图片可放大查看)

  • 查看denyhosts手册
man denyhosts

(图片可放大查看)

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

(图片可放大查看)

当然为了不影响正常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

(图片可放大查看)

3、启动denyhosts服务

systemctl enable denyhosts
systemctl start denyhosts

4、测试SSH暴力破解登录

(图片可放大查看)

(图片可放大查看)

5、验证denyhosts阻断效果

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

(图片可放大查看)

6、查看denyhosts运行状态

systemctl status denyhosts

7、查看denyhosts日志

tail -f /var/log/denyhosts 

(图片可放大查看)

(图片可放大查看)

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

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

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

本文分享自微信公众号 - WalkingCloud(WalkingCloud2018),作者:yuanfan2012

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-07-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • DenyHosts 阻止SSH暴力攻击

    首先sshd服务可以说是linux服务器一个至关重要的服务,如果被暴力破解成功,就直接可以拿到服务器的控制权了,在这里有两种解决方案,第一种是直接生成秘钥然后配...

    胡齐
  • 云服务器上ssh服务安全加固

    jeremyxu
  • CentOS服务器安全防护实例

    可以限制瞬间连接数过大的恶意IP(比如web应用防护,但不适用于LVS+Keepalived集群环境) 防护指令如下

    用户1685462
  • CentOS 服务器安全配置策略

    1. 修改ssh默认连接22端口 和 添加防火墙firewalld 通过端口 步骤:

    砸漏
  • 使用DenyHosts防止ssh暴力破解

    DenyHosts是用python2.3编写的一个程序,会分析/var/log/secure等文件,当发现同一个ip进行多次ssh登录失败时会将其写入/etc/...

    用户1685462
  • DenyHosts防御ssh暴力破解

    前段时间博客刚上线不久,ssh服务就被暴力破解了十几万次,文章也被各种扫描器,爬虫血洗过了,也是醉了......wordpress又没多少重要的数据,我们大农夫...

    用户1467662
  • 使用DenyHosts保护服务器安全

    在几个月前,笔者介绍了一种保护服务器安全的方法 自动禁止攻击IP登陆SSH,保护服务器安全。这种方法需要自己去动手写相应的脚本,今天要介绍的是开源的脚本实现。

    zhangheng
  • 为什么你的服务器总被入侵?SSH密码暴力破解实战

    运维行业正在变革,推荐阅读:30万年薪Linux运维工程师成长魔法 对于Linux操作系统来说,一般通过VNC、Teamviewer和SSH等工具来进行远程管理...

    小小科
  • Linux SSH密码暴力破解技术及攻防实战

    对于Linux操作系统来说,一般通过VNC、Teamviewer和SSH等工具来进行远程管理,SSH是 Secure Shell的缩写,由IETF的网络小组(N...

    FB客服
  • centos7 服务器基本的安全设置步骤

    这样做的好处是双重密码保护,黑客就算知道了普通用户的密码,如果没有root密码,对服务器上攻击也比较有限

    砸漏
  • 树莓派保卫战--防止SSH暴力破解

    自己用树莓派搭建了个小server,用了很长时间了,最近查看log发现有很多SSH登陆失败,瞬间心就碎了,一直没关心小派的安全问题,怪我咯!

    用户8851537
  • 使用 Fail2ban 防止 ssh 暴力破解攻击

    Fail2ban 通过扫描错误日志来禁止某些 IP 访问服务,它会直接修改防火墙规则来阻止来自这些 IP的请求。

    饶文津
  • 【运维】Linux 服务器 基本安防配置

    在前两个星期,我负责的一个小型企业网站遭受到了攻击,导致网站非常的卡,正常用户无法访问;初步判断是CC攻击; 这样的攻击防御起来还是比较简单的;后来服务器又受到...

    石臻臻的杂货铺[同名公众号]
  • 小措施提高Linux服务器安全

    黑客很多时候是个体力活。挂着扫描器,漫无目的的寻找不设防的主机,植入后门,控制,卖给需要的人。 所以,一些基本的安全措施可以避免太过容易成为目标,下面就小小的介...

    小小科
  • Linux防止ssh暴力破解常用方案

    用于显示用户最近登录信息,可以看到哪些用户在哪个时间访问登录了机器,同时查看ip是不是自己的常用地址

    SAnBlog
  • 如何使用 fail2ban 防御 SSH 服务器的暴力破解攻击

    对于SSH服务的常见的攻击就是暴力破解攻击——远程攻击者通过不同的密码来无限次地进行登录尝试。当然SSH可以设置使用非密码验证验证方式来对抗这种攻击,例如公钥验...

    胡齐
  • 总结Centos7系统加固知识点

    建议:linux的服务器不建议安装图形化工具,因为占内存,占带宽,占资源,弊远大于利

    砸漏
  • 老司机教你部署Cowrie蜜罐

    0.蜜罐分类: 低交互:模拟服务和漏洞以便收集信息和恶意软件,但是攻击者无法和该系统进行交互; 中等交互:在一个特有的控制环境中模拟一个生产服务,允许攻击者的部...

    FB客服
  • 解读︱SSH 暴力破解攻击瞄准这类用户,小心你的设备被利用挖矿

    腾讯云安全

扫码关注云+社区

领取腾讯云代金券