UFW日志开启,记录防火墙拦截访问记录
为什么要开启UFW日志
当服务器被扫描或暴力破解时,UFW默认不会记录被拦截的请求。
开启日志后,你就能在系统日志中看到哪些IP被挡住了、访问了哪些端口,方便做安全分析和封禁决策。
本文适合使用Ubuntu或Debian且已启用UFW的用户,按步骤操作后即可查看防火墙拦截记录。
前置检查
先确认UFW已安装并处于运行状态:
sudo ufw status verbose
如果输出显示Status: active,说明防火墙已启用。
如果显示inactive,需要先启用:
sudo ufw enable
注意:启用前请确保SSH端口已放行,否则可能断连。
开启UFW日志记录
UFW的日志级别通过/etc/ufw/ufw.conf文件控制。
常用级别从低到高为:
off:关闭日志low:记录被拦截的包(推荐日常使用)medium:记录被拦截包及部分新连接high:记录所有包(日志量大)full:记录所有包及详细信息
执行以下命令开启:
sudo ufw logging on
这会默认启用low级别。
如需调整级别,编辑配置文件:
sudo nano /etc/ufw/ufw.conf
找到LOGLEVEL行,修改为:
LOGLEVEL=low
保存后重载UFW使配置生效:
sudo ufw reload
关键结论:开启UFW日志只需执行ufw logging on,默认记录被拦截的访问请求,日志级别可在/etc/ufw/ufw.conf中调整。
查看拦截记录
UFW日志默认写入/var/log/ufw.log,也可能出现在/var/log/syslog中。
使用以下命令实时查看:
tail -f /var/log/ufw.log
或过滤出被拦截的记录:
grep "UFW BLOCK" /var/log/ufw.log
典型日志行示例:
[UFW BLOCK] IN=eth0 OUT= MAC=... SRC=192.168.1.100 DST=10.0.0.1 ... DPT=22
其中SRC是来源IP,DPT是目标端口。
根据这些信息可以判断哪些IP在尝试连接被拒绝的端口。
避坑与常见问题
日志量过大:如果使用high或full级别,日志会快速增长,可能占满磁盘。
建议日常使用low级别,仅在排查时临时调高。
日志文件不存在:确认/etc/rsyslog.d/20-ufw.conf文件存在且rsyslog服务正常运行。
如果缺失,可以重建该文件并重启rsyslog:
sudo systemctl restart rsyslog
修改后不生效:每次修改日志级别后需要执行sudo ufw reload,否则配置不会重新加载。
日志轮转:UFW日志由logrotate自动管理,默认保留一定周期。
如需调整,可编辑/etc/logrotate.d/ufw,但建议保留默认配置。
效果验证
完成配置后,从另一台机器尝试访问服务器上一个未放行的端口,例如:
telnet 你的服务器IP 9999
然后在服务器上查看日志:
tail -n 20 /var/log/ufw.log | grep "UFW BLOCK"
如果看到包含该来源IP和端口9999的UFW BLOCK记录,说明日志已正常工作。
验证要点:日志中出现UFW BLOCK条目,且包含被拦截的源IP和目标端口,即表示记录成功。
常见疑问
开启日志会影响服务器性能吗?
low级别仅记录被拦截的包,对性能影响极小。high或full级别在流量大时可能增加I/O负载。
日志中UFW BLOCK和UFW ALLOW有什么区别?
UFW BLOCK表示请求被拒绝,UFW ALLOW表示请求被放行。默认low级别只记录BLOCK。
如何只记录特定端口的拦截?
UFW不支持按端口过滤日志,但可以用grep命令筛选,例如:grep "DPT=22" /var/log/ufw.log。
日志文件占满磁盘怎么办?
检查/var/log/ufw.log大小,必要时清理旧日志或调整logrotate策略:sudo logrotate -f /etc/logrotate.d/ufw。
结论:UFW日志开启后,通过/var/log/ufw.log即可追踪被拦截的访问,适合用于安全审计和故障排查。
如果你正在配置服务器防火墙,建议先按本文步骤开启日志并验证,再根据日志内容调整规则。
遇到异常时优先检查日志级别和rsyslog状态。