ค้นหาเว็บไซต์

วิธีการตั้งค่าไฟร์วอลล์ 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 นี้ โปรดใช้แบบฟอร์มความคิดเห็นด้านล่างเพื่อติดต่อเรา