提升 Ubuntu 上 SFTP 的安全性,通常可以从系统配置、SSH/SFTP 服务加固、权限控制、审计监控几个方面入手。下面给你一套比较实用、循序渐进的方案。
sudo adduser sftpuser
编辑 /etc/ssh/sshd_config,添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
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 无法启动
PermitRootLogin no
PasswordAuthentication no
使用 SSH 密钥登录:
ssh-keygen
ssh-copy-id sftpuser@server
上面已经配置,确保用户不能访问系统其他目录。
# 只读
sudo chmod 555 /home/sftpuser
# 只写目录
sudo chmod 733 /home/sftpuser/upload
Port 2222
AllowUsers sftpuser
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
在 sshd_config 中:
Subsystem sftp internal-sftp -l INFO -f AUTH
查看日志:
sudo tail -f /var/log/auth.log
sudo apt install fail2ban
配置 SSH jail:
[sshd]
enabled = true
port = 2222
sudo apt update && upgrade如果你愿意,我可以: