vsftpd的日志文件主要分布在/var/log/目录下,常见文件及作用如下:
/var/log/vsftpd.log:记录vsftpd服务本身的操作日志(如用户登录/登出、命令执行、服务启停等),默认可能不存在,需通过配置文件开启。/var/log/xferlog:记录FTP会话的详细传输信息(如文件上传/下载的文件名、大小、客户端IP、传输时间等),是分析文件传输行为的关键文件。/var/log/auth.log(Ubuntu/Debian)或/var/log/secure(CentOS/RHEL):记录认证相关事件(如FTP登录尝试、密码错误、成功登录等),与vsftpd的认证过程强关联。cat:直接输出日志文件全部内容(适合小文件)。cat /var/log/vsftpd.logless:分页查看日志,支持上下翻页(空格翻页,b后退),适合大文件。less /var/log/xferlogtail:查看日志末尾内容,-n指定行数(如-n 50显示最后50行),-f实时跟踪新增日志(监控实时活动)。tail -f /var/log/vsftpd.log(实时监控vsftpd服务日志)grep筛选用户名,示例:grep "username" /var/log/vsftpd.log(查看用户username的所有操作)。grep "sshd.*Failed password for" /var/log/auth.log(Ubuntu/Debian);grep "sshd.*invalid user" /var/log/secure(CentOS/RHEL)。grep "sshd.*Accepted password for user@192.168.1.100" /var/log/auth.log(Ubuntu/Debian);grep "sshd.*Accepted password for user@192.168.1.100" /var/log/secure(CentOS/RHEL)。xferlog筛选上传(STOR)或下载(RETR)记录,示例:grep "STOR" /var/log/xferlog(上传文件记录);grep "RETR" /var/log/xferlog(下载文件记录)。awk提取IP地址并去重计数,示例:awk '{print $3}' /var/log/vsftpd.log | sort | uniq -c(统计每个IP的连接次数)。STOR(上传)或RETR(下载)命令的数量,示例:grep -c "STOR" /var/log/xferlog(上传文件总数)。ERROR、500)的数量,示例:grep -c "ERROR" /var/log/vsftpd.log(vsftpd服务错误总数)。awk提取用户名和传输字节数(%b字段),示例:awk '/STOR|RETR/ {print $1, $9}' /var/log/xferlog | awk '{user[$1]+=$2} END {for (u in user) print u, user[u]}'(统计每个用户的传输总字节数)。%t字段)并按小时统计,示例:awk '{print $2}' /var/log/vsftpd.log | cut -d: -f1 | sort | uniq -c(统计每小时的用户登录次数)。logwatch是一款日志分析工具,可自动生成FTP服务的详细报告(如登录情况、文件传输统计)。
sudo apt-get install logwatch(Ubuntu/Debian);sudo yum install logwatch(CentOS/RHEL)。logwatch --service ftpd --range today --output text --detail high(生成当天FTP服务的详细文本报告)。ELK(Elasticsearch+Logstash+Kibana)适合大规模日志的存储、搜索和可视化,可实时监控FTP活动并生成仪表盘。
/etc/logstash/conf.d/ftp.conf),定义FTP日志的输入、过滤和输出规则;http://服务器IP:5601)创建可视化 dashboard。使用logrotate工具定期压缩、归档旧日志,避免日志文件占用过多磁盘空间。
/etc/logrotate.d/vsftpd文件,内容如下:/var/log/vsftpd.log {
daily # 每天轮转
missingok # 如果日志不存在也不报错
rotate 7 # 保留最近7天的日志
compress # 压缩旧日志(如.gz格式)
notifempty # 如果日志为空则不轮转
create 640 root adm # 创建新日志的权限和所有者
}
保存后,logrotate会自动按配置执行轮转(默认每天执行一次)。若日志中出现中文乱码,可通过以下方法修复:
/etc/vsftpd/vsftpd.conf),添加syslog_enable=YES参数;zh_CN.gb或GB2312(通过locale命令查看);sudo systemctl restart vsftpd。通过以上方法,可全面分析vsftpd的日志,掌握FTP服务器的运行状态、用户行为及潜在安全问题,为服务器的安全运维提供有力支持。