แม้ว่าบางครั้งฉันยังคงสัมผัส Windows ด้วยตัวเอง และในหลายๆ อย่างอื่น พวกเขาบังคับฉัน (marditoh rodoreh) เมื่อฉันต้องทำสิ่งต่างๆ นอกคอมพิวเตอร์ สำหรับฉันแล้ว การพูดเกี่ยวกับ Windows เป็นเหมือนสิ่งที่ถูกทิ้งไว้ตามกาลเวลา เมื่อฉันใช้มันเป็นระบบหลักของฉัน (ฉันไม่มีอย่างอื่น) ฉันพยายามปกป้องมันด้วยซอฟต์แวร์เช่นโปรแกรมป้องกันไวรัสของ Kaspersky และไฟร์วอลล์เป็นครั้งคราว ท่ามกลางเครื่องมือรักษาความปลอดภัยอื่นๆ อีกมากมาย ใน Linux เราไม่เคยเปิดเผยเท่าใน Windows แต่ก็มีซอฟต์แวร์ที่ช่วยให้เราใจเย็นขึ้นเช่น ไอพีเทเบิลไฟร์วอลล์หรือไฟร์วอลล์
ไฟร์วอลล์คือระบบรักษาความปลอดภัยที่มีหน้าที่ควบคุมทราฟฟิกเครือข่ายที่เข้าและออกจากระบบปฏิบัติการ หนึ่งในสิ่งที่แพร่หลายที่สุดใน Linux คือ IPtables ดังกล่าว จนถึงจุดที่อาจและโดยที่คุณไม่รู้ตัว มันถูกติดตั้งในระบบปฏิบัติการของคุณแล้วตั้งแต่คุณเปิดตัว สิ่งที่เราจะพยายามทำในบทความนี้คือการอธิบาย วิธีกำหนดค่าไฟร์วอลล์ใน linux ด้วย IPtables
IPtables บน Linux สิ่งที่คุณต้องรู้
การกำหนดค่าไฟร์วอลล์ อาจซับซ้อนและอื่น ๆ อีกมากมายในระบบปฏิบัติการอย่างเช่น Linux ซึ่งสิ่งที่ดีที่สุดทำได้เพียงแค่แตะที่เทอร์มินัล ก่อนเริ่มต้น ขอแนะนำให้ทราบเล็กน้อยเกี่ยวกับปัญหาเครือข่ายและความปลอดภัย หรืออย่างน้อยก็เข้าใจว่า เมื่อเราเชื่อมต่อ เรากำลังสื่อสารกับอุปกรณ์อื่น และอุปกรณ์เหล่านี้หรือเจ้าของอาจมีเจตนาดีหรือไม่ดี ด้วยเหตุผลนี้ ขึ้นอยู่กับการใช้งานพีซีของเรา มันจึงคุ้มค่าที่จะควบคุมทุกสิ่งที่ออกไปและทุกสิ่งที่เข้ามา
นอกจากนี้ และสำหรับสิ่งที่อาจเกิดขึ้น หากเรามีไฟร์วอลล์อื่นบนระบบ Linux ของเรา และเรากำลังจะเริ่มปรับแต่งสิ่งต่างๆ ใน IPtables มันก็คุ้มค่าที่จะทำสำเนาสำรองของการกำหนดค่าไฟร์วอลล์ปัจจุบันของเรา ด้วยความชัดเจนทั้งหมดนี้ เราจะเริ่มพูดคุยเกี่ยวกับการกำหนดค่าของ IPtables อย่างครบถ้วน
- สิ่งแรกที่เราต้องทำคือติดตั้งแพ็คเกจ ลีนุกซ์ส่วนใหญ่มีการติดตั้งไว้เป็นค่าเริ่มต้น แต่นี่ไม่ใช่กรณีเสมอไป หากต้องการทราบว่าเราได้ติดตั้ง IPtables ในระบบปฏิบัติการของเราหรือไม่ ให้เปิดเทอร์มินัลแล้วเขียน
iptables -v
. ในกรณีของฉันและในขณะที่เขียนบทความนี้ เทอร์มินัลของฉันส่งคืนให้ฉัน iptable v1.8.8. ในกรณีที่ไม่ได้ติดตั้ง สามารถติดตั้งได้ด้วย:
Ubuntu/Debian หรืออนุพันธ์:
sudo apt ติดตั้ง iptables
Fedora/Redhat หรืออนุพันธ์:
sudo yum ติดตั้ง iptables
Arch ลินุกซ์ และอนุพันธ์
sudo pacman -Siptables
หลังจากติดตั้งแล้วจะเปิดใช้งานด้วย:
sudo systemctl เปิดใช้งาน iptables sudo systemctl เริ่ม iptables
และคุณสามารถดูสถานะได้ด้วย:
sudo systemctl สถานะ iptables
- เมื่อติดตั้งไฟร์วอลล์แล้ว คุณต้องกำหนดค่ากฎ กฎ IPtables แบ่งออกเป็นตาราง (ซึ่งเราจะพูดถึงในรายละเอียดเพิ่มเติมในบทความนี้): ตัวกรอง แนท และแมงเกิล ซึ่งเราต้องเพิ่มข้อมูลดิบและความปลอดภัย ตารางตัวกรองใช้เพื่อควบคุมการรับส่งข้อมูลขาเข้าและขาออก ตาราง nat ใช้เพื่อทำ NAT (การแปลที่อยู่เครือข่าย) และตาราง mangle ใช้เพื่อแก้ไขแพ็กเก็ต IP ในการกำหนดค่ากฎของตารางตัวกรอง จะใช้คำสั่งต่อไปนี้:
- iptables -A INPUT -j ACCEPT (อนุญาตทราฟฟิกขาเข้าทั้งหมด)
- iptables -A OUTPUT -j ACCEPT (อนุญาตการรับส่งข้อมูลขาออกทั้งหมด)
- iptables -A FORWARD -j ACCEPT (อนุญาตการรับส่งข้อมูลเส้นทางทั้งหมด) อย่างไรก็ตาม การกำหนดค่านี้อนุญาตการรับส่งข้อมูลทั้งหมด และไม่แนะนำสำหรับระบบที่ใช้งานจริง สิ่งสำคัญคือต้องระบุกฎไฟร์วอลล์ตามความต้องการเฉพาะของระบบ ตัวอย่างเช่น หากคุณต้องการบล็อกการรับส่งข้อมูลขาเข้าบนพอร์ต 22 (SSH) คุณสามารถใช้คำสั่ง:
iptables -A อินพุต -p tcp --dport 22 -j DROP
- สิ่งสำคัญอีกประการหนึ่งคือการบันทึกการตั้งค่าเพื่อไม่ให้สูญเสียไปเมื่อรีบูตระบบ บน Ubuntu และ Debian คำสั่ง "iptables-save" ใช้เพื่อบันทึกการกำหนดค่าปัจจุบันลงในไฟล์ บน Red Hat และ Fedora คำสั่ง "service iptables save" ใช้เพื่อบันทึกการกำหนดค่า หากคุณไม่แน่ใจว่าจะใช้คำสั่งใด คำสั่ง Ubuntu/Debian มักจะใช้งานได้กับการกระจายมากกว่า
โหลดการกำหนดค่าหลังจากรีบูต
ไปยัง โหลดการตั้งค่าที่บันทึกไว้คำสั่งเดียวกันกับที่ใช้ในการบันทึกจะถูกใช้ แต่ด้วยการกระทำ "กู้คืน" แทน "บันทึก" บน Ubuntu และ Debian คำสั่ง "iptables-restore" ใช้เพื่อโหลดการกำหนดค่าที่บันทึกไว้จากไฟล์ บน Red Hat และ Fedora คำสั่ง "service iptables restore" ใช้เพื่อโหลดการกำหนดค่าที่บันทึกไว้ อีกครั้ง หากคุณสงสัยว่าจะใช้คำสั่งใด คำสั่ง Ubuntu/Debian มักจะทำงานได้ดีที่สุด
โปรดทราบว่าหากมีการเปลี่ยนแปลงการตั้งค่าไฟร์วอลล์ จำเป็นต้องบันทึกและโหลดใหม่เพื่อให้การเปลี่ยนแปลงมีผล เป็นวิธีการเขียนทับไฟล์คอนฟิกูเรชันด้วยข้อมูลใหม่ และหากไม่ทำเช่นนี้ การเปลี่ยนแปลงจะไม่ถูกบันทึก
ตารางใน IPtables
มีประเภท 5 วาด ใน IPTables และแต่ละกฎจะใช้กฎที่แตกต่างกัน:
- กรอง : นี่คือตารางหลักและตารางเริ่มต้นเมื่อใช้ IPTables ซึ่งหมายความว่าหากไม่มีการกล่าวถึงตารางเฉพาะเมื่อใช้กฎ กฎจะถูกนำไปใช้กับตารางตัวกรอง ตามชื่อที่แนะนำ บทบาทของตารางตัวกรองคือการตัดสินใจว่าจะอนุญาตให้แพ็กเก็ตไปถึงปลายทางหรือปฏิเสธคำขอ
- แน็ต (การแปลที่อยู่เครือข่าย): ตามชื่อที่แนะนำ ตารางนี้ช่วยให้ผู้ใช้สามารถระบุการแปลที่อยู่เครือข่ายได้ บทบาทของตารางนี้คือการพิจารณาว่าจะปรับเปลี่ยนที่อยู่แพ็กเก็ตต้นทางและปลายทางหรือไม่และอย่างไร
- ฉีก: ตารางนี้ช่วยให้เราแก้ไขส่วนหัว IP ของแพ็กเก็ต ตัวอย่างเช่น สามารถปรับ TTL ให้ยาวขึ้นหรือสั้นลงของฮ็อพเครือข่ายที่แพ็กเก็ตสามารถรองรับได้ ในทำนองเดียวกัน ส่วนหัวของ IP อื่น ๆ ก็สามารถแก้ไขได้ตามความต้องการของคุณ
- ดิบ: การใช้งานหลักของตารางนี้คือการติดตามการเชื่อมต่อเนื่องจากมีกลไกสำหรับการทำเครื่องหมายแพ็กเก็ตเพื่อดูแพ็กเก็ตซึ่งเป็นส่วนหนึ่งของเซสชันที่กำลังดำเนินอยู่
- ความปลอดภัย: การใช้ตารางความปลอดภัย ผู้ใช้สามารถใช้แฟล็กบริบทความปลอดภัย SELinux ภายในกับแพ็กเก็ตเครือข่าย
สองตารางสุดท้ายแทบไม่ได้ใช้ จนถึงจุดที่เอกสารส่วนใหญ่พูดถึงตัวกรอง แนท และแมงเกิลเท่านั้น
ในไฟล์วิธีใช้ เราสามารถหาตัวอย่างเกี่ยวกับวิธีการจัดการ IPtables หากต้องการดูเราจะเปิดเทอร์มินัลแล้วพิมพ์ iptables -h
.
แม้ว่า iptables จะเป็นหนึ่งในตัวเลือกที่ดีที่สุดสำหรับ Linux แต่ถ้าคุณต้องการสิ่งที่ง่ายกว่าด้วยอินเทอร์เฟซแบบกราฟิก คุณสามารถดูได้ที่ Firewalld.