基本原理:ACL使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。ACL是由permit或deny语句组成的一系列有顺序的规则,这些规则针对数据包的源地址、目的地址、端口号、上层协议或其他信息来描述。
功能:网络中的节点有资源节点和用户节点两大类,其中资源节点提供服务或数据,用户节点访问资源节点所提供的服务与数据。ACL的主要功能就是一方面保护资源节点,阻止非法用户对资源节点的访问,另一方面限制特定的用户节点所能具备的访问权限。
实验拓扑:(使用ACL检查,使得两边网段都只能访问各自的web server)
测试使用软件:cisco packet tracer
实验说明:
为了达到两边网段都只能访问各自的web server (tcp 80),需要在路由器的接口F0/0, F1/0配置ACL
实验步骤:
1. 在全局模式下配置ACL 100 ,允许172.16.16.1访问172.16.48.63的web server , 80端口,应用于接口F0/0
ROUTE(config)#ip access-list extended 100
permit tcp host 172.16.16.1 host 172.16.48.63 eq www
interface f0/0
ip access-group 100 in
当应用配置后,测试
172.16.16.1 -----172.16.48.63 80 ,连接OK!
172.16.48.63-----172.16.16.16.1 , 连接失败!
2. 在全局模式下配置ACL 101 ,允许172.16.48.63访问172.16.16.1的web server , 80端口,应用于接口F1/0
ROUTE(config)#ip access-list extended 101
permit tcp host 172.16.48.63 host 172.16.16.1 eq www
interface f1/0
ip access-group 101 in
当应用配置后,测试
172.16.16.1 -----172.16.48.63 80 ,连接失败!
172.16.48.63-----172.16.16.16.1 , 连接失败!
3. 当配置ACL 100 ,101分别于接口F0/0, F1/0后,测试两边网段通信失败,因为www 使用80端口,TCP协议,当172.16.16.1 正向连接172.16.48.63时,通过F0/0 ,匹配ACL 100 permit tcp host 172.16.16.1 host 172.16.48.63 eq www规则(只要有一条规则匹配就不检查向下规则),则通过,当到达F1/0时,因为未配置OUT ACL,则通过,此时到达主机172.16.48.63,主机回应响应,由于不匹配ACL 101 permit tcp host 172.16.48.63 host 172.16.16.1 eq www,此时会向下匹配,由于隐含规则默认为deny any ,F1/0 IN 规则会丢失此包,反之相同,故双方通信失败!
4. 在ACL 100,101中加入相应规则:
ACL 100 : permit tcp host 172.16.16.1 host 172.16.48.63 established ***不允许172.16.16.1使用TCP主动连接172.16.48.63,允许被动连接
ACL 101 : permit tcp host 172.16.48.63 host 172.16.16.1 established ***不允许172.16.48.63使用TCP主动连接172.16.16.1,允许被动连接
路由器配置:
Route#show run
*****部分省略*****
interface FastEthernet0/0
ip address 172.16.16.254 255.255.240.0
ip access-group 100 in
duplex full
speed auto
!
interface FastEthernet1/0
ip address 172.16.48.254 255.255.240.0
ip access-group 101 in
duplex full
speed auto
!
ip classless
!
access-list 100 permit tcp host 172.16.16.1 host 172.16.48.63 eq www
access-list 100 permit tcp host 172.16.16.1 host 172.16.48.63 established
access-list 101 permit tcp host 172.16.48.63 host 172.16.16.1 eq www
access-list 101 permit tcp host 172.16.48.63 host 172.16.16.1 established
注: established :加上此参数后,ACL会检查TCP 的ACK , RST,当ACK, RST 使用时,既不为0时,表示permit , 当未使用时,表示不匹配,则 deny。由于TCP 使用三次握手方式(SYN ,SYN/ACK, ACK),当主机172.16.16.1正向连接172.16.48.63 www时,未使用ACK,达到F0/0时, ACL 100 IN规则会进行匹配检查,匹配ACL 100中的第一条,则不检查第二条,通过,当达到F1/0后,主机172.16.48.63回应时,路由器会检查ACL 101 IN 规则的,此时不匹配ACL 101中第一条,则向下检查,匹配 第二条,通过(由于此时使用ACK,故匹配语句permit tcp ……… established),此时双方测试成功!
如上是本人测试小记,其中有相关错误及争议,烦各位牛人指教,谢谢!
Alan