Vla*_*anu 7 firewall localhost macos
我想为我的 memcached 驱动程序测试回退策略(以防端口受防火墙保护)。如何拒绝访问 127.0.0.1 上的特定端口?
jau*_*ume 20
您可以使用pfctl
.
OS X 10.7 "Lion" 及更高版本使用OpenBSD PF(数据包过滤器)。一个名为的伪设备/dev/pf
允许用户空间工具配置数据包过滤器。该命令pfctl
提供了大部分功能。
要过滤环回接口上的端口 1234,您可以使用如下规则:
block drop quick on lo0 proto tcp from any to any port = 1234
Run Code Online (Sandbox Code Playgroud)
此规则阻止lo0
端口 1234上的所有入站/出站流量(quick
在此上下文中,如果此规则匹配,则不应应用其他规则)。
在 PF 中加载规则的命令是:
(sudo pfctl -sr 2>/dev/null; echo "block drop quick on lo0 proto tcp from any to any port = 1234") | sudo pfctl -nf -
Run Code Online (Sandbox Code Playgroud)
命令pfctl -sr 2>/dev/null
列出所有当前规则(并将非常烦人的错误消息发送No ALTQ support in kernel ALTQ related functions disabled
到/dev/null
)。在echo
添加上述的输出,其被管道输送到规则pfctl
。选项-n
表示不适用,只需勾选。
如果没有错误消息(除了上述No ALTQ support
消息和警告pfctl: Use of -f option, could result in flushing of rules present in the main ruleset added by the system at startup
),您可以应用规则:
(sudo pfctl -sr 2>/dev/null; echo "block drop quick on lo0 proto tcp from any to any port = 1234") | sudo pfctl -f - 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
这个命令与上一个命令的不同之处在于我删除了-n
. 请注意,您可能需要添加选项-e
以启用数据包过滤器(感谢您的评论,凯西):(sudo pfctl -sr 2>/dev/null; echo "block drop quick on lo0 proto tcp from any to any port = 1234") | sudo pfctl -e -f - 2>/dev/null
您现在可以列出检查它是否已正确添加的规则:
sudo pfctl -sr 2>/dev/null
(...)
block drop quick on lo0 proto tcp from any to any port = 1234
Run Code Online (Sandbox Code Playgroud)
完成后,您可以删除规则:
要么加载原始规则集:
sudo pfctl -f /etc/pf.conf
Run Code Online (Sandbox Code Playgroud)或以添加规则的类似方式删除规则:
(sudo pfctl -sr 2>/dev/null | fgrep -v "block drop quick on lo0 proto tcp from any to any port = 1234") | sudo pfctl -f -
Run Code Online (Sandbox Code Playgroud)(我已经在 OS X 10.8.2 "Mountain Lion" 上测试了整个过程并且完美运行。)
您可以在这篇出色的介绍中找到更多信息:http : //nomoa.com/bsd/gateway/pf/valid/pfctl.html。
ipfw
仍包含在 OS X 10.7 和 10.8 中,但已弃用:
IPFW(8) BSD System Manager's Manual IPFW(8)
NAME
ipfw -- IP firewall and traffic shaper control program (DEPRECATED)
SYNOPSIS
(...)
DESCRIPTION
Note that use of this utility is DEPRECATED. Please use pfctl(8) instead.
Run Code Online (Sandbox Code Playgroud)
Mac OS X 10.6(雪豹)示例
拒绝与本地主机的连接,端口 SSH(= 22,从 读取/etc/services
):
sudo ipfw add deny tcp from any to localhost ssh
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18559 次 |
最近记录: |