有人能帮我阻止网络上的所有传入流量吗?我的路由器上设置了端口转发,以允许端口 27017 上的传入请求发送到内部运行 Mongo 的 Mac,但我可以指定的一个 IP 地址除外?我尝试从 /etc/pf.conf 加载一个新的锚文件。在该文件中,我输入了以下内容:
rdr pass on lo0 inet proto udp from xxx.xxx.xxx.xxx to any port 27017 -> 127.0.0.1 port 27017
rdr pass on lo0 inet proto tcp from xxx.xxx.xxx.xxx to any port 27017 -> 172.0.0.1 port 27017
其中 xxx.xxx.xxx.xxx 是我想要允许进入的 IP 地址。它确实允许该地址进入,但我认为我需要做其他事情来阻止所有其他地址。这方面的文档非常详尽。任何帮助都将不胜感激。
答案1
我的 Mac 正在运行 Catalina。数据包过滤是解决方案。/etc/pf.conf 在 Mac 上配置数据包过滤。我修改了该文件以包含两行新内容:
anchor "com.mydomain"
load anchor "com.mydomain" from "/etc/pf.anchors/com.mydomain"
我创建了 /etc/pf.anchors/com.mydomain,内容如下:
block drop in log inet proto tcp from any to any port 27017
pass in quick inet proto tcp from { localhost myremote.com } to any port 27017
pass out from any to { localhost myremote.com }
table <bad-guy-block> persist file "/etc/bad-guy-block-IPs.txt"
block log from <bad-guy-block> to any
前三行阻止除 localhost 和我想要允许访问的 IP 地址 27017 之外的所有人。最后两行阻止 /etc/bad-guy-block-IPs.txt 中的任何 IP 地址访问我的机器上的任何端口。我的路由器设置为仅将端口 27017 转发到我的计算机,因此这有点过头了,但如果我以后打开其他端口,它们将被阻止。/etc/bad-guy-block-IPs.txt 是一个简单的文本文件,其中的 IP 地址位于单独的行中。需要注意的是,在重新启动后,实际上,在修改任何内容后,都需要运行:
sudo pfctl -f /etc/pf.conf
重启后,您需要添加 -e 选项(启用)。默认情况下不启用。