大家都知道通过在路由器或交换机上设置访问控制列表ACL ,可以在一定程度上起到提高安全,防范黑客与病毒攻击的效果,笔者所在公司也一直在使用这个方法。
然而,笔者却在实际工作中发现了一个影响安全的问题,如果对路由器的默认设置不注意的话,很可能会让强大的ACL列表失效,就好比二战的马其诺防线一样,病毒与黑客可以非常轻松地绕道攻击内网计算机
安全分析:
有过路由器配置经验的读者应该知道网络管理员经常通过在路由器或交换机上设置访问控制列表来完成防范病毒和黑客的作用。Cisco出品的路由器或交换机的访问控制列表都默认在结尾添加了“DENY ANY ANY”语句,这句话的意思是将所有不符合访问控制列表(ACL)语句设定规则的数据包丢弃。
最近笔者所在公司添置了华为的2621系列路由器,一般情况下CISCO和华为设备的配置方法基本相同,所以笔者按照在Cisco路由器上的设置语句制定了ACL规则,并将这些规则输入到华为路由器上。
由于CISCO默认自动添加DENY ANY ANY语句,所以笔者也想当然的认为华为路由器也会默认将这个命令添加。然而,在配置后却发现所有ACL过滤规则都没有生效,该过滤的数据包仍然被路由器正常转发。
经过反复研究、查询资料,笔者发现原来华为公司的访问控制列表在结尾处添加的是“PERMIT ANY ANY”语句,这样对于不符合访问控制列表(ACL)语句设定规则的数据包将容许通过,这样造成了一个严重后果,那就是不符合ACL设定规则的数据包也将被路由器无条件转发而不是Cisco公司采用的丢弃处理,这造成了该过滤的数据包没有被过滤,网内安全岌岌可危。非法数据包绕过了网络管理员精心设置的防病毒“马其诺防线”,从而轻而易举的侵入了用户的内网。
解决措施:
如何解决这个问题呢?这个问题是因为华为路由器的默认设置造成的。我们可以在ACL的最后添加上“DENY ANY ANY”语句或将默认的ACL结尾语句设置为DENY ANY ANY.头一种方法仅仅对当前设置的ACL生效,以后设置新ACL时路由器还是默认容许所有数据包通过;而第二种方法则将修改路由器的默认值,将其修改成和CISCO设备一样的默认阻止所有数据包。
1、ACL规则直接添加法
在华为设备上设置完所有ACL语句后再使用“rule deny ip source any destination any”将没有符合规则的数据包实施丢弃处理。
2.修改默认设置法;在华为设备上使用“firewall default deny”,将默认设置从容许转发变为丢弃数据包。从而一劳百逸的解决默认漏洞问题。因此笔者推荐大家使用第二种方法解决这个默认设置的缺陷问题。
总结:

经过这次“马其诺”事件,我们可以发现即使是相同的配置命令,如果厂商不同最好事先查阅一下用户手册(特别注意默认设置),往往默认设置会造成很多不明不白的故障。发现问题以后也不要轻易怀疑设备硬件有问题,应该多从软件及配置命令入手查找问题所在。
一个小小的默认设置就将精心打造的防病毒体系完全突破,所以对于我们这些网络管理员来说每次设置后都应该仔细测试下网络状况,确保所实施的手段得以生效。
 
 
 
漫漫51长假,没有好的去处,只能每日上网消遣,某日逛到nbo灌水,见一帖曰:无法通过2514路由器上msn(出口为adsl线路,通过pppoe)吾心想,adsl---pppoe,那肯定就是mtu之问题。回帖告之:改pc之mtu。
过数日,又逛到nbo,又见这帖,后有人回曰:ip tcp adjust-mss 1452 后帖主又跟:问题解决。
吾纳闷之,后百思而得其解,so决定将自己所得写出来,分享给大家。

[背景知识]
mtu: maxitum transmission unit 最大传输单元
mss: maxitum segment size 最大分段大小(偶是直译,翻译的不好,不要打俺pp)
pppoe: ppp over ethernet(在以太网上承载ppp协议)

[分析过程]
先说说这mtu最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,让我们先仔细回忆一下ethernetii帧的结构dmac+smac+type+data+crc,由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64bytes,最大不能超过1518bytes,对于小于或者大于这个限制的以太网帧我们都可以视之为错误的数据帧,一般的以太网转发设备会丢弃这些数据帧。
(注:小于64bytes的数据帧一般是由于以太网冲突产生的“碎片”或者线路干扰或者坏的以太网接口产生的,对于大于1518bytes的数据帧我们一般把它叫做giant帧,这种一般是由于线路干扰或者坏的以太网口产生)
由于以太网ethernetii最大的数据帧是1518bytes这样,刨去以太网帧的帧头(dmac目的mac地址48bit=6bytes+smac源mac地址48bit=6bytes+type域2bytes)14bytes和帧尾crc校验部分4bytes(这个部门有时候大家也把它叫做fcs),那么剩下承载上层协议的地方也就是data域最大就只能有1500bytes这个值我们就把它称之为mtu。这个就是网络层协议非常关心的地方,因为网络层协议比如ip协议会根据这个值来决定是否把上层传下来的数据进行分片。就好比一个盒子没法装下一大块面包,我们需要把面包切成片,装在多个盒子里面一样的道理。

当两台远程pc互联的时候,它们的数据需要穿过很多的路由器和各种各样的网络媒介才能到达对端,网络中不同媒介的mtu各不相同,就好比一长段的水管,由不同粗细的水管组成(mtu不同 )通过这段水管最大水量就要由中间最细的水管决定。

对于网络层的上层协议而言(我们以tcp/ip协议族为例)它们对水管粗细不在意它们认为这个是网络层的事情。网络层ip协议会检查每个从上层协议下来的数据包的大小,并根据本机mtu的大小决定是否作“分片”处理。分片最大的坏处就是降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(就是传输层)的实现中往往会对此加以注意!有些高层因为某些原因就会要求我这个面包不能切片,我要完整地面包,所以会在ip数据包包头里面加上一个标签:df(d fragment)。这样当这个ip数据包在一大段网络(水管里面)传输的时候,如果遇到mtu小于ip数据包的情况,转发设备就会根据要求丢弃这个数据包。然后返回一个错误信息给发送者。这样往往会造成某些通讯上的问题,不过幸运的是大部分网络链路都是mtu1500或者大于1500。

对于udp协议而言,这个协议本身是无连接的协议,对数据包的到达顺序以及是否正确到达不甚关心,所以一般udp应用对分片没有特殊要求。

对于tcp协议而言就不一样了,这个协议是面向连接的协议,对于tcp协议而言它非常在意数据包的到达顺序以及是否传输中有错误发生。所以有些tcp应用对分片有要求---不能分片(df)。

花开两朵,各表一枝,说完mtu的故事我们该讲讲今天的第二个猪脚---pppoe
所谓pppoe就是在以太网上面跑ppp协议,有人奇怪了,ppp协议和ethernet不都是链路层协议吗?怎么一个链路层跑到另外一个链路层上面去了,难道升级成网络层协议了不成。其实这是个误区:就是某层协议只能承载更上一层协议。
为什么会产生这种奇怪的需求呢?这是因为随着宽带接入(这种宽带接入一般为cable modem或者xdsl或者以太网的接入)由于以太网缺乏认证计费机制而传统运营商是通过ppp协议来对拨号等接入服务进行认证计费的,所以就出了这么一个怪胎:pppoe。(有关pppoe的详细介绍参见v大以及本站其他成员的一些介绍文章,我就不啰里啰唆的了)

pppoe带来了好处,也带来了一些坏处,比如:二次封装耗费资源,降低了传输效能等等,这些坏处俺也不多说了,最大的坏处就是pppoe导致mtu变小了以太网的mtu是1500,再减去ppp的包头包尾的开销(8bytes),就变成1492。

如果两台主机之间的某段网络使用了pppoe那么就会导致某些不能分片的应用无法通讯。这个时候就需要我们调整一下主机的mtu,通过降低主机的mtu,这样我们就能够顺利地进行通讯了。当然对于tcp应用而言还有另外的解决方案。

马上请出今天第三位猪脚:mss。
mss最大传输大小的缩写,是tcp协议里面的一个概念。mss就是tcp数据包每次能够传输的最大数据分段。为了达到最佳的传输效能tcp协议在建立连接的时候通常要协商双方的mss值,这个值tcp协议在实现的时候往往用mtu值代替(需要减去ip数据包包头的大小20bytes和tcp数据段的包头20bytes)所以往往mss为1460。通讯双方会根据双方提供的mss值得最小值确定为这次连接的最大mss值。

介绍完这三位猪脚
我们回过头来看前言里面的那个问题,我们试想一下,如果我们在中间路由器上把每次tcp连接的最大mss进行调整,这样使得通过pppoe链路的最大mss值加上数据包头包尾不会超过pppoe的mtu大小1492,这样就不会造成无法通讯的问题,所以上面的问题可以通过ip tcp adjust-mss 1452来解决。

当然问题也可以通过修改pc机的mtu来解决。

[后记]
cisco在ios 12.2(4)t及以后的版本支持修改mss大小的特性

cisco的tcp adjust mss feature:

the tcp mss adjustment feature enables the c of the maximum segment size (mss) for transient packets that traverse a router, specifically tcp segments in the syn bit set, when point to point protocol over ethernet (pppoe) is being used in the network. pppoe truncates the ethernet maximum transmission unit (mtu) 1492, and if the effective mtu
on the hosts (pcs) is not changed, the router in between the host and the server can terminate the tcp sessions. the ip tcp adjust-mss command specifies the mss value on the intermediate router of the syn packets to avoid truncation.
俺太懒了就不翻译了。。自己慢慢看

[补充]
在对msn登录过程进行抓包分析的过程中msn是通过https进行认证的,
https报文给予安全的考虑会在ip报文头设置df为(就是不可分片位),而且在认证的过程中有最大包出现。
如果在网络中存在mtu小于两边主机的mtu的情况下,会导致这个数据包的被丢弃!
从而导致认证过程的失败,导致msn无法上线!

我们知道防火墙有四种类型:集成防火墙功能的路由器,集成防火墙功能的代理服务器,专用的软件防火墙和专用的软硬件结合的防火墙。Cisco的防火墙解决方案中包含了四种类型中的第一种和第四种,即:集成防火墙功能的路由器和专用的软硬件结合的防火墙。

我们知道防火墙有四种类型:集成防火墙功能的路由器,集成防火墙功能的代理服务器,专用的软件防火墙和专用的软硬件结合的防火墙。Cisco的防火墙解决方案中包含了四种类型中的第一种和第四种,即:集成防火墙功能的路由器和专用的软硬件结合的防火墙。

  一、 集成在路由器中的防火墙技术

  1、 路由器IOS标准设备中的ACL技术

  ACL即Access Control Lis t(访问控制列表),简称Access List(访问列表),它是后续所述的IOS Firewall Feature Set的基础,也是Cisco全线路由器统一界面的操作系统IOS(Internet Operation System,网间操作系统)标准配置的一部分。这就是说在购买了路由器后,ACL功能已经具备,不需要额外花钱去买。

  2、 IOS Firewall Feature Set(IOS防火墙软件包)

  IOS Firewall Feature Set是在ACL的基础上对安全控制的进一步提升,由名称可知,它是一套专门针对防火墙功能的附加软件包,可通过IOS升级获得,并且可以加载到多个Cisco路由器平台上。

  目前防火墙软件包适用的路由器平台包括Cisco 1600、1700、2500、2600和3600,均属中、低端系列。对很多倾向与使用"all-in-one solution"(一体化解决方案),力求简单化管理的中小企业用户来说,它能很大程度上满足需求。之所以不在高端设备上实施集成防火墙功能,这是为了避免影响大型网络的主干路由器的核心工作--数据转发。在这样的网络中,应当使用专用的防火墙设备。

  Cisco IOS防火墙特征:

  基于上下文的访问控制(CBAC)为先进应用程序提供基于应用程序的安全筛选并支持最新协议

  Java能防止下载动机不纯的小应用程序

  在现有功能基础上又添加了拒绝服务探测和预防功能,从而增加了保护

  在探测到可疑行为后可向中央管理控制台实时发送警报和系统记录错误信息

  TCP/UDP事务处理记录按源/目的地址和端口对跟踪用户访问

  配置和管理特性与现有管理应用程序密切配合

  二、 专用防火墙--PIX

  PIX(Private Internet eXchange)属于四类防火墙中的第四种--软硬件结合的防火墙,它的设计是为了满足高级别的安全需求,以较好的性能价格比提供严密的、强有力的安全防范。除了具备第四类防火墙的共同特性,并囊括了IOS Firewall Feature Set的应有功能。

  PIX成为Cisco在网络安全领域的旗舰产品已有一段历史了,它的软硬件结构也经历了较大的发展。现在的PIX有515和520两种型号(520系列容量大于515系列),从原来的仅支持两个10M以太网接口,到10/100M以太网、令牌环网和FDDI的多介质、多端口(最多4个)应用;其专用操作系统从v5.0开始提供对IPSec这一标准隧道技术的支持,使PIX能与更多的其它设备一起共同构筑起基于标准×××连接。

  Cisco的PIX Firewall能同时支持16,000多路TCP对话,并支持数万用户而不影响用户性能,在额定载荷下,PIX Firewall的运行速度为45Mbps,支持T3速度,这种速度比基于UNIX的防火墙快十倍。

  主要特性:

  保护方案基于适应性安全算法(ASA),能提供任何其它防火墙都不能提供的最高安全保护

  将获专利的“切入代理”特性能提供传统代理服务器无法匹敌的高性能

  安装简单,维护方便,因而降低了购置成本

  支持64路同时连接,企业发展后可扩充到16000路

  透明支持所有通用TCP/IP Internet服务,如万维网(WWW)文件传输协议(FTP)、Telnet、Archie、Gopher和rlogin

  支持多媒体数据类型,包括Progressive网络公司的Real Audio,Xing技术公司的Steamworks,White Pines公司腃USeeMe,Vocal Te公司的Internet Phone,VDOnet公司的VDOLive,07/12/4 资料整理_其他 Microsoft公司的NetShow和Uxtreme公司的Web Theater 2

  支持H323兼容的视频会议应用,包括07/12/4 资料整理_其他_02 Intel的Internet Video Phone和07/12/4 资料整理_其他 Microsoft的NetMeeting

  无需因安装而停止运行

  无需升级主机或路由器

  完全可以从未注册的内部主机访问外部Internet

  能与基于Cisco IOS的路由器互操作

  三、 两种防火墙技术的比较

  IOS FIREWALL FEATURE SET PIX FIREWALL

  网络规模 中小型网络,小于250节点的应用。 大型网络,可支持多于500用户的应用

  工作平台 路由器IOS操作系统 专用PIX工作平台

  性能 最高支持T1/E1(2M)线路 可支持多条T3/E3(45M)线路

  工作原理 基于数据包过滤,核心控制为CBAC 基于数据包过滤,核心控制为ASA

  配置方式 命令行或图形方式(通过ConfigMaker) 命令行方式或图形方式(通过Firewall Manager)

  应用的过滤 支持Java小程序过滤 支持Java小程序过滤

  身份认证 通过IOS命令,支持TACACS+、RADIUS服务器认证。 支持TACACS+、RADIUS集中认证

  虚拟专网(×××) 通过IOS软件升级可支持IPSec、L2F和GRE隧道技术,支持40或56位DES加密。 支持Private Link或IPSec隧道和加密技术

  网络地址翻译(NAT) 集成IOS Plus实现 支持

  冗余特性 通过路由器的冗余协议HSRP实现 支持热冗余

  自身安全 支持Denial-of-Service 支持Denial-of-Service

  代理服务 无,通过路由器的路由功能实现应用 切入的代理服务功能

  管理 通过路由器的管理工具,如Cisco Works 通过Firewall Manager实现管理

  审计功能 一定的跟踪和报警功能 状态化数据过滤,可通过Firewall Manager实现较好的额监控、报告功能。
 
防火墙作为实际存在的物理设备,其本身也起到路由的作用,所以在为用户安装防火墙时,就需要考虑如何改动其原有的网络拓扑结构或修改连接防火墙的路由表,以适应用户的实际需要,这样就增加了工作的复杂程度和难度。但如果防火墙采用了透明模式,即采用无IP方式运行,用户将不必重新设定和修改路由,防火墙就可以直接安装和放置到网络中使用,如交换机一样不需要设置IP地址。


R>透明模式的防火墙就好象是一台网桥(非透明的防火墙好象一台路由器),网络设备(包括主机、路由器、工作站等)和所有计算机的设置(包括IP地址和网关)无须改变,同时解析所有通过它的数据包,既增加了网络的安全性,又降低了用户管理的复杂程度。



而与透明模式在称呼上相似的透明代理,和传统代理一样,可以比包过滤更深层次地检查数据信息,比如FTP包的port命令等。同时它也是一个非常快的代理,从物理上分离了连接,这可以提供更复杂的协议需要,例如带动态端口分配的H.323,或者一个带有不同命令端口和数据端口的连接。这样的通信是包过滤所无法完成的。

防火墙使用透明代理技术,这些代理服务对用户也是透明的,用户意识不到防火墙的存在,便可完成内外网络的通讯。当内部用户需要使用透明代理访问外部资源时,用户不需要进行设置,代理服务器会建立透明的通道,让用户直接与外界通信,这样极大地方便了用户的使用。

一般使用代理服务器时,每个用户需要在客户端程序中指明要使用代理,自行设置Proxy参数(如在浏览器中有专门的设置来指明HTTP或FTP等的代理)。而透明代理服务,用户不需要任何设置就可以使用代理服务器,简化了网络的设置过程。

透明代理的原理如下:假设A为内部网络客户机,B为外部网络服务器,C为防火墙。当A对B有连接请求时,TCP连接请求被防火墙截取并加以监控。截取后当发现连接需要使用代理服务器时,A和C之间首先建立连接,然后防火墙建立相应的代理服务通道与目标B建立连接,由此通过代理服务器建立A 和目标地址B的数据传输途径。从用户的角度看,A和B的连接是直接的,而实际上A 是通过代理服务器C和B建立连接的。反之,当B对A有连接请求时原理相同。由于这些连接过程是自动的,不需要客户端手工配置代理服务器,甚至用户根本不知道代理服务器的存在,因而对用户来说是透明的。

代理服务器可以做到内外地址的转换,屏蔽内部网的细节,使非法分子无法探知内部结构。代理服务器提供特殊的筛选命令,可以禁止用户使用容易造成攻击的不安全的命令,从根本上抵御攻击。

防火墙使用透明代理技术,还可以使防火墙的服务端口无法探测到,也就无法对防火墙进行攻击,大大提高了防火墙的安全性与抗攻击性。透明代理避免了设置或使用中可能出现的错误,降低了防火墙使用时固有的安全风险和出错概率,方便用户使用。

因此,透明代理与透明模式都可以简化防火墙的设置,提高系统安全性。但两者之间也有本质的区别:工作于透明模式的防火墙使用了透明代理的技术,但透明代理并不是透明模式的全部,防火墙在非透明模式中也可以使用透明代理。值得注意的是,虽然国内市场上很多防火墙产品都可提供透明代理访问机制,但真正实现透明模式的却不多——有很多厂商都宣称自己的防火墙产品实现了透明模式,但在实际应用中,他们往往做不到这一点,而只是实现了透明代理。当然,市场上也有很多产品能真正提供透明模式,如Netscreen、东方龙马、清华紫光等防火墙产品。