如何在networking接口上阻止对Apache的请求?

问题:我的Macbook Pro上有一个本地Apache实例。 我需要它来监听除en0和en1之外的所有networking接口(基本上,从Parallels上监听lo和vnicX)。

我知道“Listen *:80”,但在这种情况下这不是一个解决scheme。 我可以想象的是,如果使用OS X防火墙阻止在这些接口上传入的Apache请求, 但是我找不到任何实际的例子,不能自己制定这样的规则。

请有人帮忙吗?

可以将Apache configuration为侦听所有地址( Listen *:80 )或特定地址( Listen 192.168.23.42:80 )。 它不能被configuration为监听特定的地址(或接口)。 如果你需要的话,你可以使用防火墙来阻止这些接口的连接。 像这样的东西可能会诀窍:

 ipfw add deny any to dst-port 80 in via en0 ipfw add deny any to dst-port 80 in via en1 

我会去使用防火墙设置。 他们在设置 – >安全和隐私 – >防火墙。

阅读OS X安全指南后,我使用了ipfw。 它在山狮行得很好。 这是我做的:

使用以下内容创build一个名为/etc/ipfw.conf的文件:

  add 1000 deny tcp from any to any dst-port 80 via en0 add 2000 deny tcp from any to any dst-port 80 via en1 

如果您使用USB调制解调器,您可能需要稍微不同的一套规则(如全部阻止,但允许“lo0”接口)。

创build一个名为/Library/LaunchDaemons/ipfw.plist的文件,内容如下:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http:// www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>ipfw</string> <key>Program</key> <string>/sbin/ipfw</string> <key>ProgramArguments</key> <array> <string>/sbin/ipfw</string> <string>/etc/ipfw.conf</string> </array> <key>RunAtLoad</key> <true /> </dict> </plist> 

注册launchd:

  launchctl load -w /Library/LaunchDaemons/ipfw.plist 

检查规则是否已注册:

 ipfw print 

你应该得到:

 01000 deny tcp from any to any dst-port 80 via en0 02000 deny tcp from any to any dst-port 80 via en1 65535 allow ip from any to any 

最后的规则必要的!

现在,您可以尝试从另一台计算机连接到您自己的计算机 ,并检查连接是否被阻止。 请注意,您始终可以从自己的计算机连接到自己的计算机。 试试你的智能手机或朋友的电脑。