1.ACL(Access Control List)访问控制列表:可以基于3层、4层的数据做过滤。
ACL的工作原理(匹配规则):
按照从上到下依次匹配;
如果有一条一旦匹配完成,就不再进行后续报文的匹配;
隐含的一条是拒绝所有;
ACL中最少要有一条允许的条目,否则没有意义;
2.ACL的分类:标准ACL和扩展ACL
(1)标准访问控制列表
基于源IP地址过滤数据包
标准访问控制列表的访问控制列表号是1~99
(2)扩展访问控制列表
基于源IP地址、目的IP地址、指定协议、端口和标志来过滤数据包
扩展访问控制列表的访问控制列表号是100~199
3.标准ACL的配置:
(1)基本格式:
Router(config)#access-list 编号 { permit允许| deny拒绝 } source 通配符掩码
通配符掩码:是用来对Ip地址进行匹配的,用0表示精确匹配(必须匹配),用“1”表示模糊匹配(可以不匹配)
access-list 1 permit 192.168.1.0 0.0.0.255 ====>匹配流量:192.168.1.0/24
access-list 1 permit 192.168.2.2 0.0.0.0 ====>匹配流量是一个主机:192.168.2.2
access-list 1 permit host 192.168.2.2 =====>匹配一个主机的流量
access-list 1 deny 0.0.0.0 255.255.255.255 ====>access-list 1 deny any 拒绝所有流量
access-list 10 permit 192.168.1.1 0.0.0.0 //允许192.168.1.1主机地址(1)
access-list 10 deny 192.168.1.0 0.0.0.255 //拒绝192.168.1.0/24这个网段(2)
access-list 10 permit 172.16.0.0 0.0.255.255 //允许172.16.0.0/16这个网段(3)
access-list 10 deny host 192.168.2.3 //拒绝主机192.168.2.3(4)
access-list 10 permit 10.0.0.0 0.0.0.255 //允许10.0.0.0/24这个网段(5)
access-list 10 deny 192.168.0.0 0.0.255.255 //拒绝192.168.0.0/16这个网段(6)
192.168.1.1/24====》允许===》1
192.168.2.3/24====》拒绝===》4
192.168.2.2/24====》拒绝===》6
192.168.10.10/24===》拒绝===》6
192.168.30.20/24===》拒绝===》6
200.1.1.1/24=======》拒绝===》隐含的一条拒绝所有
101.1.1.1/24=======》拒绝===》隐含的一条拒绝所有
10.5.5.5/24========》拒绝===》隐含的一条拒绝所有
10.3.3.3/16========》拒绝===》隐含的一条拒绝所有
10.6.6.6/8=========》拒绝===》隐含的一条拒绝所有
10.0.0.1/24========》允许===》5
34.1.1.1/24========》拒绝===》隐含的一条拒绝所有
(2)ACL的配置步骤:ACL的书写规则就是让范围小的条目尽量靠前。
第一步:定义ACL
第二步:应用到接口——————尽量应用到入接口。
特别说明:ACL只有应用到接口,才会生效。
int f0/1
ip access-group 编号 in/out
第三步;检查ACL的匹配情况
Router#show access-lists //match表示匹配了该条目
Standard IP access list 10
10 permit host 192.168.1.1 (4 match(es))
扩展ACL
1.扩展ACL:可以基于源目Ip、源目端口、协议来对数据流量做过滤。
举例1;定义一个ACL,编号为101,拒绝192.168.1.0/24 到达 192.168.2.2 的FTP服务
Router(config)# access-list 101 deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21
举例2:定义ACL101,拒绝192.168.1.0/24访问192.168.2.2的ICMP服务
access-list 101 deny icmp 192.168.1.0 0.0.0.255 host 192.168.2.2
举例3:允许或拒绝所有流量
access-list 101 permit ip any any //第一个any是源,第二个any是目标
2.实验举例:
R2(config)#access-list 100 permit tcp host 192.168.1.1 host 192.168.2.3 eq 80
R2(config)#access-list 100 deny ip host 192.168.1.1 host 192.168.2.3
R2(config)#access-list 100 permit icmp host 192.168.1.1 host 192.168.2.1
R2(config)#access-list 100 deny icmp host 192.168.1.1 host 192.168.2.2
R2(config)#access-list 100 permit tcp host 192.168.1.2 host 12.1.1.2 eq telnet
interface Serial0/2/0
ip address 12.1.1.2 255.255.255.252 //配置IP
encapsulation ppp //设置封装格式
ip access-group 100 in //应用到接口
clock rate 4000000 //设置时钟频率,给客户端分配的带宽
检查命令:show access-lists
如果删除某条ACL,就要使用命名ACL的规则:
R2(config)#ip access-list extended 100 //extended表示修改扩展ACL,编号为100
R2(config-ext-nacl)#no 80 //删除ACL条目编号为80
补充特殊的ACL:FTP的被动模式
access-list 100 permit tcp host 192.168.1.2 host 192.168.2.3 eq ftp //放行192.168.1.2到192.168.2.3的TCP-21,FTP控制连接
access-list 100 permit tcp host 192.168.1.2 host 192.168.2.3 range 1024 65535 //放行数据连接,目标端口号为大于1024的范围
远程登录配置:
R2(config)#line vty 0 4
R2(config)#password 123456
R2(config)#login
R2(config)#enable password 123456
扩展ACL.pkt
105.1 KB
3.常见服务和端口的对应关系
UDP服务:DHCP(udp-67,68)、DNS(udp-53)、NTP(udp-123,用于linux中的时间同步)
TFTP(udp-69)
TCP服务:
FTP(tcp-21和20)
http(tcp-80);https(tcp-443)
远程桌面RDP(tcp-3389)
Telnet(tcp-23)
MySQL(tcp-3306)
ssh(tcp-22)
SMTP(tcp-25)
POP3(tcp-110)
共享(tcp-445)