Netflow v9 Template造成ElastiFlow流量统计异常的处理

之前本站曾经介绍过ElastiFlow这个流量分析工具对网络工程师的帮助。最近在一个大型网络环境中部署了一套后,发现Netflow Version 9的模板机制带来的“ 困扰 ”,在这里做一个分享,避免后来者踩坑。

首先是放上异常截图:

可以看到Bytes和Packets都异常大(PB, EB, ZB)。而在刚部署完系统,收集设备还比较少的时候,没有出现这个问题。而当导入日志的设备逐渐增多,日志统计就彻底没法看了。

首先抓包分析。抓下来发现无可读性…Google一番后根据此篇文章解决:How to view NetFlow in WireShark

然后又发现抓下来的包,no template found,又根据这两篇解决:Wireshark needs templates to decipher Cisco NetFlow v9Netflow V9

最后终于确认原始数据包里Octets都是正常的。于是继续搜索社区,终于找到这里这里还有这里,原来还是Netflow v9 Template的问题:

确认原因后就比较好解决了,由于Logstash官方不愿意merge ElastiFlow作者的UDP代码,因此我为了省心,直接又多起了几个Logstash实例给不同的Netflow v9设备(主要是Cisco ASA防火墙)。等未来有时间了再来测试一下如何优化。

 

 

基于 BPF 技术的 Cilium 项目简介

什么是 Cilium

Cilium 是一个基于 BPF (Berkeley Packet Filter)的开源高性能容器网络方案,用于透明地保护在 Docker 和 Kubernetes 等容器平台部署的应用程序服务之间的网络连接。

Cilium 一年多前才推出,社区却相当活跃,成员有来自 Google、Facebook、Netflix、Red Hat 等公司的开 发人员(为什么是这几家大厂,我们后文详解),前几天还刚刚发布了 1.6 版本,据称可以 100%替换 kube-proxy。总之越来越多的人关注到这一项目。

为什么需要 Cilium

现代数据中心系统已变迁至“微服务”架构,大型应用程序被分成小的独立服务,这些服务使用 HTTP 等轻量级协议通过 API 相互通信。微服务往往是高度动态的:随着负载的变化,上层应用扩展或收缩伴 随底层容器的启动或销毁,这整个过程则是持续交付的一部分。

这一高度动态的变化,对于确保微服务之间的连通性提出了挑战。传统的 Linux 网络安全方法(如 iptables)通过 IP 地址和端口进行过滤,但容器不稳定的生命周期导致 IP 地址在微服务环境中难以跟 踪。同时,负载平衡策略和访问控制列表增长迅速,某些案例中甚至达到数十万条规则的规模。常用的 服务端口(如 HTTP 的 TCP 80)无法根据安全要求区分应用流量,因为这些端口用于跨服务的各种消息。

缺乏准确的可见性也是一个问题,因为作为传统系统识别标记的 IP 地址,在微服务架构中可能仅仅存在几秒钟。

Cilium 主要功能

Cilium 可以透明地插入安全可见性和策略强制性。相对于传统系统的 IP 地址,它基于 service/pod/container 标识,并在应用层(如 HTTP)过滤。

其重要功能特性包括:

  • 安全上,支持 L3/L4/L7 安全策略,这些策略按照使用方法又可以分为:
    • 基于应用协议(允许特定 HTTP 请求,或允许特定 service 生成或消费特定的 Kafka topic)
    • 基于身份(Identity)
    • 基于标签
    • 基于 CIDR
  • 网络上,支持 Layer 3 三层网络,如:
    • 覆盖网络(Overlay),包括 VXLAN 和 GENEVE
    • 原生路由网络(Native Routing),包括原生的 IPv6 网络和云服务商的高级网络路由
    • 负载均衡
    • 便利的监控和排错能力

从 BPF 到 Cilium

Cillium 基于 BPF,官网称其为”a new Linux kernel technology”,其实不然。

BPF 的设计,最早可以追溯到 1992 年的一篇论文:The BSD Packet Filter: A New Architecture for User-level Packet Capture。由于最初版本的 BPF 是实现于 BSD 系统的,于是在论文中作者称之为”BSD Packet Filter”。

知道 BPF 的人或许不多,但是基于 BPF 技术(libpcap)的两大抓包工具 tcpdump 和 Wireshark,知道的 人就很多了,这两个都是网络工程师和系统运维的必备工具。

BPF 是 Linux 内核中的一个高性能沙盒(sandbox)虚拟机。Linux 内核本质上是事件驱动的,BPF 提供了

在事件发生时运行指定的 BPF 程序的能力(可编程)。例如,我们可以在以下事件发生时运行我们的 BPF 程序:

  • 应用发起 read/write/connect 等系统调用
  • TCP 发生重传
  • 网络包达到网卡

“内核级”三个字往往还意味着高性能,官方性能测试比较如下图:

注:Cilium 实际使用的是 eBPF(extended BPF),它是早期的 BPF 一路技术演进而来。

除了上面说的 tcpdump 和 Wireshark,很多大公司也在各自场景中使用或融合了 BPF 技术:

BPF 牵涉到非常底层的技术,那么必须得了解所有这些细节才能使用 BPF 吗?有了 Cilium 后,我们就可 以大胆地说 No 了。这也是项目组创建 Cilium 的原因。

Cilium 项目非常年轻,大多数运维团队可能不会现阶段就将生产环境中的 kube-proxy 替换掉。但如果想 通过 Cilium 来研究 BPF 的技术和理念,还是非常不错的。哪一天几大容器平台直接把它给整合进去了也 说不定。就像因为性能问题,Kubernetes 的 Service 从 1.9 版本起将 iptables 换成了 LVS。

期待 Cilium 项目能越来越完美!

 1,435 total views,  2 views today

两款国产商业VDI桌面虚拟化方案的简单评估报告

项目需求

  • 降低客户端电脑管理成本
  • 保障数据安全,防止数据泄密及丢失
  • 提升IT运维水准,降低故障修复时间

VDI介绍

广义的VDI(虚拟桌面基础架构)技术是从应用虚拟化发展延伸而来的,后来出现了桌面虚拟化等多种技术细分。和桌面虚拟化把整个桌面远程交付给用户不同,应用虚拟化是将特定应用远程交付给用户,随着网络带宽的改善和移动化需求的普及,桌面虚拟化逐渐普及开来,取代了应用虚拟化成为这一技术的“代言人”。

和所有技术一样,其存在必然有其合理性。本质上,桌面虚拟化交付给最终用户的只是一个画面,应用程序的安装、部署、运行以及管理实际都在数据中心的服务器上进行。前端用户鼠标的点击和移动、键盘的敲击都要传递到服务器处理,处理结果再返回给用户。

VDI的技术特征决定了其如下价值,包括节省用户桌面部署和维护成本、集中管控更安全、允许任意设备任意地点接入更灵活等。比如,由于整个桌面都部署和运行在数据中心,因而其管理(比如打补丁)就非常简单,在服务器可以一次完成百千台桌面的更新,新应用的发布也只需在服务器上几次点击而已,根本不用在每个用户终端上进行操作。这就极大地降低了管理成本。还有,VDI对用户终端的计算能力要求非常低(此时终端几乎只是其图形显示作用),这样只需配备ARM架构的瘦客户机甚至一个浏览器就可以运行任何复杂、计算密集型的应用软件(如3D设计)。基于这个特性,可以利用旧的电脑作为终端从而降低成本,同时还可以很好地支持远程办公或移动办公。

成本效益分析

在VDI概念普及的早期,由于节省成本更容易被用户接受,所以很多厂商常常不知觉地强调这项技术在节约成本上的作用。不过,今天对于这一认识已经有了很大改变。

VDI省的是OPEX,而不是CAPEX。VDI长期来看能简化管理,降低TCO,但在前期因为需要对IT架构进行改造,需要新增服务器和存储设备,这会增加投资:

 传统PCVDI方案
可量化的成本单机购置成本3000元(不含显示器)每桌面平摊购置成本3000-8000元
使用电力较多(单机功耗300W左右)节省电力(ARM瘦客户机在10W左右)
需要较多维修人力(定期硬件维护、操作系统安装、补丁分发、应用软件分发)节省人力,1人可管理上千台虚拟桌面
无法量化的成本分散管理(现场维修)集中管理(控制台远程维护)
硬盘故障后数据易丢失,需使用者自行备份由RAID技术或副本功能保护;有统一的备份机制
若系统中毒或故障,需要等候维修数小时;个人资料易丢失立即进行系统还原,等候数分钟即可恢复工作;个人资料不影响
更换新机或新系统,资料需迁移更换新系统(模板),资料无需迁移
CPU几乎无法升级,内存升级需采购可适时增加虚拟CPU或内存
(通常)自由安装软件可管控软件安装
USB、硬盘不易管制USB可设置权限;硬盘位于机房服务器内
PC机占用较大个人空间瘦客户机体积小(更轻松的人机环境与使用感受,提升公司形象)
电磁辐射、废气污染极少的电磁辐射和废气污染
办公室以外无法访问使用云端桌面,可提供外部访问
采购流程复杂,交付时间长一次采购,(一定时间内)长期使用;快速交付,从模板创建一台新桌面仅需数秒钟

综上,本次VDI方案评估,我们主要关注以下几点:

  1. 价格比PC机略低或持平
  2. 部署比PC机简单
  3. 运维比PC机高效
  4. 用户体验与PC机持平
  5. 安全与可用性

解决方案

目前VDI的主流解决方案有两大类,一类是商业解决方案,一类是开源解决方案。此次项目分别针对这两种方案进行了测试,商业方案选择的是深信服aDesk桌面云产品以及华为FusionAccess桌面云产品,开源方案选择的是Ravada桌面云项目。除了这两种方案外,项目组有通过微软的HyperV自行搭建了一套免费的VDI系统进行测试,下面将对这4种方案进行逐一介绍。

方案一:深信服

官网:http://www.sangfor.com.cn/product/it-yun-a-desk.html

深信服aDesk桌面云方案,是基于融合架构的新型桌面模式,通过深度整合服务器虚拟化、桌面虚拟化及存储虚拟化,只需桌面云一体机和云终端两种设备,即可实现云平台的快速交付,为用户提供操作体验及软硬件兼容性媲美PC,更安全、更高效的云桌面。aDesk基于KVM并通过自研的SRAP协议进行虚拟桌面交付。

方案二:HyperV

HyperV桌面云方案,是项目组基于微软的Hyper-V Server 2016搭建的免费VDI平台。由于Hyper-V Server 2016只能提供基础的虚拟机管理服务,不能满足VDI的日常使用及管理需求,所以进阶功能都是由项目组通过自行编写脚本及搭建web站点来实现,功能上不是非常完善,用户体验、稳定性以及可管理性也远不及商业方案。

方案三:Ravada

官网:https://ravada.upc.edu/

Ravada桌面云方案,是一个国外的基于KVM的开源桌面云项目,此项目只能提供基础的虚拟机创建与访问,功能模块较为简单,无法满足VDI的使用及管理需求。

方案四:华为

官网:https://e.huawei.com/cn/solutions/cloud-computing/desktop-cloud

华为FusionAccess桌面云是基于华为云平台的一种虚拟桌面应用。通过在云平台上部署桌面云软件,终端用户可通过瘦客户端或者其他任何与网络相连的设备来访问跨平台应用程序及整个桌面。FusionAccess桌面云以安全可靠、卓越体验及敏捷高效为特点,为用户提供成熟的解决方案。

功能及模块对比

 华为深信服HyperVRavada
管理控制台×
仪表板××
分布式虚拟存储选配××
SSD缓存优化需有虚拟分布式存储或共享存储××
链克隆技术×
内存页整合××
双屏显示××
屏幕水印××
移动办公××
广域网优化××
蓝牙耳机××
USB摄像头××
高拍仪××
虚拟机管理可批量创建虚拟机
可批量加域
可批量更新虚拟机
可创建开关机计划
可批量创建虚拟机
可批量加域
可批量更新虚拟机
可创建开关机计划
只能通过脚本在单台物理机上批量创建虚拟机可批量创建虚拟机
虚拟机高可用实体机故障,虚拟机可自动切换到群集中的其他主机(需有虚拟分布式存储或共享存储)实体机故障,虚拟机可自动切换到群集中的其他主机虚拟机无法自动切换虚拟机无法自动切换
虚拟机备份与恢复可创建批量备份任务(需选装eBackUp模块)可创建批量备份任务无法创建备份任务无法创建备份任务
自动化调度动态资源调度,根据主机的负载,自动迁移虚机(需有虚拟分布式存储或共享存储)×××
电源管理自动化根据主机的资源利用率,自动上线或下线主机以节省电力资源,下线前自动迁出虚机,上线后自动迁入虚机(需有虚拟分布式存储或共享存储)×××
虚拟化防毒提供防病毒接口,与防毒厂商对接,为虚拟化平台提供统一的防病毒服务×××
虚拟机资源QoS可以对虚拟机设定资源的使用上限,包括CPU、内存、网络、磁盘IOPS等×××
统计报表虚拟机性能、状态统计
用户使用信息统计
×××
容灾备份城域双活容灾
阵列复制容灾
两地三中心容灾
FusionStorage Block复制容灾
(需有共享存储)
×××
客户机管理可批量管理华为瘦客户机(需选装TCM模块) 可批量管理深信服客户机及PC客户端无法管理客户机无法管理客户机
用户管理可针对虚拟机组批量设定策略
可以通过与AD集成,设定相应群组或OU中的user拥有登录VDI虚机权限
可针对用户组批量设定策略
可针对特定用户设定临时权限
可以在系统中创建独立账户,也可以通过与AD集成,设定相应群组或OU中的user拥有登录VDI虚机权限
只能通过AD组策略批量设定用户策略无法设定用户策略
告警通知可全方位监控系统状态可全方位监控系统状态只能通过Zabbix监控主机部分状态,无法全方位监控系统状态只能通过Zabbix监控主机部分状态,无法全方位监控系统状态

使用体验

 华为深信服HyperVRavada
外设支持★★★★★★★★★★★★★★★
带宽优化★★★★★★★★★★★★★
传输安全性★★★★★★★★★★★★★★★★
画面流畅度★★★★★★★★★★★★★★
策略精细度★★★★★★★★★★★★
管理便利度★★★★★★★★★★★★
部署简易度★★★★★★★★★★★★★★

成本对比

注:不同折旧模型下价格差异较大,仅供参考。下表普通PC和服务器按5年使用年限、瘦客户机按8年年限。

具体金额略。大致4000-5000元一个客户端,含硬件和软件授权成本。

技术外的考虑

除了技术方面的替代性,以下几点也需纳入考虑:

  1. 使用VDI方案,意味着用户的所有数据全部到服务器上,同时代表IT部门要开始对这些用户数据负责,数据安全(特别是数据的遗失)如何防范?
  2. 使用VDI方案,意味着IT部门自行制造一个单点故障风险。当然,现在VDI解决方案都有灾备、数据多副本等机制,但是整体的虚拟化软件如果崩溃(还真发生过这种情况)呢?

在信息化办公全面深化的现在,这些问题一旦发生,对于IT部门是致命的。

附:广域网带宽需求模型示例

 1,751 total views,  3 views today

几款网络拓扑自动生成工具的比较

最近需要接手一个比较复杂的办公网,整个Intranet最大时有近万人的规模。但是以往文档交接并不完善。于是就考虑找一款合适的工具,来爬一下目前网络拓扑大致是什么样的。

国内主流监控工具之一的Zabbix有Maps功能,但是必须手动编辑,不适合这次的需求。笔者早期曾用过的OpenNMS可以自动生成网络图,但是同样作为全功能的NMS,部署有点“重”。就又找了几款这几年发展不错或新出的独立网络拓扑生成工具,来比较一下:

SolarWinds的工具一贯都在水准以上,特别是NetFlow Traffic Analyzer (NTA)这款流量分析器,是笔者目前所知唯一官方支持华为NetStream协议的工具。可惜就是收费,先放着看后面有没更好的。

NetXMS部署困难,捣鼓一上午在我的Ubuntu测试机上还没跑起来…且不止我一个人这么觉得。也放在一边。

NeDi和Netdisco在reddit上的评价都不错,于是就一起测试了一下。结论是NeDi明显好出一截。无论是设备信息的详尽程度和对网络邻居图的思考维度,都要比Netdisco更专业。尤其是Netdisco在网络图上思考维度的缺失,导致其在大型网络下的这一功能几乎不可用(后文配图说明)。

Inventory列表两者差不多:

设备详情:

网络拓扑图(邻居图):

可以看到,NeDi是通过Range来控制拓扑层级的,而Netdisco只有Only Neighbors和All Devices可选,网络规模一大,可读性就降低了。

再加上Nedi拥有更多的显示项开关(IP、接口、带宽等),同样也支持D3js的图形拖拽操作,还自带一定的监控功能,性能也更快一些。综合来看,Nedi的完成度是最高的。

大家如果有更好的工具推荐,也欢迎留言~

 2,805 total views,  4 views today

三大新兴安全架构:零信任、ATT&CK、自适应安全,哪个最难落地?

前言

传统的基于边界的网络安全架构通过防火墙、WAF、IPS等边界安全产品,对企业网络边界进行防护。它的核心思想是分区、分层(纵深防御)。边界模型专注防御边界,将“坏人”挡在外面,假定已经在边界内的任何事物都不会造成威胁,因而边界内部基本畅通无阻。

分层防御直观易懂,各企业在其上长期且持续地投入了大量的资源。但是,近年来网络攻击手段不断进化,黑客组织更趋专业化和功利化,连Google、RSA这样的科技公司或专业安全公司都会中招。而移动办公和云服务的增长,也令越来越多的企业难以确立起自己的网络边界。

于是,三种新的安全架构——零信任模型 (Forrester’s Zero Trust Model)、ATT&CK框架 (MITRE’s Adversarial Tactics, Techniques & Common Knowledge Framework)、自适应安全 (Gartner’s Adaptive Security Architecture 3.0, CARTA)——进入了安全人员的视野,甚至部分架构还有了成功落地的明星项目 (Google’s BeyondCorp)。

那这三个模型,哪个最容易上手呢?

零信任模型

2010年提出的零信任模型的核心思想,是默认情况下不应该信任网络内部和外部的任何人/设备/系统,需要基于认证和授权重构访问控制的信任基础。诸如IP地址、主机、地理位置、所处网络等均不能作为可信的凭证。

而以Google的实践为例(11-17年,至少花了6年),其核心理念是以下三点:

  1. 发起连接时所在的网络不能决定你可以访问的服务
  2. 服务访问权限的授予以我们对你和你的设备的了解为基础
  3. 对服务的访问必须全部通过身份验证,获得授权并经过加密

深究细节的话,Google和Forrester的模型会有一些差别,但核心思想是一致的。而且其重要组件访问代理 (Access Proxy)与零信任模型中的隔离网关 (Segmentation Gateway),拓扑位置和作用也基本对位。

以笔者角度来看,零信任模型中的部分做法,还是比较好实现的。比如虽然大部分企业使用的Windows AD域环境天然地与零信任模型理念不合(不单单是只能固定密码),但我们仍然可以对Windows认证体系进行加固和改造,极大提高其安全性。有兴趣的朋友可以了解一下pGina这款开源工具,可以与第三方RADIUS服务集成,实现双因子认证。

而在设备端,也可以部署像Cisco ISE这样的网络接入控制管理产品,来限制只有公司配发的设备才能接入网络。当然拦截的位置和BeyondCorp不太一样,实现方式也不同(Google为每台设备签发特定的设备证书),这会影响事后审计的难度。

访问代理 (Access Proxy)是比较难实现的。或者说如果改动,技术上有解,但可能会对日常工作方式和使用体验有较大的冲击。对于企业来说,也许只能一点一点迁移。

ATT&CK框架

2013年由安全研究机构MITRE推出的ATT&CK模型,它是根据真实的观察数据来描述和分类对抗行为。ATT&CK将已知攻击者行为转换为结构化列表,将这些已知的行为汇总成战术(Tactics)、技术(Techniques)和流程(Procedures),并通过矩阵以及结构化威胁信息表达式(STIX)、指标信息的可信自动化交换(TAXII)来表示。

ATT&CK模型站在攻击者的视角,比从纯粹的防御角度更容易理解上下文中的行动和潜在对策。

ATT&CK框架提供了对抗行动和信息之间的关系和依存关系,防御者可以追踪攻击者采取每项行动的动机,并了解这些行动和依存关系。拥有了这些信息之后,安全人员的工作从寻找发生了什么事情,转变为按照ATT&CK框架,将防御策略与攻击者的手册对比,预测会发生什么事情。

使用ATT&CK框架来提升检测能力的首要步骤就是对数据源进行盘点。ATT&CK框架已定义了大约50种不同类型的数据源。对于每个数据源,企业需要对数据质量、数量内容等方面进行管理。可以使用ATT&CK导航工具,将数据源映射之后,进行可视化展示。

ATT&CK框架中有300多种技术,并且会随着新技术的推出而逐渐增加。而清点数据源对不少企业也是一项耗时的工作。笔者觉得有志于此的企业在初期可以先了解并熟悉ATT&CK框架中的哪些技术(攻击方法),减少思维盲点并梳理攻击特征,然后将所得应用在现有的安全产品和监控手段上。等将来安全队伍扩大后,再图精进。

自适应安全 3.0 (CARTA)

自适应安全框架是Gartner在2014年提出的面向下一代的安全体系框架,用于应对云计算与物联网快速发展所带来的新型安全形势,并分别在17、18年发布了2.0和3.0版本。它从预测、防御、检测、响应四个维度,强调安全防护是一个持续处理的、循环的过程,细粒度、多角度、持续化的对安全威胁进行实时动态分析,自动适应不断变化的网络和威胁环境,并不断优化自身的安全防御机制。

Gartner咨询公司的角色定位,决定了它提出的概念往往是比较抽象、比较”上层”的。它的这套框架理念,乍一看似乎专业的安全团队或多或少都会融入到日常的工作中。比较显眼的关键字,可能就是retrospective analysis(回溯分析)、anticipate threats/attacks(预测)和baseline system and security posture(安全基线)。

上述几个概念,国内外都有众多对应的产品,有些还是这两年的市场热点,比如UEBA、SIEM、EDR、NDR等等。总之考虑到Gartner的市场地位,业内还是挺认可其提出的概念的。

结论

如果让笔者来选择的话,

  1. 零信任模型是基础,是需要优先实施的改进项(即使只有部分实现)
  2. ATT&CK中的攻击方式需要熟悉,所关联的资产至少要知道位于逻辑或物理的哪个位置,以及数据如何流动
  3. 进一步盘点系统日志和网络流量监控的覆盖程度,尽可能部署全流量捕获/分析系统,提供对安全事件的分析和回溯能力
  4. 引入趋势分析、机器学习、大数据&AI等能力,提供对威胁预测和安全基线感知的能力

安全上笔者信奉适合的才是最好的,安全架构一定要符合公司目前的体量。这样看来,大家觉得哪一个难度最大呢?

 2,023 total views,  2 views today