คำตอบสั้น ๆ: ติดตั้ง ConfigServer Security & Firewall ปิดพอร์ตที่ไม่ใช้ เปิดการบล็อกอัตโนมัติเมื่อมีการเดารหัสผ่าน และจัดการ IP ที่ถูกแบน
คู่มือนี้อธิบาย CSF Firewall ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
เซิร์ฟเวอร์ที่เปิดสู่อินเทอร์เน็ตถูกสแกนและเดารหัสผ่านตลอดเวลา การดู Log ของเซิร์ฟเวอร์ใหม่ที่เปิดได้หนึ่งวันมักพบการพยายามล็อกอินหลายพันครั้ง
CSF เป็น Firewall ที่ใช้กันแพร่หลายในวงการโฮสติ้ง จุดเด่นคือมี Login Failure Daemon ที่เฝ้าดู Log ของบริการต่าง ๆ แล้วบล็อก IP ที่พยายามเดารหัสผ่านโดยอัตโนมัติ
สิ่งที่ต้องเตรียม (CSF Firewall)
- DirectAdmin บน Linux และสิทธิ์ root
- ช่องทางสำรองเข้าเซิร์ฟเวอร์ เตรียมไว้ก่อนเสมอ
- IP ของออฟฟิศที่ต้องการอนุญาตถาวร
ขั้นตอนที่ 1: ติดตั้ง (CSF Firewall)
cd /usr/local/src
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh
# ตรวจว่าเคอร์เนลรองรับครบ
perl /usr/local/csf/bin/csftest.pl
ผลควรแสดง RESULT: csf should function on this server หากมีโมดูลที่ขาด ให้ติดต่อผู้ให้บริการเซิร์ฟเวอร์
ติดตั้งส่วนเชื่อมต่อกับ DirectAdmin เพื่อจัดการผ่านหน้าเว็บได้
cd /usr/local/directadmin/plugins
wget https://download.configserver.com/csfinstaller.tgz
tar -xzf csfinstaller.tgz
sh csfinstaller.sh
ขั้นตอนที่ 2: อนุญาต IP ของตัวเองก่อนทำอย่างอื่น (CSF Firewall)
ขั้นตอนนี้ต้องทำก่อนเสมอ เพื่อไม่ให้ถูกล็อกออกระหว่างตั้งค่า
# ดู IP ปัจจุบันของคุณ
who am i
w
# เพิ่มเข้ารายการอนุญาตถาวร
csf -a 203.0.113.55 'IP ออฟฟิศ'
csf -a 203.0.113.0/24 'วงออฟฟิศ'
# ตรวจรายการ
csf -l | grep ACCEPT | head
ขั้นตอนที่ 3: ตั้งพอร์ตที่เปิด
nano /etc/csf/csf.conf
# พอร์ตขาเข้า TCP
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2222,3306"
# พอร์ตขาออก TCP
TCP_OUT = "20,21,22,25,43,53,80,110,113,443,587,993,995,2222"
# UDP
UDP_IN = "20,21,53"
UDP_OUT = "20,21,53,113,123"
พอร์ตสำคัญของ DirectAdmin
- 2222 หน้าจัดการ DirectAdmin ขาดไม่ได้
- 22 SSH
- 80, 443 เว็บไซต์
- 25, 465, 587 ส่งอีเมล
- 110, 143, 993, 995 รับอีเมล
- 20, 21 FTP พร้อมช่วง Passive ที่ตั้งใน ProFTPD
พิจารณาลบ 3306 ออกหากไม่ได้ให้เชื่อมต่อฐานข้อมูลจากภายนอก และจำกัด 2222 ให้เข้าได้เฉพาะจากออฟฟิศ
ขั้นตอนที่ 4: ทดสอบก่อนเปิดใช้จริง
CSF มีโหมดทดสอบที่ล้างกฎอัตโนมัติหลังเวลาที่กำหนด ซึ่งช่วยชีวิตเมื่อตั้งผิด
nano /etc/csf/csf.conf
TESTING = "1"
TESTING_INTERVAL = "5"
csf -r
เปิด Terminal อีกหน้าต่างแล้วทดสอบการเชื่อมต่อ
ssh [email protected]
curl -skI https://203.0.113.10:2222 | head -1
เมื่อมั่นใจแล้วจึงปิดโหมดทดสอบ
sed -i 's/^TESTING = "1"/TESTING = "0"/' /etc/csf/csf.conf
csf -r
csf -e
ขั้นตอนที่ 5: เปิด Login Failure Daemon
นี่คือส่วนที่มีค่าที่สุดของ CSF ตั้งใน csf.conf
LF_DAEMON = "1"
# จำนวนครั้งที่ยอมให้ล้มเหลวก่อนบล็อก
LF_SSHD = "5"
LF_FTPD = "10"
LF_SMTPAUTH = "10"
LF_POP3D = "10"
LF_IMAPD = "10"
LF_DIRECTADMIN = "5"
# ระยะเวลาที่บล็อก เป็นวินาที ใช้ 3600 คือหนึ่งชั่วโมง
LF_TRIGGER_PERM = "3600"
# บล็อกถาวรเมื่อถูกบล็อกซ้ำหลายครั้ง
LF_PERMBLOCK = "1"
LF_PERMBLOCK_COUNT = "4"
LF_PERMBLOCK_INTERVAL = "86400"
LF_PERMBLOCK_ALERT = "0"
csf -r
systemctl status lfd