DenyHosts 简介
DenyHosts 是 Python 语言写的一个程序软件,运行于 Linux 上预防 SSH 暴力破解的,它会分析 sshd 的日志文件(/var/log/secure),当发现重复的攻击时就会记录 IP 到 /etc/hosts.deny 文件,从而达到自动屏 IP 的功能。
安装:笔者在网上搜索时,发现很多的安装者使用的是yum install denyhosts -y 来安装,实测的话是不行的,提示找不到该包的存在,而下载压缩包解压安装方法实测可行。
方法如下:
wget https://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz 下载软件包 tar -zxvf DenyHosts-2.6.tar.gz 解压 cd DenyHosts-2.6/ 进入目录 yum install python -y 下载编译工具python python setup.py install 安装 cd /usr/share/denyhosts/ 进入安装目录 cp denyhosts.cfg-dist denyhosts.cfg 重命名可加载的配置文件 cp daemon-control-dist daemon-control 重命名启动工具 ./daemon-control start 启动 ln -s /usr/share/denyhosts/daemon-control /etc/init.d 为添加开机启动配置软链接 chkconfig daemon-control on 添加开机启动 chkconfig --list 检测是否加入开机启动
如果操作没有遇到异常,那么可以看到
如图所示这样,就已经加入了开机启动,ok,基本的配置就是这样,拿新安装的一个虚拟机来进行测试:
在故意输错了几次密码之后,连接请求直接被拒绝了,实测有效,让我们来看下安装了denyhosts的这台机器的hosts.deny文件:
果然,在文件中自动添加了尝试暴力破解的IP地址,拒绝来自该IP的所有ssh连接请求。
denyhosts服务配置文件/usr/share/denyhosts/denyhosts.cfg详解:
SECURE_LOG = /var/log/secure #ssh日志文件 # format is: i[dhwmy] # Where i is an integer (eg. 7) # m = minutes # h = hours # d = days # w = weeks # y = years # # never purge: PURGE_DENY = 50m #过多久后清除已阻止IP HOSTS_DENY = /etc/hosts.deny #将阻止IP写入到hosts.deny BLOCK_SERVICE = sshd #阻止服务名 PURGE_THRESHOLD = #定义了某一IP最多被解封多少次。某IP暴力破解SSH密码被阻止/解封达到了PURGE_THRESHOLD次,则会被永久禁止; DENY_THRESHOLD_INVALID = 1 #允许无效用户登录失败的次数 DENY_THRESHOLD_VALID = 10 #允许普通用户登录失败的次数 DENY_THRESHOLD_ROOT = 5 #允许root登录失败的次数 WORK_DIR = /usr/local/share/denyhosts/data #将deny的host或ip纪录到Work_dir中 DENY_THRESHOLD_RESTRICTED = 1 #设定 deny host 写入到该资料夹 LOCK_FILE = /var/lock/subsys/denyhosts #将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务。 HOSTNAME_LOOKUP=NO #是否做域名反解 ADMIN_EMAIL = #设置管理员邮件地址 DAEMON_LOG = /var/log/denyhosts #DenyHosts日志位置
其他注意事项:
想要解禁一个已经被禁止掉的 IP,并加入到允许主机列表,只在 /etc/hosts.deny 删除是没用的。需要进入 /var/lib/denyhosts 目录,进入以下操作:
1、停止 DenyHosts 服务
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
4、如果不想自己解禁,可以等到一个重置周期后,自动解禁
5、如果真的需要,可以在/etc/hosts.allow文件中添加信任IP,这样的话就可以无视掉denyhosts服务的限制,慎用!