LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: 聚焦深空

如何对抗 ISP HTTP hijacking (阻止推送广告)

[复制链接]
 楼主| 发表于 2010-5-10 00:39:05 | 显示全部楼层
Post by 溺水三千;2089063
我在使用这三条规则的时候,估计是因为内核选项没有开启相关选项,所以提示iptables: No chain/target/match by that name。请教一下这三条规则对应哪些内核选项,好让我去开启。多谢。


偶比较懒,iptables 相关内核模块向来是全选。

lsmod iptables 内核模块相关结果
  1. ipt_recent             10908  3
  2. xt_tcpudp               6784  4
  3. nf_conntrack_ipv4      15624  4
  4. xt_state                6016  5
  5. nf_conntrack           50516  3 nf_conntrack_ipv4,xt_state
  6. iptable_filter          6528  1
  7. ip_tables              13200  1 iptable_filter
  8. x_tables               15108  5 ipt_recent,xt_tcpudp,xt_state,ip_tables
复制代码
回复 支持 反对

使用道具 举报

发表于 2010-5-10 00:39:51 | 显示全部楼层
反馈条信息给楼主。

在我这边。这条规则会使layman无法更新overlay
iptables -I INPUT -p tcp --sport 80 --tcp-flags FIN,PSH,ACK FIN,PSH,ACK -j DROP
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-10 00:47:56 | 显示全部楼层
等俺睡醒再查。

能不能确认下具体是什么进程出的问题?
不用 gentoo,不知道 layman 用的什么,可能的话,请查查相关进程源码中与 PSH 有关东东。
回复 支持 反对

使用道具 举报

发表于 2010-5-10 00:53:30 | 显示全部楼层
-D掉我刚刚反馈的那条规则以后,layman才可以更新。

内核选项的问题在celinda的提点下已经解决。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-10 00:58:24 | 显示全部楼层
Post by 溺水三千;2089082
-D掉我刚刚反馈的那条规则以后,layman才可以更新。

如果您有加 TTL 相关规则,应该一样可以屏蔽推送广告,只是不一定能完全屏蔽。
偶这里看到进行劫持的机器发送的伪包 TTL 会变动,广告还是有可能撞大运跳出来。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-10 13:15:21 | 显示全部楼层
Post by 溺水三千;2089082
-D掉我刚刚反馈的那条规则以后,layman才可以更新。

确认有此类问题,多谢!

wget 下载稍大点的文件,就比较容易出现无法完成下载情况,一直停在 99%。
此时服务器端发送包含 FIN,PSH,ACK 标志,且包含最后一点文件数据的数据包。
此数据包被 -j DENY,导致服务端重发同样数据包,后续包也被 -j DENY 丢弃。
CTRL_C 接着 wget -c 可完成下载。

呵呵,看来误伤有些严重,正着手想办法解决。

经测试 -j DENY 替换为 -j REJECT --reject-with tcp-reset,出现类似问题。
貌似这样服务端连接终止,但自己机器上仍保持连接状态。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-11 14:01:47 | 显示全部楼层
Post by 溺水三千;2089082
-D掉我刚刚反馈的那条规则以后,layman才可以更新。

更新规则如下:
  1. iptables -I INPUT -p tcp --sport 80 --tcp-flags ALL SYN,ACK     -m state --state ESTABLISHED -m recent --set    -j ACCEPT
  2. iptables -I INPUT -p tcp --sport 80                             -m state --state ESTABLISHED -m recent --remove -j ACCEPT
  3. iptables -I INPUT -p tcp --sport 80 --tcp-flags ALL FIN,PSH,ACK -m state --state ESTABLISHED -m recent --remove -j DROP
  4. iptables -I INPUT -p tcp --sport 80 --tcp-flags ALL FIN,PSH,ACK -m state --state ESTABLISHED -m recent --rcheck -j LOG --log-level info --log-prefix="http_hijack: "
复制代码

暂时没找到 ipfw 对应实现方式。

文件长度小于数据包最大长度 MTU 时仍有机会误判,继续完善中。
回复 支持 反对

使用道具 举报

发表于 2010-5-11 15:04:14 | 显示全部楼层
Post by 聚焦深空;2089370
更新规则如下:
  1. iptables -I INPUT -p tcp --sport 80 --tcp-flags ALL SYN,ACK     -m state --state ESTABLISHED -m recent --set    -j ACCEPT
  2. iptables -I INPUT -p tcp --sport 80                             -m state --state ESTABLISHED -m recent --remove -j ACCEPT
  3. iptables -I INPUT -p tcp --sport 80 --tcp-flags ALL FIN,PSH,ACK -m state --state ESTABLISHED -m recent --remove -j DROP
  4. iptables -I INPUT -p tcp --sport 80 --tcp-flags ALL FIN,PSH,ACK -m state --state ESTABLISHED -m recent --rcheck -j LOG --log-level info --log-prefix="http_hijack: "
复制代码


暂时没找到 ipfw 对应实现方式。

文件长度小于数据包最大长度 MTU 时仍有机会误判,继续完善中。


感谢。辛苦了。
回复 支持 反对

使用道具 举报

发表于 2010-5-14 04:47:58 | 显示全部楼层
用這麼麻煩的方法 囧
還不如用stylish, 在ad blocking filtersetP 裡加過濾不到的部分就可以了

對廣告/插入一點反應都沒有 XD
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-14 12:29:15 | 显示全部楼层
Post by gogonkt;2089900
用這麼麻煩的方法 囧
還不如用stylish, 在ad blocking filtersetP 裡加過濾不到的部分就可以了

對廣告/插入一點反應都沒有 XD

多谢提到 stylish 插件。

首贴中开头有提到 firefox + noscript + adblockplus 可拦截。

只是俺要求高些,做就要彻底。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表