ความปลอดภัยไซเบอร์

ความปลอดภัย VPS เบื้องต้น ที่ต้องทำทันทีหลังเปิดเครื่องครั้งแรก

มิถุนายน 2026 · อ่าน 6 นาที

ซื้อ VPS มาแล้ว login เข้าครั้งแรก สิ่งที่หลายคนทำคือลงเว็บเซิร์ฟเวอร์แล้วจบ แต่นั่นคือความผิดพลาดที่อันตราย บทความนี้รวมขั้นตอนพื้นฐานที่ควรทำก่อนทุกอย่าง


1. เปลี่ยน SSH Port จาก 22

Port 22 คือ default ของ SSH บอททั่วโลก scan และลองเดา password ตลอด 24 ชั่วโมง เปลี่ยน port ไม่ได้ทำให้ปลอดภัย 100% แต่ลด noise ได้มาก

nano /etc/ssh/sshd_config
# แก้บรรทัด: Port 22  →  Port 2222
systemctl restart sshd

จากนั้นเปิด port ใหม่ในไฟร์วอลล์ก่อน logout ออก ไม่งั้นจะเข้าเครื่องไม่ได้

2. ปิดการ login ด้วย root โดยตรง

สร้าง user ใหม่แล้วให้สิทธิ์ sudo แทน

adduser myuser
usermod -aG sudo myuser

จากนั้นใน sshd_config แก้:

PermitRootLogin no

3. ใช้ SSH Key แทน Password

Password แม้ซับซ้อนก็ยังถูก brute force ได้ SSH Key ปลอดภัยกว่าเพราะเป็น cryptographic key pair

บนเครื่องของตัวเอง:

ssh-keygen -t ed25519 -C "my-vps-key"
ssh-copy-id -p 2222 myuser@your-server-ip

หลังทดสอบ login ด้วย key ได้แล้ว ปิด password login:

PasswordAuthentication no

4. ตั้งค่า Firewall ด้วย UFW

apt install ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp   # SSH port ใหม่
ufw allow 80/tcp     # HTTP
ufw allow 443/tcp    # HTTPS
ufw enable

5. ติดตั้ง Fail2ban

Fail2ban คอย ban IP ที่ login ผิดซ้ำ ๆ โดยอัตโนมัติ

apt install fail2ban
systemctl enable fail2ban
systemctl start fail2ban

ตรวจสอบสถานะ:

fail2ban-client status sshd

6. อัปเดต Package สม่ำเสมอ

apt update && apt upgrade -y

ตั้ง unattended-upgrades เพื่ออัปเดต security patch อัตโนมัติ:

apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades

สิ่งที่ไม่ควรทำ

7. ตรวจสอบ Log หาสัญญาณผิดปกติ

แม้จะ harden แล้ว ควรตรวจ log เป็นระยะเพื่อดูว่ามีอะไรผิดปกติ:

# ดู failed login attempts ล่าสุด
journalctl -u sshd | grep "Failed\|Invalid\|error" | tail -20

# ดู IP ที่ถูก ban โดย Fail2ban
fail2ban-client status sshd

# ดู auth log
tail -50 /var/log/auth.log | grep -i "fail\|invalid\|error"

# ดู process ที่รันอยู่ทั้งหมด หาอะไรแปลก ๆ
ps aux --sort=-%cpu | head -20
Logwatch: ติดตั้ง logwatch เพื่อรับสรุป log รายวันทาง email อัตโนมัติ ไม่ต้องเข้ามา ssh ดูเองทุกวัน

8. Security Headers สำหรับ Web Server

ถ้ารัน web service ควรเพิ่ม security headers ที่ Nginx หรือ Apache:

# ใน Nginx server block
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self'" always;

ตรวจสอบ security headers ด้วย dnsxray.com ฟรีในหน้าเดียว


แก้ปัญหาที่พบบ่อย

SSH ไม่ยอมรับ key และยังต้องใส่ password

ปัญหามักเกิดจาก permission ของไฟล์ไม่ถูกต้อง:

# ตรวจสอบ permission
ls -la ~/.ssh/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

# ตรวจสอบ SSH log ว่า error อะไร
journalctl -u sshd -n 30

UFW enable แล้ว SSH ขาด กลับเข้าไม่ได้

ต้อง allow SSH port ก่อน enable UFW เสมอ ถ้าเกิดแล้วต้องใช้ console ของ provider (KVM console, VNC, SolusVM) เข้าไปแก้:

ufw allow 2222/tcp   # หรือ port ที่ใช้
ufw status           # ตรวจก่อน
ufw enable           # enable หลังสุด
เปิด session สำรองไว้เสมอ: ทุกครั้งที่แก้ config SSH หรือ firewall ให้เปิด terminal SSH อีกหน้าต่างทิ้งไว้ก่อน ถ้า session ปัจจุบันขาดจะได้เข้าผ่านอีกหน้าต่างได้

Fail2ban ไม่ ban IP ทั้งที่ login ผิดซ้ำๆ

ตรวจ log path และ backend ของ jail:

fail2ban-client status
# ถ้า jail สีเทา (not active) ให้ตรวจ
tail -50 /var/log/fail2ban.log

# restart
systemctl restart fail2ban
fail2ban-client status sshd

Unattended-upgrades รีสตาร์ท service กลางดึก

เป็น behavior ปกติ แต่ถ้าไม่ต้องการ reboot อัตโนมัติ ให้แก้ config:

nano /etc/apt/apt.conf.d/50unattended-upgrades
# เปลี่ยน Unattended-Upgrade::Automatic-Reboot "true" เป็น "false"

คำถามที่พบบ่อย

ควรเปลี่ยน SSH port จาก 22 เสมอไหม?

เป็น good practice แต่ไม่จำเป็นถ้ามี Fail2ban และใช้ key-based auth แล้ว การเปลี่ยน port ลด noise จาก bot scan แต่ไม่ได้เพิ่มความปลอดภัยจริงจัง ผู้โจมตีที่ตั้งใจสามารถ scan ทุก port ได้ เน้นที่ key-based auth และ Fail2ban มากกว่า

ต้องตั้ง 2FA สำหรับ SSH ด้วยไหม?

แนะนำถ้าต้องการ security layer เพิ่ม ติดตั้ง Google Authenticator PAM แล้วตั้ง ChallengeResponseAuthentication yes และ AuthenticationMethods publickey,keyboard-interactive ใน sshd_config เพื่อให้ต้องใช้ทั้ง key และ TOTP code

VPS provider มี snapshot ให้แล้ว ยังต้องทำ backup เองไหม?

ควรทำ backup เองเพิ่มเติม snapshot ของ provider เก็บอยู่ใน datacenter เดิม ถ้า datacenter มีปัญหาทั้ง VPS และ snapshot หายพร้อมกัน backup ที่ดีควรอยู่ต่างสถานที่ เช่น rclone ไปยัง Cloudflare R2 หรือ Backblaze B2

ควรปิด IPv6 ไหม?

ไม่จำเป็น UFW จัดการ IPv6 ได้ ตรวจสอบว่า IPV6=yes ใน /etc/default/ufw เพื่อให้ rule ใช้กับ IPv6 ด้วย ถ้าปิด IPv6 ทั้งหมดอาจมีผลกระทบกับ application บางตัว


สรุป

ความปลอดภัย VPS ไม่ใช่เรื่องซับซ้อน แต่ต้องทำตั้งแต่แรก เพราะหลังจากเซิร์ฟเวอร์ออนไลน์ไปแล้ว บอทจะเริ่ม scan ภายในไม่กี่นาที ขั้นตอนเหล่านี้ใช้เวลาไม่เกิน 30 นาทีแต่ช่วยลด attack surface ได้อย่างมีนัยสำคัญ