วิธีการตั้งค่าไฟร์วอลล์ UFW บน Ubuntu และ Debian
ไฟร์วอลล์ที่ทำงานอย่างถูกต้องเป็นส่วนที่สำคัญที่สุดของการรักษาความปลอดภัยระบบ Linux โดยสมบูรณ์ ตามค่าเริ่มต้น การกระจาย Debian และ Ubuntu จะมาพร้อมกับเครื่องมือกำหนดค่าไฟร์วอลล์ที่เรียกว่า UFW (ไฟร์วอลล์ที่ไม่ซับซ้อน) เป็นเครื่องมือบรรทัดคำสั่งที่ได้รับความนิยมและใช้งานง่ายที่สุดสำหรับการกำหนดค่าและ การจัดการไฟร์วอลล์บนการกระจาย Ubuntu และ Debian
ในบทความนี้ เราจะอธิบายวิธีการติดตั้งและตั้งค่าไฟร์วอลล์ UFW บนการกระจาย Ubuntu และ Debian
ข้อกำหนดเบื้องต้น
ก่อนที่คุณจะเริ่มบทความนี้ ตรวจสอบให้แน่ใจว่าคุณได้ลงชื่อเข้าใช้เซิร์ฟเวอร์ Ubuntu หรือ Debian ด้วยผู้ใช้ sudo หรือด้วยบัญชีรูท หากคุณไม่มีผู้ใช้ sudo คุณสามารถสร้างได้โดยใช้คำแนะนำต่อไปนี้ในฐานะผู้ใช้รูท
adduser username
usermod -aG sudo username
su - username
sudo whoami
ติดตั้งไฟร์วอลล์ UFW บน Ubuntu และ Debian
UFW (ไฟร์วอลล์ที่ไม่ซับซ้อน) ควรติดตั้งตามค่าเริ่มต้นใน Ubuntu และ Debian หากไม่ใช่ ให้ติดตั้งโดยใช้ตัวจัดการแพ็คเกจ APT โดยใช้คำสั่งต่อไปนี้
sudo apt install ufw
ตรวจสอบไฟร์วอลล์ UFW
เมื่อการติดตั้งเสร็จสิ้น คุณสามารถตรวจสอบสถานะของ UFW ได้โดยพิมพ์
sudo ufw status verbose
ในการติดตั้งครั้งแรก ไฟร์วอลล์ UFW จะถูกปิดใช้งานตามค่าเริ่มต้น ผลลัพธ์จะคล้ายกับด้านล่าง
Status: inactive
เปิดใช้งานไฟร์วอลล์ UFW
คุณสามารถเปิดใช้งานหรือเปิดใช้งานไฟร์วอลล์ UFW ได้โดยใช้คำสั่งต่อไปนี้ ซึ่งควรโหลดไฟร์วอลล์และเปิดใช้งานให้เริ่มทำงานเมื่อบู๊ตเครื่อง
sudo ufw enable
หากต้องการปิดใช้งานไฟร์วอลล์ UFW ให้ใช้คำสั่งต่อไปนี้ ซึ่งจะยกเลิกการโหลดไฟร์วอลล์และปิดใช้งานไม่ให้เริ่มทำงานขณะบูต
sudo ufw disable
นโยบายเริ่มต้น UFW
ตามค่าเริ่มต้น ไฟร์วอลล์ UFW จะปฏิเสธการเชื่อมต่อขาเข้าทุกรายการ และอนุญาตเฉพาะการเชื่อมต่อขาออกทั้งหมดไปยังเซิร์ฟเวอร์เท่านั้น ซึ่งหมายความว่าจะไม่มีใครสามารถเข้าถึงเซิร์ฟเวอร์ของคุณได้ เว้นแต่คุณจะเปิดพอร์ตโดยเฉพาะ ในขณะที่บริการหรือแอปพลิเคชันที่ทำงานอยู่ทั้งหมดบนเซิร์ฟเวอร์ของคุณสามารถเข้าถึงเครือข่ายภายนอกได้
นโยบายไฟร์วอลล์ UFW เริ่มต้นจะอยู่ในไฟล์ /etc/default/ufw
และสามารถแก้ไขได้โดยใช้คำสั่งต่อไปนี้
sudo ufw default deny incoming
sudo ufw default allow outgoing
โปรไฟล์แอปพลิเคชัน UFW
เมื่อติดตั้งแพ็คเกจซอฟต์แวร์โดยใช้ตัวจัดการแพ็คเกจ APT จะมีโปรไฟล์แอปพลิเคชันอยู่ในไดเรกทอรี /etc/ufw/applications.d
ที่กำหนดบริการและเก็บการตั้งค่า UFW ไว้
คุณสามารถแสดงรายการโปรไฟล์แอปพลิเคชันที่มีอยู่ทั้งหมดบนเซิร์ฟเวอร์ของคุณโดยใช้คำสั่งต่อไปนี้
sudo ufw app list
ขึ้นอยู่กับการติดตั้งแพ็คเกจซอฟต์แวร์บนระบบของคุณ ผลลัพธ์จะมีลักษณะคล้ายกับต่อไปนี้:
Available applications:
APACHE
APACHE Full
APACHE SECURE
CUPS
OpenSSH
Postfix
Postfix SMTPS
Postfix Submission
หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับโปรไฟล์เฉพาะและกฎที่กำหนดไว้ คุณสามารถใช้คำสั่งต่อไปนี้
sudo ufw app info 'Apache'
Profile: Apache
Title: Web Server
Description: Apache V2 is the next generation f the omnipresent Apache web server.
Ports:
80/tcp
เปิดใช้งาน IPv6 ด้วย UFW
หากเซิร์ฟเวอร์ของคุณได้รับการกำหนดค่าด้วย IPv6 โปรดตรวจสอบให้แน่ใจว่า UFW ของคุณได้รับการกำหนดค่าด้วยการสนับสนุน IPv6 และ IPv4 หากต้องการตรวจสอบ ให้เปิดไฟล์การกำหนดค่า UFW โดยใช้โปรแกรมแก้ไขที่คุณชื่นชอบ
sudo vi /etc/default/ufw
จากนั้นตรวจสอบให้แน่ใจว่า “IPV6” ตั้งค่าเป็น "yes"
ในไฟล์การกำหนดค่าดังที่แสดง
IPV6=yes
บันทึกและออก จากนั้นรีสตาร์ทไฟร์วอลล์ของคุณด้วยคำสั่งต่อไปนี้:
sudo ufw disable
sudo ufw enable
อนุญาตการเชื่อมต่อ SSH บน UFW
หากคุณเปิดใช้งานไฟร์วอลล์ UFW ในตอนนี้ ไฟร์วอลล์จะบล็อกการเชื่อมต่อขาเข้าทั้งหมด และหากคุณเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน SSH จากสถานที่ระยะไกล คุณจะไม่สามารถเชื่อมต่อได้อีก
มาเปิดใช้งานการเชื่อมต่อ SSH กับเซิร์ฟเวอร์ของเราเพื่อหยุดไม่ให้เกิดขึ้นโดยใช้คำสั่งต่อไปนี้:
sudo ufw allow ssh
หากคุณใช้พอร์ต SSH แบบกำหนดเอง (เช่น พอร์ต 2222) คุณจะต้องเปิดพอร์ตนั้นบนไฟร์วอลล์ UFW โดยใช้คำสั่งต่อไปนี้
sudo ufw allow 2222/tcp
หากต้องการบล็อกการเชื่อมต่อ SSH ทั้งหมดให้พิมพ์คำสั่งต่อไปนี้
sudo ufw deny ssh/tcp
sudo ufw deny 2222/tcp [If using custom SSH port]
เปิดใช้งานพอร์ตเฉพาะบน UFW
คุณยังสามารถเปิดพอร์ตเฉพาะในไฟร์วอลล์เพื่ออนุญาตการเชื่อมต่อผ่านพอร์ตนั้นไปยังบริการบางอย่างได้ ตัวอย่างเช่น หากคุณต้องการตั้งค่าเว็บเซิร์ฟเวอร์ซึ่งรับฟังพอร์ต 80 (HTTP) และ 443 (HTTPS >) โดยค่าเริ่มต้น
ด้านล่างนี้เป็นตัวอย่างเล็กๆ น้อยๆ ของวิธีอนุญาตการเชื่อมต่อขาเข้ากับบริการ Apache
เปิดพอร์ต 80 HTTP บน UFW
sudo ufw allow http [By service name]
sudo ufw allow 80/tcp [By port number]
sudo ufw allow 'Apache' [By application profile]
เปิดพอร์ต 443 HTTPS บน UFW
sudo ufw allow https
sudo ufw allow 443/tcp
sudo ufw allow 'Apache Secure'
อนุญาตช่วงพอร์ตบน UFW
สมมติว่าคุณมีแอปพลิเคชันบางตัวที่คุณต้องการใช้งานบนพอร์ตต่างๆ (5000-5003) คุณสามารถเพิ่มพอร์ตเหล่านี้ทั้งหมดได้โดยใช้คำสั่งต่อไปนี้
sudo ufw allow 5000:5003/tcp
sudo ufw allow 5000:5003/udp
อนุญาตที่อยู่ IP เฉพาะ
หากคุณต้องการอนุญาตการเชื่อมต่อบนพอร์ตทั้งหมดจากที่อยู่ IP เฉพาะ 192.168.56.1 คุณจะต้องระบุจากก่อนที่อยู่ IP
sudo ufw allow from 192.168.56.1
อนุญาตที่อยู่ IP เฉพาะบนพอร์ตเฉพาะ
หากต้องการอนุญาตการเชื่อมต่อบนพอร์ตเฉพาะ (เช่น พอร์ต 22) จากเครื่องที่บ้านของคุณด้วยที่อยู่ IP 192.168.56.1 คุณจะต้องเพิ่ม พอร์ตใดก็ได้< และ หมายเลขพอร์ต หลังที่อยู่ IP ดังที่แสดง
sudo ufw allow from 192.168.56.1 to any port 22
อนุญาตให้เครือข่ายย่อยไปยังพอร์ตเฉพาะ
เพื่ออนุญาตการเชื่อมต่อสำหรับที่อยู่ IP เฉพาะตั้งแต่ 192.168.1.1 ถึง 192.168.1.254 ถึงพอร์ต 22 (SSH) ให้รันคำสั่งต่อไปนี้
sudo ufw allow from 192.168.1.0/24 to any port 22
อนุญาตการเชื่อมต่อเครือข่ายเฉพาะ
หากต้องการอนุญาตการเชื่อมต่อกับอินเทอร์เฟซเครือข่ายเฉพาะ eth2 สำหรับพอร์ตเฉพาะ 22 (SSH) ให้เรียกใช้คำสั่งต่อไปนี้
sudo ufw allow in on eth2 to any port 22
ปฏิเสธการเชื่อมต่อบน UFW
ตามค่าเริ่มต้น การเชื่อมต่อขาเข้าทั้งหมดจะถูกบล็อก เว้นแต่คุณจะเปิดการเชื่อมต่อบน UFW โดยเฉพาะ ตัวอย่างเช่น คุณได้เปิดพอร์ต 80 และ 443 และเว็บเซิร์ฟเวอร์ของคุณถูกโจมตีจากเครือข่ายที่ไม่รู้จัก 11.12.13.0/24
หากต้องการบล็อกการเชื่อมต่อทั้งหมดจากช่วงเครือข่าย 11.12.13.0/24 นี้ คุณสามารถใช้คำสั่งต่อไปนี้
sudo ufw deny from 11.12.13.0/24
หากคุณต้องการบล็อกการเชื่อมต่อบนพอร์ต 80 และ 443 เท่านั้น คุณสามารถใช้คำสั่งต่อไปนี้
sudo ufw deny from 11.12.13.0/24 to any port 80
sudo ufw deny from 11.12.13.0/24 to any port 443
ลบกฎ UFW
มี 2 วิธีในการลบกฎ UFW ตาม หมายเลขกฎ และโดย กฎจริง
หากต้องการลบกฎ UFW โดยใช้ หมายเลขกฎ ขั้นแรกคุณต้องแสดงรายการกฎตามตัวเลขโดยใช้คำสั่งต่อไปนี้
sudo ufw status numbered
ผลลัพธ์ตัวอย่าง
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
หากต้องการลบกฎหมายเลข 1 ให้ใช้คำสั่งต่อไปนี้
sudo ufw delete 1
วิธีที่สองคือการลบกฎโดยใช้กฎจริง เช่น ลบกฎ ให้ระบุหมายเลขพอร์ตด้วยโปรโตคอลดังที่แสดง
sudo ufw delete allow 22/tcp
กฎ UFW ดรายรัน
คุณสามารถเรียกใช้คำสั่ง ufw โดยไม่ต้องทำการเปลี่ยนแปลงใดๆ ในไฟร์วอลล์ระบบโดยใช้แฟล็ก --dry-run
ซึ่งจะแสดงการเปลี่ยนแปลงที่คาดว่าจะเกิดขึ้น
sudo ufw --dry-run enable
รีเซ็ตไฟร์วอลล์ UFW
ด้วยเหตุผลใดก็ตาม หากคุณต้องการลบ/รีเซ็ตกฎไฟร์วอลล์ทั้งหมด ให้พิมพ์คำสั่งต่อไปนี้ มันจะคืนค่าการเปลี่ยนแปลงทั้งหมดของคุณและเริ่มใหม่อีกครั้ง
sudo ufw reset
sudo ufw status
UFW ฟังก์ชั่นขั้นสูง
ไฟร์วอลล์ UFW สามารถจัดการทำทุกอย่างที่ iptables ทำ ซึ่งสามารถทำได้โดยใช้ชุดไฟล์กฎต่างๆ ซึ่งไม่ใช่อะไรเลย แต่เป็นไฟล์ข้อความ iptables-restore แบบธรรมดา
ไม่อนุญาตให้ปรับแต่งไฟร์วอลล์ UFW หรือเพิ่มคำสั่ง iptables เพิ่มเติมผ่านคำสั่ง ufw เป็นเพียงเรื่องของการแก้ไขไฟล์ข้อความต่อไปนี้
- /etc/default/ufw: ไฟล์การกำหนดค่าหลักที่มีกฎที่กำหนดไว้ล่วงหน้า
- /etc/ufw/before[6].rules: ในไฟล์นี้กฎจะถูกคำนวณก่อนที่จะเพิ่มผ่านคำสั่ง ufw
- /etc/ufw/after[6].rules: ในไฟล์นี้กฎจะถูกคำนวณหลังจากเพิ่มผ่านคำสั่ง ufw
- /etc/ufw/sysctl.conf: ไฟล์นี้ใช้เพื่อปรับแต่งเครือข่ายเคอร์เนล
- /etc/ufw/ufw.conf: ไฟล์นี้เปิดใช้งาน ufw เมื่อบูตเครื่อง
แค่นั้นแหละ! UFW เป็นส่วนหน้าที่ยอดเยี่ยมสำหรับ iptables พร้อมด้วยอินเทอร์เฟซที่เป็นมิตรต่อผู้ใช้เพื่อกำหนดกฎที่ซับซ้อนด้วยคำสั่ง ufw เดียว
หากคุณมีข้อสงสัยหรือความคิดเห็นใดๆ ที่จะแบ่งปันเกี่ยวกับบทความ ufw นี้ โปรดใช้แบบฟอร์มความคิดเห็นด้านล่างเพื่อติดต่อเรา