我需要使用数据包过滤器阻止除一个 IP 地址之外的所有 IP 地址访问在本地 Mac 上运行的 Mongo

我需要使用数据包过滤器阻止除一个 IP 地址之外的所有 IP 地址访问在本地 Mac 上运行的 Mongo

有人能帮我阻止网络上的所有传入流量吗?我的路由器上设置了端口转发,以允许端口 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 选项(启用)。默认情况下不启用。

相关内容