Networking
iptables 記錄來自外部世界的數據包
我想記錄所有不是源自 LAN 的 INPUT 數據包以用於審計目的,我有一個帶有 tcpdump 的腳本,基本上將結果附加到一個文件中:
tcpdump "(dst net 192.168.0.0/24 and ! src net 192.168.0.0/24)"
但是,我在 /var/log/syslog 中看到了一些外部嘗試
[567325.985994] iptables INPUT denied: IN=eth1 OUT= MAC=..... SRC=69.163.149.200 DST=192.168.0.2 LEN=60 TOS=0x00 PREC=0x00 TTL=57 ID=50281 DF PROTO=TCP SPT=51380 DPT=1194 WINDOW=5840 RES=0x00 SYN URGP=0 [567895.076532] iptables INPUT denied: IN=eth1 OUT= MAC=.... SRC=72.21.91.19 DST=192.168.0.2 LEN=40 TOS=0x00 PREC=0x00 TTL=59 ID=0 DF PROTO=TCP SPT=80 DPT=52589 WINDOW=0 RES=0x00 RST URGP=0
沒有出現在 tcpdump outout 中。我想添加一條規則
-A INPUT -j LOG
但我想(如果有意義的話)避免放入來自 LAN 的日誌輸入數據包
放這個就夠了嗎?
-A INPUT ! -s 192.168.0.0/24 -j LOG
順便說一句,作為一個附帶問題,iptables 是否支持將不同的內容記錄到不同的文件中?
iptables 始終記錄到 syslog 的核心設施,您可以將syslog 設施分成不同的文件- 有關詳細資訊,請參閱syslog.conf 文件。
你的規則
-輸入!-s 192.168.0.0/24 -j 日誌
將記錄沒有源 IP 192.168.0.0/24 的數據包,但 iptables 日誌記錄僅涵蓋一些數據標頭數據,而不是數據包的有效負載。
那麼,如何擷取有效載荷?
tcpdump 是擷取有效負載的工具。您應該明確指定您希望流量進入的介面 (-i eth1) 或使用任何介面 (-i any)。您可能還想增加 snaplen(-s 參數)並將擷取寫入二進制格式的文件(-W 參數)。
但是由於 tcpdump 不是一個安全工具,而是一個具有復雜安全歷史的診斷工具,並且可能在您的配置中以 root 權限執行(儘管有一些方法可以非 root 執行它),您應該考慮編寫不同的解決方案考慮到安全性 - IDS 系統可能是合適的。