欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

一个动态ACL的案例

程序员文章站 2022-04-29 23:46:46
...

所在的单位有一台路由器将两个以太网段连到了internet上,路由器是通过串行端口0连到internet上的,而以太网分别通过端口E 0和E 1连到路由器上。假设我们希望允许任何用户都能通过I P访问1 98.78.46.12服务器,并允许2 0 5.131.175.0网络上的用户通过We b浏览

所在的单位有一台路由器将两个以太网段连到了internet上,路由器是通过串行端口0连到internet上的,而以太网分别通过端口E 0和E 1连到路由器上。假设我们希望允许任何用户都能通过I P访问1 98.78.46.12服务器,并允许2 0 5.131.175.0网络上的用户通过We b浏览(h t t p)和F T P访问I n t e r n e t。

useranme test password cisco

!

int serial 0

ip add 175.10.1.1 255.255.255.0

ip access-group 100 in

!

access-list 100 permit tcp any host 175.10.1.1 eq telnet

access-list 100 permit udp any eq 53 205.131.175.0 0.0.0.255 gt 1023

established

access-list 100 permit tcp any eq 21 205.131.175.0 0.0.0.255 gt 1023

established

access-list 100 permit tcp any eq 20 205.131.175.0 0.0.0.255 gt 1023

access-list 100 dynamic test timeout 180 permit ip any host 198.76.46.12 log

!

logging buffered 64000

!

line vty 0 2

login local

autocommand access-enable host timeout 10

line vty 3 4

login local

rotary 1

首先,我们注意到访问表被应用到了串行端口上。将扩展访问表应用到离过滤源最近的

地方,这是一种很好的方法。在本例中,我们的目的是要过滤I n t e r n e t上的主机,所以串行端口是路由器上离被过滤主机最近的端口。访问表应用的方向是向内的,因为从路由器的角度看来, I n t e r n e t来的报文是流向路由器的。如果我们将访问表应用成向外的访问,则过滤的报文将是离开串行接口而通往I n t e r n e t的报文,而这并非我们所希望的。另外,我们还建立了一个用户名“ t e s t”,它可以用来访

问路由器。在实际应用中,我们应该为每个用户建立一对用户名和口令。现在,让我们再分析访问表的每一个表项。

一个表项允许从任何源I P地址来的报文到达主机1 7 5 . 1 0 . 1 . 1,如果其目标端口为t e l n e t(2 3)的话。这样,我们实际上允许了向内的t e l n e t连接到路由器的串行接口。我们可以允许向内的t e l n e t,连接到路由器的其他I P地址,但只允许向内访问路由器的串行接口是一种最佳的选择。

第二个表项允许从任何源I P地址来的报文,如果其源端口是域名系统( domain namesystem, DNS)(UDP 53),且目标网络位于2 0 5 . 1 3 1 . 1 7 5 . 0 / 2 4,

目的端口大于1 0 2 3的话。这将允许D N S应答到达2 0 5 . 1 3 1 . 1 7 5 . 0 / 24网络。所有有效D N S请求的源端口应该为1 0 2 4或更大,因此有效D N S的应答就应发送到此1 0 2 4或更高的端口。如果我们不指定目的端口大于1 0 2 3,则攻击者可以从源端口5 3发送U D P报文到达我们的网络,从而导致对内部服务器的拒绝服务(denial-of-service, DOS)攻击。大量的服务器端口都处于小于1 0 2 4的保留区间内,所以我们应阻塞目的端口小于1 0 2 4的报文,以关闭潜在的安全漏洞。

第三和第四个表项允许具有如下特征的报文进入:源端口为W W W(TCP 80 )或F T P(TCP 21),目标位于2 0 5 . 1 3 1 . 1 7 5 . 0 / 2 4网络,目标端口大于1 0 2 3,且T C P头中设置了A C K和R S T位。这两个表项允许由内部主机发起的W W W和F T P会

话的返回报文。指定源端口和目的端口的原因与第二个表项相同。使用e s t a b l i s h e d意味着只有设置了应答位( A C K)和复位位(R S T)的报文才能够匹配并允许通过访问表项。只有那些已经建立了T C P会话的报文才会设置这些位,这样增加了访问表的安全层次。值得注意的是,攻击者很容易在向内的报文中手工设置这些位,所以这种检测是十分简单的。但是,如果内部网络采用正确的T C P / I P协议栈,它们就会忽略这些带A C K和R S T位的向内报文,因为它们不是主机上合法的T C P会话的一部分,这就是为什么e s t a b l i s h e d关键字仍然十分重要的原因。注意,这

种检验对U D P报文是无用的,这就是为什么在第二个访问表项中没有该关键字的原因。

第五个表项允许那些从源端口为2 0的任何主机向内报文到达网络2 0 5 . 1 3 1 . 1 7 5 . 0 / 2 4的主机,如果其目的端口大于1 0 2 3的话,允许了那些由内部主机发起的F T P部分数据的报文连接到内部主机。F T P协议实现的标准实现需要F T P服务器发回一个到源F T P客户机连接。该连接的初始报文没有设置A C K或R S T位,所以我们在表项中不能使用esta b l i s h e d关键字。有一种版本的F T P称为被动模式( passive mode)的F T P,或称为PA S C,它不需要服务器发起一个向源F T P客户机的连接。在这种模式的FTP中,客户机需要发起到FTP服务器非2 0端口的另一个连接。该端口是大于1 0 2 3的一种随机选择。我们允许所有大于1023 TCP端口的报文通过,是因为我们不能进一步确定F T P服务器会选择哪一个端口(被动模式F T P服务器的数据端口不为2 0,这与普通模式F T P是不同的)。尽管我们不能让该表项如我们所希望的那样确切,established关键字仍能使该表项比允许外部发起向内部网络的会话要安全一些。

第六个表项(也是最后一个表项)为动态访问表项,它允许来自被认证主机的报文到达服务器1 9 8 . 7 8 . 4 6 . 1 2。我们定义的绝对超时时间为3小时( 1 8 0分钟),并对该表项进行了日志记录(我们还开启了路由器缓冲区的日志)。通过将匹配动态表项的报文进行记录,我们可以跟踪用户的行为,并建立一个普通的基线。这样,我们可以发现不正常的行为,并由此判断这是否是由攻击者产生的。我们还将动态访问表项的空闲时间设置成了1 0分钟,这是在v t y线配置中通过a u t o c o m m a n d设置的。

最好是将这两个值都设上,这样我们能减少动态表项处于活跃状态的时间,因此也减少了攻击者冲破动态表项的可能性。

空闲计时器在每有一个报文匹配动态访问表项时进行复位。而绝对计时器是不复位的.即使一个会话仍然处于活跃状态,如果绝对超时达到,动态表项就会被删除,从而用户需要再经过一个认证过程。如果他们有经过路由器的活跃会话,这些会话将被终止。正因如此,我们建议将绝对超时设置得相对大一些,一般为一个小时或更长一些的时间。但我们应该将空闲时间设置得小一些,一般为1 0分钟或更短的时间。我们认为,不应将空闲时间的设置大于3 0钟。