事情是这样的,某网络安全主管部门下发了一个统计软件,表面上是个单机软件,
实际上是一个一键部署基于 tomcat 的 web 应用。然后登陆 127.0.0.1/awesome.html 进行统计。
问题在于,有一个说明文档,要求用户将 windows 防火墙例外 java.exe 。
但是根据我的使用情况,我发现仅仅是访问 127.0.0.1 并不需要例外,似乎数据根本不过防火墙。
我甚至在 windows 防火墙出入方向都 deny 了相应端口,仍然可以访问。
我不禁疑问,到底是我错了?还是某网络安全主管部门的外包公司弄错了?
1
ipwx 2019-07-31 23:51:10 +08:00 via Android
一般而言,本机地址和其他地址用的不同的防火墙规则集
|
2
BinRelay OP @ipwx win 里也就公用网络、专用网络、域三种防火墙配置文件吧
那么访问 127.0.0.1 会匹配哪一个?还是都不匹配呢? |
3
gam2046 2019-08-01 05:08:11 +08:00
https://stackoverflow.com/questions/21230691/why-are-localhost-connections-blocked-by-the-firewall
这里有一个模棱两可的回答,似乎是 Bind 在 localhost 上以后,并不会触发 Windows 的防火墙。 也就是说虽然你的软件是通过 localhost 访问的,但是是否触发防火墙取决于软件 bind socket 所使用的地址,如果是 bind 0.0.0.0 那么必然会有防火墙规则 |
4
ShangAliyun 2019-08-01 08:49:50 +08:00
可能仅仅是习惯性的对局域网开放
|
5
danmu17 2019-08-01 09:28:00 +08:00
哈哈,好奇能炸出来多少不懂装懂的。
|
6
LokiSharp 2019-08-01 09:30:27 +08:00
只是默认规则没有针对环回地址而已啊,你不能保证用户不自定义防火墙规则
|
7
BinRelay OP @gam2046
bind 127.0.0.1 和 0.0.0.0 决定了首次运行程序时是否弹出 windows 防火墙窗口。 不过即使 bind 了 0.0.0.0,会弹出窗口,由于我访问的 127.0.0.1,那么无论我在弹出的窗口 放行还是阻断,都没有任何区别。 这个 stackoverflow 的题主也一样这样描述“ If I click 'Deny' when that dialogue appears, my program still accepts local incoming connections, so that popup is completely useless for preventing any of the risks you just mentioned. ” 那么我初步得出结论: 1、bind 的地址决定是否首次运行程序时是否弹出防火墙窗口。 2、无论防火墙怎么配置,本机访问 localhost 均不会匹配 windows 防火墙策略。 3、外包公司因为程序默认 bind 了 0.0.0.0,弹出了防火墙窗口,未进行验证或者为了局域网访问就要求用户放行软件。 |
10
zarte 2019-08-01 09:52:51 +08:00
windows 绑定 127.0.0.1 外网无法访问,需要绑定 0.0.0.0 外网才能访问。所以觉得应该看绑定的地址。
|
11
webjin2 2019-08-01 09:55:16 +08:00
@BinRelay 公用网络、专用网络、域 。配置网卡的时候有这个选项,你是专业网络还是公用网络。至于域估计是计算加入了域之后,网卡配置选项才有这一个把。具体我也不知道。
|
12
jeblur 2019-08-01 09:59:36 +08:00
一般来说环回口只有本地有效吧,你的意思是你本地访问环回口就算在防火墙上被 block 也照样访问?如果是这样的话那没问题啊,因为你数据包根本不过防火墙当然也就跟防火墙没关系了呀
|
13
rootww21 2019-08-01 10:04:41 +08:00
你当然没弄错,外包公司是确保万无一失
|
14
jeblur 2019-08-01 10:06:10 +08:00
|