本教程将记录使用badips abuse跟踪器与Fail2ban一起保护您的服务器或计算机的过程。 我已经在Debian 8 Jessie和Debian 7 Wheezy系统上测试过了。
什么是badIPs?
BadIps是与fail2ban组合的报告为不良的IP的列表。
本教程包含两部分,第一部分将处理列表的使用,第二部分将处理数据的注入。
使用badIPs列表
定义您的安全级别和类别
您可以通过使用REST API获取IP地址列表。
当您获取此URL: https : //www.badips.com/get/categories
您将看到服务中存在的所有不同类别。
- 第二步,确定女巫分数是为你而设。
这里有一个来自badips的话应该有帮助(personnaly我拿了评分= 3): - 如果您想编译统计资料或使用数据进行一些实验等,您可以从0分开始。
- 如果您想防御您的私人服务器或网站,请从2.的分数进行分析。也许结合自己的结果,即使他们的分数不超过0或1。
- 如果您要保护网路商店或高流量,赚钱的电子商务服务器,我们建议使用3或4的值。也可以结合您自己的结果(键/同步)。
- 如果你偏执,请拿5。
所以现在你得到你的两个变量,让我们连接起来并抓住你的链接。
http://www.badips.com/get/list/{{SERVICE}}/{{LEVEL}}
注意:像我一样,你可以享受所有的服务。 在这种情况下,将服务的名称更改为“any”。
得到的网址是:
https://www.badips.com/get/list/any/3
让我们创建脚本
好的,当这样做的时候,我们将创建一个简单的脚本。
- 将我们的列表放在一个tempory文件中。
- (只有一次)在iptables中创建一个链。
- 清除链接到我们链的所有数据(旧条目)。
- 我们将链接每个IP到我们的新链。
- 完成后,阻止链接到我们的链条的所有INPUT / OUTPUT / FORWARD。
- 删除我们的临时文件。
现在我们将为此创建脚本:
cd /home/<user>/
vi myBlacklist.sh
在该文件中输入以下内容。
#!/bin/sh
# based on this version http://www.timokorthals.de/?p=334
# adapted by Stéphane T.
_ipt=/sbin/iptables # Location of iptables (might be correct)
_input=badips.db # Name of database (will be downloaded with this name)
_pub_if=eth0 # Device which is connected to the internet (ex. $ifconfig for that)
_droplist=droplist # Name of chain in iptables (Only change this if you have already a chain with this name)
_level=3 # Blog level: not so bad/false report (0) over confirmed bad (3) to quite aggressive (5) (see www.badips.com for that)
_service=any # Logged service (see www.badips.com for that)
# Get the bad IPs
wget -qO- http://www.badips.com/get/list/${_service}/$_level > $_input || { echo "$0: Unable to download ip list."; exit 1; }
### Setup our black list ###
# First flush it
$_ipt --flush $_droplist
# Create a new chain
# Decomment the next line on the first run
# $_ipt -N $_droplist
# Filter out comments and blank lines
# store each ip in $ip
for ip in `cat $_input`
do
# Append everything to $_droplist
$_ipt -A $_droplist -i ${_pub_if} -s $ip -j LOG --log-prefix "Drop Bad IP List "
$_ipt -A $_droplist -i ${_pub_if} -s $ip -j DROP
done
# Finally, insert or append our black list
$_ipt -I INPUT -j $_droplist
$_ipt -I OUTPUT -j $_droplist
$_ipt -I FORWARD -j $_droplist
# Delete your temp file
rm $_input
exit 0
完成后,您应该创建一个cronjob来更新我们的黑名单。
为此,我使用crontab,并在11:30 PM(就在我的延迟备份之前)每天运行脚本。
crontab -e
23 30 * * * /home/<user>/myBlacklist.sh #Block BAD IPS
不要忘记chmod你的脚本:
chmod + x myBlacklist.sh
现在完成了,您的服务器/计算机应该有点安全。
您还可以手动运行脚本:
cd /home/<user>/
./myBlacklist.sh
它应该需要一些时间...所以不要打破脚本。 事实上,它的价值在于最后一行。
使用Fail2ban向badIP报告IP地址
在本教程的第二部分中,我将介绍如何使用Fail2ban将bd IP地址bach报告给badips.com网站。
Fail2ban> = 0.8.12
报告是使用Fail2ban进行的。 根据您的Fail2ban版本,您必须使用本章的第一部分或第二部分。如果您在版本0.8.12中有fail2ban。
如果您的fail2ban版本为0.8.12或更高版本。
fail2ban-server --version
在您要报告的每个类别中,只需添加一个操作即可。
[ssh]
enabled = true
action = iptables-multiport
badips[category=ssh]
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry= 6
您可以看到,该类别是SSH,请查看这里( https://www.badips.com/get/categories )以找到正确的类别。
Fail2ban <0.8.12
如果版本不到0.8.12,那么您将需要创建一个操作。 这可以从这里下载: https : //www.badips.com/asset/fail2ban/badips.conf 。
wget https://www.badips.com/asset/fail2ban/badips.conf -O /etc/fail2ban/action.d/badips.conf
使用上面的badips.conf,您可以按照上述方式激活每个类别,也可以在全局启用它:
cd /etc/fail2ban/
vi jail.conf
[DEFAULT]
...
banaction = iptables-multiport
badips
现在重新启动fail2ban - 它应该从现在开始报告。
service fail2ban restart
IP报告统计
最后一步 - 不是很有用...您可以创建一个键。
如果你想看到你的数据,这一个是有用的。
只需复制/粘贴,并在控制台上显示JSON响应。
wget https://www.badips.com/get/key -qO -
{ "err":"", "suc":"new key 5f72253b673eb49fc64dd34439531b5cca05327f has been set.", "key":"5f72253b673eb49fc64dd34439531b5cca05327f" }
然后去badips网站,输入你的“密钥”并点击“统计”。
这里我们按类别去所有的统计数据。