เป็นวิธีที่ถูกต้องในการเปิดช่วงของพอร์ตใน iptables อะไร


56

ฉันเจอบทความที่ให้คำแนะนำต่อไปนี้:

iptables -A INPUT -p tcp 1000:2000 -j ACCEPT

และคนอื่น ๆ ที่ระบุว่าข้างต้นจะไม่ทำงานและ iptables รองรับการประกาศพอร์ตหลายรายการพร้อม--multiportตัวเลือกเท่านั้น

มีวิธีที่ถูกต้องในการเปิดหลายพอร์ตด้วย iptables หรือไม่?


คำถามที่เกี่ยวข้อง: iptables และหลายพอร์ต
Cristian Ciupitu

คำตอบ:


60

นี่เป็นวิธีที่ถูกต้อง:

iptables -A INPUT -p tcp --match multiport --dports 1024:3000 -j ACCEPT

ตัวอย่างเช่น. แหล่งที่มาที่นี่


5
หากคุณไม่ทราบว่าสถานะของ ruleset ที่ค่อนข้างปลอดภัยกว่า-I -A
user9517

@ ฉันช่วยอธิบายเหตุผลเบื้องหลังได้ไหม?
jayhendren

2
@jayhendren ruleset จำนวนมากจะมีกฎการปล่อยทุกอย่างเริ่มต้นเช่น-A INPUT -j REJECT --reject-with icmp-host-prohibitedท้าย INPUT และตารางอื่น ๆ การใช้-Aเพิ่มกฎท้ายตารางหลังจากกฎสุดท้ายดังนั้นมันจะไม่ถูกพิจารณาว่าเป็น netfilter ทำงานบนพื้นฐานการแข่งขันครั้งแรกชนะ การใช้การ-Iแทรกกฎที่จุดเริ่มต้นของตารางและจะถูกพิจารณาเสมอ
user9517

4
@Iain บางชุดยังมีกฎที่จุดเริ่มต้นที่กรองหรือแพ็คเก็ต ratelimit ดังนั้นมันคุ้มค่าที่จะชี้ให้เห็นว่า-Iจะไม่ปลอดภัยกว่าเสมอถ้าคุณไม่รู้จักกฎ
jayhendren

3
@jayhendren ผมคิดว่าคุณก็ไม่ได้และยังทราบผมบอกว่าค่อนข้างไม่ได้เสมอ
user9517

54

สิ่งที่คุณได้รับการบอกถูกต้องแม้ว่าคุณจะเขียนผิด (คุณลืม--dport)

iptables -A INPUT -p tcp --dport 1000:2000 จะเปิดทราฟฟิกขาเข้าไปยังพอร์ต TCP รวม 1,000 ถึง 2000

-m multiport --dportsจำเป็นเฉพาะถ้าช่วงที่คุณต้องการเปิดไม่ต่อเนื่องเช่น-m multiport --dports 80,443ซึ่งจะเปิด HTTP และ HTTPS เท่านั้น - ไม่ใช่ช่วงที่อยู่ระหว่างนั้น

โปรดทราบว่าการเรียงลำดับของกฎมีความสำคัญและ (เนื่องจาก Iain หมายถึงในความคิดเห็นของเขาที่อื่น ๆ ) มันเป็นงานของคุณเพื่อให้แน่ใจว่ากฎใด ๆ ที่คุณเพิ่มอยู่ในสถานที่ที่มันจะมีประสิทธิภาพ


1
ฉันสามารถพูดถึงที่นี่ได้เช่นกันถ้าคุณต้องการ;)
user9517

1
ฮิฮิฮิฮิ! ไปต่อจากนั้นข้อความมีค่าซ้ำ!
MadHatter

2
นี่คือคำตอบที่ถูกต้อง; มันละเอียดยิ่งขึ้น
Andrew Kozak

10

TL; DR แต่ ...

ช่วงพอร์ตที่บริสุทธิ์โดยไม่มีโมดูลหลายพอร์ต: iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT

ตัวอย่าง multiport ที่เทียบเท่า: iptables -A INPUT -p tcp -m multiport --dports 1000:2000 -j ACCEPT

... และรูปแบบเกี่ยวกับหลายพอร์ตที่มีหลายช่วง (ใช่นี่เป็นไปได้ด้วย): iptables -A INPUT -p tcp -m multiport --dports 1000,1001,1002:1500,1501:2000 -j ACCEPT

... และตัวอย่างมัลติพอร์ตหลายช่วงที่เทียบเท่ากับการปฏิเสธ: iptables -A INPUT -p tcp -m multiport ! --dports 0:999,2001:65535 -j ACCEPT

มีพูน

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