Debian系统vsftpd日志分析技巧
vsftpd的日志文件位置由配置文件/etc/vsftpd.conf中的参数决定,常见路径及含义如下:
/var/log/vsftpd.log,需开启vsftpd_log_file参数(vsftpd_log_file=/var/log/vsftpd.log)。/var/log/xferlog,需开启xferlog_enable=YES和xferlog_std_format=YES(标准格式便于解析)。syslog_enable=YES,日志会输出到系统日志(/var/log/syslog或/var/log/messages),需注意区分。tail -f命令实时查看日志更新,例如:sudo tail -f /var/log/vsftpd.log # 监控vsftpd活动日志
sudo tail -f /var/log/xferlog # 监控传输日志
less或more命令分页浏览日志,适合查看大文件:sudo less /var/log/vsftpd.log
sudo more /var/log/xferlog
grep命令过滤特定内容,例如查找用户ftpuser的记录:sudo grep "ftpuser" /var/log/vsftpd.log
sudo grep -E "FAILED LOGIN|530 Login incorrect" /var/log/vsftpd.log
a为ASCII、b为二进制)和方向(i为传入、o为传出)筛选:sudo grep "b _ i" /var/log/xferlog # 筛选二进制传入文件(下载)
sudo grep "b _ o" /var/log/xferlog # 筛选二进制传出文件(上传)
sudo awk '/USER/ {print $9}' /var/log/vsftpd.log | sort | uniq -c | sort -nr
sudo awk '/b _ / {print $9}' /var/log/xferlog | sort | uniq -c | sort -nr
sudo awk '{print $5}' /var/log/vsftpd.log | cut -d: -f1 | sort | uniq -c | sort -nr
sudo grep "192.168.1.100" /var/log/xferlog
awk筛选某一天的日志(如2025-10-25):sudo awk '/Oct 25/ && $1 ~ /[0-9]{2}:[0-9]{2}:[0-9]{2}/' /var/log/vsftpd.log
xferstats包):sudo xferstats /var/log/xferlog > transfer_report.txt
logrotate工具(默认已安装),编辑/etc/logrotate.d/vsftpd文件,设置每日轮转、保留7天、压缩旧日志:/var/log/vsftpd.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
}
setenforce 0;sudo chown vsftpd:vsftpd /var/log/vsftpd;/etc/vsftpd.conf中添加seccomp_sandbox=no并重启服务。/etc/vsftpd.conf中local_enable=YES(允许本地用户登录)、用户是否在/etc/vsftpd/ftpusers黑名单中。chmod 755 /home/username)。