温馨提示×

怎样提升ubuntu sftp安全

小樊
45
2026-09-20 14:50:20
栏目: 智能运维

提升 Ubuntu 上 SFTP 的安全性,通常可以从系统配置、SSH/SFTP 服务加固、权限控制、审计监控几个方面入手。下面给你一套比较实用、循序渐进的方案。


一、使用独立 SFTP 用户,禁止 Shell 登录

1. 创建专用 SFTP 用户

sudo adduser sftpuser

2. 禁止 SSH Shell 登录(仅限 SFTP)

编辑 /etc/ssh/sshd_config,添加:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

3. 设置 Chroot 目录权限(非常关键)

sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload

⚠️ Chroot 目录必须归 root 所有,否则 SFTP 无法启动


二、禁用 root 登录和密码登录(强烈推荐)

修改 SSH 配置

PermitRootLogin no
PasswordAuthentication no

使用 SSH 密钥登录:

ssh-keygen
ssh-copy-id sftpuser@server

三、限制 SFTP 用户活动范围

1. 使用 Chroot 隔离

上面已经配置,确保用户不能访问系统其他目录。

2. 只读 / 只写控制

# 只读
sudo chmod 555 /home/sftpuser

# 只写目录
sudo chmod 733 /home/sftpuser/upload

四、强化 SSH / SFTP 服务本身

1. 修改默认端口(可选)

Port 2222

2. 限制允许的用户

AllowUsers sftpuser

3. 禁用不必要的功能

AllowTcpForwarding no
X11Forwarding no

五、使用防火墙限制访问

sudo ufw allow 2222/tcp
sudo ufw enable

可进一步限制 IP:

sudo ufw allow from 1.2.3.4 to any port 2222

六、日志与审计

1. 开启 SFTP 日志

在 sshd_config 中:

Subsystem sftp internal-sftp -l INFO -f AUTH

查看日志:

sudo tail -f /var/log/auth.log

2. 监控异常登录

sudo apt install fail2ban

配置 SSH jail:

[sshd]
enabled = true
port = 2222

七、进阶安全方案(可选)

  • ✅ 使用 FTP over SSH + chroot + ACL
  • ✅ 使用 rssh / scponly(已较少维护)
  • ✅ 使用 容器化 SFTP(Docker)
  • ✅ 启用 SELinux / AppArmor
  • ✅ 定期更新系统:sudo apt update && upgrade

八、快速安全检查清单

  • [ ] root 禁止登录
  • [ ] 密码登录关闭
  • [ ] SFTP 用户无 shell
  • [ ] Chroot 目录权限正确
  • [ ] 防火墙限制端口
  • [ ] fail2ban 已启用
  • [ ] 日志可审计

如果你愿意,我可以:

  • 给你一份 可直接用的 sshd_config 模板
  • 帮你设计 多用户 SFTP 隔离方案
  • 或针对 生产服务器 / 内网 / 云服务器 给定制建议

0 踩