[关闭]
@longj 2018-06-29T12:27:22.000000Z 字数 1447 阅读 1527

云端服务器部署 denyhosts 抵御 ssh brute force 攻击


部署环境: Ubuntu 16.04 LTS server

发现被攻击问题

前些天一直在写系统分析与设计小组的作业,写一个简单的点菜系统并部署到腾讯云主机上。然后在某一天晚上我发现我们的服务器突然之间登陆不上去了,查看一下控制台发现我们的服务器似乎出现了一点异常。

Snipaste_2018-06-26_19-34-00.jpg-47.3kB

Snipaste_2018-06-26_19-34-14.jpg-83.9kB

首先是CPU的使用率突然骤增,外网出入带宽也非常的大。我尝试先把云服务器关机之后,过一会儿重启就可以登陆进去了,查看 /var/log/auth..log 文件后,我发现原来我们的服务器被别人使用 SSH Brute Force 攻击了。

Snipaste_2018-06-29_20-00-24.jpg-315.1kB

暴露在网络上的主机都是有风险的,其中一种风险就是ssh暴力破解攻击(ssh brute force attack)。可以看到我上面的 log 中出现了一系列的来自我不同的 ip 地址发来的 ssh 连接请求,并且不断地使用密码组合来进行暴力破解,这就导致我的服务器的 ssh 疲于应对这些请求而导致我的 ssh 登陆请求无法被正常处理。

部署 Denyhosts

为了防止类似的情况再次出现,我查找到了一个防御软件 denyhosts 并成功部署到了服务器。下面我记录一下如何安装部署。

1. 从源码安装

进入 release list 并下载最新版本的 denyhosts.

解压并使用 Python 安装

  1. $ tar zxvf DenyHosts-3.1.tar.gz
  2. $ cd denyhosts
  3. $ sudo setup.py install

2. 配置相对应的配置文件

在 root 用户的权限下

  1. cp denyhosts.conf /etc
  2. vim /etc/denyhosts.conf

然后根据文件内容的提示,按照你实际部署的系统环境进行必要的修改,然后保存。

3. 配置运行文件

在 root 用户的权限下:

  1. # cp daemon-control-dist daemon-control

然后编辑 daemon-control, 你一般只需要编辑前面的一小部分(如下),其他默认的设置一般可以满足绝大部分的系统情况。

  1. ###############################################
  2. #### Edit these to suit your configuration ####
  3. ###############################################
  4. DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
  5. DENYHOSTS_LOCK = "/var/lock/subsys/denyhosts"
  6. DENYHOSTS_CFG = "/etc/denyhosts.conf"

接着再给 daemon-control 赋予相应的运行权限

  1. chown root daemon-control
  2. chmod 700 daemon-control

4. 开启 denyhosts 软件

有两种方法可以开启 denyhosts 软件。

一、使用 daemon-control 脚本

  1. sudo daemon-control start

二、直接运行 denyhosts 的 python 脚本

  1. python /usr/local/bin/denyhosts --config /etc/denyhosts.conf --daemon

至此, denyhosts 部署完成。

实验结果

部署后的第二天,后台的小伙伴为了更新后台的代码文件频繁地登陆云服务器进行代码更新,结果在某一时刻被 denyhosts 给封掉了。说明这个软件最后 work 了,简单的 ssh brute force 的攻击方法应该可以被简单防御了~

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注