0x00 前言
访问控制列表(Access Control List,ACL) 是路由器和交换机接口的指令列表,用来控制端口进出的数据包。ACL适用于所有的被路由协议,如IP、IPX、AppleTalk等。
信息点间通信和内外网络的通信都是企业网络中必不可少的业务需求,为了保证内网的安全性,需要通过安全策略来保障非授权用户只能访问特定的网络资源,从而达到对访问进行控制的目的。简而言之,ACL可以过滤网络中的流量,是控制访问的一种网络技术手段。
配置ACL后,可以限制网络流量,允许特定设备访问,指定转发特定端口数据包等。如可以配置ACL,禁止局域网内的设备访问外部公共网络,或者只能使用FTP服务。ACL既可以在路由器上配置,也可以在具有ACL功能的业务软件上进行配置。
ACL是物联网中保障系统安全性的重要技术,在设备硬件层安全基础上,通过对在软件层面对设备间通信进行访问控制,使用可编程方法指定访问规则,防止非法设备破坏系统安全,非法获取系统数据。
0X01 编号标准 ACL
1、配置各个路由器的 IP 地址,并部署静态路由保证全网连通。2、在 R2 上部署编号标准 ACL,使得内网网段 192.168.1.0/24 不能访问外网,其他都能访问,配置如下:
R2(config)#access-list 1 deny 192.168.1.0 0.0.0.255 //标准 ACL 只能匹配源,不能匹配目的地。标准 ACL 的编号范围是 1~99 和 1300~1999
R2(config)#access-list 1 permit any
R2(config)#int f0/0
R2(config-if)#ip access-group 1 in
R2(config-if)#exit
测试 ACL 的效果,让内网路由器 R1 访问外网路由器 R3,如下:
R1#ping 3.3.3.3 source 192.168.1.1
R1#ping 8.8.8.8 source 192.168.1.1
R1#ping 3.3.3.3 source 192.168.2.1
R1#ping 8.8.8.8 source 192.168.2.1
3、在 R2 上部署编号标准 ACL,使得 IP 地址 192.168.2.1 可以 Telnet 本地,而其他 IP地址没法访问,实现安全管理,配置如下:
R2(config)#line vty 0 15
R2(config-line)#no login
R2(config)#access-list 2 permit host 192.168.2.1
R2(config)#line vty 0 15
R2(config-line)#access-class 2 in
R1 和 R3 上 Telnet R2:
R1#telnet 12.1.1.2 ;
R3#telnet 23.1.1.2
R1#telnet 12.1.1.2 /source-interface lo2
0x02 编号拓展 ACL
1、配置各个路由器的 IP 地址,并部署静态路由保证全网连通2、在 R2 上部署编号拓展 ACL,使得内网网段 192.168.1.0/24 不能访问外网主机 3.3.3.3的 23 号端口,192.168.2.0/24 网段不能 Ping 通 8.8.8.8,配置如下:
R2(config)#access-list 100 deny tcp 192.168.1.0 0.0.0.255 host 3.3.3.3 eq 23
R2(config)#access-list 100 deny icmp 192.168.2.0 0.0.0.255 host 8.8.8.8
R2(config)#access-list 100 permit ip any any
R2(config)#int f0/0
R2(config-if)#ip access-group 100 in
R3(config)#line vty 0 15
R3(config-line)#no login
R3(config-line)#exit
3、测试编号拓展 ACL,如下:
R1#telnet 3.3.3.3 /source-interface lo1
R1#telnet 3.3.3.3
R3>exit
R1#ping 8.8.8.8
R1#ping 8.8.8.8 source loopback 2
0x03 命名 ACL
1、配置各个路由器的 IP 地址,并部署静态路由保证全网连通,配置如下:2、在R2上部署基于命名的标准ACL,使得内网网段192.168.1.0/24不能访问外网,其他都能访问
R2(config)#ip access-list standard DENYVLAN10
R2(config-std-nacl)#deny 192.168.1.0 0.0.0.255
R2(config-std-nacl)#permit any
R2(config)#int f0/0
R2(config-if)#ip access-group DENYVLAN10 in
测试 ACL 的效果,让内网路由器 R1 访问外网路由器 R3,如下:
R1#ping 3.3.3.3 source 192.168.1.1
R1#ping 8.8.8.8 source 192.168.1.1
R1#ping 8.8.8.8 source 192.168.2.1
3、在 R2 上部署命名拓展ACL,使得内网网段192.168.1.0/24 不能访问外网主机 3.3.3.3的 23 号端口,192.168.2.0/24 网段不能 Ping 通 8.8.8.8,配置如下:
R2(config)#ip access-list extended DENYSERVICE
R2(config-ext-nacl)#deny tcp 192.168.1.0 0.0.0.255 host 3.3.3.3 eq 23
R2(config-ext-nacl)#deny icmp 192.168.2.0 0.0.0.255 host 8.8.8.8
R2(config-ext-nacl)#permit ip any any
R2(config)#int f0/0
R2(config-if)#ip access-group DENYSERVICE in
R3(config)#line vty 0 15
R3(config-line)#no login
R3(config-line)#exit
测试命名拓展 ACL,如下:
R1#telnet 3.3.3.3 /source-interface lo1
R1#telnet 3.3.3.3
R3>exit
4、管理命名 ACL
①#show ip access-lists
②删除 ACL 语句
R2(config)#ip access-list extended DENYSERVICE
R2(config-ext-nacl)#no 10
③查看 ACL 状态
R2#show ip access-lists
④插入 ACL 语句
R2(config)#ip access-list extended DENYSERVICE
0x04 时间 ACL
1、配置各个路由器的 IP 地址,并部署静态路由保证全网连通,配置如下:2、在 R2 上部署基于时间的 ACL,使得内网网段 192.168.1.0/24 在工作日上班时间 8:30
到 18:00 不能够访问外网,配置如下:
①设备路由器本地时间
R2(config)#clock timezone BJ +8//定义时区
R2#clock set 10:00:00 30 JULY 2013//定义具体时间
②设备时间范围
R2(config)#time-range PL //时间范围的名字
R2(config-time-range)#periodic weekdays 8:30 to 18:00//时间范围设置有两种Periodic、Absolute(一次)
③设置 ACL 并调用时间范围
R2(config)#access-list 100 deny ip 192.168.1.0 0.0.0.255 any time-range PL//标准 ACL 不能加入时间范围,只有拓展 ACL 可以
R2(config)#access-list 100 permit ip any any
④接口下调用 ACL
R2(config)#int f0/0
R2(config-if)#ip access-group 100 in
3、测试时间 ACL。
查看时间范围
R2#show time-range
time-range entry: PL (active)//此时间范围有效,Inactive 表示此时间范围失效
periodic weekdays 8:30 to 18:00
查看 ACL 状态
R2#show ip access-lists
R1#ping 8.8.8.8 source 192.168.1.1
R1#ping 3.3.3.3 source 192.168.1.1
可以看到,在特定时间范围内,此时 192.168.1.0 网段无法访问外网。可以尝试将本地
路由器的时间修改,如下:修改本地时间
R2#clock set 22:00:00 30 JULY 2013
查看时间范围
R2#show time-range
R2#show ip access-lists
让 R1 访问外网
0x05 自反ACL
1、配置各个路由器的 IP 地址,并部署静态路由保证全网连通2、在 R2 上部署自反 ACL,使得内网所有设备可以访问外网,而外网主动发起的流量都拒绝,配置如下:
①允许内网访问外网,执行流量“记录”
R2(config)#ip access-list extended OUTBOUND
R2(config-ext-nacl)#permit ip any any reflect PL
R2(config)#ip access-list extended INBOUND
②拒外网访问内网,除被”记录“的流量
R2(config-ext-nacl)#evaluate PL
R2(config-ext-nacl)#deny ip any any
③接口下调用 ACL
R2(config)#int f1/0
R2(config-if)#ip access-group OUTBOUND out
R2(config-if)#ip access-group INBOUND in
3、测试自反 ACL,如下:
R2#show ip access-lists
让 R1 访问外网
R1#ping 8.8.8.8 source 192.168.1.1
R2#show ip access-lists
从上面可以看出,当内网访问外网时,由于实现了流量“记录”,自反 ACL 自动生成一条反向 ACL,用于放开内网到外网的返回流量。而没有被记录的或者外网主动发起的流量,则被拒绝:
R3#ping 192.168.1.1 source 3.3.3.3
欢迎大家分享更好的思路,热切期待^^_^^ !