ACL技术详解.docx
《ACL技术详解.docx》由会员分享,可在线阅读,更多相关《ACL技术详解.docx(16页珍藏版)》请在冰豆网上搜索。
ACL技术详解
网络层访问权限控制技术ACL详解(下)
ZDNET网络频道时间:
2008-05-29作者:
巧巧读书|巧巧读书
本文关键词:
访问控制列表acl
进一步完善对服务器数据的保护――acl执行顺序再探讨
在服务器网段中的数据库服务器中存放有大量的市场信息,市场部门的人员不希望研发部门访问到数据库服务器,经过协商,同意研发部门的领导的机器(IP地址为10.1.6.33)可以访问到数据库服务器。
这样,我们的服务器网段的的访问权限部分如下表所示:
协议源地址源端口目的地址目的端口操作
TCP10.1/16所有10.1.2.20/3280允许访问
TCP10.1/16所有10.1.2.22/3221允许访问
TCP10.1/16所有10.1.2.21/321521允许访问
TCP10.1.6/24所有10.1.2.21/321521禁止访问
TCP10.1.6.33/32所有10.1.2.21/321521允许访问
IP10.1/16N/A所有N/A禁止访问
于是,网管就在server-protect后面顺序加了两条语句进去,整个acl变成了如下形式:
ipaccess-listextendserver-protect
permittcp10.1.0.00.0.255.255host10.1.2.20eqwww
permittcp10.1.0.00.0.255.255host10.1.2.21eq1521
permittcp10.1.0.00.0.255.255host10.1.2.22eqftp
denytcp10.1.6.00.0.0.255host10.1.2.21eq1521
permittcphost10.1.6.33host10.1.2.21eq1521
做完之后发现根本没起到应有的作用,研发部门的所有机器还是可以访问到数据库服务器。
这是为什么呢?
前面我们提到过,acl的执行顺序是从上往下执行,一个包只要遇到一条匹配的acl语句后就会停止后续语句的执行,在我们的这个acl中,因为前面已经有了一条permittcp10.1.0.00.0.255.255host10.1.2.21eq1521语句。
内部网上所有访问10.1.2.21的1521端口的在这儿就全部通过了,跟本不会到后面两句去比较。
所以导致达不到我们的目的。
应该把server-protect这个acl按如下形式进行修改才能满足我们的要求:
ipaccess-listextendserver-protect
permittcphost10.1.6.33host10.1.2.21eq1521
denytcp10.1.6.00.0.0.255host10.1.2.21eq1521
permittcp10.1.0.00.0.255.255host10.1.2.21eq1521
permittcp10.1.0.00.0.255.255host10.1.2.20eqwww
permittcp10.1.0.00.0.255.255host10.1.2.22eqftp
这个例子告诉我们在写acl时,一定要遵循最为精确匹配的acl语句一定要写在最前面的原则,只有这样才能保证不会出现无用的acl语句。
基于时间的acl
在保证了服务器的数据安全性后,领导又准备对内部员工上网进行控制。
要求在上班时间内(9:
00-18:
00)禁止内部员工浏览internet,禁止使用QQ、MSN。
而且在2003年6月1号到2号的所有时间内都不允许进行上述操作。
但在任何时间都可以允许以其它方式访问Internet。
天哪,这可叫人怎么活呀,但领导既然这样安排,也只好按指示做了。
首先,让我们来分析一下这个需求,浏览internet现在基本上都是使用http或https进行访问,标准端口是TCP/80端口和TCP/443,MSN使用TCP/1863端口,QQ登录会使用到TCP/UDP8000这两个端口,还有可能使用到udp/4000进行通讯。
而且这些软件都能支持代理服务器,目前的代理服务器主要布署在TCP8080、TCP3128(HTTP代理)和TCP1080(socks)这三个端口上。
这个需求如下表所示:
应用协议源地址源端口目的地址目的端口操作
IETCP10.1/16所有所有80限制访问
IETCP10.1/16所有所有443限制访问
MSNTCP10.1/16所有所有1863限制访问
QQTCP10.1/16所有所有8000限制访问
QQUDP10.1/16所有所有8000限制访问
QQUDP10.1/16所有所有4000限制访问
HTTP代理TCP10.1/16所有所有8080限制访问
HTTP代理TCP10.1/16所有所有3128限制访问
SocksTCP10.1/16所有所有1080限制访问
AllotherIP10.1/16N/A所有N/A允许访问
网络层访问权限控制技术ACL详解(3)
ZDNET网络频道时间:
2008-05-29作者:
巧巧读书|巧巧读书
本文关键词:
访问控制列表acl
基于时间的acl
在保证了服务器的数据安全性后,领导又准备对内部员工上网进行控制。
要求在上班时间内(9:
00-18:
00)禁止内部员工浏览internet,禁止使用QQ、MSN。
而且在2003年6月1号到2号的所有时间内都不允许进行上述操作。
但在任何时间都可以允许以其它方式访问Internet。
天哪,这可叫人怎么活呀,但领导既然这样安排,也只好按指示做了。
首先,让我们来分析一下这个需求,浏览internet现在基本上都是使用http或https进行访问,标准端口是TCP/80端口和TCP/443,MSN使用TCP/1863端口,QQ登录会使用到TCP/UDP8000这两个端口,还有可能使用到udp/4000进行通讯。
而且这些软件都能支持代理服务器,目前的代理服务器主要布署在TCP8080、TCP3128(HTTP代理)和TCP1080(socks)这三个端口上。
这个需求如下表所示:
然后,让我们看看acl应该在哪个位置配置比较好呢?
由于是对访问Internet进行控制,涉及到的是公司内部所有的网段,这们这次把acl就放到公司的Internet出口处。
在RTA上进行如下的配置,就能够满足领导的要求了:
time-rangeTR1
absolutestart00:
001June2003end00:
003June2003
periodicweekdaysstart9:
0018:
00
exit
ipaccess-listextendinternet_limit
denytcp10.1.0.00.0.255.255anyeq80time-rangeTR1
denytcp10.1.0.00.0.255.255anyeq443time-rangeTR1
denytcp10.1.0.00.0.255.255anyeq1863time-rangeTR1
denytcp10.1.0.00.0.255.255anyeq8000time-rangeTR1
denyudp10.1.0.00.0.255.255anyeq8000time-rangeTR1
denyudp10.1.0.00.0.255.255anyeq4000time-rangeTR1
denytcp10.1.0.00.0.255.255anyeq3128time-rangeTR1
denytcp10.1.0.00.0.255.255anyeq8080time-rangeTR1
denytcp10.1.0.00.0.255.255anyeq1080time-rangeTR1
permitipanyany
ints0/0
ipaccess-groupinternet_limitout
或intfa0/0
ipaccess-groupinternet_limitin
或者将acl配置在SWA上,并
intvlan3
ipaccess-groupinternet_limitout
呵呵,现在让我们来看看在基于时间的访问列表中都有哪些新内容吧:
time-rangeTR1:
定义一个新的时间范围,其中的TR1是为该时间范围取的一个名字。
absolute:
为绝对时间。
只使用一次。
可以定义为1993-2035年内的任意一个时点。
具体的用法请使用?
命令查看。
Periodic:
为周期性重复使用的时间范围的定义。
完整格式为periodic日期关键字开始时间结束时间。
其中日期关键字的定义如下所示:
Monday星期一
Tuesday星期二
Wednesday星期三
Thursday星期四
Friday星期五
Saturday星期六
Sunday星期天
daily每天
weekdays周一至五
weekend周末
access-list101denyip10.1.0.00.0.255.255anytime-rangeTR1:
注意这一句最后的time-rangeTR1,使这条acl语句与time-rangeTR1相关联,表明这条语句在time-rangeTR1所定义的时间范围内才起作用。
注意:
给出三种配置位置是帮助大家深刻理解关于in/out的区别的。
acl是对从一个接上流入(in)或流出(out)路由器的包进行过滤的。
网管发问了,“你是怎么找到这些应用的所使用的端口的?
”。
呵呵,在如下文件中可以找到大多数应用的端口的定义:
Win9x:
%windir%services
WinNT/2000/XP:
%windir%system32driversetcservices
Linux:
/etc/services
对于在services文件中找不到端口的应用,可以在运行程序的前后,运行netstat–ap来找出应用所使用的端口号。
单向访问控制
使用IPacl实现单向访问控制
A公司准备实行薪资的不透明化管理,由于目前的薪资收入数据还放在财务部门的Vlan中,所以公司不希望市场和研发部门能访问到财务部Vlan中的数据,另一方面,财务部门做为公司的核心管理部门,又希望能访问到市场和研发部门Vlan内的数据。
我们的网管在接到这个需求后就在SWA上做了如下的配置:
ipaccess-listextendfi-access-limit
denyipany10.1.4.00.0.0.255
permitipanyany
intvlan5
ipaccess-groupfi-access-limitin
intvlan6
ipaccess-groupfi-access-limitin
配置做完后,测试了一下,市场和研发部门确实访问不到财务部了,刚准备休息一下,财务部打电话过来说为访问不到市场与研发部门的数据了。
这是怎么回事呢?
让我们回忆一下,在两台主机A与B之间要实现通讯,需要些什么条件呢?
答案是既需要A能向B发包,也需要B能向A发包,任何一个方向的包被阻断,通讯都不能成功,在我们的例子中就存在这样的问题,财务部访问市场或研发部门时,包到到市场或研发部门的主机,由这些主机返回的包在到达路由器SWA时,由于普通的acl均不具备检测会话状态的能力,就被denyipany10.1.4.00.0.0.255这条acl给阻断了,所以访问不能成功。
要想实现真正意义上的单向访问控制应该怎么办呢?
我们希望在财务部门访问市场和研发部门时,能在市场和研发部门的acl中临时生成一个反向的acl条目,这样就能实现单向访问了。
这里就需要使用到反向acl技术。
我们可以按照如下配置实例就可以满足刚才的那个单向访问需求:
ipaccess-listextendfi-main
permittcpany10.1.0.00.0.255.255reflectr-maintimeout120
permitudpany10.1.0.00.0.255.255reflectr-maintimeout200
permiticmpany10.1.0.00.0.255.255reflectr-maintimeout10
permitipanyany
intvlan4
ipaccess-groupfi-mainin
ipaccess-listextendfi-access-limit
evaluater-main
denyipany10.1.4.00.0.0.255
permitipanyany
intvlan5
ipaccess-groupfi-access-limitin
intvlan6
ipaccess-groupfi-access-limitin
现在对反向acl新增加的内容一一解释如下:
新增了一个acl(fi-main)并应用在具备访问权限的接口下(财务部所在的vlan4)的in方向,使用该acl中具备reflect关键字的acl条目来捕捉建立反向acl条目所需要的信息。
我们将该acl称为主acl。
reflectr-maintimeoutxxx:
其中的reflect关键字表明该条目可以用于捕捉建立反向的acl条目所需要的信息。
r-main是reflect组的名字,具备相同reflect组名字的所有的acl条目为一个reflect组。
timeoutxxx表明由这条acl条目所建立起来的反向acl条目在没有流量的情况下,多长时间后会消失(缺省值为300秒),单位为秒。
evaluater-main:
我们注意到在fi-access-limit(我们把它称为反acl)增加了这样一句,这一句的意思是有符合r-main这个reflect组中所定义的acl条目的流量发生时,在evaluate语句所在的当前位置动态生成一条反向的permit语句。
反向acl的局限性:
必须使用命名的acl,其实这不能叫局限性,应该算注意事项吧;
对多通道应用程序如h323之类无法提供支持。
好了,到现在我们从IPacl的基础知识讲起,中间讲述了标准的IPacl、扩展的IPacl、基于名字的acl、基于时间的acl、反向acl等诸多内容,这些acl在ios的基本IP特性集中都能提供支持,在一般的企业网或校园网中也应该完全够用了。
如果各位看官还需要了解更加深入的知识,如CBAC之类能够为多通道应用程序提供良好支持的配置技术的,请参考《CiscoIOSSecurityConfigurationGuide,Part3:
TrafficFilteringandFirewalls》。
“站住!
”,70正想开溜,只听那网管一声大吼,“有什么办法能知道acl都过滤了从哪儿来,到哪儿去的流量?
?
”。
呵呵,刚才忘记说了,你只需要在需要记录的acl条目的最后加一个log关键字,这样在有符合该acl条目数据包时,就会产生一条日志信息发到你的设备所定义的日志服务器上去。
谢谢大家的捧场,本文到此为止。
网络层访问权限控制技术ACL详解
(2)
就这么简单?
wk,你丫是不是在玩我们,为什么还要绕一大圈?
臭鸡蛋和烂西红柿开始在70的脑袋上方狂飞。
(5555555,偶也只是想向大家把acl的基础知识讲的明白一些的嘛)。
经过刚才的配置,我们可以理出一个简单的acl配置步骤了:
分析需求,找清楚需求中要保护什么或控制什么;为方便配置,最好能以表格形式列出。
在本文的后面会举例的。
分析符合条件的数据流的路径,寻找一个最适合进行控制的位置;
书写acl,并将acl应用到接口上;
测试并修改acl。
当A公司的领导知道在网管能够控制普通用户对网络设备的访问后,我们的可怜的网管就收到了很多看起来很难的要求。
领导要求网管:
acl执行顺序
“使用acl技术对网络访问进行精细化控制”――acl进阶配置
命名的IPacl
由于最近服务器网段的机器老是被人用telnet、rsh等手段进行攻击,我们只对员工开放web服务器(10.1.2.20)所提供的http、FTP服务器(10.1.2.22)提供的FTP服务和数据库服务器(10.1.2.21:
1521)。
好吧,我们着手进行配置,可是我们的acl刚写到一半,发现前面写的几句好像有问题,一个no命令输进去,整个acl都没了,唉,一切都得重来,难道就没有一个变通的办法么?
有,这里我就需要用到:
命名的IPacl提供的两个主要优点是:
l解决acl号码不足的问题。
l可以自由的删除acl中的一条语句,而不必删除整个acl。
命名的acl的主要不足之处在于无法实现在任意位置加入新的acl条目。
比如上面那个例子中,我们进行了如下的配置:
ipaccess-listextendserver-protect
permittcp10.1.0.00.0.255.255host10.1.2.20eqwww
permittcp10.0.0.00.0.255.255host10.1.2.21eq1521
permittcp10.1.0.00.0.255.255host10.1.2.22eqftp
配置到这里,我们发现permittcp10.0.0.00.0.255.255host10.1.2.21eq1521这句配错了,我们得把它给取掉并重新配置,OK,我样可以简单的进行如下配置:
ipaccess-listextendserver-protect
nopermittcp10.0.0.00.0.255.255host10.1.2.21eq1521
permittcp10.1.0.00.0.0.255host10.1.2.21eq1521
exit
intvlan2
ipaccess-groupserver-protect
就可以了。
现在对命名的IPaccess-list的配置方法解释如下:
ipaccess-listextendserver-access-limit:
ipaccess-list相当于使用编号的access-list中的access-list段。
extend表明是扩展的acl(对应地,standard表示标准的acl)。
server-access-limit是access-list的名字,相当于基于编号的acl中的编号字段。
permittcp10.1.6.00.0.0.255host10.1.2.21eq1521:
这一段和使用编号的access-list的后半段的意义相同,都由操作和条件两段组成。
其实基于名字的IPacl还有一个很好的优点就是可以为每个acl取一个有意义的名字,便于日后的管理与维护。
所以Ultra工作室强烈建议各位看官在实际工作中均使用命名的acl。
进一步完善对服务器数据的保护――acl执行顺序再探讨
在服务器网段中的数据库服务器中存放有大量的市场信息,市场部门的人员不希望研发部门访问到数据库服务器,经过协商,同意研发部门的领导的机器(IP地址为10.1.6.33)可以访问到数据库服务器。
这样,我们的服务器网段的的访问权限部分如下表所示:
做完之后发现根本没起到应有的作用,研发部门的所有机器还是可以访问到数据库服务器。
这是为什么呢?
前面我们提到过,acl的执行顺序是从上往下执行,一个包只要遇到一条匹配的acl语句后就会停止后续语句的执行,在我们的这个acl中,因为前面已经有了一条permittcp10.1.0.00.0.255.255host10.1.2.21eq1521语句。
内部网上所有访问10.1.2.21的1521端口的在这儿就全部通过了,跟本不会到后面两句去比较。
所以导致达不到我们的目的。
应该把server-protect这个acl按如下形式进行修改才能满足我们的要求:
ipaccess-listextendserver-protect
ermittcphost10.1.6.33host10.1.2.21eq1521
denytcp10.1.6.00.0.0.255host10.1.2.21eq1521
permittcp10.1.0.00.0.255.255host10.1.2.21eq1521
permittcp10.1.0.00.0.255.255host10.1.2.20eqwww
permittcp10.1.0.00.0.255.255host10.1.2.22eqftp
这个例子告诉我们在写acl时,一定要遵循最为精确匹配的acl语句一定要写在最前面的原则,只有这样才能保证不会出现无用的acl语句。
网络层访问权限控制技术ACL详解
(1)
ZDNET网络频道时间:
2008-05-29作者:
巧巧读书|巧巧读书
本文关键词:
访问控制列表acl
技术从来都是一把双刃剑,网络应用与互联网的普及在大幅提高企业的生产经营效率的同时,也带来了诸如数据的安全性,员工利用互联网做与工作不相干事等负面影响。
如何将一个网络有效的管理起来,尽可能的降低网络所带来的负面影响就成了摆在网络管理员面前的一个重要课题。
A公司的某位可怜的网管目前就面临了一堆这样的问题。
A公司建设了一个企业网,并通过一台路由器接入到互联网。
在网络核心使用一台基于IOS的多层交换机,所有的二层交换机也为可管理的基于IOS的交换机,在公司内部使用了VLAN技术,按照功能的不同分为了6个VLAN。
分别是网络设备与网管(VLAN1,10.1.1.0/24)、内部服务器(VLAN2)、Internet连接(VLAN3)、财务部(VLAN4)、市场部(VLAN5)、研发部门(VLAN6),出口路由器上Fa0/0接公司内部网,通过s0/0连接到Internet。
每个网段的三层设备(也就是客户机上的缺省网关)地址都从高位向下分配,所有的其它节点地址均从低位向上分配。
该网络的拓朴如下图所示:
自从网络建成后麻烦就一直没断过,一会儿有人试图登录网络设备要捣乱;一会儿领导又在抱怨说互联网开通后,员工成天就知道泡网;一会儿财务的人又说研发部门的员工看了不该看的数据。
这些抱怨都找这位可怜的网管,搞得他头都大了。
那有什么办法能够解决这些问题呢?
答案就是使用网络层的访问限制控制技术――访问控制列表(下文简称acl)。
那么,什么是acl呢?
acl是种什么样的技术,它能做什么,又存在一些什么样的局限性呢?
acl的基本原理、功能与局限性
网络中常说的acl是CiscoIOS所提供的一种访问控制技术,初期仅在路由器上支持,近些年来已经扩展到三层交换机,部分最新的二层交换机如2950之类也开始提供acl的支持。
只不过支持的特性不是