Hacker บายพาส iptables


9

(ย้ายจาก SO)

ฉันมี iptables ปกป้องเซิร์ฟเวอร์ sip มันปิดกั้น IP ทั้งหมดยกเว้นที่ฉันเปิดขึ้นเป็นพิเศษและดูเหมือนจะใช้ได้กับทุกคน ฉันได้ทดสอบจากที่อยู่ IP จำนวนมากที่ไม่ได้อยู่ในรายการสีขาวและพวกเขาทั้งหมดได้ลดลงตามที่ควร

แต่ฉันได้เลือก "แฮ็กเกอร์" ที่ดูเหมือนจะสามารถข้ามกฎ iptables ได้ INVITEs พิสูจน์ของเขาทำให้มันผ่านและฉันไม่มีความคิดอย่างไรหรือว่ามันเป็นไปได้ ใน 10 ปีฉันไม่เคยเห็นสิ่งนี้มาก่อน

ฉันคิดว่ามันต้องเป็นสิ่งที่ฉันทำไปแล้ว แต่ฉันมองไม่เห็น

iptables ที่สร้างเช่นนี้ (MYIP ที่กำหนดไว้ที่ด้านบน - redacted):

iptables -F
iptables -X
iptables -N ALLOWEDSIP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -d $MYIP --dport 22 -j ACCEPT
iptables -t filter -A INPUT -j ALLOWEDSIP

# This is my white list.
iptables -A ALLOWEDSIP -j RETURN

ตอนนี้เมื่อไม่มีอะไรใน ALLOWEDSIP สิ่งที่ฉันควรทำคือ SSH (ซึ่งฉันทำได้) ถ้าฉันโทรไปที่นั่นพวกเขาทั้งหมดจะถูกทิ้ง แต่ wireshark แสดงให้ฉันเห็น (ไอพีของฉัน redacted):

89.163.146.25 -> x.x.x.x SIP/SDP 805 Request: INVITE sip:521088972597572280@x.x.x.x |
x.x.x.x -> 89.163.146.25 SIP 417 Status: 100 Giving a try |
x.x.x.x -> 89.163.146.25 SIP 875 Status: 407 Proxy Authentication Required |

การโทรของเขากระทบกับสวิตช์ของฉันและแม้ว่า ACL จะถูกปฏิเสธในที่สุดพวกเขาก็ไม่ควรไปถึงที่นั่น ไม่มีอะไรที่จะผ่าน ดึงผมออกมา ใครรู้บ้าง

เพื่อความสมบูรณ์นี่คือผลลัพธ์ของ iptables -L:

# iptables -L --line-numbers -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       10   640 ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
2        0     0 ACCEPT     all  --  lo     any     anywhere             anywhere
3        0     0 ACCEPT     tcp  --  any    any     anywhere             <redacted>.com  tcp dpt:6928
4        0     0 ALLOWEDSIP  all  --  any    any     anywhere             anywhere

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 6 packets, 544 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain ALLOWEDSIP (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 RETURN     all  --  any    any     anywhere             anywhere

แก้ไข: เพิ่งเห็นสิ่งนี้จาก wireshark พวกเขาจะทำสิ่งที่น่ากลัวเช่นการสร้างวิธีอื่นแล้วเล่นในกฎที่จัดตั้งขึ้น? บางทีพวกเขาอาจจะเล่นในหลุมที่เกี่ยวข้อง?

89.163.146.25 -> <redacted> RTCP 806 Source port: tag-pm  Destination port: sip

แก้ไข 2: UDP เป็นกุญแจสำคัญที่นี่ เมื่อฉันตั้งค่า OpenSIPS ให้ฟัง TCP เท่านั้นดูเหมือนว่าปัญหาจะหายไป ความพยายามของพวกเขาจะไม่ผ่านไปอีกต่อไปแม้ว่าพวกเขาจะส่งข้อความ "tag-pm" เพิ่มเติม ไม่ได้อธิบายว่าทำไมแพ็คเก็ตถึงได้รับ opensips แม้ว่า iptables ควรหยุดมันก่อน ชอบที่จะรู้ว่าสิ่งที่ฉันทำผิดที่นี่

แก้ไข 3: หากฉันลบ RELATED ฉันจะหยุดตอบกลับพวกเขาดังนั้นจึงเป็นเรื่องเกี่ยวกับสิ่งนั้น แต่ฉันคิดว่าฉันต้องการความเกี่ยวข้อง มีเคล็ดลับในการแก้ไขปัญหาหรือไม่?


1
ESTABLISHEDควรทำงานกับ UDP ดูเหมือนว่าแพ็กเก็ตโฟลว์และยอมรับการตอบกลับการร้องขอ (ขาออก) "แฮ็กเกอร์" ของคุณมี IP แบบคงที่หรือไม่ ;-) ถ้าเป็นเช่นนั้นให้ตรวจสอบ / proc / net / nf_conntrack เพื่อดูว่าตารางสถานะประกอบด้วยอะไรบ้างเมื่อพวกเขาอยู่ในปัจจุบัน / ไม่ / เชื่อมต่อ ... RELATEDเป็นสิ่งที่ยุ่งยากกว่า ... ไม่รู้ว่ามันทำอะไรกับ SIP . ไม่modprobeอาจจะแสดงโมดูล ipt_sip หรือสิ่งที่โหลดที่จะทำ "วิเศษ" สิ่งที่?
Marki

@ Marki - ขอบคุณสำหรับเคล็ดลับนั้น / proc / net / nf_conntrack ไม่มีอยู่ (centos 7) ดังนั้นฉันจะต้องค้นหาว่าอะไร / ทำไม / ที่ไหน
David Wylie

2
"เครื่องมือควบคุม" เป็นสิ่งที่ติดตั้งได้จาก repo จากนั้นเรียกใช้ "conntrack -L" ดูเหมือนว่าจะแสดงรายการ ไปดูสิ่งที่ให้ผล โดยทั่วไปแล้วเขาหยุด หวังว่าจะหยุดชั่วคราว
David Wylie

1
ถ้าเป็นไปได้: พยายามที่จะ จำกัดการRELATED -p icmpอาจจะแก้ปัญหาได้ (หรือเป็นวิธีการทำงานที่เหมาะสมซึ่งคุณไม่ต้องการให้อ่านเกี่ยวกับผู้ช่วยควบคุม)
ซ้ำซาก

1
คุณทำสิ่งต่าง ๆ รอบตัวโดยเพิ่มห่วงโซ่ หากการยอมรับเครือข่ายได้รับการตรวจสอบก่อนกำหนด ALLOWEDSIP ของคุณเอง ALLOWEDSIP จะไร้ประโยชน์
Overmind

คำตอบ:


1

คำอธิบายเดียวที่เป็นไปได้ว่ามันอาจทำงานคือว่ากระทำผิดอย่างใด UDP datagrams --state ESTABLISHED,RELATEDผ่าน

เนื่องจาก UDP เป็นโปรโตคอลไร้สัญชาติฉันสงสัยว่าstateโมดูลนั้นมีการติดตามอย่างมีประสิทธิภาพ

หากต้องการแยกแยะปัญหาฉันจะ จำกัด การตรวจสอบสถานะเป็นโปรโตคอล TCP โดย:

-A INPUT -m tcp -m state -p tcp --state ESTABLISHED,RELATED -j ACCEPT`

และกรองล่วงหน้าALLOWEDSIPด้วยโปรโตคอล UDP (และควรมีพอร์ตปลายทางด้วย):

iptables -t filter -A INPUT -m udp -p udp --dport 5060 -j ALLOWEDSIP

-2

คุณสามารถ nullroute สิ่งนี้ควรเลี่ยง iptables

route add 89.163.146.25 gw 127.0.0.1 lo

ตรวจสอบ

netstat -nr

หรือ

route -n

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