关于近期四川电信对搜索的劫持与应对方法
2008-12-03 | 18:59从大约2008年11月30日起测试的结果来看,当访问google、baidu进行搜索的时候,遭到了HTTP的访问劫持并转向,准确的劫持页面是 125.64.31.13:81 这里,用 /b.js 来进行的劫持工作...
之后跳转到 s.cntsi.net 这里,利用 /earch.aspx 再次跳转到google,测试的时候发现由于可能还在矫正,目前即使是用百度搜索,也会被转到google的搜索结果上面去。
从大约2008年11月30日起测试的结果来看,当访问google、baidu进行搜索的时候,遭到了HTTP的访问劫持并转向,准确的劫持页面是 125.64.31.13:81 这里,用 /b.js 来进行的劫持工作...
之后跳转到 s.cntsi.net 这里,利用 /earch.aspx 再次跳转到google,测试的时候发现由于可能还在矫正,目前即使是用百度搜索,也会被转到google的搜索结果上面去。
在linux的源程序/Documentation/networking/ip-sysctl.txt 文件中,有详细地记录可以修改的关于linux的ip协议参数,以下是我的整理美化修整后添加个人心得的版本.(如蒙垂青,需要转载,请著名出处 http://skylove.study-area.org/blog/ )
格式
参数名 参数类型
参数值(如无特别标注,内存类的单位为byte,关于时间的单位为秒)
官方详细说明(skylove对该参数的个人心得或补充说明)
正文
==============IP、ICMP===========
ip_local_port_range: (两个INTEGER)
定于TCP和UDP使用的本地端口范围,第一个数是开始,第二个数是最后端口号,默认值依赖于系统中可用的内存数:
> 128Mb 32768-61000
< 128Mb 1024-4999 or even less.
该值决定了活动连接的数量,也就是系统可以并发的连接数(做nat的时候,我将它设置为了1024 65530 工作正常)
ip_nonlocal_bind : BOOLEAN
默认值是0
如果您想让应用程式能够捆绑到一个不属於该系统的位址﹐就需要设定这裡。(当机器使
用非固定/动态的网络连接的时候,或者离线调试程序的时候,当线路断掉之后﹐该服务仍可啟动而且捆绑到特定的位址之上。)
ip_dynaddr : BOOLEAN
默认值是0
假如甚至为非0值,那么将支持动态地址.如果是设置为>1的值,将在动态地址改写的时候发一条内核消息。(如要用动态界面位址做 dail-on-demand ﹐那就设定它。一旦请求界面起来之
后﹐所有看不到回应的本地 TCP socket 都会重新捆绑(rebound)﹐以获得正确的位址。
假如遇到该网络界面的连线不工作﹐但重新再试一次却又可以的情形﹐设定这个可解决这
个问题。)
icmp_echo_ignore_all : BOOLEAN
icmp_echo_ignore_broadcasts : BOOLEAN
默认值是0
如果任何一个设置为true(>0)则系统将忽略所有发送给自己的ICMP ECHO请求或那些广播地址的请求。(现在网络上很多病毒/木马自动发起感染攻击是先用icmp的echo方式判断对方是否存活,因此开启该值,会降低一些被骚扰的可能性。但由于禁止了icmp,就无法ping到该机器了,因此网络管理员也没有办法判断机器是否存活了,所以可以考虑用netfilter/iptables来完成该工作会更有所选择针对性.icmp_echo_ignore_all 是禁止所有的icmp包,而icmp_echo_ignore_broadcasts是禁止了所有的广播包)
icmp_ratelimit : INTEGER
默认值是100 Jiffie
限制发向特定目标的匹配icmp_ratemask的ICMP数据报的最大速率。0表示没有任何限制,否则表示jiffies数据单位中允许发送的个数。(如果在icmp_ratemask进行相应的设置Echo Request的标志位掩码设置为1,那么就可以很容易地做到ping回应的速度限制了)
icmp_ratemask : INTEGER
在这里匹配的ICMP被icmp_ratelimit参数限制速率.
匹配的标志位: IHGFEDCBA9876543210
默认的掩码值: 0000001100000011000 (6168)
关于标志位的设置,可参考 源程序目录/include/linux/icmp.h
0 Echo Reply
3 Destination Unreachable *
4 Source Quench *
5 Redirect
8 Echo Request
B Time Exceeded *
C Parameter Problem *
D Timestamp Request
E Timestamp Reply
F Info Request
G Info Reply
H Address Mask Request
I Address Mask Reply
* 号的被默认限速(见上表mask)
icmp_ignore_bogus_error_responses : BOOLEAN
默认值是0
某些路由器违背RFC1122标准,其对广播帧发送伪造的响应来应答。这种违背行为通常会被以告警的方式记录在系统日志中。如果该选项设置为True,内核不会记录这种警告信息。(我个人而言推荐设置为1)
Jiffie: 内核使用的内部时间单位,在i386系统上大小为1/100s,在Alpha中为1/1024S。在/usr/include/asm/param.h中的HZ定义有特定系统的值。
今天和人在cu讨论技术问题,那位斑竹做了一个针对domain 进行控制的netfilter/iptables 模块。这个最早是由 HTTP://bbs.chinaunix.net/viewthread.php?tid=789648&extra=page%3D1 这个话题而引发的,由于string对domain的匹配实施中,发现www.chinaunix.net 这样的domain没有办法成功匹配到!? 而chinaunix则是可以的。。。那么显然问题就出在了 dns 请求 报文上了, 我ssh 上一台linux-box 的 dns server,然后
tcpdump -I 内网网卡 dst host 该机ip and src host 我的内网ip and udp port 53
接着,就进行了测试, 最后发现 dns 请求的命令是
(字段1长度)字段1(字段2长度)字段2(字段3长度)字段3
这样的格式来发送的,具体的例如
AAA.BBBB.COM
3 4 3
实际发送中的数据是
03AAA04BBB03COM (这里我为了方便分析,就没有把字符换成ASCII码)
在和cu的linux斑竹 platinum 的讨论中提到,他采用的比较方法是"后对齐"比较,用过bind或者熟悉dns的人都晓得,domain本身就是后对齐的一种表现形式,用后对齐来匹配实在是最适合的。。。。可惜我一开始竟然没想到,又被提点了。
好久没做,这次重新上手,折腾惨了,以前的linux版本我有做成一个全自动的install包,而solaris的没有做,结果这次装竟然用了超过2个小时,无限汗ing。。
1。下载gcc,autoconf,automake这些必要的dd,我的bind用的是9.2.4的;
2。用--prefix=/usr/local --disable-ipv6 参数编译bind。
3。建立一个组named,然后建立一个named useradd -c "BIND DNS" -d /var/named -g named -s /bin/false named
4。建立/ar/named目录(我的是一个分区)
5。目录里的结构大致如下,懒得打了。。。。
./conf./conf/named.root
./conf/named.127.0.0
./conf/named.local
./conf/secondaries
./conf/cwnu2ip.conf
./conf/ip2cwnu.conf
./etc./etc/syslog.conf
./etc/netconfig
./etc/nsswitch.conf
./etc/resolv.conf
./etc/TIMEZONE
./etc/named.conf
./etc/rndc.conf
./etc/rndc.key
./usr./usr/local
./usr/local/sbin
./usr/local/sbin/named
./usr/local/sbin/named-checkconf
./usr/local/sbin/named-checkzone
./usr/local/sbin/dnssec-keygen
./usr/local/sbin/dnssec-makekeyset
./usr/local/sbin/dnssec-signkey
./usr/local/sbin/dnssec-signzone
./usr/local/sbin/lwresd
./usr/local/sbin/rndc
./usr/local/sbin/rndc-confgen
./usr/local/bin
./usr/local/bin/dig
./usr/local/bin/nslookup
./usr/local/bin/host
./usr/local/bin/isc-config.sh
./usr/local/bin/nsupdate
./usr/local/etc
./usr/local/etc/named.conf
./usr/local/etc/rndc.conf
./usr/local/etc/rndc.key
./usr/local/conf
./usr/local/lib
./usr/local/bind
./usr/lib
./usr/lib/libnsl.so.1
./usr/lib/libsocket.so.1
./usr/lib/libc.so.1
./usr/lib/libdl.so.1
./usr/lib/libmp.so.2
./usr/lib/ld.so.1
./usr/lib/ld.so
./usr/share./usr/share/lib
./usr/share/lib/zoneinfo
./usr/share/lib/zoneinfo/US
./usr/share/lib/zoneinfo/US/Central
./usr/share/lib/zoneinfo/PRC
./usr/share/lib/zoneinfo/PRC/PRC
./usr/platform./usr/platform/SUNW,Ultra-1
./usr/platform/SUNW,Ultra-1/lib
./usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1
./var
./var/log
./var/log/all.log
./var/run
./var/run/named.pid
./var/dns
./opt./dev
./dev/tcp
./dev/udp
./dev/log
./dev/null
./dev/zero
./dev/conslog
./dev/syscon
./named.run
./named.start
其中/usr/local/sbin 和/usr/local/bin是将原来的目录的copy过来的/usr/local/lib下的是用ldd /usr/local/sbin/named 找到的
dev下的是用如下命令生成
mknod tcp c 11 42
mknod udp c 11 41
mknod log c 21 5
mknod null c 13 2
mknod zero c 13 12
chgrp sys null zero
mknod conslog c 21 0
mknod syscon c 0 0
chmod 620 syscon
chgrp tty syscon
chgrp sys conslog
usr/share/lib/zoneinfo/ 下的则是将/usr/share/lib/zoneinfo/下的US和PRC抓过来的。
特别注意的是rndc的时候用到的配置文件依然是真实的/usr/local/etc下的,所以需要作个软连接过去
权限设置大致如下
drwxr-x--- 3 root named 512 Oct 14 11:31 conf
drwxr-x--- 2 root named 512 Oct 14 10:04 dev
drwxr-x--- 2 root named 512 Oct 14 11:18 etc
-rw-rw-r-- 1 named named 0 Oct 14 11:48 named.run
-rwx------ 1 root other 626 Oct 14 11:43 named.start
drwxr-x--- 2 root named 512 Oct 14 09:56 opt
drwxr-x--- 6 root named 512 Oct 14 10:02 usr
drwx--x--x 5 root other 512 Oct 14 09:56 var
用 /var/named/usr/local/sbin/named -t /var/named -u named -c /etc/named.conf 启动,正常~~~~~~~~~~~
过几天我做个tar.gz的全自动安装包吧。。。懒得打字了,睡觉咯~~~~~
最新评论