DenyHosts是一款基于Python语言写的一个安全工具,它会监控sshd的日志文件/var/log/secure,当发现重复的攻击时就会将IP记录到/etc/hosts.deny文件,从而达到自动屏IP防止服务器被暴力破解的防护作用,与Fail2ban比较类似。下面就简单介绍一下在 CentOS 7 \ Ubuntu 16.04 \ Debian 9 系统如何配置安装使用 DenyHosts。

linux-denyhost.jpg

安装 DenyHosts

#DenyHosts 官网:http://denyhosts.sourceforge.net/  
#Github 项目地址:https://github.com/denyhosts/denyhosts

#Ubuntu 16.04 / Debian 9
sudo apt-get install denyhosts

#CentOS 7
yum install -y denyhosts

配置与使用

编辑denyhosts.conf配置文件

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 = [email protected]  #设置管理员邮件地址 
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    //白名单

黑白名单配置/etc/hosts.deny/etc/hosts.allow的添加规则:

sshd:*.*.*.*     //如sshd:192.168.21.34

相关命令

# CentOS 7
service denyhosts start   //启动服务
service denyhosts stop    //停止服务
service denyhosts status   //查看服务状态
chkconfig denyhosts on        //加入开机启动

# Ubuntu 16.04 / Debian 9
sudo systemctl stop denyhosts.service //停止
sudo systemctl start denyhosts.service //启动
sudo systemctl restart denyhosts.service //重启
systemctl enable denyhosts.service //在开机时启用服务

# 较旧的 Ubuntu / Debian
sudo /etc/init.d/denyhosts restart //重启
sudo /etc/init.d/denyhosts stop //停止
sudo /etc/init.d/denyhosts start //启动

#查看DenyHosts日志
tail -f /var/log/denyhosts
tail -f /var/log/secure

其他

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

1、停止 DenyHosts 服务,并在 /etc/hosts.deny 中删除你想取消禁止的主机 IP;

2、编辑 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

3、不知道有哪些文件包含了这个 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 服务即可。另外如果不想自己解禁,可以等到一个重置周期后,自动解禁。


相关推荐

  1. Ubuntu/Debian 系统安装配置 UFW 简单防火墙
  2. CentOS 7 安装使用 iptables 防火墙方法介绍
  3. Linux 服务器配置密钥实现远程免密登录
  4. vDDoS-Protection | 防攻击(DDos、CC)工具
  5. CentOS 7 firewalld 防火墙常用命令汇总
  6. 如何给Redis设置临时或永久密码?
文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/3071.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。