Iptables string 模块

string 模块,可以指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件。

  • --algo 【bmlkmp】∶字符匹配的查询算法
  • --string pattern∶字符匹配的字符串

示例∶应用返回的报文中包含字符"hello",我们就丢弃当前报文,其余正常通过。

服务器上面有些站点,站点里面有些关键字video,用户在请求我的时候,请求里面携带video,那么就拒绝掉,这个应该在filter表中的output链上面做。

因为请求经过prerouting送input,input构建响应报文,构建了通过output出去,构建响应报文里面带的关键字有video,那么我要在output上将其关闭掉,这样你去请求video是永远没有办法访问的。

访问本机的video的时候拒绝掉,和穿过我访问video,配置手法是一样,只不过操作的链不一样,一个是output链,一个是forward链。

在请求我的时候做不了任何的策略,但是在响应的时候可以做策略和规则的匹配。

示例∶应用返回的报文中包含字符"hello",我们就丢弃当前报文,其余正常通过。

[root@localhost ~]# iptables -t filter -I OUTPUT -p tcp -m string --algo kmp --string "video" -j DROP
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            STRING match  "video" ALGO name kmp TO 65535

---------------------------------------------------------------------------------------------------------------------------

路由器实现iptables做规则策略,当用户要请求的时候必须经过路由器穿过去,我要做些限制,如果要访问jd.com,那么就屏蔽掉,这个很明显在filter中做。首先进来的是prerouting,prerouting上做不了,因为它有可能不请求JD,有可能请求本机。所以prerouting就送给forward,那么就在forward上面做策略,如果符合JD那么就拒绝,到不了postingrouting上面去,那么这样就到不了服务器,这就是基于关键字做条件判断,如果符合预期则允许。

Iptables string 模块_第1张图片

Iptables string 模块_第2张图片

 

[root@localhost ~]# iptables -t filter -I OUTPUT -p tcp -m string --algo kmp --string "jd" -j DROP

你可能感兴趣的:(运维)