我注意到 GUFW 能够按规则打开和关闭日志记录,但我没有看到ufw -h
可以为规则打开日志记录的选项
在Ubuntu上:
To Action From
-- ------ ----
Anywhere DENY IN Anywhere (log-all)
但在 Debian 上我尝试这个命令:
sudo ufw allow proto tcp from x.x.x.x to any port 22 log all
而且它不起作用......那么是否有一些未记录的秘密语法?或者 GUFW 是否将 iptables 规则与 UFW 的核心分开?
答案1
log-all
应该在 和 之后用连字符连接allow
。正确的命令是
sudo ufw allow log-all proto tcp from x.x.x.x to any port 22
替换x.x.x.x
为预期的 IP。
句法
语法记录在手册页。
ufw [--dry-run] [rule] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out [on
INTERFACE]] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME ]] [to
ADDRESS [port PORT | app APPNAME ]] [comment COMMENT]
规则语法部分最后的几段解释了其工作原理并提供了一个更简单的示例:
ufw supports per rule logging. By default, no logging is performed when a packet matches a rule. Specifying log will log
all new connections matching the rule, and log-all will log all packets matching the rule. For example, to allow and log
all new ssh connections, use:
ufw allow log 22/tcp
See LOGGING for more information on logging.
大多数关键字是可选的,但顺序非常严格:单词log
orlog-all
必须位于界面之后(on eth0
、on wlo0
等)。如果界面不存在,则必须执行以下操作:allow
// allow in
/ ...allow out
deny
将关键字放在log
其他任何地方都会返回错误Option log not allowed here
。
如何更新您的规则
如果您想保留规则但禁用日志记录,只需再次编写不带log-all
关键字的命令:
sudo ufw allow proto tcp from x.x.x.x to any port 22
ufw will recognise this and respond with `Rule updated` instead of `Skipping adding existing rule`.
This also works to add or remove comments to your rules:
sudo ufw 允许记录从 xxxx 到任何端口 22 的所有原始 tcp 注释“传入 SSH”
可选:日志记录不需要按规则进行
您还可以检查 LOGGING 部分以记录所有规则(以及允许的数据包)的更多信息:
sudo ufw logging off
sudo ufw logging low
sudo ufw logging medium
sudo ufw logging high
sudo ufw logging full
但手册页不鼓励将日志记录级别设置为默认值 ( low
)。
主动提供的配置提示
ufw 对于默认策略(即规则集中未特别提及的任何连接)有单独的语法。如果您像这样替换明确的“拒绝从任何地方到任何地方”规则,您的规则集将更容易理解和维护:
sudo ufw default deny incoming
sudo ufw delete deny from any
只要日志记录级别高于低电平,ufw 就会记录所有被阻止的流量。您可以使用 检查结果sudo ufw status verbose
。
Ubuntu wiki 有有关安全性的页面,您可以查看他们的推荐的ufw配置。