在 CentOS 上做 FTPServer 的自动化运维,通常可以从 部署自动化、配置管理、用户管理、监控告警、日志审计、备份恢复 几个方面入手。下面给你一套可落地的方案(以 vsftpd 为例,也适用于 ProFTPD / Pure-FTPd)。
| 服务 | 特点 | 适用 |
|---|---|---|
| vsftpd | 轻量、安全、稳定 | 最常用 |
| ProFTPd | 类 Apache 配置 | 复杂权限 |
| Pure-FTPd | 易用、支持虚拟用户 | 多租户 |
✅ 推荐:vsftpd + TLS(FTPS)
- hosts: ftpservers
tasks:
- name: install vsftpd
yum:
name: vsftpd
state: present
- name: enable and start
service:
name: vsftpd
enabled: yes
state: started
openssl req -x509 -nodes -newkey rsa:2048 \
-keyout /etc/vsftpd/vsftpd.pem \
-out / /etc/vsftpd/vsftpd.pem -days 365
Ansible 示例:
- name: generate tls cert
command: >
openssl req -x509 -nodes -newkey rsa:2048
-keyout /etc/vsftpd/vsftpd.pem
-out /etc/vsftpd/vsftpd.pem
-days 365
args:
creates: /etc/vsftpd/vsftpd.pem
useradd -m ftpuser
echo "password" | passwd --stdin ftpuser
使用 db_load + PAM
user1
pass1
user2
pass2
db_load -T -t hash -f users.txt /etc/vsftpd/virtual_users.db
/etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
✅ 可完全脚本化/接口化
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
ssl_enable=YES
allow_anon_ssl=NO
force_local_logins_ssl=YES
force_local_data_ssl=YES
✅ 用 Ansible template 管理:
- template:
src: vsftpd.conf.j2
dest: /etc/vsftpd/vsftpd.conf
notify: restart vsftpd
ss -ant | grep :21
grep "FAIL" /var/log/secure
可接:
vsftpd 日志:
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
定期分析:
awk '{print $7}' /var/log/vsftpd.log | sort | uniq -c
tar czf ftp-backup.tar.gz /etc/vsftpd /home/ftp
0 3 * * * /usr/local/bin/ftp_backup.sh
yum install fail2ban
Ansible / GitOps
↓
CentOS FTPServer
↓
Prometheus + Alert
↓
Backup & Audit
如果你愿意,我可以:
你现在是 单机 / 集群 / 云上 的 FTP?