// 红队渗透 · 2025-11-12

Linux 配置 SMB 共享简单教程

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,点击「连接」;
  • 选择「客人」身份,点击「连接」即可访问。

五、渗透测试场景注意事项

  1. 匿名访问风险:guest ok = yes 允许任何人访问,仅适合内网测试环境,禁止在公网暴露;
  2. 权限控制:若需限制访问,可关闭匿名访问(guest ok = no),并添加 samba 用户:
    # 创建 samba 用户(需先存在系统用户)
    sudo smbpasswd -a 用户名
    # 例如:sudo smbpasswd -a pentester(设置密码后,客户端需用该用户登录)
  3. 日志审计:SMB 日志默认位于 /var/log/samba/,可通过日志跟踪访问记录;
  4. 端口隐藏:若需隐藏共享(browseable = no),客户端需知道共享名称才能访问(适合敏感测试数据)。

六、常见问题排查

  1. 访问被拒绝:

    • 检查目录权限(是否为 777 或 samba 用户可访问);
    • 确认 writable = yes 且 read only = no;
    • 防火墙是否开放 139/445 端口。
  2. 服务启动失败:

    • 用 testparm 检查配置文件语法错误;
    • 查看日志:sudo tail -f /var/log/samba/log.smbd。
  3. 客户端无法发现共享:

    • 确保 browseable = yes;
    • 直接通过 IP+共享名访问(而非依赖网络邻居自动发现)。

通过以上步骤,即可在 Linux 系统中快速配置一个针对 /root/pentest 目录的 SMB 共享,满足渗透测试中文件传输的需求。根据实际场景,可进一步调整权限和访问控制策略。

原文 https://blog.csdn.net/2301_79518550/article/details/154758405