DenyHosts —— 让你的服务器少受点攻击

本贴最后更新于 2298 天前,其中的信息可能已经水流花落

[TOC]

DenyHosts 简介

DenyHosts 是 Python 语言写的一个程序软件,运行于 Linux 上预防 SSH 暴力破解的,它会分析 sshd 的日志文件(/var/log/secure),当发现重复的攻击时就会记录 IP 到/etc/hosts.deny 文件,从而达到自动屏 IP 的功能。

本文整理自 HeJD 博客的相关博文lclc 博客的相关博文。在此感谢两位博主。侵删。

使用

安装

我的 Linux 版本:CentOS 7,编写这篇博客时,DenyHosts 的版本为:denyhosts-2.9-4.el7.noarch
如何查看 DenyHosts 的版本?使用命令 $ rpm -qa | grep denyhosts 即可查看。

使用以下命令即可安装 DenyHosts

yum install -y denyhosts

配置和使用

  • 打开配置文件
  vim /etc/denyhosts.conf
  • 然后配置 DenyHosts(有默认配置,可以按需修改)
  SECURE_LOG = /var/log/secure  #ssh日志文件
  
  HOSTS_DENY = /etc/hosts.deny  #将阻止IP写入到hosts.deny
  
  PURGE_DENY = 4w  #过多久后清除已经禁止的IP,其中w代表周,d代表天,h代表小时,s代表秒,m代表分钟
  
  BLOCK_SERVICE  = sshd  #阻止服务名
  
  DENY_THRESHOLD_INVALID = 5  #无效用户名限制登陆次数。 // --> 主要 
  
  DENY_THRESHOLD_VALID = 10  #有效用户名限制登陆次数。 // --> 主要 
  
  DENY_THRESHOLD_ROOT = 5  #root限制登陆次数。  // --> 主要 
  
  DENY_THRESHOLD_RESTRICTED = 1  #受限用户限制登录次数。  // --> 主要 
  
  WORK_DIR = /var/lib/denyhosts  #将deny的host或ip纪录到Work_dir中(限制过的ip和host存下案底,列入受限名单)
  
  HOSTNAME_LOOKUP=YES  #是否做域名反解
  
  LOCK_FILE = /var/lock/subsys/denyhosts  #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。
  
  ADMIN_EMAIL = denyhosts@163.com  #设置管理员邮件地址 
  SMTP_HOST = localhost 
  SMTP_PORT = 25 
  SMTP_FROM = DenyHosts  
  SMTP_SUBJECT = DenyHosts Report
  
  AGE_RESET_ROOT = 1d  #root用户登录失败计数归零的时间(1d:1天)
  
  AGE_RESET_RESTRICTED=25d  #受限用户的失败登录计数归零的时间
  
  AGE_RESET_VALID=1d   #有效用户登录失败计数归零的时间

  AGE_RESET_INVALID=10d  #无效用户登录失败计数归零的时间
  
  DAEMON_LOG = /var/log/denyhosts  #自己的日志文件
  • 查看和配置 IP 黑名单、白名单
  vim /etc/hosts.deny    //黑名单(拦截记录)
  vim /etc/hosts.allow    //白名单
  • 黑白名单配置规则
  sshd:*.*.*.*     //如sshd:192.168.21.34
  • 相关命令
    • 启动命令
      service denyhosts start   //启动服务
      service denyhosts stop    //停止服务
      service denyhosts status   //查看服务状态
    
    • 加入自启动
      chkconfig denyhosts on
    

其他

想要解禁一个已经被禁止掉的 IP,并加入到允许主机列表,只在 /etc/hosts.deny 删除是没用的。需要进入 /var/lib/denyhosts 目录,进入以下操作:

  • 1、停止 DenyHosts 服务:$ sudo service denyhosts stop
  • 2、在 /etc/hosts.deny 中删除你想取消禁止的主机 IP
  • 3、编辑 DenyHosts 工作目录(配置文件中 WORK_DIR)的所有文件,一个个删除文件中你想取消的主机 IP 所在的行
    /var/lib/denyhosts/hosts
    /var/lib/denyhosts/hosts-restricted
    /var/lib/denyhosts/hosts-root
    /var/lib/denyhosts/hosts-valid
    /var/lib/denyhosts/users-hosts
  • 不知道有哪些文件包含了这个 IP 地址,可以使用以下命令:
    $ sudo grep *.*.*.*(IP地址) /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
  • 4、添加你想允许的主机 IP 地址到

/var/lib/denyhosts/allowed-hosts

  • 在文件中的位置大概在这段代码下方:
	# We mustn’t block localhost 
	127.0.0.1 
	*.*.*.*   //你想添加允许的IP地址
  • 5、启动 DenyHosts 服务: service denyhosts start
  • 6、如果不想自己解禁,可以等到一个重置周期后,自动解禁

总结

再好的防止攻击的手段,也总会有更加厉害的 hacker 攻破。所以说,绝对的安全是不可能存在的,我们可以做的就是定期更换安全性高的密码,注意个人隐私的保护,及时发现并修复漏洞,这就已经是很负责的自我保护了。

over

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    944 引用 • 943 回帖
  • denyhosts
    2 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...