เรียนรู้ Linux ตอนที่ 6 จัดการ Firewall บน Linux Server

Singharat Kanjanasopon
3 min readJan 1, 2021

--

สิ่งที่เปลี่ยนไปอีกอย่างใน CentOS 8 เมื่อเทียบกับเวอร์ชันเดิม (5, 6) คือเปลี่ยนมาใช้ firewalld เพื่อช่วยให้การคอนฟิก firewall ในลีนุกซ์ทำได้ง่ายขึ้น โดยมีการจัดแบ่งเป็นโซน (zone) จัดกลุ่มพอร์ต (port) เป็นเซอร์วิส (service) และอื่นๆ

คำสั่งแรกคือให้ทุกคน Start ตัว Firewall ขึ้นมาก่อนด้วยคำสั่ง
#systemctl start firewalld

#firewall-cmd --get-zones → เข้าไปดู Zone ต่างๆ

หรือเราสามารถเข้าไปดูได้ใน Directory ตามนี้เลยครับ
#ls -l /usr/lib/firewalld/zones/

ซึ่งแต่ละโซนทำหน้าที่อะไรบ้างสามารถดูได้ตามนี้เลยครับ

เครดิต https://linuxize.com/post/how-to-setup-a-firewall-with-firewalld-on-centos-7/

ซึ่งเราสามารถดูโซนที่ถูกใช้งาน ณ ปัจจุปันได้ด้วยคำสั่ง
#firewall-cmd --get-active-zones

  • โซนไหนที่มี interface เกาะอยู่จะ Active

ถ้าเราอยากรู้ว่า Zone ไหนถูกกำหนดเป็นค่า Default เราสามารถดูได้ด้วยคำสั่ง
#firewall-cmd --get-default-zone

จะเห็นได้ว่า Zone Public จะถูก set เป็นค่าเริ่มต้น

เราสามารถเช็คได้ว่าในตัว Firewalld ว่า Service ไหนบ้างถูก Enable ไว้ ด้วยคำสั่ง
#firewall-cmd --get-services

เราสามารถดูรายละเอียดภายในแต่ละ Zone ด้วยคำสั่ง
#firewall-cmd --list-all --zone=public

หรือเราสามารถดูเฉพาะ Service ใน Zone โดยเจาะจงด้วยคำสั่ง
#firewall-cmd --list-services --zone=public

ถ้าเราต้องการอนุญาติให้คนอื่นเข้ามาที่เครื่อง Server เราตาม Service ต่างๆ
ยกตัวอย่างเช่น ถ้าเรามีตัว Web Server และอยากให้คนอื่นเข้ามาใช้งานได้เราต้องอนุญาติตัว Firewall ก่อน โดยวิธีการทำดังต่อไปนี้

Step 1 : เราต้องเช็คก่อนว่า Web Server เราทำงานแล้วหรือยังด้วยคำสั่ง
#systemctl restart httpd
#systemctl status httpd

Step 2 : การเช็ค Port ของ Web Server ที่เราใช้งานด้วยคำสั่ง
#netstat -tuanp | grep httpd

ถ้าเราทดลองเข้าผ่าน Browser ด้วย http://192.168.10.212/ จะไม่สามารถใช้งานได้เพราะตัว Firewall ยังไม่อนุญาติให้ใครเข้ามาใช้งาน

Step 3 : มาทำการอนุญาติ Firewall ตาม port และ service นั่นๆให้เครื่องอื่นเข้ามาใช้งานได้
#firewall-cmd --zone=public --permanent --add-port=80/tcp
#firewall-cmd --zone=public --permanent --add-service=http

และทำการ Reload 1 รอบด้วยคำสั่ง
#firewall-cmd --reload

Step 4 : ทดลองเข้าใช้งานผ่าน Browser http://192.168.10.212/ เราก็จะสามารถใช้งานได้

ถ้าเราต้องการลบ Firewall ที่เราได้ใส่เข้าไป เราจะทำได้โดยใช้คำสั่ง
#firewall-cmd --zone=public --remove-service=http
#firewall-cmd --zone=public --remove-port=80/tcp

เมื่อลบแล้วเราต้องใส่คำสั่งไปให้ Firewall รับทราบว่าเราต้องการลบออกแล้วนะด้วยคำสั่ง
#firewall-cmd --runtime-to-permanent

ทดลองเข้า Browser http://192.168.10.212/ เราจะไม่สามารถใช้งานได้แล้ว

*ถ้ายังเข้าได้ ให้เราทำกาเปลี่ยน Browser เป็นแบบไม่ระบุตัวต้น เนื่องจาก Browser เดิมมันยังจำ Cacth อยู่

--

--

Singharat Kanjanasopon

Certificate: Cisco: CCNA // CompTIA: Security+, Pentest+ // Microtik: MTCNA, MTCTCE, MTCSE, MTCRE //