Ubuntu 16.04 系统下安装并配置denyhosts预防SSH暴力攻击
August 17, 2017
本文将会通过如何在Ubuntu 16.4 LTS Linux系统下安装并配置denyhosts 工具来预防远程SSH暴力攻击。
DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。
– 摘自百度百科
Table of Contents
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/