內網DNS日志應用場景
出于合規和安全性的考慮,公司通常要求對網絡日志進行存儲和分析。通過內網DNS日志,可以清晰了解企業內網域名的使用情況,幫助企業對內網用戶行為進行審計,及時發現潛在的安全問題。
什么是內網DNS日志
內網DNS日志(Intranet DNS Log) 記錄了指定阿里云uid下所有VPC網絡內終端產生的DNS域名解析請求和應答(包括請求的地域、請求的VPC ID、源IP地址、目的IP地址(DNS服務地址)、查詢的域名、記錄類型、應答的結果等),終端請求的這些域名既包含了配置在PrivateZone上的內網權威域名,也包含了外部公網域名。為了滿足用戶可以快速、簡單實現多賬號、多地域場景下內網DNS日志的采集、管理、中心化查詢分析等需求,DNS與SLS聯合開發,在SLS日志審計應用中發布一鍵開啟內網DNS日志的功能。
一、內網DNS日志記錄的是內網終端的域名解析請求和應答記錄,請求的域名主要來自于以下4類。
1、配置在云解析PrivateZone上的內網權威域名。
云解析 PrivateZone,是基于阿里云專有網絡VPC(Virtual Private Cloud)環境的私有DNS服務。該服務允許您在一個或多個VPC中將自定義私有域名映射到IP地址。通過PrivateZone,您可以方便地使用自定義私有域名來管理VPC中的ECS主機名、SLB、OSS等阿里云資源,而這些私有域名在VPC之外將無法訪問。此外,您還可以通過專線或VPN等連接方式,將您的VPC與傳統數據中心相連,實現傳統數據中心與阿里云VPC之間通過私有域名進行資源互相訪問。
2、配置在飛天云平臺DNS(云底座DNS)上的云產品實例域名。
云底座DNS,是內置于阿里云飛天平臺的底層DNS,阿里云的所有云產品提供的實例域名,都是通過云底座DNS進行解析的。
3、轉發到外部DNS上的外部域名。
外部DNS,通常指的是您數據中心的內網DNS系統,通過PrivateZone解析器的功能,將來自VPC的域名解析請求,轉發到您數據中心的DNS系統進行解析,從而實現阿里云VPC的ECS主機可以訪問您數據中心的應用域名。
4、遞歸到外部公網權威DNS上的公網域名。
公網權威DNS,是特定公網域名(例如“example.com”)在域名注冊局或者域名注冊商處所設置的DNS服務器。公網權威DNS可以為根域名、頂級域名和其他各級域名提供域名權威數據的管理和解析服務。公網權威DNS服務器只對自己所擁有的域名進行域名解析,對于不是自己的域名則拒絕訪問。
二、內網DNS日志提供的字段信息如下所示,請求日志和響應日志分開存儲。
1、請求日志示例
日志字段 | 說明 | 示例數據(僅做格式參考) |
user_id | 阿里云賬號ID | xxxxxxxxxxxxxxxx |
region_id | 地域 | cn-shanghai |
vpc_id | VPC實例ID | vpc-xxxxxxxxxxxxxxxxxxxxx |
src_addr | 源IP地址 | 192.168.0.1 |
dst_addr | 目的IP地址 | 100.100.2.136 |
src_port | 源端口 | 12345 |
dst_port | 目的端口 | 53 |
transport | 傳輸協議 | UDP |
dns_msg_id | DNS信息ID | 23456 |
dns_msg_flags | DNS信息Flags | QR |
query_name | 查詢名稱 | www.example.com. |
query_type | 查詢類型 | A |
rcode | 返回代碼 | |
answer_rrset | 回答資源記錄集 | |
authority_rrset | 權威資源記錄集 | |
additional_rrset | 其他資源記錄集 |
2、應答日志示例
日志字段 | 說明 | 示例數據(僅做格式參考) |
user_id | 阿里云賬號ID | xxxxxxxxxxxxxxxx |
region_id | 地域 | cn-shanghai |
vpc_id | VPC實例ID | vpc-xxxxxxxxxxxxxxxxxxxxx |
src_addr | 源IP地址 | 100.100.2.136 |
dst_addr | 目的IP地址 | 192.168.0.1 |
src_port | 源端口 | 53 |
dst_port | 目的端口 | 12345 |
transport | 傳輸協議 | UDP |
dns_msg_id | DNS信息ID | 23456 |
dns_msg_flags | DNS信息Flags | QR RD AA |
query_name | 查詢名稱 | www.example.com. |
query_type | 查詢類型 | A |
rcode | 返回代碼 | 0 |
answer_rrset | 回答資源記錄集 | Json array: ["www.example.com. 600 A 192.168.1.1", "www.example.com 600 A 192.168.1.2", ] |
authority_rrset | 權威資源記錄集 | Json array: ["example.com. 600 SOA ns1.example.com. hostmaster.example.com. 2023010101 3600 1200 3600 360" ] |
additional_rrset | 其他資源記錄集 | Json array: ["ns1.example.com. 600 A 100.100.2.136"] |
內網DNS日志審計
一、什么是審計日志
日志審計服務是阿里云日志服務SLS平臺下的一款應用,它在繼承了日志服務SLS的全部功能以外,還有強大的多賬號管理及跨地域采集阿里云各種云產品日志的功能,并且支持通過資源目錄(Resource Directory)的方式有組織性地統一地管理和記錄多賬號下云產品實例的日志信息。
二、內網DNS審計日志開通
用戶在SLS下開啟內網DNS日志的采集,僅需要進入SLS控制臺,在日志應用中找到日志審計服務,即可一鍵開啟內網DNS日志的采集, 用戶可以自定義日志存儲的天數,是否開啟冷熱分層存儲等功能。詳細操作步驟參見開啟日志采集功能。
內網DNS日志審計功能目前在華東2(上海)、華北2(北京)、華南3(廣州)、華南1(深圳)、華東1(杭州)和華北1(青島)region開放使用,如果您有其他地域region日志審計需求,可通過工單反饋到云解析DNS產品處理。
多賬號配置
日志審計強大的跨賬號采集能力可以滿足用戶多賬號場景下將成員賬號的內網DNS日志統一采集到中心賬號的需求。日志審計支持兩種多賬號管理配置:(1)資源目錄管理模式(2)自定義鑒權管理模式。詳細配置步驟請參見配置多賬號采集。下圖是多賬號配置下內網DNS日志采集的示例:
Terraform配置
Terraform是一種開源工具,其命令行接口(CLI)提供了一種簡單機制,用于將配置文件部署到阿里云或其他任意支持的云上,并對其進行版本控制。通過Terraform配置日志審計下云產品日志采集的詳細步驟可以參考使用Terraform配置日志審計服務。
下面是一個通過Terraform配置內網DNS日志采集的配置示例:
resource "alicloud_log_audit" "dns_example" {
display_name = "tf-audit-test-dns"
aliuid = "1480************" //中心賬號
variable_map = {
"dns_intranet_enabled" = "true", //開啟內網DNS日志的采集
"dns_sync_enabled" = "true", //開啟區域化日志同步到中心project
"dns_intranet_ttl" = "3", //日志區域化存儲天數3天
"dns_sync_ttl" = "185" //日志中心化存儲天數185天
"dns_intranet_collection_policy" = "accept tag.env == \\\"test\\\"\\ndrop \\\"*\\\"" //僅開啟標簽健為env下標簽值為prod的VPC實例下的內網DNS日志
}
multi_account = ["1039************"] //多賬號配置
}
采集策略
內網DNS日志可以通過采集策略進行精細化的采集管理。內網DNS日志最小采集粒度為VPC實例,可以根據VPC實例的信息進行DNS日志的采集控制。
控制臺配置采集策略
用戶可以在日志審計控制臺進行采集策略的管理配置,下圖是一個“僅開啟標簽健為env下標簽值為prod的所有VPC實例下的內網DNS日志”的策略配置示例。通過采集策略的配置,可以幫助用戶實現精細化采集管理,減少不必要的日志采集。
查詢分析最佳實踐
下面列舉幾類常見的內網DNS日志的查詢分析場景,用戶也可以根據實際需求自定義查詢分析語句。此外,用戶還可以將SQL語句查詢結果添加到儀表盤、或者另存為快速查詢、另存為告警等進行后續分析處理。
一、DNS解析結果類
某時間段內,指定VPC下,不同查詢域名的DNS請求量分布。
* and vpc_id: vpc-2ze9dducyc3t6p8aeksb3 |select count(*) as total_req, query_name group by query_name
二、DNS解析RT類
某時間段內,指定VPC,指定域名,指定queryType的DNS解析RT統計分析。
* and vpc_id: vpc-2ze9dducyc3t6p8aeksb3 and query_name: "metrichub-cn-beijing.aliyun.com." and query_type: A | select stddev(__time__) as RT, dns_msg_id GROUP by dns_msg_id