将UFW日志重定向到自己的文件中?

有没有办法我可以轻松地将UFW的记录重定向到它们自己的日志文件/var/log/ufw,而不是填满/var/log/syslog,因为所有这些UFW的东西都在我眼前飞过,让我很难找到解决问题的方法?
5个回答

在Ubuntu 15.10和Debian Jessie中,有一个文件/etc/rsyslog.d/20-ufw.conf。它的底部包含了# & ~。去掉前面的#号来取消注释,并使用命令/etc/init.d/rsyslog restart刷新rsyslog,以便它考虑到配置更改。

3也适用于14.04版本,而且更简单,只需在更改后使用sudo service rsyslog restart命令即可,谢谢! - Aquarius Power
这对我也有效(14.04)。简单就是好。 - pwbred
2在18.04版本中,最后一行是# & stop,但是当取消注释时,效果是一样的,确实需要重新启动rsyslog。 - Sebastian

我也在运行Ubuntu 14.04。在我的/etc/rsyslog.d/目录下有一个名为20-ufw.conf的文件,其中有以下一行代码:
:msg,contains,"[UFW " /var/log/ufw.log
我所做的是删除那个文件,并在50-default.conf的顶部添加了以下内容:
:msg,contains,"[UFW " /var/log/ufw.log & stop 使用sudo service rsyslog restart命令重新启动rsyslog,你的UFW日志应该会被放入自己的文件中,而不是其他任何地方。

12为什么不直接编辑20-ufw.conf并在那里添加停止命令呢?实际上,它已经有一个可以取消注释的模板,并且在我进行的快速测试中似乎运行良好。 - HRJ
@HRJ 个人偏好?20-ufw.conf文件只有几行文本,其中大部分是注释。我觉得它不需要自己的配置文件。你的建议实际上可以达到同样的效果 - 需要修改/停止的是 :msg,contains,"[UFW " /var/log/ufw.log 这一部分。 - Ackis

ufw使用rsyslog来记录日志到/var/log/syslog或/var/log/messages:
要更改日志文件,请编辑/etc/rsyslog.d/50-default.conf,并在顶部添加:
:msg, contains, "UFW" -/var/log/ufw.log
& ~

这将记录所有包含“UFW”的数据到/var/log/ufw.log,并阻止进一步处理此类数据。

尽管ufw.log现在包含了您的命令记录,但syslog仍然会接收到消息。 - markrich
是的,但是系统日志确实会报告您的命令存在问题。 - markrich
解析文件 /etc/rsyslog.d/50-default.conf 期间出现错误,在第1行或之前遇到无效字符 '' - 是否存在无效的转义序列?[请尝试访问 http://www.rsyslog.com/e/2207 ] Apr 21 15:58:41 markys-home-pc rsyslogd-2307: 警告: 操作已弃用,请考虑使用 'stop' 语句代替 [请尝试访问 http://www.rsyslog.com/e/2307 ] - markrich
我复制粘贴了。同样的错误。 - markrich
日志已停止批量接受UFW命令,但仍有一两个命令偷偷通过。现在情况好了,但折旧错误仍然存在。 - markrich
@markrich:不确定为什么这个错误还存在,很可能是因为你正在使用rsyslog 7(因为你在14.04上),而你所提到的错误已经在版本5中修复了:http://www.rsyslog.com/changelog-for-5-6-5-v5-stable/。对于错误信息,我不确定该怎么处理:/ - jobin

在16.04版本中,只需将此文件的最后一行注释掉,使其变为以下内容。
$ tail -1 /etc/rsyslog.d/20-ufw.conf 
& stop

重新启动rsyslog
$ sudo systemctl restart rsyslog

从现在开始,ufw的日志将存储在/var/log/ufw.log而不再是/var/log/syslog。

我目前的声望还不能发表评论,所以我要单独回复。
chmike的答案对于Ubuntu 20.04仍然有效(稍作修改)。基本上,
go to /etc/rsyslog.d/20-ufw.conf
Uncomment the last line: # & stop (i.e. delete #)
then restart rsyslog (i.e. /etc/init.d/rsyslog restart)

@David然而,他/她目前还不能发表评论。 - ThunderBird