云服務(wù)器選擇:
推薦配置:2 核 4G 內(nèi)存以上,50GB SSD,公網(wǎng) IP
操作系統(tǒng):CentOS 7+/Ubuntu 20.04+
安全組規(guī)則(阿里云 / 騰訊云等):開放 TCP 20、21、30000-31000 端口(被動(dòng)模式范圍)
更新系統(tǒng):
# CentOS/RHELyum update -y# Ubuntu/Debianapt update && apt upgrade -y
# 安裝vsftpdyum install vsftpd -y# 啟動(dòng)并設(shè)置開機(jī)自啟systemctl enable vsftpd --now# 配置防火墻firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
# 安裝vsftpdapt install vsftpd -y# 啟動(dòng)并設(shè)置開機(jī)自啟systemctl enable vsftpd --now# 配置UFW防火墻ufw allow 20/tcp
ufw allow 21/tcp
ufw allow 30000:31000/tcp
ufw reload
備份默認(rèn)配置:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
編輯主配置文件:
vim /etc/vsftpd/vsftpd.conf
關(guān)鍵配置參數(shù):
# 基礎(chǔ)設(shè)置
anonymous_enable=NO # 禁用匿名訪問
local_enable=YES # 啟用本地用戶
write_enable=YES # 啟用寫入權(quán)限
local_umask=022 # 文件創(chuàng)建掩碼
# 被動(dòng)模式配置(關(guān)鍵?。?pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的公網(wǎng)IP # 填寫云服務(wù)器公網(wǎng)IP
# 安全增強(qiáng)
chroot_local_user=YES # 限制用戶在自家目錄
allow_writeable_chroot=YES # 允許chroot目錄可寫
rsa_cert_file=/etc/ssl/certs/vsftpd.pem # SSL證書路徑(后續(xù)配置)
ssl_enable=YES # 啟用SSL
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
重啟服務(wù)使配置生效:
創(chuàng)建專用 FTP 用戶:
useradd -d /data/ftp/user1 -s /sbin/nologin ftpuser1passwd ftpuser1 # 設(shè)置密碼
創(chuàng)建 FTP 根目錄并設(shè)置權(quán)限:
mkdir -p /data/ftp/user1chown -R ftpuser1:ftpuser1 /data/ftp/user1chmod -R 755 /data/ftp
生成自簽名證書:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /etc/ssl/private/vsftpd.key \-out /etc/ssl/certs/vsftpd.crt \-subj "/C=CN/ST=Shanghai/L=Shanghai/O=Company/OU=IT/CN=yourdomain.com"cat /etc/ssl/private/vsftpd.key /etc/ssl/certs/vsftpd.crt > /etc/ssl/certs/vsftpd.pemchmod 600 /etc/ssl/certs/vsftpd.pem
修改 vsftpd 配置啟用 SSL:
# ..已添加以下配置
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
使用 FileZilla(Windows/macOS):
協(xié)議:選擇 "FTP-SSL/TLS" 或 "FTPS"
主機(jī):云服務(wù)器公網(wǎng) IP
端口:21
加密:顯式 FTPS
登錄類型:正常
用戶名 / 密碼:ftpuser1 及對(duì)應(yīng)密碼
使用命令行(Linux/macOS):
ftp -p 你的公網(wǎng)IP# 登錄后使用ls、cd、put、get等命令操作
限制 IP 訪問:
# 僅允許特定IP訪問(示例:僅允許192.168.1.0/24網(wǎng)段)echo "192.168.1.0/24" > /etc/vsftpd/allowed_ipsvim /etc/pam.d/vsftpd# 添加以下行到文件開頭auth required pam_listfile.so item=ip sense=allow file=/etc/vsftpd/allowed_ips onerr=fail apply=/usr/sbin/vsftpd
啟用日志審計(jì):
# 在vsftpd.conf中添加
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
設(shè)置連接限制:
# 限制同一IP的并發(fā)連接數(shù)
max_clients=100
max_per_ip=5
# 限制傳輸速率(KB/s)
local_max_rate=5000
查看服務(wù)狀態(tài):
systemctl status vsftpd
journalctl -u vsftpd -f
檢查防火墻:
# CentOSfirewall-cmd --list-all# Ubuntuufw status
被動(dòng)模式問題:
使用 SFTP 替代 FTP:
若安全性要求極高,建議禁用 FTP,改用 SFTP(基于 SSH 協(xié)議):
# 創(chuàng)建SFTP用戶組groupadd sftpusersusermod -aG sftpusers ftpuser1# 配置SSHvim /etc/ssh/sshd_config# 添加/修改以下行Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /data/ftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
systemctl restart sshd
監(jiān)控與告警:
配置 Prometheus+Grafana 監(jiān)控 FTP 服務(wù)指標(biāo),設(shè)置連接數(shù)、傳輸速率異常告警。
定期備份:
對(duì) FTP 數(shù)據(jù)目錄配置每日增量備份至對(duì)象存儲(chǔ)(如 AWS S3、阿里云 OSS)。
通過以上步驟,你可以在云服務(wù)器上搭建一個(gè)安全、的 FTP 服務(wù),支持多用戶隔離和數(shù)據(jù)加密傳輸。建議優(yōu)先使用 FTPS 或 SFTP 協(xié)議,避免明文傳輸敏感信息。
(聲明:本文來源于網(wǎng)絡(luò),僅供參考閱讀,涉及侵權(quán)請(qǐng)聯(lián)系我們刪除、不代表任何立場(chǎng)以及觀點(diǎn)。)