什么是访问控制列表?
之前学习的都是让网络如何连通
今天是在网络连通环境基础上来进行相应的限制
虽然网络是连通的,但是不允许通信的主机就不能访问,或者说允许访问的是哪个主机,以及访问主机里的什么服务可以做更加细化的限制
所以叫访问控制
网络当中访问控制的对象是谁?是某个节点当中的主机。如何标识和区分呢?得用到IP地址。哪个IP地址的主机可以访问,或者说可以访问的哪个IP地址的主机以及该主机当中的具体哪个服务,因此有关于ACL访问控制可以对第几层信息进行过滤?网络层也就是第三层,要看地址是被允许的还是被拒绝的。
控制访问的是主机以及主机里的服务,那么服务用端口号来标识。
因此ACL访问控制不仅对三层信息(也就是网络层信息)进行过滤,还可以对四层信息进行过滤,要读取IP地址里的数据包和端口号,再根据预告定义好的规则,对数据包做一个过滤。
访问控制列表(ACL)的作用
-读取第三层、第四层包头信息
-根据预告定义好的规则对包进行过滤
小结:ACL访问控制列表,就是在链路连通的基础上,看是被允许的还是被拒绝的,进行一个有效的访问控制。
访问控制列表的工作原理(不仅要定义规则而且要将规则应用到接口上)
访问控制列表在接口应用的方向
-出:已经过路由器的处理,正离开路由器接口的数据包
-入:已经到达路由器接口的数据包,将被路由器处理
-列表应用到接口的方向与数据方向有关
接下来重点了解访问控制列表处理语句的过程
有一个严格的匹配顺序
拒绝和允许都不匹配才会允许读下一条
访问控制列表的处理过程:如果匹配第一条规则,则不再往下检查,路由器将决定该数据包允许通过或拒绝通过。如果不匹配第一条规则,则依次往下检查直到有任何一条规则匹配。如果最后没有任何一条规则匹配,则路由器根据默认的规则将丢弃该数据包。
访问控制列表的类型:
1、标准访问控制列表
-基于源IP地址过滤数据包
-标准访问控制列表的访问控制列表号是1~99
(基于源IP,也就是说只要源匹配则通过或者拒绝)
2、扩展访问控制列表
-基于源IP地址、目的IP地址、指定协议、端口来过滤数据包
-扩展访问控制列表的访问控制列表号是100~199
(不仅要源IP还要看你访问谁,也就是目的IP,不仅访问源目标以及目标里边的服务,服务对应的有协议和端口)
区分标准访问控制和扩展访问控制要根据列表号来区分。
3、命名访问控制列表
-命名访问控制列表允许在标准和扩展访问控制列表中使用名称代替表号。
(也就是说命名既有标准的命名又有扩展的命名)
首先学习标准访问控制列表
先准备一个网络连通的环境,再通过标准访问控制让其不通来验证。
起初的环境都允许访问,下图给主机配IP地址和网关,路由接口配IP地址就都能通给路由器接口配IP地址
给主机配IP地址及网关
然后测试是否能通,PING一下。
最后通了。
接下来做标准访问控制。如上图,允许PC2和PC3,拒绝PC1。
先拒绝1.1然后再允许1.2和1.3,也就是先拒绝1.1再允许1.0网段就可以了。
创建ACL:
Router(config):access-list access-list-number
{permit | deny} source [source-sildcard]
进入路由器
全局:access-list 1 deny 192.168.1.1 0.0.0.255
(用反掩码,0.0.0.0,代表允许或拒绝的是一个IP地址,不能变,如果允许或拒绝的是一个网段,模糊匹配用1表示0.0.0.1)反掩码
路由器拒绝了1.1,允许了1.0网段
最后测试一下,还能PING通,为什么?因为列表没应用到接口。那么列表应用到入口(F0/0)还是出口(F0/1)呢?此时都是一样的把访问控制列表应用到入口(F0/0)
测试一下1.1PING不能,1.2和1.3可以PING通。
标准访问控制列表的创建:
全局:access-list 1 deny 192.168.1.1 0.0.0.0
(改写为另一种语句:access-list deny host 192.168.1.1,host是主机的意思)
全局:access-list 1 permit 192.168.1.1 0.0.0.255
(改写另一种语句:access-list 1 permit any 192.168.1.1,any是所有的意思)
(改写另一种语句:access-list 1 permit 0.0.0.0 255.255.255.255,类似之前添加默认路由的时候,用户到ip route 0.0.0.0 0.0.0.0代表任意网络ID和任意子网掩码)
将ACL应用到接口:
接口模式:ip access-group 列表号 in或out
关于一个网段的反掩码,还有另一个计算方法,可以用四个255减去对应的子网掩码的值关于一个网段的反掩码,还有另一个计算方法,可以用四个255减去对应的子网掩码的值
通配符掩码,也叫做反码。用二进制数0和1表示,如果某位为1,表明这一位不需要进行匹配操作,如果为0表明需要严格匹配。
例如:192.168.1.0/24子网掩码是255.255.255.0,其反码可以通过255.255.255.255减去255.255.255.0得到0.0.0.255。
全局模式:no access-list 1,将访问控制列表删了(no了),那么1.1又可以PING通了。
最后用show access-lists查看一下。
小结:
隐含拒绝语句:access-list 1 1 deny 0.0.0.0 255.255.255.255
将ACL应用于接口,接口模式下:ip access-group 列表号in或out
注:access-list 1 deny 192.168.1.1 0.0.0.0或写为access-list 1 deny host 192.168.1.1
access-list 1 deny 0.0.0.0 255.255.255.255(默认隐含拒绝,拒绝所有)或写为access-list 1 deny any
接下来从入口(F0/0)取消应用到出口(F0/1)上从入口(F0/0)取消应用到出口(F0/1)上
接下来学习配置控制访问列表:
接下来,先把下图配置为全网互通:
1、先给路由器每个端口配置IP地址
端口模式 ip address subnet mask,no shutdown
2、然后3台路由器在全局模式下依次互相宣告自己的网段
router rip
version 2
no auto-summary
network 192.168.1.0
3、测试一下互相能否PING通
4、接下来配置一下HTTP服务,服务器上保留INDEX文件进行编辑
服务器IP地址是4.1
5、在客户端主机上访问http主页,可以访问
6、现在让1.0网段中的pc1只能访问HTTP服务,现在不仅对源有要求,对目标里的服务也有要求,标准访问控制列表已经满足不了我们的需求了,所以要用到扩展访问控制列表。扩展访问控制列表是基于源IP,目标IP以及目标里的服务来做限制。
7、小结标准访问控制列表命令顺序,先拒绝1.1访问4.1,然后1.0访问4.1。在这里,先允许1.1访问4.1的HTTP服务,再拒绝1.1访问4.1的其它服务,再添加允许1.0网段。因为1.2和1.3是没限制的。
8、定义扩展访问控制列表。注意HTTP服务是TCP的80端口。
access-list 100 permit tcp host 192.168.1.1 host 192.168.4.1 eq 80
(80端口可以写为www,因此此句还可以表示成:access-list 100 permit tcp host 192.168.1.1 host 192.168.4.1 eq www)
(添加1.1访问4.1的80端口)
access-list 100 deny ip host 192.168.1.1 host 192.168.4.1
接下来允许2的3(2和3都属于1.0网段)访问4.1的所有
access-list 100 permit ip 192.168.1.0 0.0.0.0 host 192.168.4.1
扩展列表语句添加完毕。
9、虽然不能访问其它服务,但照样能PIING通,因为配置在接口上还没应用。所以需要将列表100应用到接口上。应用方法和标准列表一样,下面是应用到入口的语句
interface fastEthernet 0/0
ip access-group 100 in
接下来再测试连通性,PING不通。因为只允许访问4.1的HTTP服务,其它的都拒绝了,所以PING服务也被拒绝了!
因为2和3没有限制所以可以PING通
以上是扩展访问列表的配置,不只对源做限制,还可以对目标和服务做限制
全局模式下配置扩展访问控制列表语句
access-list 100 permit tcp host 192.168.1.1 host 192.168.4.1 eq 80
access-list 100 deny ip host 192.168.1.1 host 192.168.4.1
access-list 100 permit ip 192.168.1.0 0.0.0.255 host 192.168.4.1
interface fastEthernet 0/0
ip access-group 100 in
接下来理解下面语句的含义
1、全局:access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
(允许192.168.1.0网络访问192.168.2.0网络的所有服务)
2、全局:access-list 101 deny ip any any
(拒绝所有访问所有)
3、access-list 101 deny tcp 192.168.1.0 0.0.0.255 host192.168.2.2 eq 21
(拒绝192.168.1.0 网络的所有主机都不能访问92.168.2.2网络的tcp的21端口,也就是FTP服务)
4、access-list 101 permit ip any any (允许所有访问所有)
5、access-list 101 deny icmp 192.168.1.0 0.0.0.255 host 192.168.2.2 echo(拒绝192.168.1.0 网络的主机PING192.168.2.2这个主机)
注意:PING用的是ICMP这个协议
现在想拒绝1.2访问4.1的HTTP服务
access-list 100 permit tcp host 192.168.1.2 host 192.168.4.1 eq www
发现还可以访问
因为之前已经允许1.0网段访问4.1的所有服务了,那怎么办?所以上面这条语句无效。
那么,进入全局配置,NO掉:no access-list 100 permit tcp host 192.168.1.2 host 192.168.4.1 eq www,取消这条语句。
接下来进行命名访问控制列表的配置
先定义一个扩展的列表名:ip access-list extended 2018
要求在之前的基础上配置,就是说让1.0网段中的pc1只能访问HTTP服务。
命名访问控制列表的配置:
ip access-list extended 2018//定义一个命名访问控制列表
permit tcp host 192.168.1.1 host 192.168.4.1 eq www
deny ip host 192.168.1.1 host 192.168.4.1
permit ip 192.168.1.0 0.0.0.255 host 192.168.4.1
exit
进入全局将列表应用到接口
ip access-group 2018 in//此时列表号就是列表名
测试一下,ping
show access-list显示的是列表名2018
以上是扩展命名配置
现想在上面的基础配置上拒绝1.2访问4.1的HTTP服务
编辑访问列表
ip access-list extended 2018(注意,如果列表名输入不一样的话,就相当于创建了一新的列表)
deny tcp host 192.168.1.2 host 192.168.4.1 eq 80
测试一下,发现还是可以访问,为什么?
因为访问控制列表是默认一条一条的往后累加,因为前面已经有允许1.0网段访问4.1的HTTP服务了,后面再添加拒绝就无效,因此,先把这条语句清掉
ip access-list extended 2018
no deny tcp host 192.168.1.2 host 192.168.4.1 eq 80
然后在特权模式下show access-lists发现此句被清理掉了
这就是命名访问控制的优点,如果未命名就会全部删除,已经命名了就可以删除单条语句
现在,要把1.2拒绝访问4.1的HTTP语句添加到1.1拒绝访问4.1的HTTP服务之前
全局:
ip access-list extended 2018
25deny tcp host 192.168.1.2 host 192.168.4.1 eq 80
测试一下,发现不能访问了,拒绝生效了。
命名的优点,可以删单条,并且插入指定位置,访问更加灵活了。
标准控制列表和扩展控制列表执行NO命令,整个列表都会被清空。
定义一个标准命名访问控制列表
标准命名ACL的配置
全局:ip access-list standard 名字
permit host 192.1.1
deny any
命名ACL应用于接口
接口模式:ip access-group 名字in 或 out
上面分标准命名访问控制列表和扩展命名访问控制列表
no 30(可以No语句的号)
命名后列表语句更灵活了
标准命名访问控制列表和扩展命名访问控制的异同:命名格式语句是一样的,但号变名了。
所以要重点理解标准和扩展的区别,以主如何去定义。然后再通过命名,掌握命名的优点(灵活)。
总结:命名访问控制列表可以配置标准命名也可以配置扩展命名。命名访问控制列表的ACL语句默认第一条为10,第二条为20,依此类推。ACL可以删除单条ACL语句,而不必删除整个ACL。并且ACL语句可以有选择的插入到列表中的某个位置,ACL配置更加方便灵活。
总结:
1、访问控制列表的类型及每一类型的特点。
2、访问控制列表的处理过程
3、通配符掩码