基本原则:
1、按顺序执行,只要有一条满足,则不会继续查找
2、隐含拒绝,如果都不匹配,那么一定匹配最后的隐含拒绝条目,思科默认的
3、任何条件下只给用户能满足他们需求的最小权限
4、不要忘记把ACL应用到端口上
一、标准ACL
命令:access-list {1-99} {permit/deny} source-ip source-wildcard [log]
例:
access-list 1 penmit 192.168.2.0 0.0.0.255 允许192.168.2.0网段的访问
access-list 1 deny 192.168.1.0 0.0.0.255 拒绝192.168.1.0网段的访问
说明:
wildcard为反掩码,
host表示特定主机等同于192.168.2.3 0.0.0.0;
any表示所有的源或目标等同于0.0.0.0 255.255.255.255 ;
log表示有匹配时生成日志信息;
标准ACL一般用在离目的最近的地方
二、扩展ACL
命令:access-list {100-199} {permit/deny} protocol source-ip source-wildcard [operator port] destination-ip destination-wildcard [operator port] [established][log]
例:
access-list 101 permit tcp 192.168.2.0 0.0.0.255 gt 1023 host 192.168.1.2 eq 80
允许192.168.2.0网段的主机访问主机192.168.1.2的web服务
access-list 101 permit udp 192.168.2.0 0.0.0.255 gt 1023 any eq 53
允许192.168.2.0网段的主机访问外网以做dns查询
说明:
gt 1023表示所有大于1023的端口,这是因为一般访问web、ftp等服务器时客户端的主机是使用一个1023以上的随机端口;established 表示允许一个已经建立的连接的流量,也就是数据包的ACK位已设置的包。
注:protocol是根据你允许用户使用相应通信的协议来确定的,如上面中WEB是TCP协议,DNS用UDP协议
三、命名ACL
命令:
ip access-list {standard/extended} name
{ permit /deny} source-ip source-wildcard 标准
{ permit /deny} protocol source-ip source-wildcard [operator port] destination-ip destination-wildcard [operator port] [established][log] 扩展
例:
ip access-list extended outbound
定义一个名为outbound的命名ACL
permit tcp 192.168.2.0 0.0.0.255 gt 1023 host 192.168.1.2 eq 80
允许192.168.2.0网段的主机访问主机192.168.1.2的web服务
优点:可以删除/修改其中一条ACL,而不必删除整个ACL
ip access-list extend server- protect
no permit tcp 10.0.0.0 0.0.255.255 host 10.1.2.21 eq 1521
permit tcp 10.1.0.0 0.0.0.255 host 10.1.2.21 eq 1521
exit
四、自反ACL
基本思想:内网可以访问外网,但外网没有允许不能访问内网,内网访问外网的回应数据可以通过
例:
一、ip access-list extended outbound permit tcp any any reflect cisco
创建出去数据的ACL,tcp的流量可以进来,但要在有内部tcp流量出去时动态创建
二、 ip access-list extended inbound permit icmp any any evaluate cisco
创建进来数据的ACL,允许基于ICMP的数据如echo-request,允许出去的ACL中的有cisco对应语句的TCP流量进来
三、 int s1/0 s1/0为路由器的接外网的端口
ip access-group outbound out
ip access-group inbound in说明:reflect和evalute后面的对应名应该相同,此例中为cisco
五、基于时间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进行通讯。而且这些软件都能支持代理服务器,目前的代理服务器主要布署在TCP 8080、TCP 3128(HTTP代理)和TCP1080(socks)这三个端口上。由于是对访问Internet进行控制,ACL就放到公司的Internet出口处。
应用 协议 源地址 源端口 目的地址 目的端口 操作
IE TCP 10.1/16 所有 所有 80 限制访问
IE TCP 10.1/16 所有 所有 443 限制访问
MSN TCP 10.1/16 所有 所有 1863 限制访问
QQ TCP 10.1/16 所有 所有 8000 限制访问
UDP TCP 10.1/16 所有 所有 8000 限制访问
UDP TCP 10.1/16 所有 所有 4000 限制访问
HTTP代理 TCP 10.1/16 所有 所有 8080 限制访问
HTTP代理 TCP 10.1/16 所有 所有 3128 限制访问
Socks TCP 10.1/16 所有 所有 1080 限制访问
All other IP 10.1/16 N/A 所有 N/A 允许访问
time-range TR1
absolute start 00:00 1 June 2003 end 00:00 3 June 2003
periodic weekdays start 9:00 18:00
exit
ip access-list extend internet_limit
deny tcp 10.1.0.0 0.0.255.255 any eq 80 time-range TR1
deny tcp 10.1.0.0 0.0.255.255 any eq 443 time-range TR1
deny tcp 10.1.0.0 0.0.255.255 any eq 1863 time-range TR1
deny tcp 10.1.0.0 0.0.255.255 any eq 8000 time-range TR1
deny udp 10.1.0.0 0.0.255.255 any eq 8000 time-range TR1
deny udp 10.1.0.0 0.0.255.255 any eq 4000 time-range TR1
deny tcp 10.1.0.0 0.0.255.255 any eq 3128 time-range TR1
deny tcp 10.1.0.0 0.0.255.255 any eq 8080 time-range TR1
deny tcp 10.1.0.0 0.0.255.255 any eq 1080 time-range TR1
permit ip any any
int s0/0
ip access-group internet_limit out
或int fa0/0
ip access-group internet_limit in
或者将ACL配置在SWA上,并
int vlan 3
ip access-group internet_limit out
呵呵,现在让我们来看看在基于时间的访问列表中都有哪些新内容吧:
time-range TR1:定义一个新的时间范围,其中的TR1是为该时间范围取的一个名字。
absolute:为绝对时间。只使用一次。可以定义为1993-2035年内的任意一个时点。具体的用法请使用?命令查看。
Periodic:为周期性重复使用的时间范围的定义。完整格式为periodic 日期关键字 开始时间 结束时间。其中日期关键字的定义如下所示:
Monday 星期一
Tuesday 星期二
Wednesday 星期三
Thursday 星期四
Friday 星期五
Saturday 星期六
Sunday 星期天
daily 每天
weekdays 周一至五
weekend 周末
access-list 101 deny ip 10.1.0.0 0.0.255.255 any time-range TR1:注意这一句最后的time-range TR1,使这条ACL语句与time-range TR1相关联,表明这条语句在time-range TR1所定义的时间范围内才起作用。
注意:给出三种配置位置是帮助大家深刻理解关于in/out的区别的。
----------------------------------------------------------------------------------------------------------------
实例1:
防止用户TELNET登录到设备,但允许管理员登录,管理设备在vlan1(192.168.1.0/24)中,管理员 IP:192.168.1.66
access-list 1 permit host 192.168.1.66
line vty 0 4(部分设备是15)
access-class 1 in
说明:telnet都是访问的设备上的line vty,在line vty下面使用access-class与ACL组进行关联,in关键字表示控制进入的连接。
实例2:
如何查看ACL都过滤了哪些流量?
在需要记录的acl条目的最后加一个log关键字,另外需要配置设备的日志语句及日志服务器,在此不做说明。