วิธีการเปิดใช้งานเป้าหมายการติดตาม IPtables บน Debian Squeeze (6)


11

ฉันกำลังพยายามใช้เป้าหมายการติดตามของ IPtables แต่ฉันไม่สามารถรับข้อมูลการติดตามได้ ฉันต้องการที่จะใช้สิ่งที่อธิบายไว้ที่นี่: ดีบักสำหรับ iptables คำ

จากมนุษย์ iptables สำหรับการติดตาม:

   This target marks packes so that the kernel will log every  rule  which
   match  the  packets  as  those traverse the tables, chains, rules. (The
   ipt_LOG or ip6t_LOG module is required for the  logging.)  The  packets
   are   logged   with   the   string   prefix:  "TRACE:  tablename:chain-
   name:type:rulenum " where type can be "rule" for plain  rule,  "return"
   for  implicit  rule at the end of a user defined chain and "policy" for
   the policy of the built in chains.
   It can only be used in the raw table.

ฉันใช้กฎต่อไปนี้iptables -A PREROUTING -t raw -p tcp -j TRACEแต่ไม่มีการต่อท้ายใน / var / log / syslog หรือ /var/log/kern.log!

มีขั้นตอนอื่นที่ขาดหายไปหรือไม่ ฉันกำลังมองหาที่ผิดหรือเปล่า?

แก้ไข

แม้ว่าฉันไม่สามารถหารายการบันทึกได้ แต่เป้าหมายการติดตามดูเหมือนจะตั้งค่าอย่างถูกต้องเนื่องจากตัวนับแพ็กเก็ตได้รับการเพิ่มขึ้น:

# iptables -L -v -t raw
Chain PREROUTING (policy ACCEPT 193 packets, 63701 bytes)
 pkts bytes target     prot opt in     out     source               destination
  193 63701 TRACE      tcp  --  any    any     anywhere             anywhere

Chain OUTPUT (policy ACCEPT 178 packets, 65277 bytes)
 pkts bytes target     prot opt in     out     source               destination

แก้ไข 2

กฎiptables -A PREROUTING -t raw -p tcp -j LOG จะพิมพ์ข้อมูลแพ็คเก็ตไปยัง / var / log / syslog ... ทำไม TRACE ไม่ทำงาน


1
เพียงแค่เหยียบโปรแกรม python (ซึ่งเรียกอีกอย่างว่า iptables-trace :) เมื่อเริ่มต้นจะเพิ่มกฎการติดตามที่มีเงื่อนไขที่ระบุในการเรียกใช้ iptables วิเคราะห์คำและแสดงผลลัพธ์ที่จัดรูปแบบสำหรับผลลัพธ์การติดตามผลลัพธ์จนกว่าโปรแกรมจะหยุด (ซึ่งจะลบกฎการติดตามจาก iptables) จะพยายามไม่ช้านี้ ...
คริส

คำตอบ:


8

วิ่ง:

modprobe ipt_LOG

นั่นแก้ไขให้ฉัน


ขอบคุณที่ใช้งานได้! บันทึกมีอยู่ใน / var / log / syslog หรือ /var/log/kern.log
bernie

14

ดูเหมือนว่า (ทำงานได้ดีสำหรับฉัน) ด้วยเคอร์เนลใหม่ซึ่งจำเป็นสำหรับ (สำหรับ IPv4):

modprobe nf_log_ipv4
sysctl net.netfilter.nf_log.2=nf_log_ipv4

เครดิต:


นี่เป็นอันที่ทำงานกับฉันใน Ubuntu 16.04 (เคอร์เนล 4.4.0-21-generic)
Ash Berlin-Taylor

น่าเสียดายที่modinfo nf_log_ipv4คำอธิบายเพิ่งพูดว่า: "Netfilter IPv4 packet logging" คำอธิบายบางอย่างสามารถปรับปรุงคำตอบ: sysctl ทำอะไรกันแน่
U. Windl

8

ฉันพบว่าฉันต้องการดำเนินการทั้งสองคำตอบก่อนหน้านี้ตามลำดับนี้:

sudo modprobe ipt_LOG
sudo sysctl net.netfilter.nf_log.2=ipt_LOG

นี่คือสองสิ่งที่ฉันค้นพบตลอดทาง

คุณสามารถรับรายการตัวบันทึกที่ถูกต้อง (พร้อมกับตัวบันทึกที่เลือกในปัจจุบัน) ดังต่อไปนี้:

cat /proc/net/netfilter/nf_log

/usr/include/bits/socket.hตัวเลขที่นี่แสดงตัวเลขโปรโตคอลครอบครัวที่กำหนดไว้ใน 2 คือAF_INET(นั่นคือ IPv4) และ 10 คือAF_INET6(IPv6)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.