IPtables 字符串匹配某些 URL

IPtables 字符串匹配某些 URL

我正在尝试编写 iptables字符串匹配要阻止的规则http://example.com:8888以及https://example.com:8888何时与规则中提供的字符串匹配。另一条规则也将端口从 8888 重定向到 7777。

我尝试遵循以下规则,但不幸的是没有用:

iptables -A INPUT -p tcp -s 0.0.0.0/0 -m string --string linuxcore --algo bm --sport 8888 -j DROP
iptables -t raw -A PREROUTING -m string --algo bm --string linuxcore -p tcp -i eth0 --dport 8888 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 8888 -m string --algo bm --string "linuxcore" -j REDIRECT --to-port 7777
iptables  -A INPUT -t nat -p tcp --dport 8888 -m string --algo bm --string "linuxcore" -j DROP

答案1

看来您正在尝试做一些比我认为您想要的复杂得多的事情。

你要求什么:

阻止数据包有效负载(第 7 层)中的特定字符串。这将阻止某人发送电子邮件或 IM 提及字符串“linuxcore”,或在论坛中发布有关它的评论。

我认为你想要什么:

将发往任何由名称domain.com解析的IP地址且发往端口8888的数据包重定向到端口7777。

我会假设你想要什么,因为前者没有多大意义。我还假设您对匹配“foo.domain.com”不感兴趣。请记住,这是ip表,不域名服务器表。

在这种情况下,第 1、2 和 4 行是不必要的。而且您不需要字符串匹配。iptables足够聪明,可以将名称转换为适当的 IP 地址,并根据需要复用规则。此外,由于您正在使用PREROUTING,请知道这只会匹配进入你的系统,不是数据包离开你的系统(如果你想匹配离开的数据包,你需要使用OUTPUT,或者每个都有一个)。

该规则如下所示:

iptables -t nat -A PREROUTING -d domain.com -p tcp --dport 8888 -j REDIRECT --to-ports 7777 

相关内容