Samba 加固三条线
Samba 提供 Linux 与 Windows 之间的 SMB 文件共享,配置不当会直接带来匿名共享与弱协议风险。加固方向是三条并行:最小化共享(只暴露必要目录)、禁用 guest 与匿名枚举、把协议下限抬到 SMB2 及以上,同时开启必要的共享审计。
基本信息
| 适用平台 | Linux(Samba) |
|---|---|
| 风险等级 | 高 |
| 基线要求 | 无匿名共享,协议不低于 SMB2 |
| 配置文件 | /etc/samba/smb.conf |
| 核查工具 | testparm 与 smbstatus |
典型使用场景
- 迁移或新建文件共享服务前的配置评审
- 排查可以被匿名访问的共享目录
- 关闭已不使用的 SMB1 协议
- 共享访问异常时确认实际生效的配置项
- 核对共享目录权限与账号归属
核查与关键配置
核查与关键配置
testparm -s 2>/dev/null | head -40 # 查看生效配置(含默认值展开)
# smb.conf 关键项:
# server min protocol = SMB2 # 协议下限抬到 SMB2
# map to guest = never # 未认证用户不映射为来宾
# restrict anonymous = 2 # 禁止匿名枚举
# ntlm auth = ntlmv2-only # 只允许 NTLMv2
smbstatus 2>/dev/null # 查看当前连接与共享使用情况
smbclient -L localhost -N 2>/dev/null | head # 匿名尝试列共享,验证是否可枚举配置项读法
| 配置项 | 含义 | 注意点 |
|---|---|---|
| server min protocol | 服务端允许的最低协议 | 至少 SMB2,禁用 SMB1 |
| map to guest | 未认证用户的映射方式 | 应为 never |
| restrict anonymous | 匿名枚举限制 | 设为 2 禁止枚举 |
| ntlm auth | 允许的 NTLM 认证级别 | 尽量只保留 ntlmv2 |
| 共享段 guest ok | 该共享是否允许来宾访问 | 逐个 section 核查 |
SMB1 存在经典的远程利用漏洞(永恒之蓝一类),服务端与客户端两端都要禁用,只改一端仍然可能被利用。
只看全局段不够:guest ok 常常出现在某个具体共享段里,必须逐个 section 核查,同时确认 restrict anonymous 已经设置。共享目录的文件系统权限与会话权限是两层控制,排查访问被拒时要同时看两侧。
禁用 SMB1 的同时要确认客户端与挂载方式不依赖旧协议:老设备或老 NAS 断连是常见后果,收敛前先在测试环境完整验证一轮再推到生产。
加固后建议做一次实测:用匿名会话尝试列出共享、用低权限账号尝试访问受限目录,确认策略真的生效,而不是只看了配置文件。