UFW如何記錄某個規則允許的數據包?
我注意到 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 的核心分開?
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]
RULE SYNTAX 部分最後的幾段解釋了它是如何工作的,並提供了一個更簡單的範例:
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 記錄所有 proto tcp 到任何埠 22 註釋“傳入 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 配置。