Windows 和 Apache 按国家/地区阻止 IP

Windows 和 Apache 按国家/地区阻止 IP

我遭受了 DDoS 攻击和暴力破解,我的客户仅来自拉丁美洲国家,我没有发现来自该国的攻击,所以我认为我的解决方案是找到一种方法来阻止除我的客户所在国家/地区之外的所有国家的 IP,但我找不到任何正确的信息,请帮忙。

答案1

与其他人所说的不同,有些人也问过我同样的问题。

您可以从以下位置获取特定国家/地区的 IP 范围http://www.ipdeny.com/ipblocks/

使用 Powerscript 根据下载的文件自动在 Windows 防火墙中创建防火墙规则。

遗憾的是我无法分享我使用的脚本。不过我发现了一个博客,其中解释了相同的技术,并附带了脚本。https://www.gregsitservices.com/blog/2016/02/blocking-unwanted-countries-with-windows-firewall/

答案2

正如 eKKiM 所说,你可以使用http://www.ipdeny.com/ipblocks/作为国家/地区区域的来源。您必须创建一个 shell 脚本来经常获取您的区域并将其放入 crontab 中。例如:

 
/bin/sh #!/bin/sh 复制代码
BGPEER_FILE="BGPEERING.IPs"
BGPEER_URL="http://www.ipdeny.com/ipblocks/data/aggregated/br-aggregated.zone"
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
### 下载 BG-PEERING IP ###
wget -T 10 -t 1 -nd -O “/etc/rc.d/firewall/$BGPEER_FILE.tmp” “$BGPEER_URL” > /dev/null 2>&1

如果 [ “x$?” != “x0” ]; 然后
        rm“/etc/rc.d/firewall/$BGPEER_FILE.tmp”
        退出 $?

egrep -v'^#'“/etc/rc.d/firewall/$BGPEER_FILE.tmp”>“/etc/rc.d/firewall/$BGPEER_FILE”
rm“/etc/rc.d/firewall/$BGPEER_FILE.tmp”

/etc/rc.d/rc.firewall

然后创建 iptables 规则,只允许您所在的国家/地区访问。使用 iptable 时要非常小心,我的防火墙脚本非常严格!

rc.防火墙:

/bin/bash #!/bin/bash
输出I=”eth0”
输出IP="192.168.0.150"
iptables="/usr/sbin/iptables"
echo="/bin/echo"

ma="/etc/rc.d/firewall/BGPEERING.IPs"
如果[-f $ ma]
然后
     在“cat $ma”中查找 ip
  $iptables -A 输入 -s $ip -d $OutIP -p tcp -j 接受
  完毕

ma2="/etc/rc.d/firewall/BGPEERING.IPs"
如果[-f $ ma2]
然后
    在“cat $ma2”中查找 ip
  $iptables -A 输入 -s $ip -d $OutIP -p udp -j 接受
  完毕

# 丢弃所有其他传入流量
$iptables -A INPUT -d $OutIP -p tcp -j DROP
$iptables -A INPUT -d $OutIP -p udp -j DROP

当然,编辑两个脚本并输入正确的值。

相关内容