คู่มือตั้งค่าความปลอดภัยเบื้องต้นให้ Linux VPS: 3 ชั้นป้องกันที่ต้องทำก่อนขึ้นระบบจริง
เพิ่งเปิดเครื่อง Linux VPS ใหม่? อย่าเพิ่งปล่อยให้เซิร์ฟเวอร์เปิดโล่ง! สรุปคู่มือ 3 ปราการด่านแรกที่ต้องทำทันที: ปิด Password หันมาใช้ SSH Keys, กางเกราะ UFW Firewall และติดตั้ง Fail2ban บล็อกบอทแฮกเกอร์อัตโนมัติ
หลังจากที่คุณกดเช่า Linux VPS (Ubuntu / Debian) และได้รับ IP พร้อมรหัสผ่าน Root มา สิ่งแรกที่คุณควรตระหนักคือ "บนโลกอินเทอร์เน็ต เซิร์ฟเวอร์ของคุณไม่ได้อยู่อย่างสงบสุข" แม้จะเป็นไอพีใหม่ที่เพิ่งเปิดมาไม่ถึง 5 นาที บอทอัตโนมัติจากทั่วโลกก็พร้อมจะยิงสุ่มรหัสผ่านเข้ามาที่พอร์ต 22 ตลอด 24 ชั่วโมง
สถิติจริงจาก Log เซิร์ฟเวอร์: เซิร์ฟเวอร์ที่เปิดพอร์ต 22 ทิ้งไว้โดยใช้รหัสผ่านธรรมดา จะถูกบอทพยายาม Brute-Force โจมตีเฉลี่ยวันละ 5,000 – 30,000 ครั้ง การตั้งค่า 3 ปราการป้องกันนี้จึงเป็นสิ่งแรกที่ต้องทำทันที ก่อนจะเริ่มติดตั้งเว็บไซต์หรือฐานข้อมูล
ปราการชั้นที่ 1: บังคับใช้ SSH Key Pair (ปิด Password Authentication)
รหัสผ่านที่ยาว 12 ตัวอักษร อาจยังมีความเสี่ยงที่จะถูกหลุดหรือสุ่มเจอ แต่ SSH Key (การเข้ารหัสแบบกุญแจคู่สมมาตร) มีความแข็งแกร่งทางคณิตศาสตร์ในระดับที่คอมพิวเตอร์ปัจจุบันไม่สามารถเดาสุ่มได้
ขั้นตอนการสร้างและส่งกุญแจ (ทำบนเครื่องคอมพิวเตอร์ของคุณ):
# สร้างกุญแจแบบ Ed25519 (ทันสมัย รวดเร็ว และปลอดภัยสูงสุด)
ssh-keygen -t ed25519 -C "your_email@example.com"
# ส่งกุญแจสาธารณะ (Public Key) ขึ้นไปยัง VPS
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@YOUR_SERVER_IP
ตั้งค่าปิดประตูรหัสผ่าน (ทำบน VPS):
เปิดไฟล์คอนฟิกของ SSH Server ด้วยสิทธิ์รูท:
sudo nano /etc/ssh/sshd_config
ค้นหาและปรับเปลี่ยนค่าต่อไปนี้:
# ปิดการล็อกอินด้วยรหัสผ่านธรรมดา
PasswordAuthentication no
# อนุญาตให้เข้าได้เฉพาะผู้ที่มีกุญแจ SSH เท่านั้น
PubkeyAuthentication yes
# แนะนำ: เปลี่ยนพอร์ต SSH หนีจากพอร์ต 22 (เช่น 2222 หรือ 49152)
Port 2222
จากนั้นบันทึกไฟล์และสั่งรีสตาร์ตบริการ SSH: sudo systemctl restart ssh
⚠️ คำเตือนสำคัญมาก: ก่อนจะกดปิดหน้าต่าง Terminal ให้เปิด Terminal หน้าต่างใหม่แล้วทดลองล็อกอินด้วยกุญแจ SSH ให้สำเร็จก่อนเสมอ เพื่อป้องกันกรณีตั้งค่าผิดแล้วถูกล็อกอยู่นอกเครื่องตัวเอง!
ปราการชั้นที่ 2: วางกำแพงไฟ UFW Firewall (ปิดทุกช่องทางที่ไม่จำเป็น)
เซิร์ฟเวอร์ที่ดีควรเปิดประตูรับเฉพาะบริการที่ต้องการสื่อสารกับโลกภายนอกเท่านั้น บน Ubuntu/Debian เรามีเครื่องมือจัดการไฟร์วอลล์ที่ใช้งานง่ายมากชื่อว่า UFW (Uncomplicated Firewall)
# 1. ตั้งค่านโยบายพื้นฐาน: ปิดกั้นขาเข้าทั้งหมด และอนุญาตขาออก
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 2. เปิดพอร์ต SSH ของคุณ (อย่าลืมเด็ดขาด! หากเปลี่ยนพอร์ตให้ระบุพอร์ตใหม่)
sudo ufw allow 2222/tcp comment 'Custom SSH Port'
# 3. เปิดพอร์ตเว็บเซิร์ฟเวอร์ (HTTP และ HTTPS)
sudo ufw allow 80/tcp comment 'Web HTTP'
sudo ufw allow 443/tcp comment 'Web HTTPS'
# 4. สั่งเปิดใช้งานไฟร์วอลล์
sudo ufw enable
# 5. ตรวจสอบสถานะการทำงาน
sudo ufw status verbose
เพียงเท่านี้ พอร์ตอื่นๆ ทั้งหมดบนเซิร์ฟเวอร์ (เช่น พอร์ตฐานข้อมูล MySQL 3306 หรือ Redis 6379) จะถูกบล็อกจากภายนอกโดยอัตโนมัติ ทำให้ผู้ไม่ประสงค์ดีไม่สามารถแอบต่อฐานข้อมูลตรงๆ ได้
ปราการชั้นที่ 3: ติดตั้ง Fail2ban (ระบบคัดกรองและแบนไอพีบอทอัตโนมัติ)
แม้เราจะปิดรหัสผ่านแล้ว แต่บอทก็ยังคงส่ง Request มากวนพอร์ตเซิร์ฟเวอร์ให้เปลือง CPU และแบนด์วิดท์ Fail2ban จะคอยสแกน Log File ของระบบ หากพบไอพีใดที่พยายามล็อกอินผิดพลาดติดต่อกัน จะสั่งเตะและแบนไอพีนั้นออกจากระบบไฟร์วอลล์ชั่วคราวทันที
# ติดตั้ง Fail2ban
sudo apt update && sudo apt install fail2ban -y
# คัดลอกไฟล์คอนฟิกหลักมาเป็น jail.local เพื่อไม่ให้ถูกเขียนทับเวลาระบบอัปเดต
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
ตั้งค่าตัวเลขที่แนะนำในหมวด [DEFAULT]:
bantime = 1h # แบนไอพีนั้นเป็นเวลา 1 ชั่วโมง
findtime = 10m # ภายในช่วงเวลา 10 นาที
maxretry = 5 # หากลองผิดพลาดเกิน 5 ครั้ง ให้ลงโทษทันที
สั่งเริ่มการทำงานและตรวจสอบสถานะ:
sudo systemctl enable fail2ban
sudo systemctl restart fail2ban
# ดูสถิติการดักจับบอทแบบเรียลไทม์
sudo fail2ban-client status sshd
ของแถม: เปิดอัปเดตแพตช์ความปลอดภัยอัตโนมัติ (Unattended Upgrades)
ช่องโหว่ประเภท Zero-Day มักถูกปล่อยแพตช์แก้ในระดับ OS เป็นประจำ การเปิดใช้งาน unattended-upgrades จะช่วยให้ระบบอัปเดตเฉพาะ Security Patch สำคัญให้โดยอัตโนมัติ:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
บทสรุป: ความปลอดภัยไม่ได้ขึ้นอยู่กับโชค แต่คือการเตรียมพร้อม
การสละเวลาเพียง 15 นาทีในการวางรากฐานความปลอดภัยทั้ง 3 ชั้นนี้ จะช่วยปกป้องข้อมูลสำคัญ เว็บไซต์ และฐานข้อมูลของคุณจากการถูกยึดเครื่องไปเป็นฐานยิง DDoS หรือถูกปล่อย Ransomware ได้อย่างมหาศาล นอนหลับสบายไม่ต้องคอยผวาเซิร์ฟเวอร์ล่มกลางดึกแน่นอนครับ!