จะกำหนดค่า IPTables ใน Linux ได้อย่างไร? [คำแนะนำทีละขั้นตอนสำหรับปี 2021]

จะกำหนดค่า IPTables ใน Linux ได้อย่างไร? [คำแนะนำทีละขั้นตอนสำหรับปี 2021]

IPTables คือชื่อของระบบไฟร์วอลล์ที่ทำงานจากบรรทัดคำสั่งบน Linuxโปรแกรมส่วนใหญ่ทำหน้าที่เป็นอูบุนตูยูทิลิตี้เริ่มต้นบน.ผู้ดูแลระบบมักใช้ไฟร์วอลล์ IPTables เพื่ออนุญาตหรือบล็อกการรับส่งข้อมูลในเครือข่ายของตน

หากคุณเพิ่งเริ่มใช้ IPTables สิ่งแรกที่คุณต้องทำคืออัปเดตหรือติดตั้งด้วย:

$ sudo apt-get ติดตั้ง iptables

แม้ว่าผู้ใช้ที่ไม่คุ้นเคยกับอินเทอร์เฟซบรรทัดคำสั่งจะพบว่า IPTables เป็นช่วงการเรียนรู้ แต่ยูทิลิตี้นี้ใช้งานง่ายมากมีชุดคำสั่งหลักที่สามารถใช้เป็นพื้นฐานในการควบคุมการรับส่งข้อมูลที่กล่าวว่า คุณต้องระวังให้มากเมื่อเปลี่ยนกฎ IPTablesคำสั่งที่พิมพ์ผิดสามารถล็อคคุณจาก IPTables ได้อย่างสมบูรณ์จนกว่าคุณจะแก้ไขปัญหาภายในเครื่องจริง

ในบทความนี้ เราจะให้คำแนะนำเบื้องต้นเกี่ยวกับ IPTables และแนะนำข้อมูลพื้นฐานให้คุณทราบก่อนที่เราจะพูดถึงแกนหลักของ IPTables คุณต้องแน่ใจว่าคุณมีเรียกใช้ Ubuntu 16.04VPA個 一個กับไคลเอ็นต์ SSH的 เครื่องท้องถิ่น.หากคุณมีสิ่งเหล่านี้อยู่แล้ว ก็ถึงเวลาเริ่มต้น

บทช่วยสอน IPTables: โซ่

หนึ่งในแนวคิดพื้นฐานที่ควรเชี่ยวชาญใน IPTables คือแนวคิดของลูกโซ่ห่วงโซ่เป็นหลักกฎตารางตัวกรองมีสามสายที่คุณจะพบใน IPTables;ป้อน,ซึ่งไปข้างหน้า และผลผลิต.

    • INPUT  – ห่วงโซ่ INPUT เป็นกฎที่ควบคุมแพ็กเก็ตขาเข้าคุณสามารถบล็อกหรืออนุญาตการเชื่อมต่อใหม่ได้ที่นี่คุณสามารถทำได้โดยอิงตามพอร์ต โปรโตคอล และที่อยู่ IP ต้นทาง
  • ไปข้างหน้า  – FORWARD chain กรองแพ็กเก็ตขาเข้าที่ถูกส่งต่อไปยังตำแหน่งปลายทางที่ต่างกันเว้นแต่คุณจะกำหนดเส้นทางหรือมองหาการส่งต่อโดยเฉพาะ คุณไม่น่าจะใช้เชนนี้
  • เอาท์พุท  – ห่วงโซ่ OUTPUT ใช้เพื่อจัดการแพ็คเก็ตขาออกและการเชื่อมต่อสิ่งสำคัญที่ควรทราบคือ หากคุณ ping โฮสต์ภายนอก ห่วงโซ่อินพุตจะถูกใช้เพื่อส่งคืนข้อมูลให้คุณ

พฤติกรรมลูกโซ่เริ่มต้น

คุณอาจต้องการข้ามไปที่การกำหนดค่ากฎเฉพาะในตอนเริ่มต้น แต่คุณจะต้องย้อนกลับไปเพื่อกำหนดการทำงานเริ่มต้นในการพิจารณาว่าพฤติกรรมเริ่มต้นของลูกโซ่คืออะไร คุณต้องรันคำสั่งต่อไปนี้:

$ sudo iptables -L คำสั่ง

ซึ่งจะแสดงสิ่งต่อไปนี้:

ผู้ใช้@ubuntu:~$ sudo iptables -L -v 
อินพุตลูกโซ่ (ยอมรับนโยบาย) 
ส่งต่อ (ยอมรับนโยบาย) 
Chain OUTPUT (ยอมรับนโยบาย) 
ผู้ใช้@ubuntu:~$

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

คำถามที่เกี่ยวข้อง  คำสั่ง Terminal Linux ที่มีประโยชน์ [คุณต้องจำไว้ในปี 2021]

อย่างไรก็ตาม หากคุณพบว่านโยบายของคุณไม่ยอมรับการเชื่อมต่อ คุณสามารถป้อนแต่ละคำสั่งต่อไปนี้เพื่อยอมรับการเชื่อมต่อทั้งหมด:

$ 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 ที่คุณต้องการบล็อก

คำถามที่เกี่ยวข้อง  วิธีปิดการใช้งาน IPv6 บน Linux (คำแนะนำทีละขั้นตอนสำหรับปี 2021)

บล็อกช่วงของที่อยู่ 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 ยอมรับ

หลังจากป้อนคำสั่งเพื่อเปลี่ยนสถานะการเชื่อมต่อ คุณต้องบันทึกการเปลี่ยนแปลงถ้าคุณไม่ทำ การกำหนดค่าของคุณจะหายไปเมื่อคุณปิดยูทิลิตี้ขึ้นอยู่กับระบบการกระจายที่คุณใช้ คุณสามารถใช้คำสั่งต่างๆ มากมาย:

คำถามที่เกี่ยวข้อง  วิธีสำรองข้อมูลพีซี Linux ด้วย BackInTime

อูบุนตู:

$ 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 แล้ว คุณสามารถเริ่มรวมกฎเกณฑ์เพิ่มเติมเพื่อปรับแต่งประสบการณ์ของคุณได้ด้วยการทำเช่นนี้ คุณจะสามารถระบุประเภทของการเชื่อมต่อที่คุณจะอนุญาตได้อย่างแม่นยำยิ่งขึ้นกว่าที่เคย

โอ้สวัสดี 👋ยินดีที่ได้รู้จัก.

สมัครรับจดหมายข่าวของเรา, ส่งสม่ำเสมอมากเทคโนโลยีที่ยอดเยี่ยมไปยังจดหมายของคุณ.

แสดงความคิดเห็น