ฉันต้องการทดสอบกฎ iptables
กฎคือการปฏิเสธการรับส่งข้อมูลขาออกทั้งหมดยกเว้น DNS
ดังนั้นฉันจึงเปลี่ยนกฎเริ่มต้นของ OUTPUT ของตารางตัวกรองเป็น DROP โดยใช้คำสั่งนี้
sudo iptables -t filter -P OUTPUT DROP
จากนั้นฉันต่อท้ายกฎนี้เพื่อยอมรับการรับส่งข้อมูล DNS
sudo iptables -t filter -A OUTPUT -p udp --dport 53 -o ens33 -j ยอมรับ
และฉันรันคำสั่งนี้เพื่อทดสอบนโยบาย
nslookup google.com
และก่อนที่จะเรียกใช้คำสั่งนี้ ฉันเรียกใช้ wireshark บน vm และโฮสต์ของฉัน
จากนั้นคำสั่ง nslookup ใช้เวลาสักครู่และให้ข้อความนี้แก่ฉัน
หมดเวลาการเชื่อมต่อ; ไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้
และ wireshark (บน vm และบนโฮสต์) ไม่ได้จับแพ็กเก็ตใด ๆ
ดังนั้นฉันจึงลบกฎนี้และเพิ่มกฎใหม่
sudo iptables -t filter -A OUTPUT -p udp --dport 53 -j ยอมรับ
และทำเช่นเดิม
ข้อความเดิมปรากฏขึ้นอีกครั้ง แต่ wireshark (บน vm และบนโฮสต์) ดักจับแพ็กเก็ต (คำขอและการตอบสนอง)
จากนั้นฉันก็ลบกฎนี้และเพิ่มกฎถัดไป
sudo iptables -t filter -A OUTPUT -p udp -j ยอมรับ
และทำเช่นเดิม
คราวนี้คำสั่ง nslookup กลับมาพร้อมกับผลลัพธ์และ wireshark captcher แพ็กเก็ต
เหตุใดจึงเกิดขึ้น
ก่อนการทดสอบเหล่านี้ ฉันติดตั้ง snort (บน vm อื่น) และฉันพยายามปล่อยแพ็กเก็ตบางแพ็กเก็ต แต่ก็ไม่ได้
แพ็กเก็ตถูกบันทึกแต่ไม่ตกหล่น
ฉันไม่รู้ว่ากรณีเหล่านี้เกี่ยวข้องกันหรือไม่