ติดตั้งและใช้งาน CSF Firewall บน DirectAdmin

ติดตั้ง ConfigServer Security & Firewall ปิดพอร์ตที่ไม่ใช้ เปิดการบล็อกอัตโนมัติเมื่อมีการเดารหัสผ่าน และจัดการ IP ที่ถูกแบน

โดย ทีมงาน THAI DATA CLOUD อัปเดต อ่าน 8 นาที เข้าชม 6 ครั้ง

แชร์FacebookXLINELinkedIn
CSF Firewall — ติดตั้งและใช้งาน CSF Firewall บน DirectAdmin
ติดตั้งและใช้งาน CSF Firewall บน DirectAdmin

คำตอบสั้น ๆ: ติดตั้ง 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

ขั้นตอนที่ 6: ตั้งค่าการแจ้งเตือน

ค่าเริ่มต้นของ CSF ส่งอีเมลมากเกินไปจนคนเลิกอ่าน ปรับให้เหลือเฉพาะที่สำคัญ

LF_ALERT_TO = "[email protected]"

# ปิดการแจ้งเตือนที่มาถี่เกินไป
LF_EMAIL_ALERT = "0"
LF_PERMBLOCK_ALERT = "0"
LF_NETBLOCK_ALERT = "0"

# เก็บไว้เฉพาะที่สำคัญจริง
LF_SSH_EMAIL_ALERT = "1"
LF_SU_EMAIL_ALERT = "1"
LF_CONSOLE_EMAIL_ALERT = "1"

การแจ้งเตือนที่มีความหมายคือการล็อกอิน root สำเร็จและการใช้ su ซึ่งควรเกิดจากทีมงานเท่านั้น

ขั้นตอนที่ 7: จัดการ IP ที่ถูกบล็อก

# ดูรายการที่ถูกบล็อกชั่วคราว
csf -t

# ดูรายการบล็อกถาวร
csf -d | head -20

# ค้นหาว่า IP หนึ่งถูกบล็อกหรือไม่ และเพราะอะไร
csf -g 203.0.113.99

# ปลดบล็อก
csf -dr 203.0.113.99   # ลบจากรายการปฏิเสธ
csf -tr 203.0.113.99   # ลบจากรายการชั่วคราว

# บล็อกด้วยมือ
csf -d 198.51.100.50 'สแกนพอร์ต'

ดู Log เพื่อเข้าใจว่าเกิดอะไรขึ้น

tail -50 /var/log/lfd.log
grep 'Blocked' /var/log/lfd.log | tail -20
grep '203.0.113.99' /var/log/lfd.log

ขั้นตอนที่ 8: กู้เมื่อถูกล็อกออก

เข้าผ่าน Console ของผู้ให้บริการแล้ว

# ปิด CSF ชั่วคราว
csf -x

# หรือล้างกฎทั้งหมด
csf -f

# เพิ่ม IP ตัวเองแล้วเปิดใหม่
csf -a IP_ของคุณ
csf -e

หากเข้า Console ไม่ได้เลย ให้ติดต่อผู้ให้บริการขอเข้าโหมดกู้ระบบ

ป้องกันล่วงหน้าด้วยการเพิ่ม IP ของผู้ดูแลทุกคนเข้า /etc/csf/csf.allow ตั้งแต่ต้น และเปิด TESTING ทุกครั้งที่จะแก้กฎสำคัญ

ปัญหาที่พบบ่อยเกี่ยวกับ CSF Firewall

ลูกค้าบ่นว่าเข้า FTP ไม่ได้เป็นบางครั้ง

ช่วงพอร์ต Passive ไม่ได้เปิดใน CSF ตรวจช่วงที่ ProFTPD ใช้แล้วเปิดให้ตรงกัน

grep -i passiveports /etc/proftpd.conf

IP ของตัวเองถูกบล็อกบ่อย

เพิ่มเข้า csf.allow ถาวร และตรวจว่าไม่มีโปรแกรมที่พยายามเชื่อมต่อด้วยรหัสผ่านเก่าซ้ำ ๆ เช่น โปรแกรมอีเมลที่ยังจำรหัสเดิม

lfd กิน CPU มาก

เกิดจากไฟล์ Log ขนาดใหญ่ ตรวจว่า logrotate ทำงานปกติ และปิดการตรวจสอบที่ไม่จำเป็น เช่น LF_DIRWATCH บนเซิร์ฟเวอร์ที่มีไฟล์จำนวนมาก

อีเมลแจ้งเตือนท่วม

ปรับตามขั้นตอนที่ 6 การแจ้งเตือนที่มากเกินไปทำให้พลาดเรื่องสำคัญจริง ซึ่งอันตรายกว่าการไม่แจ้งเลย

ต้องการเซิร์ฟเวอร์ DirectAdmin ที่ตั้งค่าความปลอดภัยมาให้แล้ว ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

สรุปขั้นตอน CSF Firewall

ทบทวน CSF Firewall ทั้งหมดตามลำดับ ก่อนนำไปใช้กับระบบจริง

  1. ติดตั้ง (CSF Firewall)
  2. อนุญาต IP ของตัวเองก่อนทำอย่างอื่น (CSF Firewall)
  3. ตั้งพอร์ตที่เปิด
  4. ทดสอบก่อนเปิดใช้จริง
  5. เปิด Login Failure Daemon
  6. ตั้งค่าการแจ้งเตือน
  7. จัดการ IP ที่ถูกบล็อก
  8. กู้เมื่อถูกล็อกออก

เมื่อทำครบทุกข้อแล้ว CSF Firewall จะพร้อมใช้งาน หากผลลัพธ์ไม่เป็นไปตามที่คาด ให้ย้อนกลับไปดูหัวข้อปัญหาที่พบบ่อยด้านบน ซึ่งรวบรวมกรณีที่พบจริงจากการใช้งาน CSF Firewall ไว้แล้ว

อ่านเพิ่มเติมเกี่ยวกับ CSF Firewall

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน