當你的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
在上面的示例中,它執行以下操作:
- 第一條規則記錄所有訪問目的端口為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。
www.donews.com/news/detail/4/2977560.html
www.techweb.com.cn/prnews/qiyenews/archives/46669.html
修改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
查看剛才設置的日志文件:
[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日志?
[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的日志記錄模塊。