มันจะดีกว่าถ้าตั้งค่า -j REJECT หรือ -j DROP ใน iptables?


33

มีตัวอย่างของกฎ iptables ใน archlinux wiki:

# Generated by iptables-save v1.4.18 on Sun Mar 17 14:21:12 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Sun Mar 17 14:21:12 2013

ไม่กี่วันที่ผ่านมาเพื่อนของฉันถามฉันว่าทำไมถึงมีREJECTกฎสามข้อสุดท้าย เขาบอกผมว่าควรจะมีแทนและเขากล่าวถึงบางสิ่งบางอย่างเกี่ยวกับการรักษาความปลอดภัยที่ดีขึ้นในกรณีของDROPDROP

ดังนั้นฉันมีสองคำถาม:

  1. กฎสามข้อนี้ทำอะไร

  2. มันสร้างความแตกต่างใด ๆ เมื่อฉันใส่มีDROPในสถานที่REJECT --reject-with? ถ้าใช่ความแตกต่างคืออะไร?


คำตอบ:


33

กฎสามข้อนี้ทำอะไร

กฎ 3 ข้อนั้นดูเหมือนอธิบายได้ด้วยตนเอง:

  1. ปฏิเสธแพ็กเก็ต UDP ขาเข้าที่มีข้อความ ICMP "พอร์ตที่เข้าถึงไม่ได้"
  2. ปฏิเสธแพ็กเก็ต TCP ขาเข้าด้วย "tcp reset"
  3. ปฏิเสธแพ็กเก็ตที่เข้ามา (ของโปรโตคอลอื่น ๆ ) ด้วยข้อความ ICMP "โปรโตคอลไม่สามารถเข้าถึงได้"

หากคุณกำลังมองหารายละเอียดเพิ่มเติม (เกี่ยวกับแพ็คเก็ต UDP / TCP, ICMP) คุณจะต้องขุดลงในเอกสารเครือข่ายและอาจจะman iptablesเหมือนกัน

มันสร้างความแตกต่างหรือไม่เมื่อฉันวาง DROP ไว้ที่ REJECT --reject-with? ถ้าใช่มีคนอธิบายความแตกต่างให้ฉันฉันจะขอบคุณมันจริงๆ

มันสร้างความแตกต่าง และขัดกับความเชื่อที่นิยมไม่ได้ให้การรักษาความปลอดภัยที่ดีกว่าDROP REJECTมันไม่สะดวกผู้ใช้ที่ถูกกฎหมายและไม่มีการป้องกันจากผู้ประสงค์ร้ายอย่างมีประสิทธิภาพ โพสต์นี้จะอธิบายถึงเหตุผลในรายละเอียด:

http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject

เหตุผลทั่วไปสำหรับการใช้ DROP แทนที่จะปฏิเสธคือการหลีกเลี่ยงการให้ข้อมูลเกี่ยวกับพอร์ตที่เปิดอยู่อย่างไรก็ตามการทิ้งแพ็คเก็ตจะให้ข้อมูลมากเท่ากับการปฏิเสธ

ด้วย REJECT คุณสแกนและจัดหมวดหมู่ผลลัพธ์เป็น "การเชื่อมต่อที่สร้างไว้แล้ว" และ "การเชื่อมต่อถูกปฏิเสธ"

ด้วย DROP คุณจะจัดหมวดหมู่ผลลัพธ์เป็น "การเชื่อมต่อที่สร้างไว้แล้ว" และ "การเชื่อมต่อหมดเวลา"

สแกนเนอร์ที่ไม่สำคัญที่สุดจะใช้ระบบปฏิบัติการ "เชื่อมต่อ" การโทรและจะรอจนกว่าการเชื่อมต่อจะเสร็จสิ้นก่อนที่จะเริ่มการเชื่อมต่อครั้งต่อไป สแกนเนอร์ประเภทนี้จะช้าลงอย่างมากโดยการทิ้งแพ็กเก็ต อย่างไรก็ตามหากการโจมตีตั้งค่าการหมดเวลา 5 วินาทีต่อการพยายามเชื่อมต่อคุณสามารถสแกนทุกพอร์ตที่สงวนไว้ (1..1023) บนเครื่องในเวลาเพียง 1.5 ชั่วโมง การสแกนนั้นเป็นระบบอัตโนมัติเสมอและผู้โจมตีไม่สนใจว่าผลลัพธ์จะไม่ส่งผลในทันที

สแกนเนอร์ที่มีความซับซ้อนมากขึ้นจะส่งแพ็กเก็ตเองแทนที่จะอาศัยการใช้ TCP ของระบบปฏิบัติการ สแกนเนอร์ดังกล่าวมีความรวดเร็วมีประสิทธิภาพและไม่แยแสต่อการเลือก REJECT หรือ DROP

สรุปผลการศึกษา

DROP ไม่มีสิ่งกีดขวางที่มีประสิทธิภาพสำหรับกองกำลังที่เป็นมิตร แต่สามารถชะลอการใช้งานแอพพลิเคชั่นที่ดำเนินการโดยผู้ใช้ที่ถูกกฎหมาย ไม่ควรใช้ DROP


@janos - คุณช่วยเขียนเพิ่มเติมเล็กน้อยเกี่ยวกับสิ่งที่เกิดขึ้นจริงเมื่อแพ็กเก็ตถึงกฎทั้งสามข้อ?
Mikhail Morfikov

3
@Kiwy - อ่านลิงค์แล้วลองด้วยตัวเอง DROP ไม่ให้ความปลอดภัยที่ดีกว่าการปฏิเสธ มันไม่สะดวกผู้ใช้ที่ถูกกฎหมายและไม่มีการป้องกันจากผู้ประสงค์ร้ายอย่างมีประสิทธิภาพ นี่เป็นเพราะผู้ใช้ที่ถูกกฎหมายต้องทนทุกข์จากการเชื่อมต่อที่ช้าในขณะที่รอ conection ให้หมดเวลาและแครกเกอร์เพียงกำหนดค่าเครื่องมือของพวกเขาที่จะไม่รอเวลา ความจริงที่ว่าการเชื่อมต่อช้า (เนื่องจากรอการหมดเวลา) แสดงเซิร์ฟเวอร์ของคุณที่นั่นและไฟร์วอลล์
Panther

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

1
ไฟร์วอลล์ที่ส่งต่อเฉพาะบางพอร์ตจะยิ่งดีกว่า DROP REJECT นั้นไม่เหมือนกับบริการที่ไม่มีการรันครั้งแรก สแกนเนอร์พอร์ตจำนวนมากทำเครื่องหมายโฮสต์ของคุณว่าเป็นเป้าหมายที่เป็นไปได้สำหรับการสแกนในอนาคตโดยหวังว่าจะสามารถตรวจจับไฟร์วอลล์ของคุณได้หากพวกเขาพบ REJECTS หรือ DROPS ที่นั่นเนื่องจากทั้งคู่สามารถตรวจจับได้จากภายนอก chiark.greenend.org.uk/~peterb/network/drop-vs-reject
Dagelf

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