การตั้งค่า Firewall สำหรับ Web Server Kloxo บน AlmaLinux 9
การตั้งค่า Firewall เป็นขั้นตอนสำคัญหลังจากติดตั้ง Web Server เพื่อควบคุมการเชื่อมต่อจากภายนอก และลดความเสี่ยงจากการเปิด Port ที่ไม่จำเป็น
บทความนี้รวบรวม Port ที่ใช้งานทั่วไปสำหรับ Server ที่ติดตั้ง Kloxo บน AlmaLinux 9 ครอบคลุม Web Server, SSH, FTP, DNS, Mail Server และ Kloxo Control Panel
Port ที่ใช้งาน
| Service | Protocol | Port | รายละเอียด |
|---|---|---|---|
| SSH | TCP | 22 | Remote Server Administration |
| HTTP | TCP | 80 | Web Server |
| HTTPS | TCP | 443 | Secure Web Server |
| FTP Data | TCP | 20 | FTP Data |
| FTP | TCP | 21 | FTP Connection |
| Passive FTP | TCP | 30000-50000 | FTP Passive Mode |
| DNS | TCP / UDP | 53 | DNS Server |
| SMTP | TCP | 25 | รับ-ส่งอีเมลระหว่าง Mail Server |
| SMTPS | TCP | 465 | SMTP ผ่าน SSL/TLS |
| Submission | TCP | 587 | ส่งอีเมลจาก Mail Client |
| POP3 | TCP | 110 | รับอีเมลผ่าน POP3 |
| POP3S | TCP | 995 | POP3 ผ่าน SSL/TLS |
| IMAP | TCP | 143 | รับอีเมลผ่าน IMAP |
| IMAPS | TCP | 993 | IMAP ผ่าน SSL/TLS |
| Kloxo Panel | TCP | 7777 | Kloxo Control Panel |
| Kloxo SSL | TCP | 7778 | Kloxo Control Panel ผ่าน SSL |
1. เปิดใช้งาน Firewall
เปิดใช้งาน firewalld และกำหนดให้เริ่มทำงานอัตโนมัติเมื่อเปิด Server
systemctl enable --now firewalld
systemctl status firewalld2. เปิด Port สำหรับ SSH
SSH ใช้สำหรับ Remote เข้ามาบริหารจัดการ Server โดยค่าเริ่มต้นใช้ Port 22
firewall-cmd --permanent --add-port=22/tcpหรือสามารถใช้ Service ที่มีอยู่ใน firewalld ได้
firewall-cmd --permanent --add-service=ssh3. เปิด Port สำหรับ Web Server
เปิด Port สำหรับ HTTP และ HTTPS
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcpPort 80 ใช้สำหรับ HTTP ส่วน Port 443 ใช้สำหรับ HTTPS ซึ่งมีการเข้ารหัสข้อมูลด้วย SSL/TLS
4. เปิด Port สำหรับ FTP
เปิด FTP Port 20 และ 21
firewall-cmd --permanent --add-port=20/tcp
firewall-cmd --permanent --add-port=21/tcpสำหรับ Passive FTP สามารถกำหนดช่วง Port เพิ่มเติม เช่น
firewall-cmd --permanent --add-port=30000-50000/tcpข้อควรระวัง: ช่วง Passive Port ที่กำหนดใน FTP Server เช่น Pure-FTPd ต้องตรงกับช่วงที่เปิดใน Firewall ไม่เช่นนั้นอาจเกิดอาการ Login FTP ได้ แต่ไม่สามารถแสดงรายการไฟล์ Upload หรือ Download ได้
5. เปิด Port สำหรับ DNS Server
หาก Server ทำหน้าที่เป็น DNS Server หรือ Nameserver ให้เปิด Port 53 ทั้ง TCP และ UDP
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp6. เปิด Port สำหรับ Mail Server
สำหรับ Server ที่ให้บริการรับและส่งอีเมล ควรเปิด Port ที่เกี่ยวข้องกับ SMTP, POP3 และ IMAP
SMTP
firewall-cmd --permanent --add-port=25/tcp
firewall-cmd --permanent --add-port=465/tcp
firewall-cmd --permanent --add-port=587/tcp- Port 25 ใช้สำหรับการรับ-ส่งอีเมลระหว่าง Mail Server
- Port 465 ใช้ SMTP ผ่าน SSL/TLS
- Port 587 ใช้สำหรับ Mail Client ส่งอีเมลผ่าน Submission Service
POP3
firewall-cmd --permanent --add-port=110/tcp
firewall-cmd --permanent --add-port=995/tcpIMAP
firewall-cmd --permanent --add-port=143/tcp
firewall-cmd --permanent --add-port=993/tcpสำหรับการใช้งานจริงควรเลือกใช้การเชื่อมต่อที่มีการเข้ารหัส เช่น IMAPS Port 993 และ POP3S Port 995
7. เปิด Port สำหรับ Kloxo Control Panel
firewall-cmd --permanent --add-port=7777/tcp
firewall-cmd --permanent --add-port=7778/tcpControl Panel เป็นส่วนที่มีสิทธิ์ในการจัดการ Server สูง จึงควรใช้การเชื่อมต่อแบบ HTTPS และตั้งรหัสผ่านที่มีความปลอดภัย
8. Reload Firewall
หลังจากกำหนด Port ทั้งหมดแล้ว ให้ Reload Firewall เพื่อใช้งานค่าที่ตั้งไว้
firewall-cmd --reloadตรวจสอบ Port ที่เปิดอยู่
firewall-cmd --list-portsหรือดูรายละเอียดทั้งหมด
firewall-cmd --list-allคำสั่งรวมสำหรับ Copy / Paste
หากต้องการตั้งค่า Port ทั้งหมดในครั้งเดียว สามารถใช้ชุดคำสั่งต่อไปนี้ได้
# ==========================================
# Firewall สำหรับ Web Server + Kloxo
# AlmaLinux / Rocky Linux
# ==========================================
# SSH
firewall-cmd --permanent --add-port=22/tcp
# HTTP / HTTPS
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
# FTP
firewall-cmd --permanent --add-port=20/tcp
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=30000-50000/tcp
# DNS
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp
# SMTP
firewall-cmd --permanent --add-port=25/tcp
firewall-cmd --permanent --add-port=465/tcp
firewall-cmd --permanent --add-port=587/tcp
# POP3
firewall-cmd --permanent --add-port=110/tcp
firewall-cmd --permanent --add-port=995/tcp
# IMAP
firewall-cmd --permanent --add-port=143/tcp
firewall-cmd --permanent --add-port=993/tcp
# Kloxo
firewall-cmd --permanent --add-port=7777/tcp
firewall-cmd --permanent --add-port=7778/tcp
# Apply
firewall-cmd --reload
# Check
firewall-cmd --list-all9. ตรวจสอบ Service ที่กำลังใช้งาน Port
การเปิด Port ใน Firewall ไม่ได้หมายความว่า Service นั้นกำลังทำงานอยู่ จึงควรตรวจสอบว่า Server มี Process ที่ Listen อยู่บน Port ที่ต้องการจริง
ss -tulpnหากต้องการตรวจสอบเฉพาะ Port ที่เกี่ยวข้องกับ Web Server สามารถใช้คำสั่ง
ss -tulpn | grep -E ':(20|21|22|25|53|80|110|143|443|465|587|993|995|7777|7778)\b'ตัวอย่างเช่น หาก Firewall เปิด Port 80 แล้ว แต่ Apache, Nginx หรือ Web Server ตัวอื่นไม่ได้ Listen อยู่ที่ Port 80 เว็บไซต์ก็ยังไม่สามารถเข้าใช้งานได้
10. ตรวจสอบสถานะ Firewall
สามารถตรวจสอบว่า firewalld กำลังทำงานอยู่หรือไม่ด้วยคำสั่ง
firewall-cmd --stateถ้าทำงานปกติควรแสดงผล
runningสรุป Port สำหรับ Web Server
SSH
22/TCP
WEB
80/TCP
443/TCP
FTP
20/TCP
21/TCP
30000-50000/TCP
DNS
53/TCP
53/UDP
SMTP
25/TCP
465/TCP
587/TCP
POP3
110/TCP
995/TCP
IMAP
143/TCP
993/TCP
KLOXO
7777/TCP
7778/TCPข้อควรระวังด้านความปลอดภัย
ไม่ควรเปิด Port ทั้งหมดตั้งแต่ 1-65535 หากไม่มีความจำเป็น เพราะทุก Port ที่เปิดเพิ่ม คือช่องทางที่ระบบภายนอกสามารถเข้าถึง Server ได้เพิ่มขึ้น
นอกจากนี้ไม่ควรเปิด MySQL หรือ MariaDB Port 3306 ออกสู่ Internet โดยตรง หากฐานข้อมูลใช้งานเฉพาะภายใน Web Server
แนวทางที่เหมาะสมคือ เปิดเฉพาะ Port ของ Service ที่ใช้งานจริง และปิด Service ที่ไม่ได้ใช้งาน เพื่อลดพื้นผิวการโจมตีและเพิ่มความปลอดภัยให้กับ Server
