การใช้ Iptables บน Linux
คู่มือนี้จะพยายามอธิบายวิธีการใช้ iptables บน linux ในภาษาที่เข้าใจง่าย.
สารบัญ[ซ่อน]
|
ภาพรวม
Iptables เป็นไฟร์วอลล์ตามกฎซึ่งจะประมวลผลแต่ละกฎตามลำดับจนกว่าจะพบกฎที่ตรงกัน.
สิ่งที่ต้องทำ: รวมตัวอย่างที่นี่
การใช้
โดยทั่วไปแล้วยูทิลิตี้ iptables จะถูกติดตั้งไว้ล่วงหน้าในการแจกจ่าย linux ของคุณ แต่ไม่ได้ใช้กฎใด ๆ คุณจะพบโปรแกรมอรรถประโยชน์ที่นี่ในการกระจายส่วนใหญ่:
/ sbin / iptables
การบล็อกที่อยู่ IP เดียว
คุณสามารถบล็อก IP ได้โดยใช้พารามิเตอร์ -s แทนที่ 10.10.10.10 ด้วยที่อยู่ที่คุณพยายามบล็อก คุณจะทราบในตัวอย่างนี้ว่าเราใช้พารามิเตอร์ -I (หรือ - แทรกการทำงานด้วย) แทนการผนวกเพราะเราต้องการให้แน่ใจว่ากฎนี้ปรากฏขึ้นก่อนก่อนที่จะอนุญาตกฎใด ๆ.
/ sbin / iptables -I INPUT -s 10.10.10.10 -j DROP
การอนุญาตการรับส่งข้อมูลทั้งหมดจากที่อยู่ IP
คุณสามารถอนุญาตการรับส่งข้อมูลทั้งหมดจากที่อยู่ IP ได้โดยใช้คำสั่งเดียวกับด้านบน แต่แทนที่ DROP ด้วย ACCEPT คุณต้องตรวจสอบให้แน่ใจว่ากฎนี้ปรากฏขึ้นก่อนที่จะถึงกฎ DROP ใด ๆ.
/ sbin / iptables - อินพุต -s 10.10.10.10 -j ได้รับการยอมรับ
การบล็อกพอร์ตจากที่อยู่ทั้งหมด
คุณสามารถบล็อกพอร์ตทั้งหมดจากการเข้าถึงผ่านเครือข่ายโดยใช้สวิตช์ -dport และเพิ่มพอร์ตของบริการที่คุณต้องการบล็อก ในตัวอย่างนี้เราจะบล็อกพอร์ต mysql:
/ sbin / iptables -A อินพุต -p tcp - พอร์ต 3306 -j DROP
การอนุญาตให้ใช้พอร์ตเดียวจาก IP เดียว
คุณสามารถเพิ่มคำสั่ง -s พร้อมกับคำสั่ง -dport เพื่อ จำกัด กฎต่อไปยังพอร์ตเฉพาะ:
/ sbin / iptables -A อินพุต -p tcp -s 10.10.10.10 - พอร์ต 3306 -j ยอมรับ
การดูกฎปัจจุบัน
คุณสามารถดูกฎปัจจุบันโดยใช้คำสั่งต่อไปนี้:
/ sbin / iptables -L
สิ่งนี้จะให้ผลลัพธ์ที่คล้ายกับต่อไปนี้:
Chain INPUT (policy ACCEPT) เป้าหมาย prot prot opt ปลายทางต้นทางยอมรับทั้งหมด - 192.168.1.1/24 ทุกที่ยอมรับทั้งหมด - 10.10.10.0/24 ทุกที่ DROP tcp - ทุกที่ทุก tcp dpt: ssh DROP tcp: ทุกที่ทุก tcp dpt: MySQL
แน่นอนผลลัพธ์ที่ได้จะนานขึ้นอีกเล็กน้อย.
การล้างกฎปัจจุบัน
คุณสามารถล้างกฎปัจจุบันทั้งหมดโดยใช้พารามิเตอร์ flush สิ่งนี้มีประโยชน์มากหากคุณจำเป็นต้องวางกฎในลำดับที่ถูกต้องหรือเมื่อคุณทำการทดสอบ.
/ sbin / iptables - ล้างข้อมูล
จัดจำหน่ายเฉพาะ
ในขณะที่ลีนุกซ์ส่วนใหญ่มีรูปแบบของ iptables, บางตัวก็มี wrapper ซึ่งทำให้การจัดการง่ายขึ้นเล็กน้อย ส่วนใหญ่มักจะ“ addons” เหล่านี้อยู่ในรูปแบบของสคริปต์เริ่มต้นที่ดูแลการเริ่มต้น iptables เมื่อเริ่มต้นถึงแม้ว่าการแจกแจงบางอย่างยังรวมถึงแอปพลิเคชัน wrapper เต็มเป่าซึ่งพยายามที่จะลดความซับซ้อนของกรณีทั่วไป.
Gentoo
iptables สคริปต์เริ่มต้นบน Gentoo สามารถจัดการสถานการณ์ทั่วไปมากมาย สำหรับ starters จะช่วยให้คุณกำหนดค่า iptables ให้โหลดเมื่อเริ่มต้น (โดยปกติคือสิ่งที่คุณต้องการ):
rc-update เพิ่ม iptables เป็นค่าเริ่มต้น
เมื่อใช้สคริปต์เริ่มต้นคุณสามารถโหลดและล้างไฟร์วอลล์ด้วยคำสั่งที่จดจำได้ง่าย:
/etc/init.d/iptables เริ่ม /etc/init.d/iptables หยุด
สคริปต์ init จัดการกับรายละเอียดของการคงการกำหนดค่าไฟร์วอลล์ปัจจุบันของคุณเมื่อเริ่ม / หยุด ดังนั้นไฟร์วอลล์ของคุณจะอยู่ในสถานะที่คุณทิ้งไว้เสมอ หากคุณต้องการบันทึกกฎใหม่ด้วยตนเองสคริปต์เริ่มต้นสามารถจัดการสิ่งนี้ได้เช่นกัน:
/etc/init.d/iptables บันทึก
นอกจากนี้คุณสามารถกู้คืนไฟร์วอลล์ของคุณไปยังสถานะที่บันทึกไว้ก่อนหน้า (สำหรับกรณีที่คุณกำลังทดลองกับกฎและตอนนี้ต้องการคืนค่าการทำงานก่อนหน้านี้):
/etc/init.d/iptables โหลดซ้ำ
ในที่สุดสคริปต์ init สามารถทำให้ iptables เข้าสู่โหมด“ ตกใจ” ซึ่งการรับส่งข้อมูลขาเข้าและขาออกทั้งหมดถูกปิดกั้น ฉันไม่แน่ใจว่าทำไมโหมดนี้จึงมีประโยชน์ แต่ไฟร์วอลล์ Linux ทั้งหมดดูเหมือนจะมี.
/etc/init.d/iptables ตกใจ
คำเตือน: อย่าเริ่มต้นโหมดตื่นตระหนกหากคุณเชื่อมต่อกับเซิร์ฟเวอร์ของคุณผ่าน SSH คุณ จะ ถูกตัดการเชื่อมต่อ! ครั้งเดียวที่คุณควรวาง iptables เข้าสู่โหมดตกใจคือขณะที่คุณอยู่ ทางร่างกาย ด้านหน้าของคอมพิวเตอร์.