温馨提示×

如何提升Ubuntu SFTP安全性

小樊
46
2026-08-01 12:54:50
栏目: 智能运维

提升 Ubuntu 上 SFTP 安全性 的核心思路是:最小权限 + 强认证 + 访问控制 + 审计。下面按“必做 → 推荐 → 进阶”分层说明,并给出可直接使用的配置示例。


一、必做安全加固(最少也要做这些)

1. 使用专门的 SFTP 用户,禁止 SSH Shell

不要给 SFTP 用户 shell 权限

sudo groupadd sftpusers

sudo useradd -m -g sftpusers -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser

2. 使用 OpenSSH 内置 SFTP(不要额外装 FTP)

Ubuntu 自带 OpenSSH 即可:

sudo apt update
sudo apt install openssh-server

3. 配置 SFTP 为 Chroot 隔离(最重要)

编辑 SSH 配置:

sudo nano /etc/ssh/sshd_config

在文件末尾添加:

Match Group sftpusers
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

创建目录结构(非常关键):

sudo mkdir -p /sftp/sftpuser
sudo chown root:root /sftp/sftpuser
sudo chmod 755 /sftp/sftpuser

sudo mkdir /sftp/sftpuser/upload
sudo chown sftpuser:sftpusers /sftp/sftpuser/upload

ChrootDirectory 必须属于 root,且不能被其他用户写

重启 SSH:

sudo systemctl restart ssh

4. 禁止 root 登录

PermitRootLogin no

二、推荐安全配置(强烈建议)

5. 禁用密码登录,使用 SSH 密钥

PasswordAuthentication no
PubkeyAuthentication yes

为 sftp 用户配置公钥:

mkdir -p /sftp/sftpuser/.ssh
nano /sftp/sftpuser/.ssh/authorized_keys
chown -R root:root /sftp/sftpuser/.ssh
chmod 700 /sftp/sftpuser/.ssh
chmod 600 /sftp/sftpuser/.ssh/authorized_keys

6. 修改默认端口

Port 2222

避免自动化扫描。


7. 限制登录用户

AllowUsers sftpuser

三、进阶安全(高安全环境)

8. 使用 Fail2ban 防暴力破解

sudo apt install fail2ban

SSH 规则默认生效,可自定义:

[sshd]
enabled = true
maxretry = 3
bantime = 3600

9. 使用防火墙限制来源 IP

sudo ufw allow from 1.2.3.4 to any port 2222

或仅允许公司 IP。


10. 启用 SFTP 日志审计

编辑:

Subsystem sftp internal-sftp -l INFO -f AUTH

查看日志:

journalctl -u ssh

/var/log/auth.log


11. 限制 SFTP 使用的算法(可选)

KexAlgorithms curve25519-sha256
Ciphers aes256-gcm@openssh.com
MACs hmac-sha2-256

四、常见错误(非常重要)

❌ Chroot 目录可写
❌ 给 sftp 用户 /bin/bash
❌ 用 FTP(明文)
❌ 允许 root + 密码登录


五、安全等级对照表

等级 内容
仅 SFTP + 密码
⭐⭐ Chroot + 禁止 shell
⭐⭐⭐ 密钥登录 + 非 root
⭐⭐⭐⭐ Fail2ban + 防火墙
⭐⭐⭐⭐⭐ 审计 + 限制算法 + IP 白名单

六、快速检查清单 ✅

  • [ ] 禁止 root 登录
  • [ ] SFTP 用户无 shell
  • [ ] Chroot 目录权限正确
  • [ ] 禁用密码登录
  • [ ] 使用非默认端口
  • [ ] 启用 Fail2ban

如果你愿意,我可以: ✅ 帮你 生成完整 sshd_config ✅ 给你 Docker / 云服务器专用方案 ✅ 帮你 排查 SFTP 无法登录问题

直接告诉我你的使用场景即可。

0