[玩转系统] 将 PowerShell 与 IP 地理位置数据结合使用
作者:精品下载站 日期:2024-12-14 04:08:49 浏览:13 分类:玩电脑
将 PowerShell 与 IP 地理位置数据结合使用
基于 Paul Cunningham 2015 年的原创文章
使用地理定位服务解析审核日志中的 IP 地址和 IP 地址
许多 Microsoft 365 和 Exchange Server 日志包含 IP 地址。 Microsoft 365 是一个很好的例子,因为每个审核事件都包含源的 IP 地址。在 Exchange Server 上下文中,IIS 日志保存有关用于 OWA、ActiveSync 和 EWS 等连接的 IP 地址的信息。
当管理员查看日志中的事件时,他们很自然地可能想要检查 IP 地址,特别是如果这些地址来自未用于公司位置的陌生范围。条件访问策略允许组织限制与已知位置的连接。如果您使用 PowerShell 提取和分析日志数据,则可以使用各种 IP 地理定位服务来解析 IP 地址。
基于网络的地理定位服务
IP-API 是主要的 IP 地理定位服务之一。它支持非商业用途的免费访问。目前,为了保护其服务的完整性,IP-API 将您可能与 PowerShell 一起使用的端点的访问限制为每分钟 45 个 HTTP 请求。其他 API(例如 FreeGeoIP.net)的免费访问限制较低,同时也提供限制较高的付费订阅。像往常一样,四处寻找能够满足您需求的服务。如果某个 IP 地址持续发出过多请求,某些 Web 服务将阻止对该 IP 地址的访问。
Microsoft 365 杀伤链和攻击路径管理
有效的网络安全策略需要对攻击如何展开有清晰、全面的了解。阅读本白皮书,获取保卫您的组织所需的专家见解!
使用 PowerShell 解析 IP 地址
在所有情况下,您都可能使用 Invoke-RestMethod cmdlet 向 Web 服务发送查询并接收结构化响应。对于 IP-API,响应采用 JSON 格式。这是一个例子:
IPInfo = Invoke-RestMethod -Method Get -Uri "http://ip-api.com/json/20.81.111.85"
$IPInfo
status : success
country : United States
countryCode : US
region : VA
regionName : Virginia
city : Boydton
zip : 23917
lat : 36.677696
lon : -78.37471
timezone : America/New_York
isp : Microsoft Corporation
org : Microsoft Azure Cloud (eastus)
as : AS8075 Microsoft Corporation
query : 20.81.111.85
使用 Invoke-RestMethod cmdlet 从 Web 服务检索信息的另一个示例是使用 Microsoft Translator 服务将文本翻译成目标语言。
GitHub 上提供了使用 Invoke-RestMethod 与 IP-API 服务交互的示例脚本。
避免节流
如上所述,Web 服务通常会限制入站 HTTP 请求,以避免流氓行为者或不良代码可能会因大量请求而淹没其服务。考虑到这一点,任何希望分析 IP 信息的脚本都应该包含检查以避免限制。
避免问题的一种方法是使用 Start-Sleep cmdlet 在脚本中构建暂停。例如,由于 IP-API 将请求限制为每分钟 45 个,因此脚本可以在每个请求后暂停 1.4 秒。
另一种方法是将已解析地址的 IP 信息存储在哈希表中,并在发出新请求之前检查该表以查看地址是否存在。这种技术效果很好,因为日志中发现的许多 IP 地址都是相同的。
下面是一些代码,用于根据哈希表查找 IP 地址,以确定是否有必要向 Web 服务发出请求。如果信息已经存在,则从哈希表中获取。如果没有,脚本将运行请求并将信息存储在哈希表中。
$IPInfo = $Null
If (!($IPAddressHash[$AuditData.ClientIP])) {
$IPInfo = Get-IPGeoLocation -IPAddress $AuditData.ClientIP
$IPAddressHash.Add([string]$IPInfo.IP,$IPInfo)
# Sleep to avoid any throttling issues with the web service
Start-Sleep -Seconds 1
} Else {
# Get the IP information from the hash table
$IPInfo = $IpAddressHash[$AuditData.ClientIP]
}
显然,可以编写更多具有良好错误处理能力的防弹代码,但这足以证明原理。
使用条件访问位置
如果您希望重点关注组织未使用的 IP 地址,则可以提取为 Azure AD 位置定义的 IP 地址范围集。通常,条件访问策略使用这些位置来测试传入连接是内部连接还是外部连接。 Get-MgIdentityConditionalAccessNamedLocation cmdlet(来自 Microsoft Graph PowerShell SDK)检索位置的详细信息。例如,此代码查找当前位置集并提取位置中定义的 IP 范围:
[array]$CAKnownLocations = Get-MgIdentityConditionalAccessNamedLocation
[array]$IPAddressRanges = $Null
ForEach ($Location in $CAKnownLocations) {
$IPRanges = $Null
$IPRanges = $Location.AdditionalProperties['ipRanges']
If ($IPRanges) {
ForEach ($Address in $IPRanges) {
$IPAddressRanges += $Address['cidrAddress']
}
}
}
结果是一组 CIDR 格式的 IPv4 和 IPv6 地址:
51.171.212.129/24
2001:db8::/56
2001:db8::/53
根据 CIDR 地址检查 IPv4 地址需要将 CIDR 扩展到该范围内的各个地址。这个脚本完成了这项工作。例如,以下是如何使用脚本中的函数使用上一步中发现的两个 IPv4 CIDR 来填充数组:
[array]$IPAddresses = Get-IPRange -Subnets "51.171.212.200/24", "51.171.212.129/24"
现在可以轻松对照阵列检查日志中找到的 IPv4 地址,以确定它们是否属于内部位置。例如:
If ($AuditData.ClientIP -in $IPAddresses) {
$InternalFlag = $True
} Else {
$ InternalFlag = $False }
如果您不将 IP 位置用于条件访问策略,则可以以不同的方式创建和填充阵列。例如,您可能在 Excel 电子表格中定义了公司内可用的所有 IP 地址,PowerShell 可以读取该电子表格来创建阵列。
使用地理定位服务
使用地理定位服务通过 PowerShell 解析 IP 地址并不难。诀窍是以智能方式执行此操作,以便 Web 服务不会限制或阻止访问。这可以通过包含检测内部 IP 地址的代码并仅向地理定位服务请求未知外部地址的解析来实现。请随意改进此处提供的 PowerShell 代码。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag