SMB(Server Message Block)是一种网络文件共享协议,广泛用于 Windows、Linux 等系统间的文件共享。在渗透测试(pentest)场景中,设置 SMB 共享可以方便地在测试环境中传输工具、Payload 或测试数据。本文将详细介绍如何在 Linux 系统中配置 SMB 共享。
一、环境准备
- 操作系统要求
- 安装 SMB 服务
本文以 Ubuntu 22.04 LTS 为例,其他基于 Debian 的系统(如 Kali Linux)操作类似;RHEL/CentOS 系统步骤略有差异(包管理工具为
yum 或 dnf)。
Linux 中常用的 SMB 服务端是
samba,需先安装相关包:
# Ubuntu/Debian/Kali 系统 sudo apt update && sudo apt install samba samba-common-bin -y # RHEL/CentOS 系统 sudo yum install samba samba-common -y
安装完成后,启动服务并设置开机自启:
# 启动服务 sudo systemctl start smbd nmbd # 设置开机自启 sudo systemctl enable smbd nmbd # 检查服务状态(确保为 active (running)) sudo systemctl status smbd
二、配置 SMB 共享(核心步骤)
SMB 的核心配置文件为
/etc/samba/smb.conf,我们需要在该文件中添加共享目录的配置。
- 备份配置文件(重要)
- 创建共享目录
- 编辑 SMB 配置文件
- 验证配置文件语法
- 重启 SMB 服务
修改配置前先备份默认配置,避免误操作导致服务异常:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
根据需求创建共享目录并设置合适的权限(SMB 服务需要访问权限):
注意:若目录所有者为 root,需确保 samba 服务用户(通常是 nobody)有访问权限。
使用文本编辑器(如
nano 或 vim)打开配置文件,在文件末尾添加以下配置(对应需求:可浏览、可写、允许匿名访问):
配置说明:[pentest] comment = Pentest Tools Share # 共享描述(可选) path = /root/pentest # 共享目录路径 browseable = yes # 允许浏览(在网络邻居中可见) writable = yes # 允许写入(修改/删除文件) guest ok = yes # 允许匿名访问(无需密码) force user = root # 解决权限不足问题 # 禁止跟随符号链接(安全加固,避免访问共享外文件) follow symlinks = no wide links = no:共享名称(客户端访问时显示的名称);[pentest]:允许匿名用户访问(无需登录,适合测试环境,但生产环境不建议);guest ok = yes:允许写入操作,需确保目录权限足够(如 777 或所有者为 samba 服务用户);writable = yes:所有访问该共享的操作(包括匿名用户)都将以 root 身份执行,解决 /root 目录的权限限制(可能有安全隐患)。force user = root
修改后需验证配置是否有误,避免服务启动失败:
若输出类似testparm则表示配置有效。Loaded services file OK.
使配置生效:
sudo systemctl restart smbd nmbd
三、防火墙配置(可选)
若系统启用了防火墙(如
ufw 或 firewalld),需开放 SMB 服务的端口(默认端口:139、445)。
- ufw 防火墙(Ubuntu/Debian 常用)
- firewalld 防火墙(RHEL/CentOS 常用)
# 允许 SMB 端口 sudo ufw allow 139/tcp sudo ufw allow 445/tcp # 重启防火墙 sudo ufw reload # 查看开放的端口 sudo ufw status
# 允许 SMB 服务 sudo firewall-cmd --add-service=samba --permanent sudo firewall-cmd --reload
四、客户端访问测试
配置完成后,可通过 Windows、Linux 或 macOS 客户端访问共享目录。
- Windows 客户端访问
- Linux 客户端访问
打开资源管理器,在地址栏输入
\\Linux服务器IP\pentest(例如 \\192.168.1.100\pentest);
由于配置了
guest ok = yes,无需输入用户名密码,直接访问即可;
尝试创建、复制或删除文件,验证读写权限是否生效。
需安装
cifs-utils 工具:
# 安装工具 sudo apt install cifs-utils -y # Ubuntu/Debian # 或 sudo yum install cifs-utils -y # RHEL/CentOS # 创建挂载点 mkdir -p ~/pentest_share # 挂载 SMB 共享(匿名访问) sudo mount -t cifs //192.168.1.100/pentest ~/pentest_share -o guest # 访问共享目录 cd ~/pentest_share
3. macOS 客户端访问
打开「访达」,按下
Cmd + K;
输入
smb://192.168.1.100/pentest,点击「连接」;
选择「访客」身份,点击「连接」即可访问。
五、渗透测试场景注意事项
匿名访问风险:
guest ok = yes允许所有人员访问,仅适合内部网络测试环境,禁止在公共网络中暴露;
权限控制:若需限制访问,可关闭匿名访问(
guest ok = no),并添加 Samba 用户:
# 创建 Samba 用户(需要先存在系统用户)
sudo smbpasswd -a 用户名
# 例如:sudo smbpasswd -a pentester(设置密码后,客户端需使用该用户登录)
日志审计:SMB 日志默认位于
/var/log/samba/,可通过日志追踪访问记录;
端口隐藏:若需隐藏共享(
browseable = no),客户端需要知道共享名称才能访问(适用于敏感测试数据)。
六、常见问题排查
访问被拒绝:
检查目录权限(是否为 777 或 Samba 用户可访问);
确认
writable = yes且
read only = no;
防火墙是否开放 139/445 端口。
服务启动失败:
用
testparm检查配置文件语法错误;
查看日志:
sudo tail -f /var/log/samba/log.smbd。
客户端无法发现共享:
确保
browseable = yes;
直接通过 IP+共享名称访问(而非依赖网络邻居自动发现)。
通过以上步骤,即可在 Linux 系统中快速配置一个针对
/root/pentest目录的 SMB 共享,满足渗透测试中的文件传输需求。根据实际场景,可进一步调整权限和访问控制策略。


雷达卡


京公网安备 11010802022788号







