V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
memorybox
V2EX  ›  程序员

如何在 Windows 和 Linux 上允许特定应用通过防火墙

  •  
  •   memorybox · 205 天前 · 733 次点击
    这是一个创建于 205 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我知道在 Windows 上防火墙可以允许特定应用通过;有两个问题:

    1. windows 防火墙允许特定应用通过,那么这个应用运行的时候,就可以打开任意端口监听而不会受到防火墙限制吗?如果防火墙还有规则屏蔽了指定端口,而这个应用又监听了这个端口,那么优先级是什么?

    2. Linux 有类似 windows 这样运行特定应用通过的防火墙规则实现吗?

    第 1 条附言  ·  204 天前
    对于第一个问题,试验了一下:

    似乎是 “允许特定应用通过" 的规则优先级高,先运行特定应用通过,然后在入站规则中设置一条禁止的规则,端口仍然对外开放;

    测试是在 Win11 22H2 版本上进行的
    第 2 条附言  ·  204 天前
    又问了一下 Ghatgpt ,似乎它的答案是不对的,chatgpt 的回答:

    问:
    windows 防火墙允许特定应用通过,那么有两个问题:

    1. 这个应用运行的时候,就可以打开任意端口监听而不会受到防火墙限制吗?
    2. 如果防火墙还有规则屏蔽了指定端口,而这个应用又监听了这个端口,那么优先级是什么?

    GhatGPT 回答:
    在 Windows 防火墙中,允许特定应用程序通过并不会自动打开该应用程序监听的所有端口。相反,它只会允许该应用程序使用它已经在规则中被授权的端口。

    对于你的第一个问题:

    这个应用运行的时候,就可以打开任意端口监听而不会受到防火墙限制吗?

    答案是不会。如果防火墙规则只允许特定应用程序通过,那么该应用程序只能使用这些已授权的端口。如果它尝试打开其他端口,防火墙将会阻止该行为。

    对于你的第二个问题:

    如果防火墙还有规则屏蔽了指定端口,而这个应用又监听了这个端口,那么优先级是什么?

    在这种情况下,防火墙规则会起作用,因为防火墙的规则具有更高的优先级。如果防火墙规则明确地阻止了特定端口的访问,那么即使应用程序尝试在该端口上进行监听,也会被阻止。

    总结一下,Windows 防火墙规则是按照优先级来执行的,如果有一个规则允许了特定应用程序通过,但另一个规则明确禁止了相同的行为(比如封锁了特定端口),那么被禁止的规则将优先执行。
    2 条回复    2023-10-19 20:25:29 +08:00
    ysc3839
        1
    ysc3839  
       204 天前 via Android   ❤️ 1
    1. 不知道,你可以试试
    2. 似乎没有好办法,印象中只能分用户,或者用独立的 network namespace 之类的,可以参考一下 Android VPN 分应用代理的底层实现。
    busier
        2
    busier  
       204 天前   ❤️ 1
    1 、自己试下不就行了!
    2 、Linux 的 iptables 可以用 -m owner 模块的 --uid-owner --gid-owner 参数匹配规则,你可以新建一个用户,将特定进程以这个用户运行(可以考虑给可执行文件设置 SUID 或 SGID 位),然后通过 uid-owner 来匹配规则!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4925 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:55 · PVG 17:55 · LAX 02:55 · JFK 05:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.