1、防范IP分片攻击
什么是IP分片攻击
IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。这一过程称为分片(fragmentation)。
每个网络的数据链路层都有自己的帧格式。例如下图:
其中,数据字段的长度最大为1500字节,这个数值被称为最大传送单元(Maximun Transmission Unit, MTU)。不同的网络有不同的MTU值,如以太网的MTU值是1500字节,PPP链路的MTU值是296字节。
当IP数据报封装成帧时,必须符合帧格式的规定。如果IP数据报的总长度小于或等于MTU值,就可以直接封装成一个帧,如果IP数据报的总长度大于MTU值,就必须分片,然后将每一个分片封闭成一个帧。
- 再分片。每一个分片都有它自己的IP首部,可以独立地走不同的路由。如果已经分片的数据报遇到了具有更小MTU的网络,则还可以再进行分片。
- 分片重装。IP数据报可以被源主机或在其路径上的任何路由器进行分片,然后每个分片经过的路由到达目的主机,再进行重装。
- Identification(标识):
标识都为6307,表示它们原先属于同一个IP数据报文 - Flags(标志):
第2位:0表示允许分片
第3位:0表示最后一个分片,1表示还有后续的分片 - Fragment offset(分片偏移):
分片报文在原始数据报文中的偏移量
分片偏移
指分片的数据部分在原始数据包的数据部分中的偏移量
原始数据包,其数据部分的长度为2008字节
第1个分片的总长度为1 500字节,其数据部分的长度为:1500-20=1480字节,偏移是0字节
第2个分片的总长度为548字节,其数据部分的长度为:548-20=528字节,偏移是1480字节
泪滴攻击(teardrop)原理分析
操作系统在收到IP分片后,会根据偏移值将IP分片重新组装成IP数据包
如果伪造含有重叠偏移的分片,一些老的操作系统在收到这种分片时将崩溃
在ASA上配置fragment chain
每个IP包允许的分片数,默认是24个
禁止IP分片通过的配置命令
1 | asa(config)# fragment chain 1 |
ASA处理IP分片的机制
默认等待5秒
如果在5秒内没有收到后续的IP分片,则认为重组失败,最终将丢弃所有的分片
2、URL过滤
实施URL过滤一般分为三个步骤
- 创建class-map(类映射),识别传输流量
- 创建policy-map(策略映射),关联class-map
- 应用policy-map到接口上
第一步:创建class-map(类映射)
1 | asa(config)# access-list a1 permit tcp 192.168.1.0 255.255.255.0 any eq www |
第二步:创建policy-map(策略映射)
1 | asa (config)# policy-map type inspect http a4 |
第三步:应用policy-map到接口上
1 | asa (config)# service-policy a6 interface inside |
3、日志管理
日志信息的安全级别
emergencies的重要性最高,debugging的重要性最低
级别号 | 关键字 | 说明 |
---|---|---|
0 | emergencies(非常紧急) | 系统无法使用 |
1 | alert(紧急) | 需要立即处理 |
2 | critical(临界) | 临界状态 |
3 | error(错误) | 错误状态 |
4 | warning(警告) | 警告状态 |
5 | notification(注意) | 正常但不良好状态 |
6 | informational(提醒) | 提醒信息 |
7 | debugging(调试) | 调试阶段信息 |
配置日志
日志信息可以输出到Log Buffer(日志缓冲区)、ASDM和日志服务器
首先配置时区和时间
1 | asa(config)# clock timezone peking 8 |
1)配置Log Buffer //占用防火墙资源
1 | asa(config)# logging enable |
2)配置ASDM日志 //不常用
1 | asa(config)# logging enable |
3)配置日志服务器 //安全性高,推荐使用
1 | asa (config)# logging enable //启用日志 |
4、透明模式
ASA的两种工作模式
a)路由模式(默认)
a) 透明模式
透明模式下默认允许的3层流量
允许IPv4流量自动从高级别接口到低级别接口
允许ARP流量双向穿越
透明模式下继续使用应用层智能执行状态检测和各项常规防火墙功能,但只支持2个区域
透明模式下不需要在接口上配置IP地址,这样就不用重新设计现有的IP网络,方便部署
切换到透明模式
1 | ask(config)# firewall transparent |
查看当前的工作模式
1 | ciscoasa(config)# show firewall |
配置管理IP地址
1 | ciscoasa(config)# ip address IP_address [subnet_mask] |
查看MAC地址表
1 | ciscoasa(config)# mac-learn logical_if_name disable |
例:需求分析
公司为了方便部署,将ASA配置为透明模式
管理IP地址配置为192.168.1.253/24
ASA的配置
1 | ciscoasa(config)# firewall transparent |
ASA的E0/0口配置为Trunk,具体配置如下:
1 | ciscoasa(config)# firewall transparent |