ซอฟต์แวร์ & เซิร์ฟเวอร์

คู่มือตั้งค่าความปลอดภัยเบื้องต้นให้ Linux VPS: 3 ชั้นป้องกันที่ต้องทำก่อนขึ้นระบบจริง

เพิ่งเปิดเครื่อง Linux VPS ใหม่? อย่าเพิ่งปล่อยให้เซิร์ฟเวอร์เปิดโล่ง! สรุปคู่มือ 3 ปราการด่านแรกที่ต้องทำทันที: ปิด Password หันมาใช้ SSH Keys, กางเกราะ UFW Firewall และติดตั้ง Fail2ban บล็อกบอทแฮกเกอร์อัตโนมัติ

ผู้เขียน: Lazy2BFox • 18 ต.ค. 2569 00:00 น. • อ่านประมาณ 8 นาที • เข้าชม 45 ครั้ง
คู่มือตั้งค่าความปลอดภัยเบื้องต้นให้ Linux VPS: 3 ชั้นป้องกันที่ต้องทำก่อนขึ้นระบบจริง

หลังจากที่คุณกดเช่า 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 ได้อย่างมหาศาล นอนหลับสบายไม่ต้องคอยผวาเซิร์ฟเวอร์ล่มกลางดึกแน่นอนครับ!