ไฟร์วอลล์ติดตั้งในระบบปฏิบัติการใช้เพื่อป้องกันการรับส่งข้อมูลที่ไม่ได้รับอนุญาตระหว่างเครือข่ายคอมพิวเตอร์ คู่มือหรือสร้างกฎพิเศษสำหรับไฟร์วอลล์โดยอัตโนมัติซึ่งมีหน้าที่รับผิดชอบในการควบคุมการเข้าถึง ในระบบปฏิบัติการพัฒนาบนเคอร์เนล Linux Centos 7 มีไฟร์วอลล์ในตัวและควบคุมไฟร์วอลล์ในตัว ไฟร์วอลล์เริ่มต้นมีส่วนร่วมและเราต้องการพูดคุยเกี่ยวกับมันในวันนี้
ปรับแต่งไฟร์วอลล์ใน CentOS 7
ดังที่กล่าวไว้ข้างต้นไฟร์วอลล์มาตรฐานใน Centos 7 ได้รับมอบหมายยูทิลิตี้ Firewalld นั่นคือเหตุผลที่การตั้งค่าไฟร์วอลล์จะได้รับการพิจารณาในตัวอย่างของเครื่องมือนี้ คุณสามารถตั้งค่ากฎการกรองด้วย iptables เดียวกัน แต่มันจะแตกต่างกันเล็กน้อย เราขอแนะนำให้ทำความคุ้นเคยกับการกำหนดค่าของยูทิลิตี้ที่กล่าวถึงโดยคลิกที่ลิงค์ต่อไปนี้และเราจะเริ่มถอดชิ้นส่วนของไฟร์วอลล์หากคุณจะปิดการใช้งานไฟร์วอลล์ชั่วคราวหรือชั่วคราวเราแนะนำให้คุณใช้คำแนะนำที่นำเสนอในบทความอื่น ๆ โดยลิงค์ต่อไปนี้
อ่านเพิ่มเติม: ปิดใช้งานไฟร์วอลล์ใน CentOS 7
ดูกฎเริ่มต้นและโซนราคาไม่แพง
แม้แต่ไฟร์วอลล์ปกติก็มีกฎที่ชัดเจนและโซนที่สามารถเข้าถึงได้ ก่อนที่จะเริ่มการแก้ไขนักการเมืองเราแนะนำให้คุณทำความคุ้นเคยกับการกำหนดค่าปัจจุบัน สิ่งนี้ทำโดยใช้คำสั่งง่ายๆ:
- โซนเริ่มต้นจะเป็นตัวกำหนดคำสั่ง Firewall-CMD - โซนเริ่มต้น
- หลังจากการเปิดใช้งานคุณจะเห็นสตริงใหม่ที่พารามิเตอร์ที่ต้องการจะปรากฏขึ้น ตัวอย่างเช่นเขต "สาธารณะ" ถูกพิจารณาในภาพหน้าจอด้านล่าง
- อย่างไรก็ตามหลายโซนสามารถใช้งานได้ทันทีนอกจากนี้พวกเขาเชื่อมโยงกับอินเตอร์เฟสแยกต่างหาก ค้นหาข้อมูลนี้ผ่านไฟร์วอลล์ -CMD - โซนที่ใช้งานอยู่
- ไฟ Firewall-CMD - คำสั่งทั้งหมดจะแสดงกฎที่ตั้งค่าสำหรับโซนเริ่มต้น ใส่ใจกับภาพหน้าจอด้านล่าง คุณจะเห็นว่าโซนที่ใช้งานอยู่ "สาธารณะ" ได้รับการกำหนดกฎ "ค่าเริ่มต้น" - ฟังก์ชั่นเริ่มต้นอินเตอร์เฟส ENP0S3 และอีกสองบริการที่เพิ่มเข้ามา
- หากคุณต้องการเรียนรู้โซนไฟร์วอลล์ที่มีอยู่ทั้งหมดให้ป้อน Firewall-CMD - โซน
- พารามิเตอร์ของโซนเฉพาะจะถูกกำหนดผ่าน Firewall-cmd --zone = name - ทั้งหมดที่ชื่อคือชื่อของโซน
หลังจากกำหนดพารามิเตอร์ที่ต้องการคุณสามารถย้ายไปยังการเปลี่ยนแปลงและการเพิ่มของพวกเขา ลองวิเคราะห์การกำหนดค่าที่ได้รับความนิยมมากที่สุดในรายละเอียด
การตั้งค่าโซนอินเตอร์เฟส
ดังที่คุณทราบจากข้อมูลข้างต้นโซนเริ่มต้นของคุณจะถูกกำหนดไว้สำหรับแต่ละอินเตอร์เฟส มันจะอยู่ในนั้นจนกว่าการตั้งค่าจะเปลี่ยนผู้ใช้หรือโดยทางโปรแกรม เป็นไปได้ที่จะถ่ายโอนอินเทอร์เฟซไปยังโซนต่อเซสชันด้วยตนเองและดำเนินการโดยการเปิดใช้งาน Sudo Firewall-CMD - Zone = คำสั่ง home --Change-Interface = eth0 ผลลัพธ์ "ความสำเร็จ" แสดงให้เห็นว่าการถ่ายโอนสำเร็จ จำได้ว่าการตั้งค่าดังกล่าวจะถูกรีเซ็ตทันทีหลังจากรีบูตไฟร์วอลล์
ด้วยการเปลี่ยนแปลงของพารามิเตอร์ดังกล่าวควรคำนึงถึงการทำงานของบริการที่สามารถรีเซ็ตได้ บางคนไม่รองรับการทำงานในบางโซนสมมติว่า SSH แม้ว่าจะสามารถเข้าถึงได้ใน "บ้าน" แต่ในผู้ใช้หรือบริการพิเศษจะใช้งานได้ ตรวจสอบให้แน่ใจว่าอินเทอร์เฟซเชื่อมโยงกับสาขาใหม่ได้สำเร็จโดยป้อน Firewall-CMD - โซนที่ใช้งานอยู่
หากคุณต้องการรีเซ็ตการตั้งค่าที่ทำไว้ก่อนหน้านี้เพียงแค่เรียกใช้การรีสตาร์ทไฟร์วอลล์: Sudo SystemCtl Restart Firewalld.Service
บางครั้งมันไม่สะดวกในการเปลี่ยนโซนอินเตอร์เฟสในเซสชันเดียว ในกรณีนี้คุณจะต้องแก้ไขไฟล์คอนฟิกูเรชันเพื่อให้การตั้งค่าทั้งหมดถูกนำมาใช้เป็นพื้นฐานถาวร ในการทำเช่นนี้เราแนะนำให้คุณใช้เครื่องมือแก้ไขข้อความนาโนซึ่งติดตั้งจากที่เก็บข้อมูลอย่างเป็นทางการของ Sudo Yum ติดตั้งนาโน ถัดไปยังคงดำเนินการดังกล่าว:
- เปิดไฟล์การกำหนดค่าผ่านทางแก้ไขโดยป้อน sudo nano / etc / sysconfig / สคริปต์เครือข่าย / IFCFG-eth0 ซึ่ง eth0 เป็นชื่อของอินเตอร์เฟสที่จำเป็น
- ยืนยันการรับรองความถูกต้องของบัญชีของคุณเพื่อดำเนินการต่อไป
- เลย์เอาต์พารามิเตอร์ "โซน" และเปลี่ยนค่าตามที่ต้องการเช่นสาธารณะหรือบ้าน
- กดปุ่ม Ctrl + O ถือการเปลี่ยนแปลง
- อย่าเปลี่ยนชื่อไฟล์ แต่เพียงคลิกที่ Enter
- ออกจากโปรแกรมแก้ไขข้อความผ่าน Ctrl + X
ตอนนี้โซนอินเตอร์เฟสจะเป็นหนึ่งที่คุณระบุไว้จนกว่าการแก้ไขไฟล์กำหนดค่าถัดไป สำหรับพารามิเตอร์ที่อัปเดตให้เรียกใช้ Sudo SystemCtl Restart Network.Service และ Sudo Systemctl Restart Firewalld.Service
การตั้งค่าโซนเริ่มต้น
ข้างต้นเราได้แสดงให้เห็นถึงทีมที่ให้คุณเรียนรู้โซนเริ่มต้นแล้ว นอกจากนี้ยังสามารถเปลี่ยนแปลงได้โดยการตั้งค่าพารามิเตอร์ให้กับตัวเลือกของคุณ ในการทำเช่นนี้ในคอนโซลก็เพียงพอที่จะลงทะเบียน Sudo Firewall-CMD - ตั้งค่า -Set Default-Zone = ชื่อชื่อของโซนที่ต้องการ
ความสำเร็จของคำสั่งจะเป็นหลักฐานโดยจารึก "ความสำเร็จ" ในบรรทัดแยกต่างหาก หลังจากนั้นอินเทอร์เฟซปัจจุบันทั้งหมดจะเกิดในโซนที่ระบุหากไม่ได้ระบุไว้ในไฟล์อื่นในไฟล์การกำหนดค่า
การสร้างกฎสำหรับโปรแกรมและสาธารณูปโภค
ในตอนต้นของบทความเราได้พูดคุยเกี่ยวกับการกระทำของแต่ละโซน การกำหนดบริการสาธารณูปโภคและโปรแกรมในสาขาดังกล่าวจะช่วยให้สามารถใช้พารามิเตอร์ส่วนบุคคลสำหรับแต่ละรายการสำหรับแต่ละคำขอของผู้ใช้ ในการเริ่มต้นเราแนะนำให้คุณทำความคุ้นเคยกับรายการบริการทั้งหมดที่มีอยู่ในขณะนี้: Firewall-Cmd - บริการบริการ
ผลลัพธ์จะปรากฏขึ้นโดยตรงในคอนโซล แต่ละเซิร์ฟเวอร์จะถูกหารด้วยช่องว่างและคุณสามารถค้นหาเครื่องมือที่คุณสนใจได้อย่างง่ายดาย หากบริการที่ต้องการหายไปควรติดตั้งเพิ่มเติม ในกฎการติดตั้งอ่านในเอกสารซอฟต์แวร์อย่างเป็นทางการ
คำสั่งข้างต้นแสดงให้เห็นถึงเฉพาะชื่อของบริการ ข้อมูลโดยละเอียดสำหรับแต่ละไฟล์จะได้รับผ่านไฟล์แต่ละไฟล์บนเส้นทาง / usr / lib / firewalld / services เอกสารดังกล่าวมีรูปแบบ XML เส้นทางตัวอย่างเช่น SSH มีลักษณะดังนี้: /usr/lib/firewalld/services/ssh.xml และเอกสารมีเนื้อหาต่อไปนี้:
ssh
Secure Shell (SSH) เป็นโปรโตคอลสำหรับการเข้าสู่ระบบและการเรียกใช้งานคำสั่งบนเครื่องระยะไกล ให้การสื่อสารที่เข้ารหัสที่ปลอดภัย หากคุณวางแผนที่จะเข้าถึง Remotenet เครื่องของคุณผ่าน SSH ผ่านอินเทอร์เฟซไฟร์วอลล์ให้เปิดใช้งานตัวเลือกนี้ คุณต้องติดตั้งแพ็คเกจ OpenSSH-Server สำหรับตัวเลือกนี้ให้เป็นประโยชน์
การสนับสนุนการบริการถูกเปิดใช้งานในโซนเฉพาะด้วยตนเอง ในเทอร์มินัลคุณควรตั้งค่า sudo firewall-cmd --zone = สาธารณะ - ddd-service = คำสั่ง http, where -zone = สาธารณะคือโซนเปิดใช้งานและ - DD-Service = http - ชื่อบริการ โปรดทราบว่าการเปลี่ยนแปลงดังกล่าวจะถูกต้องภายในหนึ่งเซสชันเท่านั้น
การเพิ่มถาวรจะดำเนินการผ่าน Sudo Firewall-Cmd --zone = สาธารณะ - Pernanent - DD-Service = http และผลลัพธ์ "ความสำเร็จ" หมายถึงการดำเนินการเสร็จสิ้นที่ประสบความสำเร็จ
คุณสามารถดูรายการกฎถาวรถาวรสำหรับโซนเฉพาะโดยการแสดงรายการในบรรทัดแยกของคอนโซล: sudo firewall-cmd --zone = สาธารณะ - บริการอื่น ๆ - บริการ
ปัญหาการตัดสินใจที่ขาดการเข้าถึงบริการ
กฎไฟร์วอลล์มาตรฐานจะถูกระบุโดยบริการที่ได้รับความนิยมและปลอดภัยที่สุดเท่าที่ได้รับอนุญาต แต่มีการบล็อกแอปพลิเคชันมาตรฐานหรือบุคคลที่สาม ในกรณีนี้ผู้ใช้จำเป็นต้องเปลี่ยนการตั้งค่าเพื่อแก้ไขปัญหาการเข้าถึง คุณสามารถทำได้ในสองวิธีที่แตกต่างกัน
พอร์ตพอร์ต
อย่างที่คุณทราบบริการเครือข่ายทั้งหมดใช้พอร์ตเฉพาะ สามารถตรวจพบไฟร์วอลล์และบล็อกได้อย่างง่ายดาย เพื่อหลีกเลี่ยงการกระทำดังกล่าวจากไฟร์วอลล์คุณต้องเปิดพอร์ตที่ต้องการของ sudo firewall-cmd --zone = สาธารณะ - portd-port = 0000 / tcp โดยที่ --zone = สาธารณะเป็นพื้นที่พอร์ต, - DDD- พอร์ต = 0000 / TCP - หมายเลขพอร์ตและโปรโตคอล ตัวเลือก Firewall-Cmd - List-Port จะแสดงรายการพอร์ตที่เปิดอยู่
หากคุณต้องการเปิดพอร์ตที่รวมอยู่ในช่วงให้ใช้สตริง Sudo Firewall-CMD --zone = สาธารณะ - DD-Port = 0000-9999 / UDP ซึ่ง --ADD-Port = 0000-9999 / UDP - ช่วงพอร์ต และโปรโตคอลของพวกเขา
คำสั่งข้างต้นอนุญาตให้คุณทดสอบการใช้พารามิเตอร์ที่คล้ายกันเท่านั้น หากผ่านสำเร็จคุณควรเพิ่มพอร์ตเดียวกันเพื่อตั้งค่าคงที่และทำโดยการป้อน Sudo Firewall-cmd --zone = สาธารณะ - Pernanent - Add-Port = 0000 / TCP หรือ Sudo Firewall-Cmd - Zone = สาธารณะ - Pernanent - Add-Port = 0000-9999 / UDP รายการของพอร์ตถาวรเปิดดูดังต่อไปนี้: Sudo Firewall-Cmd --zone = สาธารณะ - Pernanent - Ports
นิยามของบริการ
อย่างที่คุณเห็นการเพิ่มพอร์ตไม่ก่อให้เกิดปัญหาใด ๆ แต่ขั้นตอนนั้นซับซ้อนเมื่อแอปพลิเคชันใช้จำนวนมาก ในการติดตามพอร์ตที่ใช้แล้วทั้งหมดจะกลายเป็นเรื่องยากในมุมมองที่การกำหนดบริการจะเป็นตัวเลือกที่ถูกต้องมากขึ้น:
- คัดลอกไฟล์คอนฟิกูเรชันโดยการเขียน sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml โดยที่ service.xml เป็นชื่อของไฟล์บริการและ example.xml คือ ชื่อของสำเนา
- เปิดสำเนาเพื่อเปลี่ยนผ่านตัวแก้ไขข้อความใด ๆ เช่น sudo nano /etc/firewalld/services/example.xml
- ตัวอย่างเช่นเราได้สร้างสำเนาของ Service HTTP ในเอกสารคุณจะเห็นข้อมูลเมตาที่หลากหลายเช่นชื่อสั้น ๆ และคำอธิบาย มันส่งผลกระทบต่อเซิร์ฟเวอร์ในการทำงานเฉพาะการเปลี่ยนแปลงของหมายเลขพอร์ตและโปรโตคอล ควรเพิ่มสตริง "" เหนือสตริงเพื่อเปิดพอร์ต TCP - โปรโตคอลมือสอง, หมายเลขพอร์ต 0000 -
- บันทึกการเปลี่ยนแปลงทั้งหมด (CTRL + O) ปิดไฟล์ (CTRL + X) จากนั้นรีสตาร์ทไฟร์วอลล์เพื่อใช้พารามิเตอร์ผ่าน Sudo Firewall-Cmd - Reload หลังจากนั้นบริการจะปรากฏในรายการที่มีอยู่ซึ่งสามารถดูได้ผ่าน Firewall-CMD - บริการ - บริการ
คุณต้องเลือกวิธีแก้ปัญหาที่เหมาะสมที่สุดในการเข้าถึงบริการและดำเนินการตามคำแนะนำที่ให้ไว้ อย่างที่คุณเห็นการกระทำทั้งหมดจะดำเนินการได้อย่างง่ายดายและไม่ควรมีปัญหา
การสร้างโซนที่กำหนดเอง
คุณรู้อยู่แล้วว่าในขั้นต้นโซนที่หลากหลายจำนวนมากที่มีกฎที่กำหนดไว้ถูกสร้างขึ้นใน Firewalld อย่างไรก็ตามสถานการณ์ที่เกิดขึ้นเมื่อผู้ดูแลระบบต้องการสร้างโซนผู้ใช้เช่น "PublicWeb" สำหรับเว็บเซิร์ฟเวอร์ที่ติดตั้งหรือ "Privatedns" - สำหรับเซิร์ฟเวอร์ DNS ในสองตัวอย่างนี้เราจะวิเคราะห์การเพิ่มสาขา:
- สร้างโซนถาวรสองโซนใหม่โดย Sudo Firewall-CMD - Pernanent - New-Zone = Publtweb และ Sudo Firewall-Cmd - Pernanent - New-Zone = Privatedns
- พวกเขาจะสามารถใช้ได้หลังจากรีบูตเครื่องมือ Sudo Firewall-CMD --Reload ในการแสดงโซนถาวรให้ป้อน Sudo Firewall-CMD - Pernanent - โซน
- มอบหมายให้พวกเขาบริการที่จำเป็นเช่น "SSH", "HTTP" และ "HTTPS" สิ่งเหล่านี้ทำโดย sudo firewall-cmd --zone = publtweb --add-service = ssh, sudo firewall-cmd --zone = publtfbweb - do-service = publtyb --do firewall-cmd - publorweb - Add- Service = https, where --zone = publtweb เป็นชื่อของโซนที่จะเพิ่ม คุณสามารถดูกิจกรรมของบริการโดยรอดำเนินการ Firewall-cmd --zone = publtweb - ทั้งหมด
จากบทความนี้คุณได้เรียนรู้วิธีสร้างโซนที่กำหนดเองและเพิ่มบริการให้กับพวกเขา เราได้บอกให้พวกเขาเป็นค่าเริ่มต้นและการกำหนดอินเทอร์เฟซด้านบนคุณสามารถระบุชื่อที่ถูกต้องเท่านั้น อย่าลืมที่จะรีสตาร์ทไฟร์วอลล์หลังจากทำการเปลี่ยนแปลงถาวร
อย่างที่คุณเห็น Firewalld Firewall เป็นเครื่องมือที่ค่อนข้างละเอียดซึ่งช่วยให้คุณสามารถกำหนดค่าไฟร์วอลล์ที่ยืดหยุ่นได้มากที่สุด มันยังคงเป็นเพียงเพื่อให้แน่ใจว่ายูทิลิตี้เปิดตัวกับระบบและกฎที่ระบุจะเริ่มงานทันที ทำกับ Sudo SystemCtl เปิดใช้งานคำสั่ง Firewalld