Cisco ASA 高级配置

1、防范IP分片攻击

什么是IP分片攻击

IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。这一过程称为分片(fragmentation)。

每个网络的数据链路层都有自己的帧格式。例如下图:

image-20191119161954667

其中,数据字段的长度最大为1500字节,这个数值被称为最大传送单元(Maximun Transmission Unit, MTU)。不同的网络有不同的MTU值,如以太网的MTU值是1500字节,PPP链路的MTU值是296字节。

当IP数据报封装成帧时,必须符合帧格式的规定。如果IP数据报的总长度小于或等于MTU值,就可以直接封装成一个帧,如果IP数据报的总长度大于MTU值,就必须分片,然后将每一个分片封闭成一个帧。

image-20191119162019638

  • 再分片。每一个分片都有它自己的IP首部,可以独立地走不同的路由。如果已经分片的数据报遇到了具有更小MTU的网络,则还可以再进行分片。
  • 分片重装。IP数据报可以被源主机或在其路径上的任何路由器进行分片,然后每个分片经过的路由到达目的主机,再进行重装。

image-20191119162138717

  1. Identification(标识):
    标识都为6307,表示它们原先属于同一个IP数据报文
  2. Flags(标志):
    第2位:0表示允许分片
    第3位:0表示最后一个分片,1表示还有后续的分片
  3. Fragment offset(分片偏移):
    分片报文在原始数据报文中的偏移量

分片偏移

  1. 指分片的数据部分在原始数据包的数据部分中的偏移量

    image-20191119162242731

  2. 原始数据包,其数据部分的长度为2008字节

  3. 第1个分片的总长度为1 500字节,其数据部分的长度为:1500-20=1480字节,偏移是0字节

  4. 第2个分片的总长度为548字节,其数据部分的长度为:548-20=528字节,偏移是1480字节

泪滴攻击(teardrop)原理分析

image-20191119162318812

  • 操作系统在收到IP分片后,会根据偏移值将IP分片重新组装成IP数据包

  • 如果伪造含有重叠偏移的分片,一些老的操作系统在收到这种分片时将崩溃

在ASA上配置fragment chain
每个IP包允许的分片数,默认是24个

禁止IP分片通过的配置命令

1
asa(config)# fragment chain 1

ASA处理IP分片的机制
默认等待5秒
如果在5秒内没有收到后续的IP分片,则认为重组失败,最终将丢弃所有的分片

2、URL过滤

image-20191119162436986

实施URL过滤一般分为三个步骤

  1. 创建class-map(类映射),识别传输流量
  2. 创建policy-map(策略映射),关联class-map
  3. 应用policy-map到接口上

第一步:创建class-map(类映射)

1
2
3
4
5
6
7
8
9
10
11
asa(config)# access-list a1 permit tcp 192.168.1.0 255.255.255.0 any eq www
asa(config)# class-map a5
asa (config-cmap)# match access-list a1
asa (config-cmap)# exit
asa (config)# regex a2 “\.kkgame\.com”
asa (config)# class-map type regex match-any a7
asa (config-cmap)# match regex a2
asa (config-cmap)# exit
asa (config)# class-map type inspect http a3
asa (config-cmap)# match request header host regex class a7
asa (config-cmap)# exit

第二步:创建policy-map(策略映射)

1
2
3
4
5
6
7
8
9
10
asa (config)# policy-map type inspect http a4
asa (config-pmap)# class a3
asa (config-pmap-c)# drop-connection log
asa (config-pmap-c)# exit
asa (config-cmap)# exit
asa (config)# policy-map a6
asa (config-pmap)# class a5
asa (config-pmap-c)# inspect http a4
asa (config-pmap-c)# exit
asa (config-pmap)# exit

第三步:应用policy-map到接口上

1
asa (config)# service-policy a6 interface inside

3、日志管理

日志信息的安全级别
emergencies的重要性最高,debugging的重要性最低

级别号关键字说明
0emergencies(非常紧急)系统无法使用
1alert(紧急)需要立即处理
2critical(临界)临界状态
3error(错误)错误状态
4warning(警告)警告状态
5notification(注意)正常但不良好状态
6informational(提醒)提醒信息
7debugging(调试)调试阶段信息

配置日志
日志信息可以输出到Log Buffer(日志缓冲区)、ASDM和日志服务器
首先配置时区和时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
asa(config)# clock timezone peking 8
asa(config)# clock set 10:30:00 21 June 2011
一月 Jan. January
二月 Feb. February
三月 March Mar
四月 Apr. April
五月 May
六月 Jun June
七月 Jul. July Jy.
八月 August Aug
九月 Sep Sept. September
十月 Oct. October
十一月 Nov. November
十二月 Dec December

1)配置Log Buffer //占用防火墙资源

1
2
3
4
5
6
7
asa(config)# logging enable
asa(config)# logging buffered informational
Debugging级别不要轻易使用,会耗费防火墙自身的可用资源,默认大小4KB
查看Log Buffer
asa(config)# show logging
清除Log Buffer
asa(config)# clear logging buffer

2)配置ASDM日志 //不常用

1
2
asa(config)# logging enable
asa(config)# logging asdm informational

3)配置日志服务器 //安全性高,推荐使用

image-20191119163122677

1
2
3
4
asa (config)# logging enable                //启用日志
asa (config)# logging timestamp //启用时间戳
asa (config)# logging trap informational
asa (config)# logging host inside 192.168.0.1 //日志服务器地址

4、透明模式

ASA的两种工作模式

a)路由模式(默认)

image-20191119163157665

a) 透明模式

image-20191119163213126

透明模式下默认允许的3层流量
允许IPv4流量自动从高级别接口到低级别接口
允许ARP流量双向穿越

透明模式下继续使用应用层智能执行状态检测和各项常规防火墙功能,但只支持2个区域
透明模式下不需要在接口上配置IP地址,这样就不用重新设计现有的IP网络,方便部署

切换到透明模式

1
ask(config)# firewall transparent

查看当前的工作模式

1
2
ciscoasa(config)# show firewall
Firewall mode: Transparent

配置管理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

image-20191119163318768

ASA的配置

1
2
3
4
5
6
7
8
9
ciscoasa(config)# firewall transparent
ciscoasa(config)# hostname asa
asa(config)# int E0/0
asa(config-if)# no shut
asa(config-if)# nameif outside
asa(config-if)# int E0/1
asa(config-if)# no shut
asa(config-if)# nameif inside
asa(config)# ip add 192.168.1.253 255.255.255.0

ASA的E0/0口配置为Trunk,具体配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ciscoasa(config)# firewall transparent
ciscoasa(config)# hostname asa
asa(config)# int E0/0
asa(config-if)# no shut
asa(config-if)# int E0/0.10
asa(config-if)# vlan 10
asa(config-if)# nameif inside
asa(config-if)# int E0/0.20
asa(config-if)# vlan 20
asa(config-if)# nameif outside
asa(config)# ip add 209.165.201.1 255.255.255.240
asa(config)# access-list ACLOUT permit icmp any any
asa(config)# access-list ACLOUT permit tcp any any eq 80
asa(config)# access-list ACLOUT permit tcp any any eq 21
asa(config)# access-list ACLOUT permit tcp any any eq 25
asa(config)# access-list ACLOUT deny ip any any
asa(config)# access-group ACLOUT in interface outside
-------------本文结束感谢您的阅读-------------