Skip to content Skip to main navigation Skip to footer

Ubuntu 16.04 系统下安装并配置denyhosts预防SSH暴力攻击

本文将会通过如何在Ubuntu 16.4 LTS Linux系统下安装并配置denyhosts 工具来预防远程SSH暴力攻击。

DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。
– 摘自百度百科

1# 安装denyhosts

执行下面的apt-get 命令:

$ sudo apt-get install denyhosts

命令输出:

正在读取软件包列表... 完成
 正在分析软件包的依赖关系树
 正在读取状态信息... 完成
 下列软件包是自动安装的并且现在不需要了:
 gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libssl-dev libssl-doc libuv1-dev python-pkg-resources zlib1g-dev
 使用'apt autoremove'来卸载它(它们)。
 下列【新】软件包将被安装:
 denyhosts
 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 3 个软件包未被升级。
 需要下载 56.5 kB 的归档。
 解压缩后会消耗 294 kB 的额外空间。
 获取:1 http://archive.ubuntu.com/ubuntu xenial/universe amd64 denyhosts all 2.10-2 [56.5 kB]
 已下载 56.5 kB,耗时 1秒 (50.2 kB/s)
 正在选中未选择的软件包 denyhosts。
 (正在读取数据库 ... 系统当前共安装有 67566 个文件和目录。)
 正准备解包 .../denyhosts_2.10-2_all.deb  ...
 正在解包 denyhosts (2.10-2) ...
 正在处理用于 man-db (2.7.5-1) 的触发器 ...
 正在处理用于 systemd (229-4ubuntu19) 的触发器 ...
 正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
 正在设置 denyhosts (2.10-2) ...
 正在处理用于 systemd (229-4ubuntu19) 的触发器 ...
 正在处理用于 ureadahead (0.100.0-19) 的触发器 ...

2# 将你自己的ip地址加入到白名单里

这里我们需要将你的客户端主机ip地址加入到运行ssh连接的白名单配置文件里,编辑”/etc/hosts.allow” 文件,加入下面的行:

Sshd: 白名单ip1, 白名单ip2...

例如:

 Sshd: 192.168.1.2, 192.168.1.3

保存并退出文件。

3# 编辑denyhosts工具配置文件”/etc/denyhosts.conf”

$ sudo vim /etc/denyhosts.conf

查看配置文件中的设置是否和下面一致,如不一致,更改:

SECURE_LOG = /var/log/auth.log
 HOSTS_DENY = /etc/hosts.deny
 BLOCK_SERVICE  = sshd
 DENY_THRESHOLD_INVALID = 5
 DENY_THRESHOLD_VALID = 10
 DENY_THRESHOLD_ROOT = 1D
 IPTABLES = /sbin/iptables
 ENY_THRESHOLD_RESTRICTED = 1

保存并退出文件。

4# 重启denyhosts 服务

在ubuntu 16.04 LTS 系统上执行下面的命令:

$ sudo systemctl restart denyhosts.service

5# 查看denyhosts的日志文件

执行下面的命令:

$ sudo tail -f /var/log/denyhosts

命令输出如下:

root@ubuntutest:~# tail -f /var/log/denyhosts
 2017-08-17 10:19:01,553 - denyhosts   : INFO     Creating new firewall rule /sbin/iptables -I INPUT -s 192.168.1.20 -j DROP
 2017-08-17 10:19:01,579 - denyhosts   : INFO     new denied hosts: ['192.168.1.20']
 2017-08-17 10:19:01,581 - denyhosts   : INFO     launching DenyHosts daemon (version 2.10)...
 2017-08-17 10:19:01,589 - denyhosts   : INFO     DenyHost daemon is now running, pid: 8027
 2017-08-17 10:19:01,590 - denyhosts   : INFO     send daemon process a TERM signal to terminate cleanly
 2017-08-17 10:19:01,590 - denyhosts   : INFO       eg.  kill -TERM 8027
 2017-08-17 10:19:01,590 - denyhosts   : INFO     monitoring log: /var/log/auth.log
 2017-08-17 10:19:01,591 - denyhosts   : INFO     sync_time: 3600
 2017-08-17 10:19:01,592 - denyhosts   : INFO     purging of /etc/hosts.deny is disabled
 2017-08-17 10:19:01,592 - denyhosts   : INFO     denyhost synchronization disabled

6# 查看被阻止ssh连接的IP黑名单列表

执行下面的命令:

$ sudo  cat /etc/hosts.deny |grep sshd

命令输出如下:

root@ubuntutest:~# cat /etc/hosts.deny  | grep sshd
 sshd: 192.168.1.20

更多关于denyhosts 工具的信息,可以访问其官方站点:http://denyhosts.sourceforge.net/