温馨提示×

怎么加固Ubuntu FTPServer

小樊
41
2026-08-28 22:19:19
栏目: 智能运维

加固 Ubuntu 上的 FTP(通常指使用 OpenSSH 的 SFTP 或 vsftpd) 服务器,核心目标是:减少攻击面、控制权限、加密传输、加强审计。下面按不同 FTP 类型给你一套实用加固方案


一、先确认你用的是哪种 FTP 服务

常见情况

服务 说明
vsftpd 传统 FTP(明文或 TLS)
SFTP(OpenSSH) 推荐,走 SSH 加密
ProFTPD 较少见

强烈建议优先使用 SFTP(OpenSSH),而不是传统 FTP。


二、使用 SFTP(OpenSSH)加固(推荐)

1️⃣ 更新系统

sudo apt update && sudo apt upgrade -y

2️⃣ 创建专用 SFTP 用户(禁止 SSH 登录)

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

3️⃣ 配置 SSH 仅允许 SFTP(禁用 shell)

编辑:

sudo nano /etc/ssh/sshd_config

添加或修改:

# 禁用 root 登录
PermitRootLogin no

# 禁用密码登录(可选,推荐)
PasswordAuthentication no

# 启用 SFTP 子系统
Subsystem sftp internal-sftp

# 限制 SFTP 用户
Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

⚠️ Chroot 目录权限要求

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

用户上传目录:

sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload

4️⃣ 重启 SSH

sudo systemctl restart ssh

5️⃣ 防火墙(只允许必要端口)

sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status

三、如果你必须使用 vsftpd(传统 FTP)

1️⃣ 安装并备份配置

sudo apt install vsftpd
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

2️⃣ 加固 vsftpd 配置

编辑:

sudo nano /etc/vsftpd.conf

推荐配置:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

# 日志
xferlog_enable=YES
log_ftp_protocol=YES

# 限制用户
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

限制用户:

echo sftpuser | sudo tee -a /etc/vsftpd.userlist

3️⃣ 启用 FTPS(强烈建议)

ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
force_local_data_ssl=YES
force_local_logins_ssl=YES

✅ 生产环境请使用 Let’s Encrypt 证书


4️⃣ 重启服务

sudo systemctl restart vsftpd

四、通用加固措施(强烈推荐)

✅ 1. 使用密钥登录(禁用密码)

ssh-keygen
ssh-copy-id sftpuser@server

✅ 2. 防暴力破解(fail2ban)

sudo apt install fail2ban
sudo systemctl enable fail2ban

✅ 3. 最小权限原则

  • 禁止 root 登录
  • 每个用户只给一个目录
  • 文件权限 640 / 750

✅ 4. 审计与日志

sudo apt install auditd
sudo systemctl enable auditd

查看登录记录:

last
journalctl -u ssh

五、安全等级对比(建议)

方案 安全性
FTP(明文) ❌ 不推荐
FTPS(vsftpd + TLS) ✅ 可用
SFTP(OpenSSH) ✅✅✅ 强烈推荐

六、推荐最终方案(生产环境)

SFTP + SSH 密钥 + Chroot + fail2ban + 防火墙


如果你愿意,可以告诉我:

  • ✅ 是 vsftpd 还是 SFTP
  • ✅ 是否 对内网 / 公网
  • ✅ 是否需要 匿名访问
  • ✅ Ubuntu 版本(20.04 / 22.04 / 24.04)

我可以帮你 直接生成一份完整可用的配置文件

0