มีวิธีบันทึกการเชื่อมต่อขาออกทั้งหมดที่กระบวนการสร้างขึ้นหรือไม่ ฉันรู้netstatแต่ดูเหมือนว่าจะเป็นภาพรวมของจุดในเวลามากกว่าสิ่งที่ทำงานและบันทึกข้อมูลในช่วงเวลา
ฉันต้องการเฉพาะ IP หรือชื่อโฮสต์พอร์ตและกระบวนการเชื่อมต่อ
มีวิธีบันทึกการเชื่อมต่อขาออกทั้งหมดที่กระบวนการสร้างขึ้นหรือไม่ ฉันรู้netstatแต่ดูเหมือนว่าจะเป็นภาพรวมของจุดในเวลามากกว่าสิ่งที่ทำงานและบันทึกข้อมูลในช่วงเวลา
ฉันต้องการเฉพาะ IP หรือชื่อโฮสต์พอร์ตและกระบวนการเชื่อมต่อ
คำตอบ:
บน Linux คุณสามารถตั้งค่าระบบย่อยการตรวจสอบเพื่อบันทึกทุกครั้งที่พยายามสร้างการเชื่อมต่อเครือข่าย สำหรับข้อมูลเกี่ยวกับระบบย่อยการตรวจสอบให้อ่านauditctlหน้า manหรือบทช่วยสอนนี้หรือตัวอย่างอื่น ๆ ในเว็บไซต์นี้ ติดตั้งauditdแพ็คเกจการกระจายของคุณหากจำเป็น
auditctl -A exit,always -S connect
บันทึกอยู่ใน/var/log/audit/audit.logการกระจายทั้งหมดที่ฉันรู้ นอกจากนี้คุณยังสามารถค้นหาพวกเขาausearchด้วย
auditctl -d exit,always -S connect
less /var/log/audit/audit.log
หากคุณสามารถที่จะติดตั้งเคอร์เนลที่กำหนดเองคุณควรมีลักษณะที่SystemTap มีตัวอย่างมากมายวิธีติดตามกิจกรรมเครือข่าย
บน Linux คุณสามารถใช้ip_conntrackเพื่อทำให้สิ่งนี้สำเร็จ มันเป็นโมดูลการติดตามการเชื่อมต่อซึ่งปกติใช้ในการตรวจสอบการเชื่อมต่อสำหรับโปรโตคอลที่ทำงานผิดปกติ (เช่น FTP) ที่จะจัดการโดยกล่องไฟร์วอลล์ / NAT
modprobe ip_conntrack
cat /proc/net/ip_conntrack
คุณสามารถ grep ไฟล์หลอกเพื่อดูการเชื่อมต่อที่จัดตั้งขึ้นและ grep แหล่ง IP เพิ่มเติมเพื่อดูว่าเมื่อมันมาจากกล่องของคุณ
ฉันจะดูการใช้งานtcpdumpบนอินเทอร์เฟซขาออกดูSYNคำขอขาออก
หากคุณรู้สึกว่าการผจญภัยจริงๆคุณสามารถสร้างโปรแกรมอรรถประโยชน์เช่น: straceหรือtrussรายงานการconnectเรียกใช้ระบบทั้งหมดในขณะที่ติดตามการทำงานของโปรแกรม แต่มันอันตรายกว่าเล็กน้อยและมีข้อเสียเมื่อจัดการกับกระบวนการแบบมัลติเธรด
watch -n 2 netstatในเวลาเดียวกัน แต่นั่นไม่ใช่ทางออกที่เหมาะสมใช่ไหม