实现Linux FTP服务器的自动化管理可以大大提高效率,减少人工操作错误。以下是几种常见的自动化实现方法:
#!/bin/bash
# 自动安装vsftpd
sudo apt-get update
sudo apt-get install -y vsftpd
# 配置vsftpd
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd.conf
sudo sed -i 's/#local_enable=YES/local_enable=YES/' /etc/vsftpd.conf
sudo sed -i 's/#write_enable=YES/write_enable=YES/' /etc/vsftpd.conf
sudo sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd.conf
# 重启服务
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
- hosts: ftp_servers
tasks:
- name: Install vsftpd
apt:
name: vsftpd
state: present
- name: Configure vsftpd
template:
src: templates/vsftpd.conf.j2
dest: /etc/vsftpd.conf
owner: root
group: root
mode: 0644
notify: restart vsftpd
- name: Ensure vsftpd is running and enabled
service:
name: vsftpd
state: started
enabled: yes
handlers:
- name: restart vsftpd
service:
name: vsftpd
state: restarted
#!/bin/bash
# 批量创建FTP用户
USER_LIST="user1 user2 user3"
FTP_ROOT="/var/ftp"
for USER in $USER_LIST; do
sudo useradd -d $FTP_ROOT/$USER -s /bin/false $USER
echo "$USER:password123" | sudo chpasswd
sudo chown root:root $FTP_ROOT/$USER
sudo chmod 755 $FTP_ROOT/$USER
sudo mkdir -p $FTP_ROOT/$USER/upload
sudo chown $USER:$USER $FTP_ROOT/$USER/upload
done
配置vsftpd使用LDAP认证:
1. 安装PAM LDAP模块:sudo apt-get install libpam-ldap
2. 修改/etc/vsftpd.conf
:
pam_service_name=vsftpd
3. 配置/etc/pam.d/vsftpd
使用LDAP认证
#!/bin/bash
# 自动上传文件到FTP服务器
lftp -u username,password -e "mirror -R /local/directory /remote/directory; quit" ftp.example.com
# 每天凌晨2点同步文件
0 2 * * * /usr/bin/lftp -u user,pass -e "mirror -R /local /remote; quit" ftp.example.com
# /etc/logrotate.d/vsftpd
/var/log/vsftpd.log {
weekly
missingok
rotate 12
compress
delaycompress
notifempty
create 640 root adm
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
#!/bin/bash
# 分析vsftpd日志并封锁多次认证失败的IP
FAILED_LOGINS=$(grep "authentication failure" /var/log/vsftpd.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr)
while read -r line; do
COUNT=$(echo $line | awk '{print $1}')
IP=$(echo $line | awk '{print $2}')
if [ $COUNT -gt 5 ]; then
iptables -A INPUT -s $IP -j DROP
echo "$(date) - Blocked IP $IP for $COUNT failed attempts" >> /var/log/ftp_security.log
fi
done <<< "$FAILED_LOGINS"
#!/bin/bash
# 备份FTP配置和用户数据
BACKUP_DIR="/backups/ftp"
DATE=$(date +%Y%m%d)
mkdir -p $BACKUP_DIR/$DATE
# 备份配置
tar czf $BACKUP_DIR/$DATE/vsftpd_config.tar.gz /etc/vsftpd*
# 备份用户数据
rsync -a /var/ftp/ $BACKUP_DIR/$DATE/ftp_data/
# 保留最近7天备份
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
使用Docker实现FTP服务器的快速部署和自动化管理:
# 使用vsftpd官方镜像
docker run -d \
-p 21:21 \
-p 20:20 \
-p 21100-21110:21100-21110 \
-e FTP_USER=myuser \
-e FTP_PASS=mypassword \
-e PASV_ADDRESS=your.server.ip \
-e PASV_MIN_PORT=21100 \
-e PASV_MAX_PORT=21110 \
-v /my/data/directory:/home/vsftpd/myuser \
--name vsftpd \
--restart=always \
fauria/vsftpd
通过以上方法,您可以实现Linux FTP服务器从安装配置到日常管理的全面自动化,提高运维效率并减少人为错误。