Security
น้องๆ หลายคนอาจจะเคยได้ยินคำว่า Firewall กันมาบ้างแล้ว แต่ยังไม่ค่อยเข้าใจว่ามันคืออะไร ทำไมต้องมี แล้วมันช่วยอะไรเราได้บ้าง บน Ubuntu เนี่ย เค้ามี UFW (Uncomplicated Firewall) มาให้แล้ว ใช้งานง่ายมากๆ พี่จะมาสอนแบบละเอียดเลยนะ รับรองทำตามได้แน่นอน
สมัยพี่เปิดร้านเน็ต SiamCafe Blog (ตั้งแต่ปี 2540 นู่น!) เรื่องความปลอดภัยนี่สำคัญสุดๆ เพราะเครื่องลูกข่ายในร้านเราต้องต่อเน็ตตลอดเวลา ถ้าไม่ป้องกันให้ดี โดนแฮ็ก โดนไวรัสเล่นงานนี่ปวดหัวแน่นอน Firewall ก็เหมือนยามหน้าประตูบ้าน คอยตรวจตราว่าใครจะเข้า-ออกบ้านเรา ถ้าไม่ได้รับอนุญาตก็กันออกไป UFW ก็คือ Firewall ที่ใช้งานง่ายมากๆ บน Ubuntu นั่นเอง
UFW ช่วยปกป้องเครื่อง Ubuntu ของเราจาก:
สรุปง่ายๆ คือ UFW ช่วยทำให้เครื่อง Ubuntu ของเราปลอดภัยขึ้นเยอะมากๆ โดยที่เราไม่ต้องมีความรู้ด้าน Security ลึกซึ้งอะไรเลย
UFW เนี่ย ปกติจะติดตั้งมาพร้อมกับ Ubuntu อยู่แล้ว แต่ถ้าใครไม่แน่ใจ ก็ลองเช็คดูก่อนได้นะ
1. เช็คสถานะ UFW: เปิด Terminal แล้วพิมพ์คำสั่งนี้
sudo ufw status
ถ้าขึ้นว่า "Status: inactive" ก็แปลว่า UFW ยังไม่ได้เปิดใช้งาน
2. เปิดใช้งาน UFW: พิมพ์คำสั่งนี้
sudo ufw enable
ระบบจะถามว่า "Firewall may disrupt existing ssh connections. Proceed with operation? (y|n)" ให้พิมพ์ "y" แล้วกด Enter
3. ตรวจสอบสถานะ UFW อีกครั้ง: พิมพ์คำสั่งเดิม
sudo ufw status
คราวนี้ต้องขึ้นว่า "Status: active" แล้วนะ แค่นี้ UFW ก็เริ่มทำงานแล้ว
หลังจากเปิดใช้งาน UFW แล้ว เราต้องตั้งค่าให้มันรู้ว่า เราจะอนุญาตหรือปฏิเสธการเชื่อมต่อแบบไหนบ้าง
1. อนุญาตการเชื่อมต่อ SSH: SSH คือโปรโตคอลที่เราใช้ Remote เข้ามายังเครื่อง Ubuntu ของเรา ถ้าเราล็อกการเชื่อมต่อ SSH ไป เราจะ Remote เข้ามาไม่ได้เลยนะ
sudo ufw allow ssh
หรือจะระบุเป็น Port ก็ได้ (SSH ปกติจะใช้ Port 22)
sudo ufw allow 22
2. อนุญาตการเชื่อมต่อ HTTP (Web Server): ถ้าเราเปิด Web Server บนเครื่อง Ubuntu ของเรา เราต้องอนุญาตให้คนอื่นเข้ามาดูเว็บไซต์ของเราได้
sudo ufw allow http
หรือจะระบุเป็น Port 80 ก็ได้
sudo ufw allow 80
3. อนุญาตการเชื่อมต่อ HTTPS (Web Server แบบปลอดภัย): ถ้าเว็บไซต์ของเราใช้ HTTPS (มี SSL Certificate) เราต้องอนุญาต Port 443 ด้วย
sudo ufw allow https
หรือ
sudo ufw allow 443
4. ปฏิเสธการเชื่อมต่ออื่นๆ ทั้งหมด: หลังจากที่เราอนุญาตการเชื่อมต่อที่จำเป็นแล้ว เราควรปฏิเสธการเชื่อมต่ออื่นๆ ทั้งหมด เพื่อป้องกันการโจมตีจากช่องโหว่ที่เรายังไม่รู้
sudo ufw default deny incoming
sudo ufw default allow outgoing
คำสั่งแรกจะปฏิเสธการเชื่อมต่อขาเข้าทั้งหมด ส่วนคำสั่งที่สองจะอนุญาตการเชื่อมต่อขาออกทั้งหมด (เช่น เครื่องเราเข้าเว็บต่างๆ ได้ตามปกติ)
UFW ไม่ได้มีแค่ Allow กับ Deny นะ เราสามารถกำหนด Rule ได้ละเอียดกว่านั้นอีก
1. อนุญาตการเชื่อมต่อจาก IP Address เฉพาะ: สมมติว่าเราต้องการอนุญาตให้เฉพาะเครื่องคอมพิวเตอร์ที่บ้านเรา (IP Address 192.168.1.100) เข้ามา Remote เครื่อง Ubuntu ของเราได้
sudo ufw allow from 192.168.1.100 to any port 22
2. ปฏิเสธการเชื่อมต่อจาก Subnet เฉพาะ: สมมติว่าเราต้องการปฏิเสธการเชื่อมต่อจาก Subnet 10.0.0.0/24 ทั้งหมด
sudo ufw deny from 10.0.0.0/24
3. อนุญาตการเชื่อมต่อไปยัง Port เฉพาะบน IP Address เฉพาะ: สมมติว่าเราต้องการอนุญาตให้เครื่องคอมพิวเตอร์ที่บ้านเรา (192.168.1.100) เข้ามายัง Port 3306 (MySQL) บนเครื่อง Ubuntu ของเราได้
sudo ufw allow from 192.168.1.100 to any port 3306
4. ลบ Rule ที่เคยตั้งไว้: ถ้าเราต้องการลบ Rule ที่เคยตั้งไว้ เราต้องรู้ Index ของ Rule นั้นก่อน
sudo ufw status numbered
คำสั่งนี้จะแสดง Rule ทั้งหมด พร้อมกับ Index ของแต่ละ Rule สมมติว่าเราต้องการลบ Rule ที่มี Index เป็น 5
sudo ufw delete 5
5. Reset UFW: ถ้าเราตั้งค่า UFW จนเละไปหมดแล้ว เราสามารถ Reset UFW ให้กลับไปเป็นค่าเริ่มต้นได้
sudo ufw reset
คำเตือน: การ Reset UFW จะลบ Rule ทั้งหมดที่เราเคยตั้งค่าไว้ ต้องระวังด้วยนะ
| Feature | UFW | iptables | firewalld |
|---|---|---|---|
| ความยากในการใช้งาน | ง่ายมาก | ยาก | ปานกลาง |
| เหมาะสำหรับ | ผู้เริ่มต้น, Desktop, Server ขนาดเล็ก | ผู้เชี่ยวชาญ, Server ขนาดใหญ่ | Server ที่มีการเปลี่ยนแปลงบ่อย |
| Abstraction Layer | สูง | ต่ำ | ปานกลาง |
| Configuration | Command-line | Command-line | Command-line, GUI |
สมัยพี่ทำร้านเน็ต SiamCafe Blog สิ่งที่สำคัญที่สุดคือการ Back Up ข้อมูลเสมอ ไม่ว่าจะเป็นข้อมูลลูกค้า ข้อมูลเกม หรือข้อมูลระบบ เพราะถ้าเกิดอะไรขึ้นมา เราจะได้กู้ข้อมูลกลับมาได้
นอกจาก UFW แล้ว เราควรใช้เครื่องมือ Security อื่นๆ ร่วมด้วย เช่น:
จำไว้เสมอว่า Security เป็นเรื่องที่ไม่สิ้นสุด เราต้องคอยเรียนรู้และปรับปรุง Security ของระบบเราอยู่เสมอ
ดูวิดีโอเพิ่มเติมเกี่ยวกับUFW Firewall Ubuntu ตั้งค่าง่า:
A: iptables คือ Firewall ตัวหลักของ Linux ซึ่งมีความซับซ้อนในการใช้งาน UFW เป็น Frontend ที่ใช้งานง่ายกว่า ช่วยให้เราจัดการ iptables ได้ง่ายขึ้น
A: อาจเป็นเพราะเรายังไม่ได้อนุญาตการเชื่อมต่อ HTTP (Port 80) หรือ HTTPS (Port 443) ลองตรวจสอบ Rule ของ UFW ดู
A: UFW สามารถช่วยลดผลกระทบจาก DDoS ได้บ้าง แต่ไม่สามารถป้องกันได้อย่างสมบูรณ์แบบ เราอาจต้องใช้เครื่องมือ DDoS Protection อื่นๆ ร่วมด้วย
สมัยผมทำร้านเน็ต สิ่งที่สำคัญที่สุดคือความปลอดภัย เริ่มต้นด้วยการปิดทุก Port ก่อนเลยครับ แล้วค่อยๆ เปิด Port ที่จำเป็นสำหรับการใช้งานเท่านั้น วิธีนี้จะช่วยลดความเสี่ยงจากการโจมตีที่ไม่คาดคิดได้เยอะมากๆ
sudo ufw default deny incoming
sudo ufw default deny outgoing
เปิด Logging ไว้เสมอครับ จะช่วยให้เราตรวจสอบ Log ได้ง่ายขึ้นเวลาเกิดปัญหา หรือโดนโจมตี การเปิด Logging จะช่วยให้เราวิเคราะห์หาสาเหตุได้รวดเร็วขึ้น
sudo ufw logging on
SSH เป็นช่องทางสำคัญในการเข้าถึง Server ดังนั้นควรตั้งค่า Limit เพื่อป้องกัน Brute-Force Attack ครับ คือจำกัดจำนวนครั้งที่สามารถพยายาม Login ได้ในระยะเวลาที่กำหนด
sudo ufw limit ssh
อย่าลืมตรวจสอบ Status Firewall เป็นประจำนะครับ เพื่อให้แน่ใจว่าทุกอย่างทำงานถูกต้อง และไม่มี Rule แปลกปลอมที่เราไม่ได้ตั้งค่าไว้
sudo ufw status verbose
UFW เป็น Frontend ที่ใช้งานง่ายกว่า iptables ครับ iptables จะซับซ้อนกว่า เหมาะสำหรับคนที่ต้องการปรับแต่ง Firewall แบบละเอียด แต่ UFW เหมาะสำหรับคนที่ต้องการ Firewall ที่ใช้งานง่ายและรวดเร็ว
ถ้าเผลอ Block ตัวเอง สิ่งแรกที่ต้องทำคือหาทางเข้า Server ทางอื่นครับ เช่น Console หรือ Serial Console ถ้าไม่มีทางเลือกอื่น อาจจะต้อง Reset Server ใหม่ แล้วตั้งค่า Firewall ใหม่อีกครั้ง
UFW สามารถเปิด Port ช่วง Range ได้ครับ โดยใช้ Syntax แบบนี้
sudo ufw allow 8000:8005/tcp
คำสั่งนี้จะเปิด Port 8000 ถึง 8005 บน Protocol TCP ครับ iCafeForex
ถ้าต้องการ Disable UFW ชั่วคราว สามารถใช้คำสั่งนี้ได้ครับ
sudo ufw disable
แต่ระวังนะครับ การ Disable Firewall จะทำให้ Server ของคุณไม่ปลอดภัย
UFW Firewall เป็นเครื่องมือที่ใช้งานง่ายและมีประสิทธิภาพในการป้องกัน Server ของคุณจากภัยคุกคามต่างๆ การตั้งค่า Firewall ที่ดีจะช่วยลดความเสี่ยงจากการโจมตีได้เยอะมากๆ ลองนำ Best Practices ที่แนะนำไปปรับใช้กับ Server ของคุณดูนะครับ และอย่าลืมติดตาม SiamCafe Blog สำหรับบทความดีๆ เกี่ยวกับ IT อีกมากมาย