centos vsftp的自动化管理工具
导读:CentOS 上 vsftpd 的自动化管理工具与方案 一、工具与方案总览 Shell 脚本 + systemd:一键安装、渲染配置、启停服务、开机自启,适合单机和批量标准化交付。 配置管理工具(Ansible):以 Playbook 批...
CentOS 上 vsftpd 的自动化管理工具与方案
一、工具与方案总览
- Shell 脚本 + systemd:一键安装、渲染配置、启停服务、开机自启,适合单机和批量标准化交付。
- 配置管理工具(Ansible):以 Playbook 批量部署、模板化配置、滚动更新与回滚,适合多机与持续交付。
- 定时任务(Cron):自动化备份、日志清理、用户目录同步等例行作业。
- 安全与运维自动化:配合 firewalld 放行端口、SELinux 策略调整、Fail2ban 防暴力破解、Logrotate 日志轮转,形成闭环运维。以上做法在 CentOS 环境下均已被广泛实践与验证。
二、Shell 脚本一键化示例
- 功能涵盖:安装 vsftpd、写入安全基线配置、创建系统用户、配置防火墙、设置开机自启。
- 使用方法:保存为 install_vsftpd.sh,执行 chmod +x 后运行。
#!/usr/bin/env bash
set -e
# 0) 参数
FTP_USER=${
1:-ftpuser}
FTP_PASS=${
2:-ChangeMeNow!}
FTP_DIR=${
3:-/home/$FTP_USER}
# 1) 安装
yum install -y vsftpd
# 2) 基础安全配置
cat >
/etc/vsftpd/vsftpd.conf <
<
'EOF'
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
chroot_local_user=YES
allow_writeable_chroot=YES
EOF
# 3) 创建系统用户(禁止登录 shell)
useradd -m -d "$FTP_DIR" -s /sbin/nologin "$FTP_USER"
echo "$FTP_USER:$FTP_PASS" | chpasswd
echo "$FTP_USER" >
/etc/vsftpd/user_list
chown -R "$FTP_USER:$FTP_USER" "$FTP_DIR"
chmod 755 "$FTP_DIR"
# 4) 防火墙放行 FTP
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
# 5) 启动与自启
systemctl enable --now vsftpd
echo "vsftpd 已安装并启动,用户:$FTP_USER"
- 说明:如需加密传输,可在配置中开启 SSL/TLS(见下文)。
三、Ansible 批量自动化示例
- 目录结构
- playbook.yml
- templates/vsftpd.conf.j2
- vars/main.yml
- playbook.yml
---
- name: Deploy and manage vsftpd on CentOS
hosts: ftp_servers
become: yes
vars_files:
- vars/main.yml
tasks:
- name: Install vsftpd
yum:
name: vsftpd
state: present
- name: Render config
template:
src: templates/vsftpd.conf.j2
dest: /etc/vsftpd/vsftpd.conf
notify: restart vsftpd
- name: Create FTP user
user:
name: "{
{
ftp_user }
}
"
home: "{
{
ftp_home }
}
"
shell: /sbin/nologin
create_home: yes
state: present
- name: Set directory ownership
file:
path: "{
{
ftp_home }
}
"
owner: "{
{
ftp_user }
}
"
group: "{
{
ftp_user }
}
"
mode: '0755'
- name: Add user to allow list
lineinfile:
path: /etc/vsftpd/user_list
line: "{
{
ftp_user }
}
"
create: yes
- name: Open FTP in firewalld
firewalld:
service: ftp
permanent: yes
state: enabled
immediate: yes
- name: Ensure service enabled and started
service:
name: vsftpd
state: started
enabled: yes
handlers:
- name: restart vsftpd
service:
name: vsftpd
state: restarted
- templates/vsftpd.conf.j2(可按需扩展)
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
chroot_local_user=YES
allow_writeable_chroot=YES
{
% if ftp_tls_enabled | default(false) %}
ssl_enable=YES
ssl_cert_file={
{
ftp_tls_cert }
}
ssl_key_file={
{
ftp_tls_key }
}
{
% endif %}
- vars/main.yml
ftp_user: ftpuser
ftp_home: /home/ftpuser
ftp_tls_enabled: true
ftp_tls_cert: /etc/pki/tls/certs/vsftpd.crt
ftp_tls_key: /etc/pki/tls/private/vsftpd.key
- 运行:ansible-playbook -i inventory playbook.yml。以上模式便于在多台 CentOS 主机上统一交付与变更。
四、自动化例行任务与安全加固
- 定时备份与清理(Cron)
- 示例:每周一 05:00 打包站点与数据库并上传;保留本地 7 天。
# 备份脚本 /usr/local/bin/ftp_backup.sh
WEB_DIR="/home/www"
DB_USER="dbuser"
DB_PASS="dbpass"
FTP_HOST="ftp.example.com"
FTP_USER="ftpuser"
FTP_PASS="ftppass"
BACKUP_DIR="/backup/ftp_$(date +%F)"
mkdir -p "$BACKUP_DIR"
tar czf "$BACKUP_DIR/web_$(date +%Y%m%d).tar.gz" -C "$WEB_DIR" .
mysqldump -u"$DB_USER" -p"$DB_PASS" dbname >
"$BACKUP_DIR/sql_$(date +%Y%m%d).sql"
ftp -n "$FTP_HOST" <
<
EOF
open $FTP_HOST
user $FTP_USER $FTP_PASS
binary
mkdir $(date +%F)
cd $(date +%F)
mput $BACKUP_DIR/*.tar.gz
mput $BACKUP_DIR/*.sql
bye
EOF
# 清理本地 7 天前
find /backup -type f -mtime +7 -delete
- Crontab:0 5 * * 1 /usr/local/bin/ftp_backup.sh > > /var/log/ftp_backup.log 2> & 1
- 启用 SSL/TLS(可选但强烈建议)
- 生成证书:
- openssl req -x509 -nodes -days 365 -newkey rsa:2048
-keyout /etc/pki/tls/private/vsftpd.key -out /etc/pki/tls/certs/vsftpd.crt
- openssl req -x509 -nodes -days 365 -newkey rsa:2048
- 在 vsftpd.conf 中启用:
- ssl_enable=YES
- ssl_cert_file=/etc/pki/tls/certs/vsftpd.crt
- ssl_key_file=/etc/pki/tls/private/vsftpd.key
- 重启服务:systemctl restart vsftpd
- 生成证书:
- 防火墙与 SELinux
- 放行 FTP:firewall-cmd --permanent --add-service=ftp & & firewall-cmd --reload
- 常见 SELinux 调整(按需):setsebool -P ftp_home_dir on
- 安全与运维自动化
- Fail2ban:监控 /var/log/vsftpd.log,自动封禁暴力破解 IP(maxretry、bantime 等策略可按环境调整)。
- Logrotate:为 vsftpd 配置日志切割,避免日志过大(按日/按大小轮转)。以上做法可显著提升可用性与安全性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos vsftp的自动化管理工具
本文地址: https://pptw.com/jishu/769843.html
