IPTables คือชื่อของระบบไฟร์วอลล์ที่ทำงานจากบรรทัดคำสั่งบน Linuxโปรแกรมส่วนใหญ่ทำหน้าที่เป็นอูบุนตูยูทิลิตี้เริ่มต้นบน.ผู้ดูแลระบบมักใช้ไฟร์วอลล์ IPTables เพื่ออนุญาตหรือบล็อกการรับส่งข้อมูลในเครือข่ายของตน
หากคุณเพิ่งเริ่มใช้ IPTables สิ่งแรกที่คุณต้องทำคืออัปเดตหรือติดตั้งด้วย:
$ sudo apt-get ติดตั้ง iptables
แม้ว่าผู้ใช้ที่ไม่คุ้นเคยกับอินเทอร์เฟซบรรทัดคำสั่งจะพบว่า IPTables เป็นช่วงการเรียนรู้ แต่ยูทิลิตี้นี้ใช้งานง่ายมากมีชุดคำสั่งหลักที่สามารถใช้เป็นพื้นฐานในการควบคุมการรับส่งข้อมูลที่กล่าวว่า คุณต้องระวังให้มากเมื่อเปลี่ยนกฎ IPTablesคำสั่งที่พิมพ์ผิดสามารถล็อคคุณจาก IPTables ได้อย่างสมบูรณ์จนกว่าคุณจะแก้ไขปัญหาภายในเครื่องจริง
ในบทความนี้ เราจะให้คำแนะนำเบื้องต้นเกี่ยวกับ IPTables และแนะนำข้อมูลพื้นฐานให้คุณทราบก่อนที่เราจะพูดถึงแกนหลักของ IPTables คุณต้องแน่ใจว่าคุณมีเรียกใช้ Ubuntu 16.04的VPA個 一個กับไคลเอ็นต์ SSH的 เครื่องท้องถิ่น.หากคุณมีสิ่งเหล่านี้อยู่แล้ว ก็ถึงเวลาเริ่มต้น
เนื้อหา
บทช่วยสอน IPTables: โซ่
หนึ่งในแนวคิดพื้นฐานที่ควรเชี่ยวชาญใน IPTables คือแนวคิดของลูกโซ่ห่วงโซ่เป็นหลักกฎตารางตัวกรองมีสามสายที่คุณจะพบใน IPTables;ป้อน,ซึ่งไปข้างหน้า และผลผลิต.
-
- INPUT – ห่วงโซ่ INPUT เป็นกฎที่ควบคุมแพ็กเก็ตขาเข้าคุณสามารถบล็อกหรืออนุญาตการเชื่อมต่อใหม่ได้ที่นี่คุณสามารถทำได้โดยอิงตามพอร์ต โปรโตคอล และที่อยู่ IP ต้นทาง
- ไปข้างหน้า – FORWARD chain กรองแพ็กเก็ตขาเข้าที่ถูกส่งต่อไปยังตำแหน่งปลายทางที่ต่างกันเว้นแต่คุณจะกำหนดเส้นทางหรือมองหาการส่งต่อโดยเฉพาะ คุณไม่น่าจะใช้เชนนี้
- เอาท์พุท – ห่วงโซ่ OUTPUT ใช้เพื่อจัดการแพ็คเก็ตขาออกและการเชื่อมต่อสิ่งสำคัญที่ควรทราบคือ หากคุณ ping โฮสต์ภายนอก ห่วงโซ่อินพุตจะถูกใช้เพื่อส่งคืนข้อมูลให้คุณ
พฤติกรรมลูกโซ่เริ่มต้น
คุณอาจต้องการข้ามไปที่การกำหนดค่ากฎเฉพาะในตอนเริ่มต้น แต่คุณจะต้องย้อนกลับไปเพื่อกำหนดการทำงานเริ่มต้นในการพิจารณาว่าพฤติกรรมเริ่มต้นของลูกโซ่คืออะไร คุณต้องรันคำสั่งต่อไปนี้:
$ sudo iptables -L คำสั่ง
ซึ่งจะแสดงสิ่งต่อไปนี้:
ผู้ใช้@ubuntu:~$ sudo iptables -L -v อินพุตลูกโซ่ (ยอมรับนโยบาย) ส่งต่อ (ยอมรับนโยบาย) Chain OUTPUT (ยอมรับนโยบาย) ผู้ใช้@ubuntu:~$
ข้อมูลนี้จะบอกคุณอย่างชัดเจนว่าห่วงโซ่ได้รับการกำหนดค่าสำหรับอะไรในตัวอย่าง ห่วงโซ่อินพุต ไปข้างหน้า และเอาต์พุตได้รับการกำหนดค่าให้ยอมรับการรับส่งข้อมูลการตั้งค่าเหล่านี้เป็นจุดเริ่มต้นที่ดี เนื่องจากจะไม่บล็อกการเชื่อมต่อใดๆ ที่คุณอาจต้องการ
อย่างไรก็ตาม หากคุณพบว่านโยบายของคุณไม่ยอมรับการเชื่อมต่อ คุณสามารถป้อนแต่ละคำสั่งต่อไปนี้เพื่อยอมรับการเชื่อมต่อทั้งหมด:
$ sudo iptables --policy INPUT ACCEPT
$ sudo iptables --policy OUTPUT ACCEPT
$ sudo iptables --policy FORWARD ACCEPT
เมื่อการตั้งค่าเริ่มต้นของคุณยอมรับการเชื่อมต่อทั้งหมด คุณสามารถควบคุมการเข้าถึง IPTables ได้โดยการบล็อกที่อยู่ IP และหมายเลขพอร์ตวิธีนี้ช่วยให้คุณระบุการเชื่อมต่อที่จะบล็อกแทนที่จะบล็อกการเชื่อมต่อทั้งหมดตามค่าเริ่มต้น
หากคุณกำลังจัดการกับข้อมูลที่ละเอียดอ่อนเป็นพิเศษ คุณสามารถกำหนดการตั้งค่าเริ่มต้นเพื่อบล็อกการเชื่อมต่อทั้งหมดโดยอัตโนมัติด้วยวิธีนี้ คุณสามารถใช้ IPTables เพื่อเลือกที่อยู่ IP แต่ละรายการที่คุณต้องการอนุญาตในการดำเนินการนี้ คุณต้องป้อนคำสั่งต่อไปนี้:
$ sudo iptables --policy INPUT DROP
$ sudo iptables --policy OUTPUT DROP
$ sudo iptables --policy FORWARD DROP
ผู้ใช้ส่วนใหญ่ยอมรับการเชื่อมต่อทั้งหมดได้ดีกว่า แต่คุณควรจำไว้เสมอว่าคุณกำลังทำงานบนเซิร์ฟเวอร์ที่มีความปลอดภัยสูง
กำหนดค่าการเชื่อมต่อเดียว
เมื่อกำหนดค่าการทำงานของลูกโซ่เริ่มต้นแล้ว ก็ถึงเวลากำหนดค่าการเชื่อมต่อแต่ละรายการนี่คือที่ที่คุณกำหนดค่าการตอบสนองเฉพาะการเชื่อมต่อที่เรียกว่าสิ่งนี้บอก IPTables ว่าจะโต้ตอบอย่างไรเมื่อเชื่อมต่อกับที่อยู่ IP หรือพอร์ตคำตอบเหล่านี้มีดังนี้แผนกต้อนรับ,放棄,ปฏิเสธ.
ดังที่คุณเห็นในภาพด้านบน ผู้ใช้ได้กำหนดกฎลูกโซ่เพื่ออนุญาต วาง หรือปฏิเสธการเชื่อมต่อตามต้องการต่อไปนี้เป็นคำอธิบายว่าแต่ละคำตอบมีอะไรบ้าง:
- ยอมรับ – การกำหนดค่านี้อนุญาตเฉพาะการเชื่อมต่อเท่านั้น
- DROP – ดร็อปบล็อคการเชื่อมต่อโดยไม่โต้ตอบกับแหล่งที่มาแต่อย่างใด
- ปฏิเสธ - สิ่งนี้บล็อกการเชื่อมต่อที่พยายาม แต่ยังส่งข้อความแสดงข้อผิดพลาดโดยปกติแล้วจะเป็นการแจ้งต้นทางว่าความพยายามในการเชื่อมต่อถูกบล็อกโดยไฟร์วอลล์
วิธีอนุญาตหรือบล็อกการเชื่อมต่อ
มีหลายวิธีในการบล็อกหรืออนุญาตการเชื่อมต่อ ทั้งนี้ขึ้นอยู่กับการตั้งค่าของคุณตัวอย่างต่อไปนี้ใช้วิธีบล็อกแอบแฝง เช่น การใช้หล่น ตัดการเชื่อมต่อโดยไม่ต้องโต้ตอบใดๆ iptables-A อนุญาตให้เราเพิ่มคำเตือนเพิ่มเติมให้กับกฎที่กำหนดโดยการตั้งค่าลูกโซ่เริ่มต้นคุณจะเห็นวิธีใช้คำสั่งนี้เพื่อบล็อกการเชื่อมต่อด้านล่าง:
บล็อกที่อยู่ IP เดียว:
$ sudo iptables -A อินพุต -S 10.10.10.10 -j DROP
ในตัวอย่างข้างต้น คุณสามารถแทนที่ 10.10.10.10 ด้วยที่อยู่ IP ที่คุณต้องการบล็อก
บล็อกช่วงของที่อยู่ IP:
$ sudo iptables -A อินพุต -s 10.10.10.10.0/24 -j DROP
หรือ
$ sudo iptables -A อินพุต -s 10.10.10.0/255.255.255/.0 -j DROP
บล็อกพอร์ตเดียว:
$ sudo iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP
โปรดทราบว่า 'ssh สามารถแทนที่ด้วยโปรโตคอลหรือหมายเลขพอร์ตใดก็ได้นอกจากนี้ โปรดทราบว่าส่วน -p tcp ของรหัสใช้เพื่อระบุว่าโปรโตคอลที่คุณต้องการบล็อกใช้ UDP หรือ TCP
หากโปรโตคอลใช้ UDP คุณจะต้องป้อน-p อู๊ดแทน-พีทีซีพี.คุณยังสามารถบล็อกการเชื่อมต่อทั้งหมดจากที่อยู่ IP ได้โดยป้อน:
$ sudo iptables -A INPUT -p tcp --dport ssh -jDROP
การสื่อสารสองทาง: บทช่วยสอน IPTables ของรัฐที่เชื่อมต่อ
โปรโตคอลส่วนใหญ่ที่คุณพบต้องใช้การสื่อสารแบบสองทางสำหรับการส่งข้อมูลซึ่งหมายความว่าการถ่ายโอนประกอบด้วยอินพุตและเอาต์พุตสิ่งที่เข้าสู่ระบบของคุณมีความสำคัญพอ ๆ กับสิ่งที่จะออกไปสถานะการเชื่อมต่อทำให้คุณสามารถผสมและจับคู่ระหว่างการเชื่อมต่อแบบสองทิศทางและแบบทิศทางเดียวได้ในตัวอย่างต่อไปนี้ โปรโตคอล SSH จะบล็อกการเชื่อมต่อ SSH จากที่อยู่ IP แต่อนุญาตให้เชื่อมต่อกับที่อยู่ IP:
$ sudo iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state ใหม่ ESTABLISHED -j ACCEPT $ sudo iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10.-m state --state จัดตั้งขึ้น -J ยอมรับ
หลังจากป้อนคำสั่งเพื่อเปลี่ยนสถานะการเชื่อมต่อ คุณต้องบันทึกการเปลี่ยนแปลงถ้าคุณไม่ทำ การกำหนดค่าของคุณจะหายไปเมื่อคุณปิดยูทิลิตี้ขึ้นอยู่กับระบบการกระจายที่คุณใช้ คุณสามารถใช้คำสั่งต่างๆ มากมาย:
อูบุนตู:
$ sudo /sbin/iptables-บันทึก
เรดแฮท/CentOS -
$ sudo /sbin/service iptables บันทึก
หรือ
$ sudo /etc/init.d/iptables บันทึก
สิ่งสำคัญคือต้องจำไว้ว่าให้ใช้คำสั่งเหล่านี้ เนื่องจากจะช่วยขจัดความยุ่งยากในการกำหนดค่าทุกครั้งที่โหลดยูทิลิตี้
ลบกฎ
สิ่งที่สำคัญพอๆ กับการบันทึกกฎก็คือสามารถลบออกได้หากคุณทำผิดพลาดหรือเพียงต้องการกำจัดกฎเก่า คุณมีทางเลือก – D 命令.คำสั่งนี้ต้องใช้ร่วมกับหมายเลขกฎที่คุณป้อนตัวเลขนี้บอก IPTables ว่ากฎใดที่จะลบตัวอย่างเช่น หากคุณต้องป้อน:
$ sudo iptables -D อินพุต 10
จากนั้นกฎข้อที่ 10 ที่คุณกำหนดค่าจะถูกลบ
หากคุณต้องการทำความสะอาดบ้านและลบกฎเกณฑ์ออกไป คุณสามารถใช้-F คำสั่ง.คุณสามารถทำได้โดยพิมพ์:
$ sudo iptables -F
การดำเนินการนี้จะล้างชุดกฎทั้งหมดและรีเฟรช IPTable ของคุณ
IPTables: เรียนรู้กฎลูกโซ่!
นี่เป็นการสรุปบทแนะนำ IPTables ของเราอย่างที่คุณเห็น IPTables เป็นวิธีบล็อกและอนุญาตลินุกซ์การกระจายเครื่องมือหลายอย่างในโฟลว์.การใช้ยูทิลิตี้นี้อย่างมีประสิทธิภาพเกี่ยวข้องกับการตั้งค่าการกำหนดค่าเริ่มต้นอย่างมีประสิทธิภาพและการสร้างกฎอื่นๆ นอกเหนือจากนั้นการกำหนดค่าเริ่มต้นจะช่วยให้คุณสามารถร่างภาพความตั้งใจของการรับส่งข้อมูลแบบกว้าง ๆ เพื่ออนุญาตหรือปฏิเสธการรับส่งข้อมูลกฎเหล่านี้จะช่วยให้คุณสามารถจัดโครงสร้างวิธีการของคุณตามที่อยู่ IP พอร์ตและโปรโตคอล
เราเพิ่งขีดข่วนศักยภาพของ IPTables เท่านั้น มีคำสั่งต่างๆ มากมายที่คุณสามารถใช้เพื่อตัดสินใจว่าจะรับส่งข้อมูลบนเซิร์ฟเวอร์ของคุณอย่างไรอย่างไรก็ตาม เราขอแนะนำให้คุณเข้าใจพื้นฐานก่อนเริ่มใช้คำสั่งอื่นๆตัวอย่างเช่น คุณต้องเข้าใจกฎลูกโซ่พื้นฐานก่อนที่จะทำสิ่งใดที่พิเศษกว่านั้น
เมื่อคุณคุ้นเคยกับวิธีการทำงานของ IPTables แล้ว คุณสามารถเริ่มรวมกฎเกณฑ์เพิ่มเติมเพื่อปรับแต่งประสบการณ์ของคุณได้ด้วยการทำเช่นนี้ คุณจะสามารถระบุประเภทของการเชื่อมต่อที่คุณจะอนุญาตได้อย่างแม่นยำยิ่งขึ้นกว่าที่เคย