【问题标题】:log all inbound connections powershell记录所有入站连接powershell
【发布时间】:2018-08-17 02:13:58
【问题描述】:

我需要在所有公司机器上启用防火墙,并且没有任何关于使用端口的文档,因此我计划使用 PowerShell 脚本来记录所有入站连接以创建所需的例外。

如何使用 PowerShell 或 C# 监视创建到我的计算机的所有入站连接?因为 y 发现有一个 Cmdlet 列出了与机器的所有连接,但我没有找到只选择入站连接的方法

有没有办法做到这一点?

【问题讨论】:

    标签: c# .net powershell ports inbound


    【解决方案1】:

    您为什么不只是为此使用固件软件?

    至于……

    因为 y 发现有一个 Cmdlet 列出了所有 连接到机器,但我还没有找到一种方法来选择只是 入站连接

    您刚刚说过您可以获得所有连接,这些连接线应该显示触发的 FW 规则,并且从您的 FW 软件中,您已经知道哪些规则是入口/出口。

    过滤列出的入站规则以获取您的数据集。

    # Get the configured FW ingress rules
    $FirewallInboundRules = Get-NetFirewallRule | Where { $_.Enabled –eq ‘True’ –and $_.Direction –eq ‘Inbound’ }
    

    然后将其与您的所有连接数据集匹配。

    但这一切听起来像是你在尝试使用 PS 创建自己的 IDS。我会说这是一项过度工程化的工作,因为现成的工具已经提供了这一点。

    【讨论】:

      【解决方案2】:

      感谢@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’ }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多