DIY编程器网
标题:
网络层访问权限控制技术 ACL详解(二) ACL基本配置
[打印本页]
作者:
admin
时间:
2014-10-13 17:10
标题:
网络层访问权限控制技术 ACL详解(二) ACL基本配置
ACL
配置技术详解
“说那么多废话做什么,赶快开始进行配置吧。”,
A
公司的网管说。呵呵,并不是我想说那么多废话,因为理解这些基础的概念与简单的原理对后续的配置和排错都是相当有用的。说说看,你的第一个需求是什么。
“做为一个网管,我不期望普通用户能
telnet
到网络设备”――
ACL
基础
“补充一点,要求能够从我现在的机器
(
研发
VLAN
的
10.1.6.66)
上
telnet
到网络设备上去。”。
hamm
,是个不错的主意,谁都不希望有人在自己的花园中撤野。让我们分析一下,在
A
公司的网络中,除出口路由器外,其它所有的网络设备段的是放在
Vlan1
中,那个我只需要在到
VLAN 1
的路由器接口上配置只允许源地址为
10.1.6.66
的包通过,其它的包通通过滤掉。这中只管源
IP
地址的
ACL
就叫做
标准
IP ACL
:
我们在
SWA
上进行如下的配置:
access-list 1 permit host 10.1.6.66
access-list 1 deny any
int vlan 1
ip access-group 1 out
这几条命令中的相应关键字的意义如下:
access-list
:
配置均
ACL
的关键字,所有的
ACL
均使用这个命令进行配置。
access-list
后面的
1
:
ACL
号,
ACL
号相同的所有
ACL
形成一个组。在判断一个包时,使用同一组中的条目从上到下逐一进行判断,一遇到满足的条目就终止对该包的判断。
1-99
为标准的
IP ACL
号,标准
IP ACL
由于只读取
IP
包头的源地址部分,消耗资源少。
permit/deny
:
操作。
Permit
是允许通过,
deny
是丢弃包。
host 10.1.6.66/any
:
匹配条件,等同于
10.1.6.66 0.0.0.0
。刚才说过,标准的
ACL
只限制源地址。
Host 10.1.6.66(10.1.6.66 0.0.0.0)
的意思是只匹配源地址为
10.1.6.66
的包。
0.0.0.0
是
wildcards
,某位的
wildcards
为
0
表示
IP
地址的对应位必须符合,为
1
表示
IP
地址的对应位不管是什么都行。简单点说,就是
255.255.255.255
减去子网掩码后的值,
0.0.0.0
的
wildcards
就是意味着
IP
地址必须符合
10.1.6.66
,可以简称为
host 10.1.6.66
。
any
表示匹配所有地址。
注意:
IOS
中的
ACL
均使用
wildcards
,并且会用
wildcards
对
IP
地址进行严格的对齐,如你输入一条
access-list 1 permit 10.1.1.129 0.0.0.31
,在你
show access-list
看时,会变成
access-list 1 permit 10.1.1.128 0.0.0.31
,
PIXOS
中的
ACL
均使用
subnet masks
,并且不会进行对齐操作。更为详细的关于
IP V4
地址的资料可以参见拙著
《
IP v4
基础知识》
http://www.ultratechnology.net/showarticle.php?s=&articleid=60
一文
int vlan1///ip access-group 1 out
:
这两句将
access-list 1
应用到
vlan1
接口的
out
方向。其中
1
是
ACL
号,和相应的
ACL
进行关联。
Out
是对路由器该接口上哪个方向的包进行过滤,可以有
in
和
out
两种选择。
注意:这里的
in/out
都是站在路由器或三层模块(以后简称
R
)上看的,
in
表示从该接口进入
R
的包,
out
表示从该接口出去的包。
好了,这就是一个最基本的
ACL
的配置方法。什么,你说普通用户还能
telnet
到
RTA
?那你在
int vlan3
上现加一个
ip access-group 1 out
吧。
Hammmm
,等等,你这样加上去普通用户就访问不了
internet
了。让我们把刚才的
ACL
去掉,重新写一个。
回忆一下,我们的目的是除了
10.1.6.66
能够进行
telnet
操作外,其它用户都不允许进行
telnet
操作。刚才我们说过,标准的
IP ACL
只能控制源
IP
地址,不能控制到端口。要控制到第四层的端口,就需要使用到:
扩展的
IP ACL
的配置
先看看配置实例吧。在
SWA
上进行如下配置:
int vlan 1
no ip access-group 1 out
exit
no access-list 1
access-list 101 permit tcp host 10.1.6.66 any eq telnet
access-list 101 deny tcp any any eq telnet
int vlan 1
ip access-group 101 out
int vlan 3
ip access-group 101 out
你应该注意到到这里的
ACL
有一些变化了,现在对变化的部分做一些说明:
access-list 101
:
注意这里的
101
,和刚才的标准
ACL
中的
1
一样,
101
是
ACL
号,表示这是一个扩展的
IP ACL
。扩展的
IP ACL
号范围是
100-199
,扩展的
IP ACL
可以控制源
IP
、目的
IP
、源端口、目的端口等,能实现相当精细的控制,扩展
ACL
不仅读取
IP
包头的源地址
/
目的地址,还要读取第四层包头中的源端口和目的端口,的
IP
在没有硬件
ACL
加速情况下,会消耗大量的
CPU
资源。
int vlan 1///no ip access-group 1 out///exit///no access-list 1
:
取消
access-list 1
,对于非命名的
ACL
,可以只需要这一句就可以全部取消。
注意,在取消或修改一个
ACL
前,必须先在它所应用的接口上先把应用给
no
掉,否则会导致相当严重的后果。
tcp host 10.1.6.66 any eq telnet
:匹配条件。完整格式为:
协议
源地址
源
wildcards [
关系
] [
源端口
]
目的地址
目的
wildcards [
关系
] [
目的端口
]
。
其中协议可以是
IP
、
TCP
、
UDP
、
EIGRP
等,
[]
内为可选字段。仅在协议为
tcp/udp
等具备端口号的协议才有用。关系可以是
eq(
等于
)
、
neq
(不等于)、
lt(
大于
)
、
range
(范围)等。端口一般为数字的
1-65535
,对于周知端口,如
23(
服务名为
telnet)
等可以用服务名代替。源端口和目的端口不定义时表示所有端口。
把这个
ACL
应用上去后,用户们开始打电话来骂娘了,因为他们都访问不了
Internet
了,是哪里出了问题了呢?
注意:所有的
ACL
,缺省情况下,从安全角度考虑,最后都会隐含一句
deny any(
标准
ACL)
或
deny ip any any
(扩展
IP ACL
)。所以在不了解业务会使用到哪些端口的情况下,最好在
ACL
的最后加上一句
permit ip any any
,在这里就是
access-list 101 permit ip any any
。
现在用户倒是能够访问
Internet
了,但我们的可怜的网管却发现普通用户还是能够
telnet
到他的
SWA
上面,因为
SWA
上面有很多个网络接口,而且使用扩展的
ACL
会消耗很多的资源。有什么简单的办法能够控制用户对网络设备的
Telnet
访问,而又不消耗太多的资源呢?这就需要使用到:
对网络设备自身的访问如何进行控制的技术
让我们先把刚才配置的
ACL
都取掉
(
具体配置略,不然后读者会以为我在骗稿费了。
)
,再在每台网络设备上均进行如下配置:
access-list 1 permit host 10.1.6.66
line vty 0 4(
部分设备是
15)
access-class 1 in
这样就行了,
telnet
都是访问的设备上的
line vty
,在
line vty
下面使用
access-class
与
ACL
组进行关联,
in
关键字表示控制进入的连接。
就这么简单?
wk
,你丫是不是在玩我们,为什么还要绕一大圈?臭鸡蛋和烂西红柿开始在
70
的脑袋上方狂飞。
(5555555
,偶也只是想向大家把
ACL
的基础知识讲的明白一些的嘛
)
。经过刚才的配置,我们可以理出一个简单的
ACL
配置步骤了:
u
分析需求,找清楚需求中要保护什么或控制什么;为方便配置,最好能以表格形式列出。在本文的后面会举例的。
u
分析符合条件的数据流的路径,寻找一个最适合进行控制的位置;
u
书写
ACL
,并将
ACL
应用到接口上;
u
测试并修改
ACL
。
当
A
公司的领导知道在网管能够控制普通用户对网络设备的访问后,我们的可怜的网管就收到了很多看起来很难的要求。领导要求网管:
欢迎光临 DIY编程器网 (http://diybcq.com/)
Powered by Discuz! X3.2