Ubuntu防火墙日志审计实现指南(以UFW为例)
Ubuntu系统中,UFW(Uncomplicated Firewall) 是基于iptables的简化防火墙管理工具,默认集成了日志记录功能,是实现防火墙日志审计的核心工具。以下是具体实现步骤及优化建议:
若尚未安装UFW,需先通过以下命令安装并启用:
sudo apt update
sudo apt install ufw
sudo ufw enable  # 启用防火墙(系统会提示确认)
启用后,UFW会默认拒绝所有入站连接、允许所有出站连接(可通过sudo ufw default deny incoming和sudo ufw default allow outgoing确认默认策略)。
UFW的日志记录功能通过logging参数控制,支持4种级别(从低到高):
sudo ufw logging off(不推荐,无法审计);设置日志级别命令(以中级别为例):
sudo ufw logging medium
验证日志状态:
sudo ufw status verbose  # 输出中会显示"Logging: on"及当前级别
UFW的日志默认存储在**/var/log/ufw.log**(需root权限查看)。常用查看命令:
sudo tail -f /var/log/ufw.log  # 实时查看最新日志
sudo less /var/log/ufw.log     # 分页查看(按q退出)
日志示例(中级别):
[UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx SRC=192.168.1.100 DST=192.168.1.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=12345 DF PROTO=TCP SPT=54321 DPT=22 WINDOW=64240 RES=0x00 SYN URGP=0
[UFW BLOCK]表示动作(拒绝),SRC为源IP,DPT为目标端口,PROTO为协议。为避免日志文件无限增长占用磁盘空间,需通过logrotate工具定期轮转日志。UFW的日志轮转配置位于/etc/logrotate.d/ufw,默认策略如下:
/var/log/ufw.log {
    weekly
    rotate 4
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/sbin/ufw reload > /dev/null
    endscript
}
weekly),保留最近4个旧日志(rotate 4),压缩旧日志(compress)。sudo logrotate -vf /etc/logrotate.d/ufw(-v显示详情,-f强制轮转)。若需集中管理日志,可将UFW日志转发到远程rsyslog服务器:
rsyslog配置(/etc/rsyslog.conf),添加:*.* @192.168.1.100:514  # UDP转发(@表示UDP,@@表示TCP)
rsyslog服务:sudo systemctl restart rsyslog
rsyslog接收转发日志(编辑/etc/rsyslog.conf,取消#module(load="imudp")和#input(type="imudp" port="514")的注释)。Fail2ban是一款入侵防御工具,可通过分析UFW日志自动封禁恶意IP(如暴力破解SSH的IP),并记录封禁事件:
sudo apt install fail2ban
/etc/fail2ban/jail.local,启用SSH jail:[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log  # SSH日志路径
maxretry = 3  # 允许的最大失败次数
bantime = 3600  # 封禁时间(秒)
sudo tail -f /var/log/fail2ban.log  # 记录封禁事件(如IP被封禁的时间、原因)
/var/log/ufw.log默认属主为root,需用sudo查看,避免未授权访问;通过以上步骤,可实现Ubuntu防火墙的完整日志审计功能,帮助管理员监控网络活动、排查安全事件并满足合规需求。