我需要在所有公司机器上启用防火墙,并且没有任何关于使用端口的文档,所以我计划使用 PowerShell 脚本来记录所有入站连接,以创建所需的异常。
如何使用 PowerShell 或 C# 监视创建到我的机器的所有入站连接?因为 y 发现有一个 Cmdlet 列出了与机器的所有连接,但我还没有找到只选择入站连接的方法
有没有办法做到这一点?
我需要在所有公司机器上启用防火墙,并且没有任何关于使用端口的文档,所以我计划使用 PowerShell 脚本来记录所有入站连接,以创建所需的异常。
如何使用 PowerShell 或 C# 监视创建到我的机器的所有入站连接?因为 y 发现有一个 Cmdlet 列出了与机器的所有连接,但我还没有找到只选择入站连接的方法
有没有办法做到这一点?
谢谢@postanote,我已经用你给我的提示解决了这个问题,可以启用 Windows 防火墙,并且可以将日志重定向到文件共享以分析公司机器正在使用哪些入站端口。
我正在使用类似的脚本来启用防火墙并将所有日志转发到将成为测试组一部分的机器列表。
$machines = Get-Content -Path '.\Desktop\servers.txt'
foreach ($machine in $machines)
{
Invoke-Command -ComputerName machine -ScriptBlock {Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True;Set-NetFirewallProfile -Profile Domain,Public,Private -LogFileName "\\localhost\C$\Block-$env:COMPUTERNAME.txt" -LogMaxSizeKilobytes 444 -LogAllowed False -LogBlocked True}
}
在我的情况下,这并不能解决问题,因为这只是向我显示打开的入站端口,但不显示使用的入站端口
$FirewallInboundRules = Get-NetFirewallRule | Where { $_.Enabled –eq ‘True’ –and $_.Direction –eq ‘Inbound’ }
你为什么不只是为此使用固件软件?
至于……</p>
因为 y 发现有一个 Cmdlet 列出了与机器的所有连接,但我还没有找到只选择入站连接的方法
您刚刚说过您可以获得所有连接,这些连接线应该显示触发的 FW 规则,并且从您的 FW 软件中,您已经知道哪些规则是入口/出口。
过滤列出的入站规则以获取您的数据集。
# Get the configured FW ingress rules
$FirewallInboundRules = Get-NetFirewallRule | Where { $_.Enabled –eq ‘True’ –and $_.Direction –eq ‘Inbound’ }
然后将其与您的所有连接数据集相匹配。
但这一切听起来像是您在尝试使用 PS 创建自己的 IDS。我会说这是一项过度工程化的工作,因为现成的工具已经提供了这一点。