一.僵尸流量过滤介绍
1.什么是僵尸网络
僵尸网络(Botnet)是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络.
如下图所示:
攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。攻击者通过远程控制这些计算机发起拒绝服务器(DOS)攻击.
之所以用僵尸网络这个名字,是为了更形象地让人们认识到这类危害的特点:众多的计算机在不知不觉中如同中国古老传说中的僵尸群一样被人驱赶和指挥着,成为被人利用的一种工具。
那么Cisco ASA是如何实现僵尸流量过滤的呢?在ASA上启用BTF(Botnet Traffic Filter)特性,检测僵尸流量的活跃程度,丢弃被感染主机与攻击者的通讯流量。
注:DOS攻击:利用僵尸网络中的大量主机,发起对目标主机的攻击行为,使目标主机无法提供正常的服务,最常见的攻击有计算机网络带宽攻击和连通性攻击。
2.僵尸流量过滤工作流程
1. 当ASA设备上开启BTF功能后,ASA支持维护2个数据库:
动态数据库(SensorBase):存储全球范围已知的僵尸网络攻击源(Botnet control Server)信息,此数据通过互联网,从Cisco官方服务器定期自动更新下载。
静态数据库(Static):存放管理员添加的攻击源(Botnet control Server)和非攻击源信息,管理员以白名单(非攻击源的IP地址或域名)和黑名单(攻击源的IP地址或域名)的形式添加,可选配置。
2. 针对不同数据库信息,ASA工作流程分如下2种情况:
动态数据库中BTF处理流程.
被感染的内部主机被互联网恶意服务器控制,被感染主机与恶意服务器通讯,通过DNS Request 消息,查询恶意服务器的域名所对应的IP地址。当流量到达ASA,ASA会将解析域名与动态数据下载的域名做比较(ASA需开启DNS Snooping功能,读取DNS报文。),如果一致,将记录此域名。然后转发此DNS Request消息到DNS服务器。如果不一致,直接转发。
当ASA收到DNS Server 发送的DNS Reply消息时,将之前记录的域名与IP地址对应关系加入自己的DNS反向查询记录中。
当被感染内部主机通过IP地址对恶意服务器进行访问时,ASA将查询DNS反向查询记录,访问目的IP与DNS反向查询记录匹配,则记录此可以流量,或根据管理员配置,丢弃流量。
如下图所示:
恶意软件服务器为了隐蔽身份,通常使用域名提供给被感染主机访问,而使用非固定IP地址。所以BTF中推荐使用域名识别恶意软件服务器流量。
静态数据库中BTF处理流程.
管理员将可疑攻击源的主机名添加到ASA的黑名单中,ASA为所有添加的主机名执行一次DNS Request。
收到DNS Reply后将对应关系添加到ASA本地DNS主机缓存中。
当被感染主机对可疑攻击源IP发起连接时,ASA将数据包的目的IP与DNS主机缓存中IP进行比较,如果一致,产生相关日志,或者丢弃该数据包。
如下图所示:
3.僵尸流量地址类型
在Cisco ASA上开启BTF特性后,为了监控僵尸流量的活跃程度,识别有哪些活动的僵尸流量,将对如下4类IP地址做监控:
已知的恶意地址:这些地址在动态数据库和静态黑名单标识的黑名单中。
被允许的地址:这些地址在白名单中,当一个地址同时存在动态数据库和静态白名单时,静态白名单优先。
不明确地址:这些地址与多个域名相关联,但并非所有这些域名都在静态数据库黑名单中。则这些地址在灰名单中。
未知地址:此类地址不会出现在ASA的任何列表中。
4.僵尸流量的过滤动作
当开启BTF特性后,ASA会记录可疑流量,产生相关日志信息,管理员也可以设置为自动阻止可以流量通过,针对未知地址产生的流量,不会产生任何日志信息,针对已知的恶意地址,被允许的地址,不明确的地址产生的流量,ASA会产生按类型区分的日志信息。
二.部署僵尸流量过滤的准备
1. 部署BTF特性,必须具备以下方面
- 具备Botnet Traffic Filter(BTF)license许可。
- 具备DNS服务器:ASA用来做DNS解析。
- 开启DNS Snooping:使ASA可以识别受感染主机发送的DNS Reply消息,然后与本地做比对。
- 具备互联网连通性(应用与动态数据库的情况):使ASA可以通过互联网从Cisco 官方下载全球攻击源信息。
三.在Cisco ASA中部署僵尸流量过滤
1.实验拓扑
2.实验需求
如拓扑图所示,R3模拟合法主机,域名为yes.ha.com,R4模拟非法主机,域名为no.ha.com,都连接在ASA的outside方向,R2模拟内网主机,连接在防火墙的inside方向,R5为DNS服务器,同时ASA通过交换机连接到互联网。
激活Botnet Traffic Filter(BTF)功能,完成如下需求;
使ASA通过互联网同步动态数据库信息(此处暂不考虑NAT情况)。
添加“yes.ha.com"到静态数据库的白名单
添加”no.ha.com“到静态数据库的黑名单
实现inside路由器R2可以通过域名访问"yes.ha.com",不能通过域名访问"no.ha.com"
3.实验配置
- IP地址规划
设备 | 接口 | IP地址 |
---|---|---|
ASA | GigabitEthernet0/0 | 100.0.0.254/24 |
ASA | GigabitEthernet0/1 | 192.168.2.254/24 |
ASA | GigabitEthernet0/2 | 192.168.1.254/24 |
R2 | Ethernet 0/0 | 192.168.1.2/24 |
R3 | Ethernet 0/0 | 100.0.0.3/24 |
R4 | Ethernet 0/0 | 100.0.0.4/24 |
R5 | Ethernet 0/0 | 192.168.2.5/24 |
ASA,R2,R3,R4,DNS服务器的常规配置
ASA的IP地址,路由以及DNS服务器配置。
interface GigabitEthernet0/0
nameif outside
security-level 0
ip address 100.0.0.254 255.255.255.0
interface GigabitEthernet0/1
nameif DMZ
security-level 0
ip address 192.168.2.254 255.255.255.0
interface GigabitEthernet0/2
nameif inside
security-level 100
ip address 192.168.1.254 255.255.255.0
route outside 0 0 100.0.0.100
dns domain-lookup DMZ
dns server-group DefaultDNS
name-server 192.168.2.5
domain-name ha.com
- R2的IP地址,路由以及指定DNS服务器配置
interface Ethernet0/0
ip address 192.168.1.2 255.255.255.0
ip route 0.0.0.0 0.0.0.0 192.168.1.254
ip name-server 192.168.2.5
- R3的IP地址和路由和和Telnet配置
interface Ethernet0/0
ip address 100.0.0.3 255.255.255.0
ip route 192.168.1.0 255.255.255.0 100.0.0.254
line vty 0 4
password cisco
login
transport input telnet
- R4的IP地址,路由和Telnet配置
interface Ethernet0/0
ip address 100.0.0.4 255.255.255.0
ip route 192.168.1.0 255.255.255.0 100.0.0.254
line vty 0 4
password cisco
login
transport input telnet
- DNS Server IP地址和DNS服务器配置
interface Ethernet0/0
ip address 192.168.2.5 255.255.255.0
ip route 0.0.0.0 0.0.0.0 192.168.2.254
ip dns server
ip host yes.ha.com 100.0.0.3
ip host no.ha.com 100.0.0.4
- 测试inside设备到yes.ha.com和no.ha.com的联通性。
R2#telnet yes.ha.com
Translating "yes.ha.com"...domain server (192.168.2.5) [OK]
Trying yes.ha.com (100.0.0.3)... Open
User Access Verification
Password:
R2#telnet no.ha.com
Translating "no.ha.com"...domain server (192.168.2.5) [OK]
Trying yes.ha.com (100.0.0.4)... Open
User Access Verification
Password:
- 在ASA上配置动态数据库
dynamic-filter updater-client enable
dynamic-filter use-database
- 查看数据库同步情况
Ciscoasa(config)# show dynamic-filter updater-client
Dynamic Filter updater client is enabled
Updater server URL is https://update-manifests.ironport.com
Application name: threatcast, version: 1.0
Encrypted UDI:
0bb93985f42d941e50dc8f022350d1a8108dd6bf9e2c2bdcfbc3cc6f22d26e142449d642674f46a8cd6c2126e4a92e4e
Last update attempted at 00:18:21 UTC Feb 14 2019,
with result: Downloaded file successfully
Next update is in 00:52:07
Database file version is '1550118168' fetched at 00:18:21 UTC Feb 14 2019, size: 2097151
- 在ASA上配置静态数据库中的白名单/黑名单(可选),开启BTF监控,当监控接口收到可疑流量,则Drop该流量。
dynamic-filter whitelist
name yes.ha.com
dynamic-filter blacklist
name no.ha.com
dynamic-filter enable interface inside
dynamic-filter drop blacklist interface inside
- 在ASA上开启DNS Snooping功能,在默认的policy中添加对DNS报文的监测功能。
policy-map global_policy
class inspection_default
inspect dns migrated_dns_map_1 dynamic-filter-snoop
4.实验效果验证
- 从inside方向分别telnet yes.ha.com和no.ha.com查看效果。
R2#telnet yes.ha.com
Translating "yes.ha.com"...domain server (192.168.2.5) [OK]
Trying yes.ha.com (100.0.0.3)... Open
User Access Verification
Password:
R2#telnet no.ha.com
Translating "no.ha.com"...domain server (192.168.2.5) [OK]
Trying no.ha.com (100.0.0.4)...
% Connection refused by remote host
inside#
- 在ASA上查看被限制访问内网主机,有3个被丢弃的报文。
ciscoasa# show dynamic-filter reports infected-hosts all
Total 1 infected-hosts in buffer
Host (interface) Latest malicious conn time, filter action Conn logged, dropped
%=======================================================================================================
**192.168.1.2 (inside) ** 09:55:42 UTC Feb 14 2019, dropped 3 3
Malware-sites connected to (not ordered)
Site Latest conn port, time, filter action Conn logged, dropped Threat-level Category
%-------------------------------------------------------------------------------------------------------
100.0.0.4 (no.ha.com) 23, 09:55:42 UTC Feb 14 2019, dropped ** 3 ** 3 very-high admin-added
%==============================================================================
Last clearing of the infected-hosts report: Never