iptables防火牆如何記錄日誌

roc_guo發表於2021-03-02
當你的iptables規則無法正常工作時,可能希望記錄iptables的資料包以進行故障排除。本文介紹瞭如何使用iptables的日誌記錄模組。
例如:記錄所有ssh服務的登入的日誌

首先,我們需要了解如何將所有的iptables的INPUT鏈資料包記錄到 /var/log/messages中。如果你已經有一些iptables規則了,那麼將記錄日誌的規則放在這些規則的頂部,如果放在規則的後面,將不會記錄日誌。

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 4/min -j LOG --log-prefix "Iptables-SSH-IN: " --log-level 4
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP

iptables防火牆如何記錄日誌iptables防火牆如何記錄日誌
在上面的示例中,它執行以下操作:

  • 第一條規則記錄所有訪問目的埠為22的,將記錄日誌,限制日誌每分鐘4條,日誌字首為“Iptables-SSH-IN: ”,日誌記錄級別為Warning。
  • 第二條規則允許所有源地址的新連線訪問目的埠22。
  • 第三條規則允許所有已建立的連線訪問本機。
  • 設定INPUT鏈的預設規則為DROP。

上面第一條規則解釋:

  • -m limit:使用limit模組。使用此選項,可以使用--limit選項限制訪問速率。
  • --limit 4/min:這表示記錄的最大平均訪問速率。在此示例中,對於類似的資料包,它將日誌記錄限制為每分鐘4個。還可以設定為2/second, 2/minute, 2/hour, 2/day。
  • -j LOG:這表示此資料包的目標是LOG。即寫入日誌檔案。
  • --log-prefix "Iptables-SSH-IN: ” 可以指定任何日誌字首,這些字首將寫入到 /var/log/messages日誌檔案中。
  • --log-level 4這是標準的系統日誌級別。4是警告(warning)。可以使用0到7之間的數字。0是emerg,1是alert,2是crit,3是err,4是warning,5是notice,6是info,7是debug。
修改iptables日誌存放位置

預設情況下,iptables將使用 /var/log/messages記錄所有訊息。如果要將其更改為自己的定製日誌檔案,將下面 新增到 /etc/rsyslog.conf中。前提需要安裝rsyslog服務:

# 安裝rsyslog服務
[root@localhost ~]# yum -y install rsyslog
# 設定開機啟動、並立即啟動
[root@localhost ~]# systemctl enable rsyslog --now
# 編輯/etc/rsyslog.conf檔案,新增下面內容到檔案底部
[root@localhost ~]# vim /etc/rsyslog.conf 
kern.warning /var/log/iptables.log

iptables防火牆如何記錄日誌iptables防火牆如何記錄日誌
檢視剛才設定的日誌檔案:

[root@localhost ~]# ll -h /var/log/iptables.log 
-rw-------. 1 root root 2.0K Feb  9 10:46 /var/log/iptables.log
[root@localhost ~]# tail -f /var/log/iptables.log

iptables防火牆如何記錄日誌iptables防火牆如何記錄日誌

如何讀取IPTables日誌?
[root@localhost ~]# cat /var/log/iptables.log 
Feb  9 10:46:20 localhost kernel: Iptables-SSH-IN: IN=ens160 OUT= MAC=00:0c:29:ae:7d:09:00:50:56:c0:00:08:08:00 SRC=192.168.43.1 DST=192.168.43.137 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=49928 DF PROTO=TCP SPT=16512 DPT=22 WINDOW=64240 RES=0x00 SYN URGP=0
  • Iptables-SSH-IN: 通過指定--log-prefix選項,這是我們在日誌記錄中使用的字首
  • IN=ens160 OUT=: 這表示從該介面傳入資料包。對於傳出資料包將為空。
  • IN= OUT=: 這表示從該介面傳出資料包。對於傳入的資料包將為空。
  • MAC=: 00:0c:29:ae:7d:09小時目標MAC地址,:00:50:56:c0:00:08為源MAC地址,08:00為上層協議程式碼,表示IP協議。
  • SRC=: 源IP地址
  • DST=:目的IP地址
  • LEN=: 資料包的長度
  • PROTO=: 使用什麼型別協議
  • SPT=: 源埠
  • DPT=: 目標埠
總結

當你的iptables規則無法正常工作時,可能希望記錄iptables的資料包以進行故障排除。本文介紹瞭如何使用iptables的日誌記錄模組。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2841640/,如需轉載,請註明出處,否則將追究法律責任。

相關文章