วิธีเริ่มต้นใช้งาน firewalld บน Linux

เผยแพร่แล้ว: 2022-07-08
หน้าจอแล็ปท็อปแสดงบรรทัดคำสั่ง Linux
fatmawati achmad zaenuri/Shutterstock.com

หากคุณกำลังมองหาไฟร์วอลล์ที่ทันสมัยและทรงพลังสำหรับ Linux ที่กำหนดค่าได้ง่ายบนบรรทัดคำสั่งหรือด้วยอินเทอร์เฟซ GUI แล้ว firewalld อาจเป็นสิ่งที่คุณกำลังมองหา

ความต้องการไฟร์วอลล์

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

ไฟร์วอลล์ทำอะไรได้จริง?
ที่เกี่ยวข้อง ไฟร์วอลล์ทำอะไรได้จริง?

แนวปฏิบัติด้านความปลอดภัยที่ดีกล่าวว่าคุณควรจำกัดและควบคุมการเชื่อมต่อกับคอมพิวเตอร์ของคุณ นี่คือสิ่งที่ไฟร์วอลล์ทำ พวกเขากรองการรับส่งข้อมูลเครือข่ายตามที่อยู่ IP พอร์ต หรือโปรโตคอล และปฏิเสธการเชื่อมต่อที่ไม่ตรงตามเกณฑ์ที่กำหนดไว้ล่วงหน้า— กฎไฟร์วอลล์ —ที่คุณกำหนดค่าไว้ พวกเขาเป็นเหมือนเจ้าหน้าที่รักษาความปลอดภัยในงานพิเศษ ถ้าชื่อของคุณไม่อยู่ในรายชื่อ แสดงว่าคุณไม่ได้เข้าไปข้างใน

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

firewalld ไฟร์วอลล์นั้นทรงพลังแต่ตั้งค่าได้ง่าย ทั้งในบรรทัดคำสั่งและผ่านแอปพลิเคชัน GUI เฉพาะ ภายใต้ประทุน ไฟร์วอลล์ Linux พึ่งพา netfilter ซึ่งเป็นเฟรมเวิร์กการกรองเครือข่ายฝั่งเคอร์เนล ที่นี่ใน user-land เรามีเครื่องมือให้เลือกโต้ตอบกับ netfilter เช่น iptables ufw the uncomplicated firewall และ firewalld

ในความเห็นของเรา firewalld มอบความสมดุลของการทำงาน ความละเอียด และความเรียบง่ายที่ดีที่สุด

การติดตั้ง firewalld

firewalld มีสองส่วน มี firewalld กระบวนการ daemon ที่ให้การทำงานของไฟร์วอลล์ และมี firewall-config นี่คือ GUI ทางเลือกสำหรับ firewalld โปรดทราบว่าไม่มี “d” ใน firewall-config

การติดตั้ง firewalld บน Ubuntu, Fedora และ Manjaro นั้นตรงไปตรงมาในทุกกรณี แม้ว่าแต่ละกรณีจะมีแนวคิดของตนเองเกี่ยวกับสิ่งที่ติดตั้งไว้ล่วงหน้าและสิ่งที่รวมอยู่ด้วย

ในการติดตั้งบน Ubuntu เราต้องติดตั้ง firewalld และ firewall-config

 sudo apt ติดตั้งไฟร์วอลล์ 

การติดตั้ง firewalld บน Ubuntu

 sudo apt ติดตั้งไฟร์วอลล์-config 

การติดตั้ง firewall-config บน Ubuntu

บน Fedora มีการติดตั้ง firewalld ไว้แล้ว เราแค่ต้องเพิ่ม firewall-config

sudo dnf install firewall-config

การติดตั้ง firewall-config บน Fedora

บน Manjaro ไม่มีส่วนประกอบใดติดตั้งไว้ล่วงหน้า แต่ถูกรวมไว้ในแพ็คเกจเดียว เราจึงสามารถติดตั้งทั้งสององค์ประกอบได้ด้วยคำสั่งเดียว

 sudo pacman -Sy firewalld 

การติดตั้ง firewalld และ firewall-config ด้วยคำสั่งเดียวบน Manjaro

เราจำเป็นต้องเปิดใช้งาน firewalld daemon เพื่ออนุญาตให้ทำงานทุกครั้งที่คอมพิวเตอร์เริ่มทำงาน

 sudo systemctl เปิดใช้งาน firewalld 

การเปิดใช้งาน firewalld เพื่อเริ่มต้นอัตโนมัติเมื่อบูต

และเราต้องเริ่ม daemon เพื่อให้มันทำงานอยู่ในขณะนี้

 sudo systemctl start firewalld 

การเริ่มทำงาน firewalld daemon

เราสามารถใช้ systemctl เพื่อตรวจสอบว่า firewalld เริ่มทำงานและทำงานโดยไม่มีปัญหา:

 sudo systemctl สถานะ firewalld 

ตรวจสอบสถานะของไฟร์วอลล์ด้วย systemctl

นอกจากนี้เรายังสามารถใช้ firewalld เพื่อตรวจสอบว่ากำลังทำงานอยู่หรือไม่ สิ่งนี้ใช้คำสั่ง firewall-cmd พร้อมตัวเลือก --state โปรดทราบว่าไม่มี "d" ใน firewall-cmd :

 sudo firewall-cmd --state 

ตรวจสอบสถานะของ firewalld ด้วยคำสั่ง firewall-cmd

ตอนนี้เราได้ติดตั้งและใช้งานไฟร์วอลล์แล้ว เราสามารถไปยังการกำหนดค่าได้

แนวคิดของโซน

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

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

ทำให้สามารถย้ายกฎไฟร์วอลล์ชุดหนึ่งไปยังชุดอื่นได้อย่างรวดเร็ว อีกวิธีหนึ่งในการใช้โซนคือให้แล็ปท็อปของคุณใช้โซนหนึ่งเมื่อคุณอยู่บ้าน และอีกโซนหนึ่งเมื่อคุณอยู่ข้างนอกและใช้ Wi-Fi สาธารณะ

firewalld มาพร้อมกับโซนที่กำหนดค่าไว้ล่วงหน้าเก้าโซน สิ่งเหล่านี้สามารถแก้ไขได้และเพิ่มหรือลบโซนเพิ่มเติม

  • drop : แพ็กเก็ตที่เข้ามาทั้งหมดจะถูกทิ้ง อนุญาตให้เข้าออกได้ นี่คือฉากหวาดระแวงที่สุด
  • block : แพ็กเก็ตขาเข้าทั้งหมดจะถูกทิ้งและข้อความ icmp-host-prohibited จะถูกส่งไปยังผู้สร้าง อนุญาตให้เข้าออกได้
  • เชื่อถือได้ : การเชื่อมต่อเครือข่ายทั้งหมดได้รับการยอมรับและระบบอื่น ๆ ได้รับความเชื่อถือ นี่เป็นการตั้งค่าที่น่าเชื่อถือที่สุด และควรจำกัดให้อยู่ในสภาพแวดล้อมที่ปลอดภัยมาก เช่น เครือข่ายทดสอบแบบ Captive หรือที่บ้านของคุณ
  • สาธารณะ : โซนนี้ใช้สำหรับเครือข่ายสาธารณะหรือเครือข่ายอื่นที่ไม่มีคอมพิวเตอร์เครื่องอื่นที่เชื่อถือได้ ยอมรับคำขอเชื่อมต่อทั่วไปและโดยปกติที่ปลอดภัยจำนวนเล็กน้อย
  • ภายนอก : โซนนี้ใช้สำหรับเครือข่ายภายนอกที่เปิดใช้งานการปลอมแปลง NAT (การส่งต่อพอร์ต) ไฟร์วอลล์ของคุณทำหน้าที่เป็นเราเตอร์ที่ส่งต่อทราฟฟิกไปยังเครือข่ายส่วนตัวของคุณ ซึ่งยังคงสามารถเข้าถึงได้แต่ยังคงเป็นส่วนตัว
  • ภายใน : โซนนี้มีไว้สำหรับใช้ในเครือข่ายภายในเมื่อระบบของคุณทำหน้าที่เป็นเกตเวย์หรือเราเตอร์ ระบบอื่นๆ ในเครือข่ายนี้โดยทั่วไปเชื่อถือได้
  • dmz : โซนนี้มีไว้สำหรับคอมพิวเตอร์ที่อยู่ใน "เขตปลอดทหาร" นอกเขตป้องกันของคุณและจำกัดการเข้าถึงกลับเข้ามาในเครือข่ายของคุณ
  • งาน : โซนนี้สำหรับเครื่องจักรงาน คอมพิวเตอร์เครื่องอื่นๆ ในเครือข่ายนี้มักได้รับความเชื่อถือ
  • home : โซนนี้สำหรับเครื่องโฮม คอมพิวเตอร์เครื่องอื่นๆ ในเครือข่ายนี้มักได้รับความเชื่อถือ

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

จุดเริ่มต้นที่ดีคือการค้นหาว่าโซนเริ่มต้นคืออะไร นี่คือโซนที่อินเทอร์เฟซเครือข่ายของคุณถูกเพิ่มเข้าไปเมื่อติดตั้ง firewalld

 sudo firewall-cmd --get-default-zone 

ค้นหาโซนไฟร์วอลล์เริ่มต้น

โซนเริ่มต้นของเราคือโซนสาธารณะ หากต้องการดูรายละเอียดการกำหนดค่าของโซน ให้ใช้ตัวเลือก --list-all รายการนี้แสดงรายการที่เพิ่มหรือเปิดใช้งานสำหรับโซน

 sudo firewall-cmd --zone=public --list-all 

รายการรายละเอียดของโซนสาธารณะ

เราจะเห็นว่าโซนนี้เชื่อมโยงกับการเชื่อมต่อเครือข่าย enp0s3 และอนุญาตการรับส่งข้อมูลที่เกี่ยวข้องกับ DHCP, mDNS และ SSH เนื่องจากมีการเพิ่มอินเทอร์เฟซอย่างน้อยหนึ่งรายการในโซนนี้ โซนนี้จึงเปิดใช้งานอยู่

firewalld ให้คุณเพิ่ม บริการ ที่คุณต้องการรับทราฟฟิกจากโซน โซนนั้นอนุญาตให้สัญจรประเภทนั้นผ่านไปได้ ซึ่งง่ายกว่าการจดจำว่า mDNS เช่น ใช้พอร์ต 5353 และโปรโตคอล UDP และเพิ่มรายละเอียดเหล่านั้นลงในโซนด้วยตนเอง แม้ว่าคุณจะทำอย่างนั้นได้เช่นกัน

หากเราเรียกใช้คำสั่งก่อนหน้าบนแล็ปท็อปที่มีการเชื่อมต่ออีเทอร์เน็ตและการ์ด Wi-Fi เราจะเห็นบางสิ่งที่คล้ายกัน แต่มีอินเทอร์เฟซสองแบบ

 sudo firewall-cmd --zone=public --list-all 

โซนที่มีสองอินเตอร์เฟสอยู่ในนั้น

เพิ่มอินเทอร์เฟซเครือข่ายทั้งสองของเราในโซนเริ่มต้นแล้ว โซนนี้มีกฎสำหรับบริการสามรายการเหมือนกับตัวอย่างแรก แต่มีการเพิ่ม DHCP และ SSH เป็นบริการที่มีชื่อ ขณะที่ mDNS ถูกเพิ่มเป็นการจับคู่พอร์ตและโปรโตคอล

หากต้องการแสดงรายการโซนทั้งหมด ให้ใช้ตัวเลือก --get-zones

 sudo firewall-cmd --get-zones 

แสดงรายการโซนไฟร์วอลล์ทั้งหมด

หากต้องการดูการกำหนดค่าสำหรับโซนทั้งหมดพร้อมกัน ให้ใช้ตัวเลือก --list-all-zones คุณจะต้องการไพพ์สิ่งนี้ให้ less

 sudo firewall-cmd --list-all-zones | น้อย 

รายการรายละเอียดของโซนทั้งหมด

สิ่งนี้มีประโยชน์เพราะคุณสามารถเลื่อนดูรายชื่อหรือใช้ระบบค้นหาเพื่อค้นหาหมายเลขพอร์ต โปรโตคอล และบริการ

รายละเอียดของโซนทั้งหมดที่แสดงใน less

บนแล็ปท็อปของเรา เราจะย้ายการเชื่อมต่ออีเทอร์เน็ตจากโซนสาธารณะไปยังโซนหลัก เราสามารถทำได้ด้วยตัวเลือก --zone และ --change --change-interface

 sudo firewall-cmd --zone=home --change-interface=enp3s0 

การเพิ่มอินเทอร์เฟซเครือข่ายให้กับโฮมโซน

มาดูโซนบ้านกันบ้างดีกว่าว่าเราได้เปลี่ยนแปลงอะไรไปแล้วบ้าง

 sudo firewall-cmd --zone=home --list-all 

โซนบ้านที่เพิ่มอินเทอร์เฟซเครือข่าย

และก็มี เพิ่มการเชื่อมต่ออีเทอร์เน็ตของเราในโฮมโซน

อย่างไรก็ตาม นี่ไม่ใช่การเปลี่ยนแปลงถาวร เราได้เปลี่ยนการกำหนดค่าการ ทำงาน ของไฟร์วอลล์ ไม่ใช่การกำหนดค่าที่ เก็บไว้ หากเรารีบูตหรือใช้ตัวเลือก --reload เราจะเปลี่ยนกลับเป็นการตั้งค่าก่อนหน้าของเรา

หากต้องการทำการเปลี่ยนแปลงอย่างถาวร เราจำเป็นต้องใช้ตัวเลือก --permanent ที่มีชื่อเหมาะสม

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

 sudo firewall-cmd --zone=home --change-interface=enp3s0 --permanent

หากคุณทำการเปลี่ยนแปลงบางอย่างแต่ลืมใช้ --permanent กับบางการเปลี่ยนแปลง คุณสามารถเขียนการตั้งค่าของเซสชันที่ทำงานอยู่ปัจจุบันของไฟร์วอลล์ไปยังการกำหนดค่าโดยใช้ตัวเลือก --runtime-to-permanent

 sudo firewall-cmd --runtime-to-permanent 

กำลังโหลดการกำหนดค่าไฟร์วอลล์ใหม่

ที่เกี่ยวข้อง: DHCP (Dynamic Host Configuration Protocol) คืออะไร?

การเพิ่มและการลบบริการ

firewalld รู้เกี่ยวกับบริการมากมาย คุณสามารถแสดงรายการโดยใช้ตัวเลือก --get-services

 sudo firewall-cmd --get-services 

รายการบริการ firewalld สามารถอ้างอิงตามชื่อ

firewalld เวอร์ชันของเรามี 192 บริการ หากต้องการเปิดใช้งานบริการในโซน ให้ใช้ตัวเลือก --add-service

รายการบริการที่ได้รับการยอมรับ

เราสามารถเพิ่มบริการไปยังโซนโดยใช้ตัวเลือก --add-service

 sudo firewall-cmd --zone=public --add-service=http 

การเพิ่มบริการ HTTP ให้กับโซน

ชื่อของบริการต้องตรงกับรายการในรายการบริการจาก firewalld

หากต้องการลบบริการ แทนที่ --add-service ด้วย --remove- --remove-service

การเพิ่มและการลบพอร์ตและโปรโตคอล

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

มาเพิ่มทราฟฟิก HTTPS ให้กับโซนสาธารณะกันเถอะ ที่ใช้พอร์ต 443 และเป็นรูปแบบของการรับส่งข้อมูล TCP

 sudo firewall-cmd --zone=public --add-port=443/tcp 

การเพิ่มพอร์ตและการจับคู่โปรโตคอลเข้ากับโซน

คุณสามารถจัดหาพอร์ตต่างๆ ได้โดยระบุพอร์ตแรกและพอร์ตสุดท้ายด้วยยัติภังค์ " - " ระหว่างพอร์ตเหล่านี้ เช่น "400-450"

หากต้องการลบพอร์ตให้แทนที่ --add-port ด้วย --remove- --remove-port

ที่เกี่ยวข้อง: อะไรคือความแตกต่างระหว่าง TCP และ UDP?

การใช้ GUI

กดปุ่ม "Super" และเริ่มพิมพ์ "firewall" คุณจะเห็นไอคอนกำแพงอิฐสำหรับแอปพลิเคชัน firewall-config

คลิกที่ไอคอนนั้นเพื่อเปิดแอปพลิเคชัน

การเพิ่มบริการไปยัง firewalld โดยใช้ GUI ทำได้ง่ายเพียงแค่เลือกโซนจากรายการโซนและเลือกบริการจากรายการบริการ

คุณสามารถเลือกที่จะแก้ไขเซสชันที่กำลังรันหรือการกำหนดค่าถาวรโดยเลือก "รันไทม์" หรือ "ถาวร" จากเมนูดรอปดาวน์ "การกำหนดค่า"

เมนูแบบเลื่อนลงการกำหนดค่า

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

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

การเพิ่มพอร์ตและการจับคู่โปรโตคอลโดยใช้ firewall-config GUI

ในการเพิ่มโปรโตคอล ให้คลิกที่ "โปรโตคอล" คลิกปุ่ม "เพิ่ม" และเลือกโปรโตคอลจากเมนูป๊อปอัป

โปรโตคอลในโซนสาธารณะ ใน firewall-config GUI

หากต้องการย้ายอินเทอร์เฟซจากโซนหนึ่งไปยังอีกโซนหนึ่ง ให้ดับเบิลคลิกที่อินเทอร์เฟซในรายการ "การเชื่อมต่อ" จากนั้นเลือกโซนจากเมนูป๊อปอัป

การย้ายอินเทอร์เฟซเครือข่ายจากโซนหนึ่งไปยังอีกโซนหนึ่งใน firewall-config GUI

ปลายภูเขาน้ำแข็ง

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