应用访问控制列表ACL实现网络单向访问
在企业网络中经常遇到这样的问题:在网络一个重要的部门的主机或服务器不允许其他部门访问,而这个部门却可以去访问其他的部门的主机或服务器。我们可以利用访问控制列表ACL实现单方向访问来实现以上单向访问功能。
所谓单向访问,就是一部分网络主机可以访问另一部分网络主机,而反过来则不允许访问。对于单向访问不能简单的通过访问控制列表ACL中的deny语句来实现,deny语句可以实现A、B主机间访问数据流的彻底阻断,但是无法实现单向访问。因为如果deny掉A主机到B主机的访问,那么B主机也就不能访问A主机了(因为B主机到A主机的访问数据虽然能到达A主机,但是A主机的回复数据流被ACL访问控制列表规则阻断了)。 那么怎么实现单向访问呢?答案是利用permit语句。方法就是利用permit语句让B主机访问A主机的同时允许A主机的响应数据流通过(要在permit语句中使用established参数),但是不允许由A主机发起的到B主机的访问通过,这样就可以实现B主机向A主机的单向访问。
扩展的单向访问控制列表ACL的基本配置命令如下: Router(config)#access-list access-list-number
{permit|deny} protocol source source-wildcard [operator
port] destination destination-wildcard [operator port] [established] [log] 参数解释:
access-list-number 扩展的访问控制列表ACL的编号,比如100 permit|deny 允许或不允许通过
protocol 协议类型,比如 TCP IP UDP . soure 源地址 destination 目标地址 established 已建立的连接
established参数可以在拒绝数据流通过的方向上,让已建立的连接的TCP数据流通过(比如ACK确认包),我们正是利用这一点来实现单向访问,将一个普通的扩展访问列表ACL转变成一个允许单向访问的控制列表ACL。
在路由器接口上应用扩展的访问控制列表ACL的配置命令如下: Router(config)#ip access-group access-list-number in (一般都是进方向)
下边我们用一个ACL实例来看一下具体的实现单向访问的方法: 网络环境假定:
A部门网段:路由 S0:192.168.0.1 E0:10.98.0.1 B部门网段:路由 S0:192.168.0.2 E0:10.98.1.1 主机A、 B分别属于两个部门
主要配置如下: A路由配置: !
interface eth0
ip add 10.98.0.1 255.255.0.0 interface s0
ip add 192.168.0.1 255.255.255.0 ip access-group 100 in !
ip route 10.98.1.0 255.255.0.0 s0 !
access-list 100 permit tcp any host 10.98.0.1 established log
(这条命令允许10.98.0.1建立的连接回送数据) access-list 100 deny ip any any log B路由配置: !
interface eth0
ip add 10.98.1.1 255.255.0.0 ! inter s0
ip add 192.168.0.2 255.255.255.0