มีลิงค์ไปยังเอกสารทางการและเอกสารแนะนำบนเว็บไซต์ 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เนื่องจากจะใช้งานนโยบายเหล่านี้หลายอย่างเป็นค่าเริ่มต้น อย่างไรก็ตามฉันเห็นด้วยกับวิธีการของคุณและชอบที่จะรักษากฎของตัวเองโดยตรงเช่นกันและแนวทางปฏิบัติที่ดีที่สุดแบบเดียวกันนี้สามารถนำไปใช้ได้โดยไม่ต้องมีส่วนหน้า