下面给你一套在 Debian 上加固 SFTP 安全的实用方案,从“最小可用”到“较严格”逐步加强,你可以按需求选用。
编辑 SSH 配置:
sudo nano /etc/ssh/sshd_config
确认或修改为:
PermitRootLogin no
重启:
sudo systemctl restart ssh
sudo adduser sftpuser
(不建议给该用户 shell 登录权限)
在 /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
重启 SSH:
sudo systemctl restart ssh
PasswordAuthentication no
PubkeyAuthentication yes
生成密钥(客户端):
ssh-keygen
把公钥放到服务器:
~/.ssh/authorized_keys
Port 2222
⚠️ 记得防火墙放行新端口
sudo apt install ufw
sudo ufw allow from 1.2.3.4 to any port 2222
sudo ufw enable
sudo apt install fail2ban
默认已保护 SSH,可自定义:
sudo nano /etc/fail2ban/jail.local
示例:
[sftp]
enabled = true
port = 2222
maxretry = 3
bantime = 1h
sudo apt install acl
setfacl -m u:sftpuser:rwx /data/sftp
sudo nano /etc/ssh/sshd_config
LogLevel VERBOSE
查看日志:
sudo journalctl -u ssh
sudo apt update && sudo apt upgrade -y
✅ 非 root 用户
✅ 密钥登录
✅ Chroot SFTP
✅ fail2ban
✅ 防火墙限制
如果你愿意,我可以: