คุณช่วยแนะนำคำแนะนำที่ดีให้กับ iptables ได้หรือไม่? [ปิด]


15

ฉันต้องติดตั้งไฟร์วอลล์บนเซิร์ฟเวอร์ Linux (ประสบการณ์ก่อนหน้านี้ของฉันคือ Windows) กฎของฉันนั้นค่อนข้างง่าย - ห้ามทั้งหมดอนุญาตพอร์ตบางพอร์ตอนุญาตพอร์ตบางพอร์ตสำหรับ IP ซับเน็ตเฉพาะในขณะที่เครือข่ายมีขนาดเล็ก แต่ซับซ้อน (แต่ละโฮสต์มี IP อย่างน้อย 2 192.168 ... อวนทุกคนสามารถ เชื่อมต่อระหว่างกันหลายวิธี) ฉันคิดว่าการใช้ iptables wrappers สามารถทำให้ระบบมีความซับซ้อนมากเกินไปโดยแนะนำหน่วยงานที่ไม่จำเป็นจำนวนมากและมันจะเป็นการดีกว่าที่จะทำให้มันง่ายขึ้นและใช้ iptables โดยตรง

คุณช่วยแนะนำอินเทอร์แอคทีฟที่ดีเกี่ยวกับวิธีเขียนกฎ iptables ได้หรือไม่?

คำตอบ:


26

มีลิงค์ไปยังเอกสารทางการและเอกสารแนะนำบนเว็บไซต์ Netfilter

นี้ไม่ได้เป็นเรื่องใหม่ที่มีทรัพยากรที่ไร้ขีด จำกัด

คำสั่งพื้นฐานส่วนใหญ่จะใช้งานง่ายเป็นธรรมได้อย่างง่ายดายและสามารถอ้างอิงถึงmanpage

netfilter ซึ่งเป็นเทคโนโลยีระดับเคอร์เนลที่เปิดใช้งานการกรองแพ็คเก็ตค่อนข้างสูง มีตารางเพิ่มเติมที่สามารถรวมแพ็คเก็ตแปลแพ็คเก็ตและอื่น ๆ ที่มีผลต่อการกำหนดเส้นทาง iptablesยูทิลิตี้เป็นเครื่องมือ userland สำหรับการโต้ตอบกับ netfilter หากคุณต้องการเรียนรู้เกี่ยวกับฟังก์ชั่นขั้นสูงฉันแนะนำให้คุณอ้างอิงเอกสารดังกล่าวข้างต้น สำหรับข้อมูลเบื้องต้นเกี่ยวกับฟังก์ชั่นพื้นฐานโปรดอ่านเพิ่มเติม

หากต้องการแสดงกฎที่มีอยู่ทั้งหมด:

iptables -L -n

-n ป้องกัน iptables จากการแก้ไข ips ซึ่งให้ผลลัพธ์ที่เร็วกว่า

ตารางเริ่มต้นคือfilterตารางซึ่งเป็นสิ่งที่ใช้เพื่อนำกฎไฟร์วอลล์พื้นฐานไปใช้กับสามเครือข่าย สามโซ่ค่าเริ่มต้นในfilterตารางINPUT, และOUTPUTFORWARD

โซ่ส่วนใหญ่จะอธิบายตนเอง เชน INPUT ส่งผลกระทบต่อแพ็กเก็ตที่เข้ามาเชน chain OUTPUT ส่งผลกระทบต่อแพ็กเก็ตที่สร้างขึ้นในเครื่องและในที่สุดก็ส่งต่อสำหรับแพ็กเก็ตใด ๆ

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

บ่อยครั้งที่มีไฟร์วอลล์หันหน้าไปทางภายนอกตัวเลือกเริ่มต้นจะDROPตรงข้ามกับREJECTซึ่งจะช่วยลดการปล่อยให้มองเห็นได้ของเครือข่ายของคุณบนอินเทอร์เน็ต ตัวอย่างเช่น IP ที่อื่นจะ จำกัด DROPให้บริการไปยังโฮสต์ที่เฉพาะเจาะจงจะมีการแสดงผลน้อยลงด้วย

หมายเหตุ-Aหมายถึงผนวกท้ายของห่วงโซ่ -Iหากคุณต้องการที่จะแทรกไปด้านบนคุณสามารถใช้ กฎทั้งหมดจะถูกประมวลผลจากบนลงล่าง -Dสำหรับการลบ

ไปDROPยังแพ็กเก็ตที่เข้ามาจาก192.168.235.235:

iptables -A INPUT -s 192.168.235.235 -j DROP

สิ่งนี้จะข้ามไปยังDROPเป้าหมายสำหรับโปรโตคอลทั้งหมดที่มาจาก IP นั้น

ที่จะยอมรับ:

iptables -A INPUT -s 192.168.235.235 -j ACCEPT

ในการป้องกันการเข้าถึง IP นั้นจากเซิร์ฟเวอร์หรือเครือข่ายท้องถิ่นของคุณ:

iptables -A OUTPUT -d 192.168.235.235 -j DROP

คุณสามารถระบุ-pโปรโตคอล-sแหล่งที่มาของแพ็คเก็ต-dปลายทางสำหรับแพ็กเก็ตพอร์ตปลายทางพอร์ต--dportต้นทาง--sportและแฟล็กอื่น ๆ อีกมากมายที่จะมีผลต่อวิธีที่แพ็กเก็ตได้รับการปฏิบัติตามกฎ

หากINPUTนโยบายเริ่มต้นของคุณคือDROPและคุณต้องการให้ทุกคนที่ 192.168.123.0/24เครือข่ายย่อยเข้าถึง SSH บนเซิร์ฟเวอร์ของคุณนี่คือตัวอย่าง:

iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT

ถูกต้องแล้วคุณสามารถใช้สัญกรณ์ CIDR ได้เช่นกัน!

โดยทั่วไปแล้วนโยบายเริ่มต้นที่ดีที่สุดDROPสำหรับโซ่ทั้งหมด ห่วงโซ่ทุกคนมีนโยบายเริ่มต้นซึ่งระบุโดย-Pธง แม้ว่าคุณจะมีการตั้งค่านโยบายเป็นค่าเริ่มต้นDROPแต่ก็ยังแนะนำให้มีรายการสุดท้ายในเครือเพื่อให้เป็นDROPเช่นกัน

ตัวอย่างเช่นหากต้องการเปลี่ยนนโยบายเป็นDROPสำหรับเครือข่าย INPUT, FORWARD และ OUTPUT:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

ระวังหากคุณระบุนโยบายเริ่มต้นของ DROP สำหรับ INPUT ในระบบระยะไกลโดยไม่อนุญาตให้คุณเข้าถึง SSH ก่อนคุณสามารถป้องกันตัวคุณเองจากการเข้าถึงระบบ หากบนระบบรีโมตคุณสามารถระบุ crontab ชั่วคราวเพื่อล้างกฎทั้งหมดทุก 5 นาทีว่าล้มเหลว

หากต้องการลบกฎทั้งหมดและอนุญาตการรับส่งข้อมูลทั้งหมด:

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F

หมายเหตุ-Xเอาโซ่ที่สร้างขึ้นทั้งหมด -Fวูบวาบกฎทั้งหมด

มีเครื่องมือเนทีฟเพื่อบันทึกและกู้คืนกฎ โดยเฉพาะอย่างยิ่งและiptables-save iptables-restoreดิสทริบิวชัน Linux ส่วนใหญ่มีsaveและrestoreฟังก์ชั่นภายในไฟล์ init iptables ที่มาพร้อมกับระบบ

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


2
เพิ่งเจอคำตอบนี้ในขณะที่มองหาไอเท็มแบบสุ่มบางอย่างที่นี่ (ฉันค้นหา SF / SO ก่อน Google อีกต่อไป!) และคำตอบที่ละเอียดมากนี้ดูเหมือนจะสมควรได้รับความรักจากการโหวตมากขึ้นดังนั้นฉันจึงให้บางอย่าง!
Andrew Barber

+1 คำตอบที่ดี ฉันจะพูดถึงDebian WIKIเช่นกัน
michal.kreuzman


1

ฉันพบhttps://help.ubuntu.com/community/IptablesHowToประโยชน์เมื่อเร็ว ๆ นี้ ฉันไม่คิดว่ามีอะไรเฉพาะใน Ubuntu โดยเฉพาะ


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