You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PF防火墙仅允许内部LAN访问FreeBSD Samba:规则合规性及优化方案?

嘿,针对你在FreeBSD 11.1上用PF保护单NIC Samba共享的需求,我来给你拆解下规范配置思路,顺便帮你评估现有规则的合理性。

先明确Samba的核心端口

首先,要搞清楚Samba服务依赖的端口,避免规则遗漏:

  • TCP 139:NetBIOS会话服务(老版本Windows常用)
  • TCP 445:直接SMB服务(现代系统优先用这个)
  • UDP 137/138:NetBIOS名字解析(如果内部客户端依赖NetBIOS访问共享名,就需要开这两个)

评估你现有规则的合理性

假设你现有规则大概是这样的:

pass in on em0 from 192.168.x.0/24 to em0 port {139,445}

这个规则方向是对的,但可能存在几个不规范/不完整的地方:

  1. 没有结合PF的状态检测(keep state),会导致Samba的响应流量可能被默认规则拦截
  2. 如果内部依赖NetBIOS,遗漏了UDP端口的规则
  3. 没有定义变量(比如网卡、网段),后续维护起来麻烦
  4. 大概率缺少PF的基础规则(比如默认拒绝、允许回环),这会让整体防火墙策略不安全

规范的PF配置方案

下面是符合PF惯例的配置步骤,你可以直接参考修改:

1. 定义全局变量(方便维护)

在/etc/pf.conf开头先定义常用变量,替换成你实际的网卡和网段:

# 内部网卡名称(比如em0、igb0,用ifconfig查看)
int_if = "em0"
# 允许访问的内部网段
internal_net = "192.168.1.0/24"
# Samba核心TCP端口
samba_tcp_ports = "{139, 445}"
# Samba NetBIOS UDP端口(可选,根据内部需求开启)
samba_udp_ports = "{137, 138}"

2. 配置PF基础规则(必须)

这部分是PF的常规安全基线,不能省略:

# 跳过回环接口的过滤(本地服务访问必须)
set skip on lo0

# 默认拒绝所有入站、转发流量,只允许出站的状态化连接
block all
pass out quick keep state

3. 添加Samba专属规则

结合状态检测,只允许内部网段访问:

# 允许内部网段访问Samba的TCP端口,启用状态检测
pass in on $int_if proto tcp from $internal_net to ($int_if) port $samba_tcp_ports keep state

# (可选)如果内部需要NetBIOS名字解析,添加UDP规则
pass in on $int_if proto udp from $internal_net to ($int_if) port $samba_udp_ports keep state

这里的($int_if)写法更灵活,即使服务器有多个IP或者用CARP,也能匹配所有绑定在该网卡上的地址;keep state会自动允许Samba的响应流量,不用额外写出站规则。

4. 双重保险:Samba自身配置限制

除了PF规则,建议在/etc/smb.conf里也添加网段限制,即使PF出问题,Samba也会拒绝外部访问:

[global]
    hosts allow = 192.168.1.0/24
    hosts deny = all

验证配置的步骤

  1. 先检查PF配置语法是否正确:
pfctl -nf /etc/pf.conf

没有报错说明语法没问题。

  1. 加载新配置:
pfctl -f /etc/pf.conf
  1. 测试效果:
  • 从内部网段的机器访问Samba共享,确认能正常连接
  • 尝试从外部(如果有条件)访问,应该被拦截
  • 可以用tcpdump抓包验证:tcpdump -n -i em0 port 139 or 445,看外部流量是否被PF丢弃

额外注意事项

  • 确保PF开机自动启动:sysrc pf_enable="YES",sysrc pflog_enable="YES"
  • 如果需要排查问题,可以查看pflog日志:tcpdump -n -e -ttt -i pflog0

内容的提问来源于stack exchange,提问作者gsl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:28:41