日志审计:多账号下VPC Flow日志的采集与监控

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: VPC流日志的采集和监控在日志审计下的功能介绍及最佳实践

1.背景

1.1 日志审计

日志审计服务App是阿里云日志服务SLS(Simple Log Service)旗下的一款产品,它在继承了日志服务SLS的全部功能以外,还有强大的多账号管理及跨地域采集功能,支持通过资源目录(Resource Directory)的方式有组织性地统一地管理和记录多账号下云产品实例的日志信息,可以便于用户进行统一分析,问题排查,回溯复盘等操作。日志审计APP可以自动化、中心化地采集云产品日志并进行审计,其服务覆盖基础(操作审计、k8s)、存储(OSS、NAS)、网络(SLB、API网关、VPC)、数据库(RDS、PolarDB-X1.0,PolarDB)、安全(WAF、DDOS、SAS、CPS)等产品,还支持审计所需的存储、查询及信息汇总等功能。

1.2 VPC Flow 日志

VPC提供流日志功能,可以记录VPC网络中弹性网卡ENI(Elastic Network Interface)传入和传出的流量信息,帮助您检查访问控制规则、监控网络流量和排查网络故障。对于通过VPC 流日志公测申请的账号,日志审计默认对VPC创建流日志,则会捕获VPC中所有弹性网卡的流量,包括在开启流日志功能后新建的弹性网卡。流日志功能捕获的流量信息会以流日志记录的方式写入日志服务中。其日志字段主要内容参见VPC流日志功能,日志审计在保留全部日志字段的基础上,还富化了一个region字段,用以表示VPC实例所属地域。

2 开启VPC Flow 日志采集

2.1. 使用限制

流日志功能正在公测中,您可以使用阿里云账号开启公测申请,开启后会产生流量和日志存储费用,费用详情请参见流日志功能计费

图1 开启VPC 流日志采集

对于VPC Flow日志而言,并不是VPC内所有的ECS实例都支持捕获流日志信息,其中不支持捕获Flow日志信息的ECS实例族如下:

ecs.c1、ecs.c2、ecs.c4、ecs.ce4、ecs.cm4、ecs.d1、ecs.e3、ecs.e4、ecs.ga1、ecs.gn4、ecs.gn5、ecs.i1、ecs.m1、ecs.m2、ecs.mn4、ecs.n1、ecs.n2、ecs.n4、ecs.s1、ecs.s2、ecs.s3、ecs.se1、ecs.sn1、ecs.sn2、ecs.t1、ecs.xn4

如果弹性网卡绑定的ECS实例属于以上实例规格族的实例时,亦不支持开启该弹性网卡的流日志捕获。

2.2 多账号及跨域、自动采集能力

2.2.1 多账号汇总

日志审计对资源目录和自定义鉴权的支持使得其天然具备同时采集多账号下的VPC流日志信息的能力,下图是同时采集多个账号下VPC流日志的一个示例。

图2 日志审计采集VPC 流日志的多账号能力

2.2.2 跨域与中心化

在日志审计下开启VPC流日志采集之后,如果开启中心化,日志审计将自动将多账号、多地域下的流日志通过数据加工汇总到是sls下名为slsaudit-center-${center_account}-${region} 的project的vpc_log中。如果不开启中心化功能,则对于不同地域的VPC流日志将自动采集到对应region的对应project的slsaudit-region-${center_account}-${region}的vpc_log中,下图是一个VPC流日志跨域采集汇总的一个示例。

中心化选择

VPC实例所属地域A

审计中心所属地域C

区域A是否有日志

是否创建

数据加工

中心是否有日志

日志存储时间

开启中心化

A与C同地域

区域A有

不会创建

中心C有

取决中心化TTL

A与C不同地域

会创建

关闭中心化

A与C同地域

不会创建

中心C无

取决区域化TTL

A与C不同地域

表1 中心化和区域化区别

图3 日志审计采集VPC 流日志的跨地域功能

开启中心化后,日志审计在slsaudit-center-${center_account}-${region}下会创建3个VPC相关的内置报表,分别是VPC流日志概览、VPC流日志Reject中心、VPC流日志Traffic中心。如果关闭中心化,在日志审计仪表盘主页面对于每个有VPC实例的地域将会分别创建以上3个内置报表,如下图所示。

图4 左图中心化仪表盘Tree,右图关闭中心化仪表盘Tree

2.2.3 自动采集能力

日志审计开启VPC流日志采集功能之后,对于新创建的VPC实例,将会自动自动对齐开通流日志功能,并对满足条件的VPC下的所有ENI的流量信息会以流日志记录的方式写入日志审计。

2.3 精细化日志采集粒度

日志审计支持对VPC实例进行精细化采集粒度控制,用户可以通过账号、地域、实例ID、实例名、标签等属性进行精准采集设置。具体的采集策略可以参考日志审计采集策略一节。

图5 配置精准VPCFLowlog采集策略

云产品

采集对象

属性

说明

VPC

VPC实例

账号:account.id

VPC实例所属的阿里云账号ID

地域:region

VPC实例所属的地域,例如:cn-shanghai

实例ID:instance.id

VPC实例ID

实例名:instance.name

VPC实例名

标签:tag.*

用户自定义的标签名。

tag.*中的星号(*)替换为您自定义的标签名,

例如tag.level=high, tag.env=test

表2 采集策略说明

下面将进行几个简单的采集策略示例帮助用户理解如何进行精细化VPC流日志的采集。


# --------------example 1 ----------------

#only scan cn region

keep region == "cn-*"


# accept by default

accept "*"



#-------------example 2-------------------

# accept all high level instances and if not only accept vpc that name starts with test


accept tag.level == "high"


# only scan vpc name start with “test”

keep instance.name == "test*"


# accept by default

accept "*"

3.报表分析与展示

日志审计VPC流日志内置3种报表,一个是VPC Flow日志概览,一个是VPC Reject中心,一个是VPC Traffic中心。

3.1 VPC Flow 日志概览


图6 VPC流日志概览-Action统计、Accept和Reject统计、ENI详情等

图7 VPC流日志概览-Top字节数的源地址、目的地址、每分钟Action次数等

图8 VPC流日志概览-Action源地址运营商分布、Top目标端口、各协议的每分钟包数等

3.2 VPC Reject 中心

图9 Reject 信息汇总

图10 Reject Action详情

3.2 VPC Traffic 中心

图11 Traffic信息概览

图12 Traffic 每分钟字节数及各ENI分钟字节数和包数

4.最佳实践

4.1 VPC内ECS互相访问流量查看

本章节以下图场景为例,例如ECS1和ECS3是同一个VPC(vpc-bp1vh***********9l3e)内不同交换机下的2台云服务器。ECS1(172.16.2.*)和ECS3(172.16.1.*)之间存在一定的的互访流量,假设用户想要查看两者之间的流量随时间变化的详情,可以使用如下sql语句。

图13 VPC内不同交换机下ECS互相访问示意图


eni-id: eni-bp********8ze and dstaddr: "172.16.1.**" | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, dstaddr,sum(bytes*8/("end"-start)) as bandwidth group by time,dstaddr order by time asc limit 100


该SQL语句定义了时间time、带宽bandwidth(bps)、目的地址dstaddr三个参数,time和dstaddr为聚合列,并按time从小到大排序,取100条日志。其中参数eni-id的值为ECS1的弹性网卡实例ID,dstaddr的值为ECS3的私网IP地址。

图14 VPC内ECS1访问ECS3的流量带宽变化统计图

4.2 排查公网NAT网关中不同ECS的流量变化

首先登录公网NAT网关,创建NAT网关,在该网关下选择已经创建的VPC( vpc-bp1vh***********9l3e),该VPC下已经创建了交换机vsw-bp1s*******00mj(172.16.2.0/24)和vsw-bp19******kov2(172.16.1.0/24)

在该NAT网关下新购弹性公网IP (114.**.**.**7)并绑定,在公网NAT网关页面,找到刚才创建的NAT网关,并设置SNAT,然后创建SNAT条目,配置条目粒度为交换机粒度,选中vsw-bp1s*******00mj(172.16.2.0/24)和vsw-bp19******kov2(172.16.1.0/24),然后在公网IP地址列表选择刚刚创建的EIP(114.**.**.**7)。

图 15 公网NAT连接示意图


dstaddr: "114.**.**.**7" and action: ACCEPT and srcaddr: 172.16.1.* | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, srcaddr,sum(bytes*8/("end"-start)) as bandwidth group by time,srcaddr order by time asc limit 1000


输入以上SQL语句对日志进行聚合和排列,查看去往某一特定EIP地址的不同ECS实例的流量。其中dstaddr是指刚刚创建的公网EIP地址,srcaddr是指以上ECS几个实例的私网网段,生成流图时x轴为time,y轴为bandwidth,聚合列为srcaddr。其结果如下图所示:

图16 一小时内访问公网EIP的不同ECS源IP的流量示意图


4.3 跨区域跨VPC访问流量查看

如下图所示,首先登录云企业网控制台创建地域为上海的一个云企业网CEN实例(cen-o6lf*****f3kh),然后在此CEN实例下加载网络实例,选择同账号下分别位于青岛和上海的两个VPC实例进行加载。此时系统会自动创建的SLR角色AliyunServiceRoleForCEN,该角色允许转发路由器在目标VPC实例上创建ENI,作为VPC发往转发路由器的流量入口。

图17 CEN下加载不同地域VPC实例示例

图18 同CEN下不同VPC实例之间互相访问示意图


输入以下SQL进行查询, 其中vpc-uf6*****93kf是上海所在的VPC实例,srcaddr是青岛vpc-m5e*****ngyd实例下的交换机挂载的ECS实例i-m5eh******70mn的网段(172.31.*.*)


vpc-id: vpc-uf******93kf  and srcaddr : "172.31.*.*" and action: ACCEPT | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, sum(bytes*8/("end"-start)) as bandwidth from (select * from log where "end"!=start) group by time order by time asc limit 10


图18 同CEN下不同区域不同VPC实例下的ECS互相访问流量查看示例

5.参考链接

日志审计服务 https://help.aliyun.com/document_detail/164065.html

日志服务SLS https://help.aliyun.com/document_detail/48869.html

资源目录 https://help.aliyun.com/document_detail/94475.html

VPC流日志 https://help.aliyun.com/document_detail/127150.html

开启流日志公测申请 https://page.aliyun.com/form/act1463681010/index.htm

流日志功能计费 https://help.aliyun.com/document_detail/127150.html#title-cdd-pr7-r8m

VPC流日志字段 https://help.aliyun.com/document_detail/127150.html#title-wat-lmx-z21

日志审计采集策略 https://help.aliyun.com/document_detail/170316.html

公网NAT网关https://vpc.console.aliyun.com/nat/cn-hangzhou/nats

云企业网CEN https://cen.console.aliyun.com/cen/list?spm=a2c4g.11186623.0.0.7503558d6gRqA5

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
存储 Prometheus 监控
程序开发中的监控和日志分析
监控和日志分析在软件开发中至关重要,它们帮助实时了解应用状态、及时发现并解决问题。监控确保系统稳定运行,优化性能和资源;日志分析则助于追踪问题根源、监测用户行为并提供安全审计。利用如Prometheus、ELK Stack等工具可实现高效监控与日志管理,从而优化应用性能和用户体验。
104 0
|
6天前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
2月前
|
存储 运维 监控
监控与日志管理:保障系统稳定运行与高效运维的基石
【8月更文挑战第16天】监控与日志管理是保障系统稳定运行和高效运维的基石。它们不仅能够帮助企业及时发现并解决问题,还能够为性能调优、资源优化和业务决策提供有力支持。因此,在构建系统架构时,企业应高度重视监控与日志管理的规划和实施,确保它们能够充分发挥作用,为企业的发展保驾护航。同时,随着技术的不断进步和应用场景的不断拓展,监控与日志管理也将持续演进和创新,为企业带来更多的价值和便利。
|
1月前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
66 0
|
2月前
|
SQL 数据库 Java
Hibernate 日志记录竟藏着这些秘密?快来一探究竟,解锁调试与监控最佳实践
【8月更文挑战第31天】在软件开发中,日志记录对调试和监控至关重要。使用持久化框架 Hibernate 时,合理配置日志可帮助理解其内部机制并优化性能。首先,需选择合适的日志框架,如 Log4j 或 Logback,并配置日志级别;理解 Hibernate 的多级日志,如 DEBUG 和 ERROR,以适应不同开发阶段需求;利用 Hibernate 统计功能监测数据库交互情况;记录自定义日志以跟踪业务逻辑;定期审查和清理日志避免占用过多磁盘空间。综上,有效日志记录能显著提升 Hibernate 应用的性能和稳定性。
38 0
|
2月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
35 0
|
2月前
|
存储 JSON 监控
FastAPI日志之谜:如何揭开Web应用监控与调试的面纱?
【8月更文挑战第31天】在现代Web开发中,日志记录对于监控应用状态、诊断问题和了解用户行为至关重要。FastAPI框架提供了强大的日志功能,使开发者能轻松集成日志记录。本文将详细介绍如何在FastAPI中设置和利用日志,包括基础配置、请求响应日志、错误处理和结构化日志等内容,帮助提升应用的可维护性和性能。
56 0
|
2月前
|
消息中间件 Prometheus 监控
Producer的监控与日志记录最佳实践
【8月更文第29天】在分布式系统中,消息队列作为关键组件之一,其稳定性和性能至关重要。生产者(Producer)负责生成并发送消息到消息队列中,因此确保生产者的健康运行是非常重要的。本文将探讨如何为生产者设置监控和日志记录,以跟踪其健康状况和性能指标。
34 0
|
2月前
|
Prometheus 监控 Cloud Native
Web服务器的日志分析与监控
【8月更文第28天】Web服务器日志提供了关于服务器活动的重要信息,包括访问记录、错误报告以及性能数据。有效地分析这些日志可以帮助我们了解用户行为、诊断问题、优化网站性能,并确保服务的高可用性。本文将介绍如何使用日志分析和实时监控工具来监测Web服务器的状态和性能指标,并提供具体的代码示例。
160 0
|
2月前
|
Prometheus 监控 安全

热门文章

最新文章

相关产品

  • 日志服务
  • 下一篇
    无影云桌面