自建dns获取域名解析与证书告警

85b6f19667107acad8585a6a32088b25.gif

新钛云服已累计为您分享813篇技术干货

6518cf605fe164e26f0d71faf0297fed.gif

背 景

公司A拥有一套云上DNS服务,主要用于支持云中应用和服务的域名解析。为了满足线下门店之间的服务互联需求,公司在内网自建一套Windows DNS服务器,以实现门店之间的高效域名解析。此方案旨在保证内部网络的稳定性与安全性,同时与云上DNS服务进行有效集成,需要监控证书有效性和域名解析的记录查询。

目 标

  1. 自建DNS服务:在不登录window dns服务器的情况下,通过日志系统进行查询解析记录。

  2. HTTPS安全通信:为所有域名服务打印域名证书的时间信息。

  3. 告警系统:监控域名证书状态,并在出现问题时及时告警。

业务流程

  1. 域名解析测试

    1. 在内部网络的客户端上测试域名解析,确保所有服务都能正确解析。

    2. 验证HTTPS证书连接,确保浏览器或客户端能够安全访问服务。

  2. 证书和域名监控

    1. 监控证书的有效期,设置告警阈值(如到期前60天)。

    2. 监控HTTPS服务的可用性,确保服务在DNS解析和证书有效的情况下正常运行。

  3. 告警机制

    1. 如果证书即将到期或已过期,发出告警,确保运维人员能够及时更新证书。

    2. 实现自动化脚本,当证书即将到期时,生产新的证书进替换

服务器安装openssl服务

  1. openssl软件下载地址

    https://slproweb.com/download/Win64OpenSSL-3_3_2.msi

  2. 软件下载后直接点击下一步进行安装,直到安装完成.

  3. openssl环境变量配置

49c0e7ea8423d5fc480d550351c37e6a.png

使用命令查询openssl  -version版本信息

5f0fc1bc5371a5432f09edc55909d1c4.png

脚本查询域名的A记录、CNAME记录、域名证书信息

1.手动查询自建window dns的A记录和CNAME记录命令信息

Get-DnsServerResourceRecord -ZoneName "text" | Where-Object { $_.RecordType -eq "CNAME" -or $_.RecordType -eq "A"} | Format-Table -AutoSize

2.在powershell上查询单个域名的证书信息

$domain = "text" cmd /c "echo | openssl s_client -servername `"$($domain)`" -connect `"$($domain):443`" 2>&1 | openssl x509 -noout -dates | findstr /C:notAfter"

980261a08eaca0e60d2f238fdb3daa7f.png

3.通过powershell脚本获取域名详细信息

$zoneName = "text"
# domaininput.txt需要排除的域名列表信息
$inputFilePath = "D:\domain\domaininput.txt"
# domainoutput.txt需要输出日志记录的域名列表信息
$outputFilePath = "D:\domain\domainoutput.txt"
# 飞书webhook
$feishuWebhookUrl = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxx"  # 替换为你的飞书 Webhook URLfunction Send-FeishuNotification {param ([string]$message,[string]$color)if ($color -eq "blue") {$formattedMessage = "*Success:* $message"} elseif ($color -eq "black") {$formattedMessage = "*Error:* $message"} else {$formattedMessage = $message}$payload = @{msg_type = "text"content  = @{text = $formattedMessage}}$jsonPayload = $payload | ConvertTo-Json -Depth 1Invoke-RestMethod -Uri $feishuWebhookUrl -Method Post -Body $jsonPayload -ContentType 'application/json'
}function Get-CertificateEndDate {param ([string]$domain)Write-Host "正在处理域名: $domain"try {# 获取证书到期信息$certInfo = cmd /c "echo | openssl s_client -servername `"$($domain)`" -connect `"$($domain):443`" 2>&1 | openssl x509 -noout -dates | findstr /C:notAfter"Write-Host "获取的证书信息: $certInfo"if ($certInfo -match "notAfter=(.*)") {$formattedDate = $matches[1].Trim()  # 获取到期时间并去掉空格Write-Host "证书到期时间: $formattedDate"# 修剪多余空格$formattedDate = $formattedDate -replace '\s+', ' '# 解析日期时,指定格式并转换为 yyyy-MM-dd$parsedDate = [datetime]::ParseExact($formattedDate, "MMM d HH:mm:ss yyyy 'GMT'", [System.Globalization.CultureInfo]::InvariantCulture)$endDate = $parsedDate.ToString("yyyy-MM-dd")Write-Host "格式化后的日期: $endDate"return $endDate} else {Write-Host "未找到证书信息: $certInfo"return "2008-08-08"  # 默认日期}} catch {Write-Host "发生错误: $_"return "2008-08-08"  # 默认日期}
}try {if (-Not (Test-Path $inputFilePath)) {$errorMessage = "输入文件不存在:$inputFilePath"$failureMessage = "failed $zoneName $errorMessage"Send-FeishuNotification -message $failureMessage -color "black"exit}$excludedDomains = Get-Content -Path $inputFilePath | Where-Object { $_.Trim() -ne "" }$dnsRecords = Get-DnsServerResourceRecord -ZoneName $zoneName |Where-Object { $_.RecordType -eq "CNAME" -or $_.RecordType -eq "A" }$output = @{}$ignoredDomains = @()foreach ($record in $dnsRecords) {$hostName = $record.HostNameif ($hostName.EndsWith($zoneName, [System.StringComparison]::OrdinalIgnoreCase)) {$fullDomain = $hostName} else {$fullDomain = "$hostName.$zoneName"}# 修正重复的域名问题$fullDomain = $fullDomain -replace '\.text\.text\.cn$', '.text.cn'if ($excludedDomains -notcontains $fullDomain) {$endDate = Get-CertificateEndDate -domain $fullDomain$key = "$fullDomain|$($record.RecordType)"if (-not $output.ContainsKey($key)) {$output[$key] = @{RecordType = $record.RecordTypedomain     = $fullDomainEndDate    = $endDateCimInstanceProperties = $record.RecordData}}} else {$ignoredDomains += $fullDomain}}$outputArray = $output.Values$outputLines = $outputArray | ForEach-Object {$_ | ConvertTo-Json -Depth 1 -Compress}$outputLines | Set-Content -Path $outputFilePath -Encoding utf8$lineCount = $outputLines.Count$uniqueIgnoredDomains = $ignoredDomains | Select-Object -Unique$ignoredJson = @{}foreach ($domain in $uniqueIgnoredDomains) {$ignoredJson["domain_$($ignoredJson.Count + 1)"] = $domain}$ignoredJsonString = $ignoredJson | ConvertTo-Json -Depth 10$successMessage = "domain:$zoneName path:$outputFilePath row:$lineCount ignore: `n$ignoredJsonString"Send-FeishuNotification -message $successMessage -color "blue"} catch {$errorMessage = $_.Exception.Message$failureMessage = "failed $zoneName $errorMessage"Send-FeishuNotification -message $failureMessage -color "black"throw
}
#domainoutput.txt文件内容输出JSON LOG信息
{"CimInstanceProperties":{"CimClass":"root/Microsoft/Windows/DNS:DnsServerResourceRecordA","CimInstanceProperties":"IPv4Address = \"20.20.20.20\"","CimSystemProperties":"Microsoft.Management.Infrastructure.CimSystemProperties"},"RecordType":"A","domain":"view.lu.cn","EndDate":"2008-08-08"}
{"CimInstanceProperties":{"CimClass":"root/Microsoft/Windows/DNS:DnsServerResourceRecordCName","CimInstanceProperties\"":"HostNameAlias = \"alb-cs.cn","CimSystemProperties":"Microsoft.Management.Infrastructure.CimSystemProperties"},"RecordType":"CNAME","domain":"pa.lu.cn","EndDate":"2025-05-31"}

使用json-hand插件进行格式化输出展示

d5415e96d35f74d5716c6fc8e75b0326.png

4.飞书输出信息提示,成功的域名地址、路径、域名多少数量、排除的域名是那几个

8f5502f946116773bfd508cd4574bd04.png

配置日志接入与查询SQL

1.配置阿里云sls接入window dns单层json日志信息

window dns文件的路径地址为D:\domain\domainoutput.txt

6eaca1e9cec654f0b925f1d5c4f3f466.png

2.通过sls查询sql输出window dns日志信息

* | SELECT "content.domain", "content.RecordType", "content.CimInstanceProperties.CimInstanceProperties" , "content.EndDate"   from log     LIMIT 1000

bd28abdec862b7a9105459c8c80ce847.png

配置告警输出

根据查询的sls sql语句进行针对性的配置告警和行动策略通知聚道(钉钉、短信、电话等等)

1d788234a7c498a1f68f41de8b8ea8e1.png

在本文中,我们详细探讨了如何通过自建DNS实现域名解析与证书告警的管理。通过创建Purview门户、配置密钥保管库、实施流量回放和监控,我们不仅提高了资产的可见性,还确保了数据的安全性和合规性。随着企业数字化转型的不断深入,资产梳理和安全运营将变得愈发重要。我们鼓励大家定期进行资产审查和监控,以应对不断变化的安全威胁和业务需求。感谢您对安全运营工作的关注与支持,让我们共同努力,提升企业的安全防护水平,确保业务的持续稳定运行。

如有相关问题,请在文章后面给小编留言,小编安排作者第一时间和您联系,为您答疑解惑。

    推荐阅读   

7be3a5d54c940a9ec751223ebad32f0d.png

e489dbb4bf59600f0eadae696cbd4f82.png

    推荐视频    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1547908.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

css动态边框

参考&#xff1a; Clip-path实现按钮流动边框动画_在线clip-path-CSDN博客 https://www.5axxw.com/questions/simple/9ju5yt#google_vignette <div class"bottom-top-item-centent bottom-top-item-left"><vue-seamless-scroll :data"listLeftData&q…

脚本命令类恶意代码——PowerShell混淆脚本分析方法

由于PowerShell具有强大的系统管理和自动化能力&#xff0c;它可以被用于执行恶意代码、进行横向移动、执行无文件攻击等恶意行为。其中&#xff0c;Office宏病毒是一种常见的恶意软件形式&#xff0c;它利用Office文档中的宏代码来调用PowerShell并执行恶意行为。这种攻击方式…

PostgreSQL 17 发布了!非常稳定的版本

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

观众IMDB热评9.1分,HBO新作到底有什么魅力

HBO年度大作《企鹅人》终于上线&#xff0c;IMDb评分高达9.1&#xff0c;成为观众热议的焦点。这部剧集的魅力不仅在于其背后的强大制作团队&#xff0c;更在于角色的深度与故事的复杂性&#xff0c;让人忍不住想要深入探讨。 首先&#xff0c;HBO一向以高质量的剧集著称&#…

有关若依登录过程前端的对应处理学习

导言 在用C#搞完个后端后想用若依的前端做对接&#xff0c;不过很久没搞过若依了&#xff0c;想趁这个二次开发的过程记录熟悉一下登录的过程 过程 验证&#xff0c;在permission.js的路由守卫&#xff0c;这里在用户发起api请求时会验证用户的请求是否有token&#xff0c;对…

【LeetCode】动态规划—63. 不同路径 II(附完整Python/C++代码)

动态规划—63. 不同路径 II 前言题目描述基本思路1. 问题定义:2. 理解问题和递推关系:3. 解决方法:3.1 动态规划方法3.2 空间优化的动态规划 4. 进一步优化:5. 小总结: 代码实现Python3代码实现Python 代码解释C代码实现C 代码解释 总结: 前言 本文将探讨“不同路径 II”这一问…

图神经学习笔记

图神经网络基础 图神经网络用于挖掘事物的“普遍联系”&#xff0c;理解原理、应用技术。本文汇总图神经网络相关介绍和基础模型。 图及特性 图是由顶点和边组成的&#xff0c;如下图左所示。一般图中的顶点表示实体对象&#xff08;比如一个用户、一件商品、一辆车、一张银行…

Apache Solr:深入探索与常见误区解析

Apache Solr&#xff1a;深入探索与常见误区解析 Apache Solr 是一个强大的搜索引擎&#xff0c;基于 Lucene 构建&#xff0c;广泛应用于电商平台、日志分析、内容管理系统等领域。Solr 的功能强大&#xff0c;然而它的配置和使用过程却不乏一些容易误解和出错的地方。本文将…

“AI+Security”系列第3期(六):打造最懂安全的智能体-无极AI安全智能体平台落地与实践

近日&#xff0c;由安全极客、Wisemodel 社区、InForSec 网络安全研究国际学术论坛和海升集团联合主办的 “AI Security” 系列第 3 期技术沙龙&#xff1a;“AI 安全智能体&#xff0c;重塑安全团队工作范式” 活动顺利举行。此次活动吸引了线上线下超过千名观众参与。 活动…

卡方检验及其在Python中的应用

作者简介&#xff1a;热爱数据分析&#xff0c;学习Python、Stata、SPSS等统计语言的小高同学~个人主页&#xff1a;小高要坚强的博客当前专栏&#xff1a;Python之机器学习本文内容&#xff1a;卡方检验及其在Python中的应用作者“三要”格言&#xff1a;要坚强、要努力、要学…

使用 Napkins.dev 将草图转换为应用程序

在现代前端开发中&#xff0c;快速将设计草图转换为实际的应用程序代码是一个巨大的优势。Napkins.dev 是一个利用人工智能将网站设计草图转换成实际应用程序的平台。本文将介绍如何使用 Napkins.dev 进行这一过程。 什么是 Napkins.dev&#xff1f; Napkins.dev 是一个开源平…

【DS】红黑树

目录 红黑树的介绍红黑树节点的定义红黑树的插入红黑树的调整情况一情况二情况三 红黑树的验证红黑树与AVL树的比较 在上一篇AVL树的实现中&#xff0c;学习了平衡二叉树的一种——AVL树&#xff1b;由于AVL树极度追求平衡&#xff0c;因此它的查找效率十分高效&#xff1b;但也…

虚拟机文件系统根目录上的磁盘空间不足?VMware虚拟机扩容磁盘步骤讲解

VMware虚拟机扩容磁盘步骤讲解 今天使用vmware&#xff0c;想使用Ubuntu虚拟机&#xff0c;结果出现这种情况&#xff1a; 我的环境&#xff1a; Ubuntu20.04 VMWare workstation pro 17 VMware设置 参考链接&#xff1a; https://blog.csdn.net/hktkfly6/article/details…

2024年9月26日 linux笔记

1、提示符 1.1 提示符 1.2 命令格式 1.3 路径 2、指令 2.1 pwd 显示当前路径 2.2 cd 切换路径、改变路径 2.3 mkdir 创建目录 [-p] 创建目录及子目录 mkdir -p dir1/dir2 2.4 rmdir 删除目录 &#xff08;注&#xff1a;不能删除空目录&#xff09; 2.5 ls 显示当前目录文…

【行为树】06-重新映射树和子树之间的端口

Remapping ports between Trees and SubTrees 重新映射树和子树之间的端口 在CrossDoor示例中&#xff0c;我们看到一个SubTree从其父节点&#xff08;示例中的MainTree&#xff09;的角度看起来像一个单独的叶子节点。 此外,为了避免在非常大的树中发生名称冲突,任何树和子…

【cache】浅析四种常用的缓存淘汰算法 FIFO/LRU/LFU/W-TinyLFU

本文浅析淘汰策略与工作中结合使用、选取&#xff0c;并非针对算法本身如何实现的 文章目录 FIFOLFULRUW-TinyLFU实践与优化监控与调整 FIFO first input first output &#xff0c; 先进先出&#xff0c;即最早存入的元素最先取出&#xff0c; 典型数据结构代表&#xff1a;…

当大模型成为新一代操作系统,我们如何转型AI产品经理?

大模型无疑是最近科技圈最炙手可热的时尚单品&#xff0c;跟AIGC能沾上边的工作岗位都成为行业香饽饽。许多产品经理朋友与斯年讨论如何转型AI产品经理&#xff0c;今天想通过用户体验五要素的逻辑框架&#xff0c;谈谈传统型产品经理 VS. AI型产品经理的差异。最后分享几点在转…

【深度学习】(9)--调整学习率

文章目录 调整学习率一、学习率的定义二、学习率的作用三、实现调整学习率1. 使用库函数进行调整2. 手动调整学习率 总结 调整学习率 调整学习率的目的是&#xff1a;通过调整学习率&#xff0c;优化训练速度、提高训练稳定性、适应不同的训练阶段以及改善模型性能。那么&…

不可错过的10款文件加密软件,企业电脑加密文件哪个软件好用

在信息安全日益重要的今天&#xff0c;企业和个人都需要可靠的文件加密软件来保护敏感数据。以下是2024年不可错过的10款文件加密软件&#xff0c;它们以强大的加密功能和易用性而闻名。 1.安秉加密软件 安秉加密软件是一款专为企业设计的信息安全管理工具&#xff0c;采用驱动…

Android系统应用安装完成后是如何通知其他应用的?

文章目录 具体步骤如下&#xff1a;相关的系统广播&#xff08;Actions&#xff09;&#xff1a;总结&#xff1a; Android系统在应用安装完成后&#xff0c;会通过 广播&#xff08;Broadcast&#xff09;的方式通知其他应用。这个广播称为"应用安装完成广播"&…