วิธีเริ่มต้นใช้งาน firewalld บน Linux
เผยแพร่แล้ว: 2022-07-08 หากคุณกำลังมองหาไฟร์วอลล์ที่ทันสมัยและทรงพลังสำหรับ 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 ติดตั้งไฟร์วอลล์
sudo apt ติดตั้งไฟร์วอลล์-config
บน Fedora มีการติดตั้ง firewalld
ไว้แล้ว เราแค่ต้องเพิ่ม firewall-config
sudo dnf install firewall-config
บน Manjaro ไม่มีส่วนประกอบใดติดตั้งไว้ล่วงหน้า แต่ถูกรวมไว้ในแพ็คเกจเดียว เราจึงสามารถติดตั้งทั้งสององค์ประกอบได้ด้วยคำสั่งเดียว
sudo pacman -Sy firewalld
เราจำเป็นต้องเปิดใช้งาน firewalld
daemon เพื่ออนุญาตให้ทำงานทุกครั้งที่คอมพิวเตอร์เริ่มทำงาน
sudo systemctl เปิดใช้งาน firewalld
และเราต้องเริ่ม daemon เพื่อให้มันทำงานอยู่ในขณะนี้
sudo systemctl start firewalld
เราสามารถใช้ systemctl
เพื่อตรวจสอบว่า firewalld
เริ่มทำงานและทำงานโดยไม่มีปัญหา:
sudo systemctl สถานะ firewalld
นอกจากนี้เรายังสามารถใช้ firewalld
เพื่อตรวจสอบว่ากำลังทำงานอยู่หรือไม่ สิ่งนี้ใช้คำสั่ง firewall-cmd
พร้อมตัวเลือก --state
โปรดทราบว่าไม่มี "d" ใน firewall-cmd
:
sudo firewall-cmd --state
ตอนนี้เราได้ติดตั้งและใช้งานไฟร์วอลล์แล้ว เราสามารถไปยังการกำหนดค่าได้
แนวคิดของโซน
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 | น้อย
สิ่งนี้มีประโยชน์เพราะคุณสามารถเลื่อนดูรายชื่อหรือใช้ระบบค้นหาเพื่อค้นหาหมายเลขพอร์ต โปรโตคอล และบริการ
บนแล็ปท็อปของเรา เราจะย้ายการเชื่อมต่ออีเทอร์เน็ตจากโซนสาธารณะไปยังโซนหลัก เราสามารถทำได้ด้วยตัวเลือก --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
เวอร์ชันของเรามี 192 บริการ หากต้องการเปิดใช้งานบริการในโซน ให้ใช้ตัวเลือก --add-service
เราสามารถเพิ่มบริการไปยังโซนโดยใช้ตัวเลือก --add-service
sudo firewall-cmd --zone=public --add-service=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 ทำได้ง่ายเพียงแค่เลือกโซนจากรายการโซนและเลือกบริการจากรายการบริการ
คุณสามารถเลือกที่จะแก้ไขเซสชันที่กำลังรันหรือการกำหนดค่าถาวรโดยเลือก "รันไทม์" หรือ "ถาวร" จากเมนูดรอปดาวน์ "การกำหนดค่า"
หากต้องการเปลี่ยนแปลงเซสชันที่ทำงานอยู่และยอมรับการเปลี่ยนแปลงเมื่อคุณทดสอบแล้วว่าใช้งานได้เท่านั้น ให้ตั้งค่าเมนู "การกำหนดค่า" เป็น "รันไทม์" ทำการเปลี่ยนแปลงของคุณ เมื่อคุณพอใจที่พวกเขาทำในสิ่งที่คุณต้องการแล้ว ให้ใช้ตัวเลือกเมนูตัวเลือก > รันไทม์เป็นเมนูถาวร
ในการเพิ่มพอร์ตและรายการโปรโตคอลไปยังโซน ให้เลือกโซนจากรายการโซน และคลิกที่ “พอร์ต” การคลิกปุ่มเพิ่มจะทำให้คุณสามารถระบุหมายเลขพอร์ตและเลือกโปรโตคอลจากเมนูได้
ในการเพิ่มโปรโตคอล ให้คลิกที่ "โปรโตคอล" คลิกปุ่ม "เพิ่ม" และเลือกโปรโตคอลจากเมนูป๊อปอัป
หากต้องการย้ายอินเทอร์เฟซจากโซนหนึ่งไปยังอีกโซนหนึ่ง ให้ดับเบิลคลิกที่อินเทอร์เฟซในรายการ "การเชื่อมต่อ" จากนั้นเลือกโซนจากเมนูป๊อปอัป
ปลายภูเขาน้ำแข็ง
คุณสามารถทำอะไรกับ firewalld
ได้อีกมาก แต่นี่ก็เพียงพอแล้วที่จะช่วยให้คุณเริ่มต้นใช้งานได้ ด้วยข้อมูลที่เราให้ไว้ คุณจะสามารถสร้างกฎเกณฑ์ที่มีความหมายในโซนของคุณได้