温馨提示×

ubuntu sftp怎样加固

小樊
34
2026-09-23 14:01:33
栏目: 智能运维

在 Ubuntu 上加固 SFTP(通常基于 OpenSSH)可以从服务配置、权限控制、防火墙、日志审计等多个方面入手。下面是一套实用且较安全的加固方案。


一、使用独立 SFTP 用户(推荐)

1. 创建仅用于 SFTP 的用户

sudo adduser sftpuser
sudo passwd sftpuser

2. 禁止该用户 SSH 登录

sudo usermod -s /usr/sbin/nologin sftpuser

二、使用 Chroot 限制 SFTP 目录(非常重要)

1. 创建目录结构

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

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

⚠️ Chroot 目录必须由 root 拥有


2. 修改 SSH 配置

编辑:

sudo nano /etc/ssh/sshd_config

在文件末尾添加:

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

测试并重启:

sudo sshd -t
sudo systemctl restart ssh

三、禁用不安全的 SSH 功能(全局加固)

编辑 /etc/ssh/sshd_config:

PermitRootLogin no
PasswordAuthentication yes   # 或用密钥
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 20
ClientAliveInterval 300
ClientAliveCountMax 2
AllowTcpForwarding no
X11Forwarding no

重启:

sudo systemctl restart ssh

四、使用密钥登录(比密码安全)

1. 生成密钥

ssh-keygen -t ed25519

2. 拷贝公钥

ssh-copy-id sftpuser@server

3. 禁用密码登录(可选)

PasswordAuthentication no

五、防火墙限制(UFW)

sudo ufw allow 22/tcp
sudo ufw enable

限制 IP(示例):

sudo ufw allow from 192.168.1.100 to any port 22

六、Fail2Ban 防暴力破解(强烈推荐)

sudo apt install fail2ban

配置 /etc/fail2ban/jail.local:

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

启动:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

七、日志与审计

查看 SFTP 日志:

sudo journalctl -u ssh
sudo tail -f /var/log/auth.log

可启用详细日志:

LogLevel VERBOSE

八、可选高级加固

  • 修改 SSH 端口(非 22)
  • 使用 rssh / scponly(已不推荐)
  • SELinux / AppArmor
  • 只读 SFTP(通过权限控制)
  • 容器化 SFTP(Docker)

九、快速检查清单 ✅

✅ Chroot 限制目录
✅ 禁止 root 登录
✅ 禁用 TCP 转发
✅ Fail2Ban 启用
✅ 防火墙限制
✅ 日志监控


如果你愿意,我可以:

  • 给你一份 完整 sshd_config 示例
  • 帮你配置 Docker SFTP
  • 或针对 生产环境 / 等保要求 做方案

你现在是 个人服务器 还是 企业/生产环境?

0 踩