使用 badIPs.com 保护你的服务器,并通过 Fail2ban 报告恶意 IP

这篇指南向你介绍使用 badips 滥用追踪器abuse tracker和 Fail2ban 保护你的服务器或计算机的步骤。我已经在 Debian 8 Jessie 和 Debian 7 Wheezy 系统上进行了测试。

什么是 badIPs?

BadIps 是通过 fail2ban 报告为不良 IP 的列表。

这个指南包括两个部分,第一部分介绍列表的使用,第二部分介绍数据提交。

使用 badIPs 列表

定义安全等级和类别

你可以通过使用 REST API 获取 IP 地址列表。

  • 当你使用 GET 请求获取 URL:https://www.badips.com/get/categories 后,你就可以看到服务中现有的所有不同类别。
  • 第二步,决定适合你的等级。 参考 badips 应该有所帮助(我个人使用 scope = 3):
  • 如果你想要编译一个统计信息模块或者将数据用于实验目的,那么你应该用等级 0 开始。
  • 如果你想用防火墙保护你的服务器或者网站,使用等级 2。可能也要和你的结果相结合,尽管它们可能没有超过 0 或 1 的情况。
  • 如果你想保护一个网络商店、或高流量、赚钱的电子商务服务器,我推荐你使用值 3 或 4。当然还是要和你的结果相结合。
  • 如果你是偏执狂,那就使用 5。

现在你已经有了两个变量,通过把它们两者连接起来获取你的链接。


  1. http://www.badips.com/get/list/{{SERVICE}}/{{LEVEL}}

注意:像我一样,你可以获取所有服务。在这种情况下把服务的名称改为 any

最终的 URL 就是:


  1. https://www.badips.com/get/list/any/3

创建脚本

所有都完成了之后,我们就会创建一个简单的脚本。

1、 把你的列表放到一个临时文件。

2、 在 iptables 中创建一个链chain(只需要创建一次)。(LCTT 译注:iptables 可能包括多个表tables,表可能包括多个链chains,链可能包括多个规则rules)

3、 把所有链接到该链的数据(旧条目)刷掉。

4、 把每个 IP 链接到这个新的链。

5、 完成后,阻塞所有链接到该链的 INPUT / OUTPUT /FORWARD 请求。

6、 删除我们的临时文件。

为此,我们创建脚本:


  1. cd /home/<user>/
  2. vi myBlacklist.sh

把以下内容输入到文件。


  1. #!/bin/sh
  2. ### based on this version http://www.timokorthals.de/?p=334
  3. ### adapted by Stéphane T.
  4. _ipt=/sbin/iptables    ### iptables 路径(应该是这个)
  5. _input=badips.db       ### 数据库的名称(会用这个名称下载)
  6. _pub_if=eth0           ### 连接到互联网的设备(执行 $ifconfig 获取)
  7. _droplist=droplist     ### iptables 中链的名称(如果你已经有这么一个名称的链,你就换另外一个)
  8. _level=3               ### Blog(LCTT 译注:Bad log)等级:不怎么坏(0)、确认坏(3)、相当坏(5)(从 www.badips.com 获取详情)
  9. _service=any           ### 记录日志的服务(从 www.badips.com 获取详情)
  10. ### 获取不良 IPs
  11. wget -qO- http://www.badips.com/get/list/${_service}/$_level > $_input || { echo "$0: Unable to download ip list."; exit 1; }
  12. ### 设置我们的黑名单 ###
  13. ### 首先清除该链
  14. $_ipt --flush $_droplist
  15. ### 创建新的链
  16. ### 首次运行时取消下面一行的注释
  17. # $_ipt -N $_droplist
  18. ### 过滤掉注释和空行
  19. ### 保存每个 ip 到 $ip
  20. for ip in `cat $_input`
  21. do
  22. ### 添加到 $_droplist
  23. $_ipt -A $_droplist -i ${_pub_if} -s $ip -j LOG --log-prefix "Drop Bad IP List "
  24. $_ipt -A $_droplist -i ${_pub_if} -s $ip -j DROP
  25. done
  26. ### 最后,插入或者追加到我们的黑名单列表
  27. $_ipt -I INPUT -j $_droplist
  28. $_ipt -I OUTPUT -j $_droplist
  29. $_ipt -I FORWARD -j $_droplist
  30. ### 删除你的临时文件
  31. rm $_input
  32. exit 0

完成这些后,你应该创建一个定时任务定期更新我们的黑名单。

为此,我使用 crontab 在每天晚上 11:30(在我的延迟备份之前) 运行脚本。


  1. crontab -e

  1. 23 30 * * * /home/<user>/myBlacklist.sh #Block BAD IPS

别忘了更改脚本的权限:


  1. chmod + x myBlacklist.sh

现在终于完成了,你的服务器/计算机应该更安全了。

你也可以像下面这样手动运行脚本:


  1. cd /home/<user>/
  2. ./myBlacklist.sh

它可能要花费一些时间,因此期间别中断脚本。事实上,耗时取决于该脚本的最后一行。

使用 Fail2ban 向 badIPs 报告 IP 地址

在本篇指南的第二部分,我会向你展示如何通过使用 Fail2ban 向 badips.com 网站报告不良 IP 地址。

Fail2ban >= 0.8.12

通过 Fail2ban 完成报告。取决于你 Fail2ban 的版本,你要使用本章的第一或第二节。

如果你 fail2ban 的版本是 0.8.12 或更新版本。


  1. fail2ban-server --version

在每个你要报告的类别中,添加一个 action。


  1. [ssh]
  2. enabled = true
  3. action = iptables-multiport
  4. badips[category=ssh]
  5. port = ssh
  6. filter = sshd
  7. logpath = /var/log/auth.log
  8. maxretry= 6

正如你看到的,类别是 SSH,从 https://www.badips.com/get/categories 查找正确类别。

Fail2ban < 0.8.12

如果版本是 0.8.12 之前,你需要新建一个 action。你可以从https://www.badips.com/asset/fail2ban/badips.conf 下载。


  1. wget https://www.badips.com/asset/fail2ban/badips.conf -O /etc/fail2ban/action.d/badips.conf

在上面的 badips.conf 中,你可以像前面那样激活每个类别,也可以全局启用它:


  1. cd /etc/fail2ban/
  2. vi jail.conf

  1. [DEFAULT]
  2. ...
  3. banaction = iptables-multiport
  4. badips

现在重启 fail2ban - 从现在开始它就应该开始报告了。


  1. service fail2ban restart

你的 IP 报告统计信息

最后一步 - 没那么有用。你可以创建一个密钥。 但如果你想看你的数据,这一步就很有帮助。

复制/粘贴下面的命令,你的控制台中就会出现一个 JSON 响应。


  1. wget https://www.badips.com/get/key -qO -

  1. {
  2. "err":"",
  3. "suc":"new key 5f72253b673eb49fc64dd34439531b5cca05327f has been set.",
  4. "key":"5f72253b673eb49fc64dd34439531b5cca05327f"
  5. }

到 badips 网站,输入你的 “key” 并点击 “statistics”。

现在你就可以看到不同类别的统计信息。

原文发布时间为:2017-04-26

本文来自合作伙伴“Linux中国”

时间: 2017-05-22

使用 badIPs.com 保护你的服务器,并通过 Fail2ban 报告恶意 IP的相关文章

使用badIPs.com保护你的服务器,并通过Fail2ban报告恶意IP

这篇指南向你介绍使用 badips 滥用追踪器(abuse tracker)和 Fail2ban 保护你的服务器或计算机的步骤.我已经在 Debian 8 Jessie 和 Debian 7 Wheezy 系统上进行了测试. 什么是 badIPs? BadIps 是通过 fail2ban 报告为不良 IP 的列表. 这个指南包括两个部分,第一部分介绍列表的使用,第二部分介绍数据提交. 使用 badIPs 列表 定义安全等级和类别 你可以通过使用 REST API 获取 IP 地址列表. 当你使用

如何配置fail2ban保护Apache HTTP服务器

  生产环境中的Apache HTTP服务器可能会遭到各种不同方式的攻击.攻击者可能采用蛮力攻击或执行恶意脚本,企图访问未经授权的目录或禁止访问的目录.一些恶意机器人程序可能会扫描你的网站,查找任何可能存在的安全漏洞,或者收集电子邮件地址或网站表单,以便发送垃圾邮件. Apache HTTP服务器随带全面的日志功能,可以捕获及记录表明此类攻击的异常事件.不过,系统性地分析详细的Apache日志,并迅速应对潜在攻击(比如禁止/取消禁止冒犯性的IP地址)仍然很重要.这时候fail2ban派得上用场,

简单十大步骤 保护IIS Web服务器安全

通过下面 10 步来保护 IIS: 1.为IIS 应用程序和数据专门安装一个NTFS 设备.如果有可能,不要允许IUSER(或其它任何匿名用户名)去访问任何其它设备.如果应用程序因为匿名用户无法访问其它设备上的程序而出了问题,马上使用Sysinternals 的FileMon 检测出哪个文件无法访问,并吧这个程序转移到IIS 设备上.如果无法做到这些,就允许IUSER 访问且只能访问这个文件. 2.在设备上设置NTFS 权限: Developers = Full(所有权限) IUSER = Re

小技巧 保护(IIS)Web服务器

通常地,大多数Web站点的设计目标都是:以最易接受的方式,为访问者提供即时的信息访问.在过去的几年中,越来越多的黑客.病毒和蠕虫带来的安全问题严重影响了网站的可访问性,尽管Apache服务器也常常是攻击者的目标,然而微软的Internet信息服务(IIS) Web服务器才是真正意义上的众矢之的. 高级教育机构往往无法在构建充满活力.界面友好的网站还是构建高安全性的网站之间找到平衡点.另外,它们现在必须致力于提高网站安全性以面对缩减中的技术预算 ( 其实许多它们的私有部门也面临着相似的局面). 正

IDC中国服务器市场季度跟踪报告

据IDC中国服务器市场季度跟踪报告的数据显示,2008年全年中国x86服务器市场总体出货量达到712618台,同比增长了11.3%; 但由于受到下半年全球金融危机的影响以及服务器厂商之间价格竞争的加剧,x86服务器市场的销售额与2007年相比反而缩水了1.2%,达到18亿美元,这也是中国x86服务器市场自2001年互联网泡沫破灭以来第一次出现同比负增长的情况. 影响2008年中国x86服务器市场的原因主要来自两个方面:一是奥运经济带动的一波高速增长已经随着奥运会的成功举办而结束,同时奥运期间封网

serversocket-通过ServerSocket起一个服务器 如何让外网的ip访问我的服务器

问题描述 通过ServerSocket起一个服务器 如何让外网的ip访问我的服务器 可以通过java 将某个路由端口映射到我的这个服务器地址吗? 或者我要实现的这个功能通过代理服务器可以吗?

保护(IIS)web服务器的15个技巧

iis|web|web服务|web服务器|技巧 通常地,大多数Web站点的设计目标都是:以最易接受的方式,为访问者提供即时的信息访问.在过去的几年中,越来越多的黑客.病毒和蠕虫带来的安全问题严重影响了网站的可访问性,尽管Apache服务器也常常是攻击者的目标,然而微软的Internet信息服务(IIS) Web服务器才是真正意义上的众矢之的. 高级教育机构往往无法在构建充满活力.界面友好的网站还是构建高安全性的网站之间找到平衡点.另外,它们现在必须致力于提高网站安全性以面对缩减中的技术预算 (其

网络安全之小技巧保护(IIS)Web服务器

通常地,大多数Web站点的设计目标都是:以最易接受的方式,为访问者提供即时的信息访问.在过去的几年中,越来越多的黑客.病毒和蠕虫带来的安全问题严重影响了网站的可访问性,尽管Apache服务器也常常是攻击者的目标,然而微软的Internet信息服务(IIS) Web服务器才是真正意义上的众矢之的. 高级教育机构往往无法在构建充满活力.界面友好的网站还是构建高安全性的网站之间找到平衡点.另外,它们现在必须致力于提高网站安全性以面对缩减中的技术预算 (其实许多它们的私有部门也面临着相似的局面). 正因

怎样配置具有SSL保护的FTP服务器

有没有可能在5R2版OS/400操作系统中设置一个具有SSL功能的FTP服务器? 答案是肯定的.iSeries FTP服务器既支持TLS(传输层安全)又支持SSL(安全套接层)保护的进程,包括客户身份识别和自动登录,以便为通过FTP控制和数据连接传输的数据进行加密.在你能够设置你的FTP服务器使用SSL之前,你必须要在你的iSeries服务器上安装必要的程序和设置数字证书.不过,在我们考察如何设置你的FTP服务器之前,了解FTP协议是非常重要的. FTP使用两个TCP连接,一个连接用于控制,另一