引言
smb(server message block)是一种网络文件共享协议,广泛用于 windows、linux 等系统间的文件共享。在渗透测试(pentest)场景中,配置 smb 共享可以方便地在测试环境中传输工具、payload 或测试数据。本文将详细介绍如何在 linux 系统中配置 smb 共享。
一、环境准备
1. 操作系统要求
本文以 ubuntu 22.04 lts 为例,其他基于 debian 的系统(如 kali linux)操作类似;rhel/centos 系统步骤略有差异(包管理工具为 yum 或 dnf)。
2. 安装 smb 服务
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,我们需要在该文件中添加共享目录的配置。
1. 备份配置文件(重要)
修改配置前先备份默认配置,避免误操作导致服务异常:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
2. 创建共享目录
根据需求创建共享目录并设置合适的权限(smb 服务需要访问权限):
注意:若目录所有者为 root,需确保 samba 服务用户(通常是 nobody)有访问权限。
3. 编辑 smb 配置文件
使用文本编辑器(如 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:允许匿名用户访问(无需登录,适合测试环境,但生产环境不建议);writable = yes:允许写入操作,需确保目录权限足够(如 777 或所有者为 samba 服务用户);force user = root:所有访问该共享的操作(包括匿名用户)都将以 root 身份执行,解决 /root 目录的权限限制(可能有安全隐患)。
4. 验证配置文件语法
修改后需验证配置是否有误,避免服务启动失败:
testparm
若输出类似 loaded services file ok. 则表示配置有效。
5. 重启 smb 服务
使配置生效:
sudo systemctl restart smbd nmbd
三、防火墙配置(可选)
若系统启用了防火墙(如 ufw 或 firewalld),需开放 smb 服务的端口(默认端口:139、445)。
1. ufw 防火墙(ubuntu/debian 常用)
# 允许 smb 端口 sudo ufw allow 139/tcp sudo ufw allow 445/tcp # 重启防火墙 sudo ufw reload # 查看开放的端口 sudo ufw status
2. firewalld 防火墙(rhel/centos 常用)
# 允许 smb 服务 sudo firewall-cmd --add-service=samba --permanent sudo firewall-cmd --reload
四、客户端访问测试
配置完成后,可通过 windows、linux 或 macos 客户端访问共享目录。
1. windows 客户端访问
- 打开资源管理器,在地址栏输入
\\linux服务器ip\pentest(例如\\192.168.1.100\pentest); - 由于配置了
guest ok = yes,无需输入用户名密码,直接访问即可; - 尝试创建、复制或删除文件,验证读写权限是否生效。
2. linux 客户端访问
需安装 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 共享,满足渗透测试中文件传输的需求。根据实际场景,可进一步调整权限和访问控制策略。
以上就是在linux中配置smb共享的完整指南的详细内容,更多关于linux配置smb共享的资料请关注代码网其它相关文章!
发表评论