好的阿杰,我帮你整理一份 安全配置 SFTP 服务器的完整指南,涵盖 Linux 环境下从安装、用户隔离到安全加固的全流程。
1️⃣ SFTP 简介
- SFTP(SSH File Transfer Protocol)通过 SSH 隧道进行文件传输
- 与 FTP 不同,SFTP 加密传输,安全性高
- 适合企业内部或公网安全传输文件
注意:SFTP 不是 FTP over SSL,而是 SSH 内置的文件传输功能。
2️⃣ 安装 OpenSSH(自带 SFTP)
Linux 系统大多自带 openssh-server
,如果未安装:
# Ubuntu/Debian
sudo apt update
sudo apt install openssh-server
# CentOS/RHEL
sudo yum install openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
- 默认 SFTP 功能已包含在 SSH 中
- 配置文件:
/etc/ssh/sshd_config
3️⃣ 创建 SFTP 用户并隔离目录
步骤一:创建 SFTP 用户组
sudo groupadd sftpusers
步骤二:创建用户并指定家目录
sudo useradd -m -g sftpusers -s /sbin/nologin sftpuser
sudo passwd sftpuser
-s /sbin/nologin
防止用户登录 Shell- 家目录
/home/sftpuser
用于上传文件
步骤三:设置目录权限
SFTP chroot 目录要求:
- 根目录必须属于 root 且不可写
- 上传目录可写
sudo mkdir -p /home/sftpuser/upload
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo chown sftpuser:sftpusers /home/sftpuser/upload
sudo chmod 755 /home/sftpuser/upload
4️⃣ 配置 SSHD 只允许 SFTP
编辑 /etc/ssh/sshd_config
,在文件末尾添加:
# SFTP 相关配置
Match Group sftpusers
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
ChrootDirectory /home/%u
→ 将用户限制到家目录ForceCommand internal-sftp
→ 禁止 Shell 登录- 禁用端口转发与 X11,提高安全性
检查语法并重启 SSHD:
sudo sshd -t
sudo systemctl restart sshd
5️⃣ 安全加固
- 禁用密码登录,使用密钥认证
PasswordAuthentication no
PubkeyAuthentication yes
- 用户生成 SSH Key:
ssh-keygen -t ed25519
- 上传公钥到服务器:
mkdir -p /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh
echo "公钥内容" > /home/sftpuser/.ssh/authorized_keys
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpusers /home/sftpuser/.ssh
- 限制 SSH 端口
Port 2222
- 限制登录用户
AllowUsers sftpuser
- 启用防火墙
- 仅开放 SSH 端口(22 或自定义)
ufw allow 2222/tcp
ufw enable
- 限制上传文件大小(可选)
- 在 SFTP 客户端设置
- 或使用
ulimit
限制用户资源
6️⃣ 测试 SFTP 访问
sftp -P 2222 sftpuser@your_server_ip
- 用户只能访问
/home/sftpuser/upload
- 无法访问系统其他目录
- 文件传输全程加密
7️⃣ 维护与监控
- 查看用户登录:
lastlog -u sftpuser
- 查看上传文件:
ls -lh /home/sftpuser/upload
- 开启日志审计:
# /etc/ssh/sshd_config
Subsystem sftp internal-sftp -l INFO
- 日志默认在
/var/log/auth.log
或/var/log/secure
8️⃣ 总结
安全 SFTP 配置关键点:
步骤 | 作用 |
---|---|
用户隔离(chroot) | 防止访问系统其他目录 |
禁用 Shell 登录 | 限制攻击面 |
密钥认证 | 避免弱口令攻击 |
防火墙 & 端口限制 | 防止暴力扫描 |
日志审计 | 监控用户操作,快速排查问题 |
阿杰,如果你愿意,我可以帮你画一张 安全 SFTP 架构图,包括 用户隔离目录、密钥认证、日志审计、防火墙限制,一眼就能看懂整体安全配置流程。
你希望我画吗?
发表回复