我想在不同的防火墙环境下本地测试我的 Web 应用程序的行为。
我们有一个应用程序,根据某些条件从浏览器向不同端口发出请求,我想设置一个防火墙,允许我动态修改防火墙规则,以便查看禁用端口时应用程序的行为。
我想通过设置防火墙来阻止从我的计算机到访客计算机上的端口的请求来实现此目的。
我正在使用 Virtualbox 运行 OS X Sierra,使用pfctl
.
我从这个命令(在主机上)开始,尝试阻止来宾上的端口(at 192.168.99.100
),但我没有取得任何成功:
block in quick inet proto { tcp, udp } from any to 192.168.99.100 port 63342
答案1
对于我来说,你的处理方式似乎有点违反直觉。通常,您会在 Web 应用程序所在的实际服务器上设置防火墙。
如果您使用的是firewalld,那么这是非常简单的。您可以使用以下命令查看它能够按名称处理的所有服务的名称:
$ firewall-cmd --get-services
网络名称
$ firewall-cmd --get-services | grep -oE '\shttp[s]*'
http
https
要允许这两个协议进入VM:
$ firewall-cmd --permanent --add-service http --add-service https
success
$ firewall-cmd --reload
success
您的防火墙现在配置如下:
$ firewall-cmd --list-all
public (active)
target: DROP
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: ssh dhcpv6-client http https
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
上面规定允许 4 个服务进入,其他所有服务都将根据默认目标被删除 (DROP)。