ได้ VPS Ubuntu มาใหม่สักเครื่อง — ขั้นตอนต่อไปคืออะไร? หลายคนรีบติดตั้ง application ที่ต้องการทันที แต่นั่นเป็นความผิดพลาดที่อาจทำให้ server เสี่ยงต่อการโจมตีได้ทุกวัน การตั้งค่าพื้นฐานให้ถูกต้องตั้งแต่ต้นจะช่วยให้ server ปลอดภัย เสถียร และดูแลรักษาง่ายในระยะยาว บทความนี้รวม 10 ขั้นตอนแรกที่ต้องทำทันทีหลังได้ VPS Ubuntu เพื่อให้ server พร้อมใช้งานอย่างปลอดภัย
สารบัญ
1 สร้าง Non-Root User
เมื่อ VPS ใหม่พร้อมใช้งาน คุณมักได้ข้อมูล root พร้อม IP มา ขั้นตอนแรกคือ สร้าง user ใหม่ที่มีสิทธิ์ sudo แล้วหยุดใช้ root โดยตรง เพราะ root มีสิทธิ์เต็มที่ในระบบ คำสั่งผิดพลาดเพียงครั้งเดียวอาจทำลาย server ทั้งหมดได้
# Login ด้วย root ก่อน
ssh root@YOUR_SERVER_IP
# สร้าง user ใหม่ (แทน username ด้วยชื่อที่ต้องการ)
adduser username
# เพิ่ม user เข้ากลุ่ม sudo
usermod -aG sudo username
# ทดสอบ login ด้วย user ใหม่ (เปิด terminal อีกอัน)
ssh username@YOUR_SERVER_IP
# ทดสอบ sudo
sudo whoami
# ควรได้: root
admin, user, ubuntu เพราะ bot จะลองชื่อเหล่านี้อัตโนมัติ ใช้ชื่อที่เดาได้ยาก
2 ตั้งค่า SSH Key Authentication
SSH key ปลอดภัยกว่า password มาก เพราะใช้การเข้ารหัส asymmetric key ที่แทบเป็นไปไม่ได้ที่จะ brute-force ได้ ทำขั้นตอนนี้บนเครื่องของคุณ (ไม่ใช่บน server)
สร้าง SSH key pair บนเครื่องของคุณ
# บน macOS / Linux (เครื่องของคุณ)
ssh-keygen -t ed25519 -C "[email protected]"
# กด Enter ทุก prompt หรือตั้ง passphrase เพิ่ม security
# Copy public key ไปยัง server
ssh-copy-id username@YOUR_SERVER_IP
# หรือทำด้วยตนเอง
cat ~/.ssh/id_ed25519.pub | ssh username@YOUR_SERVER_IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
บน Windows (PowerShell / WSL)
# PowerShell (Windows 10/11)
ssh-keygen -t ed25519 -C "[email protected]"
# Copy key ไป server
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh username@YOUR_SERVER_IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
ทดสอบ login ด้วย SSH key ก่อนปิด password auth เสมอ:
ssh -i ~/.ssh/id_ed25519 username@YOUR_SERVER_IP
3 ปิด Root Login และ Password Authentication
หลังจาก SSH key ทำงานได้แล้ว ให้ปิด root login และ password auth ทันที เพื่อป้องกัน brute-force attack
# แก้ไข SSH config
sudo nano /etc/ssh/sshd_config
# หา และแก้ไขบรรทัดเหล่านี้:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
# รีสตาร์ท SSH service
sudo systemctl restart sshd
# ⚠️ อย่าปิด terminal เก่าก่อนทดสอบ!
# เปิด terminal ใหม่แล้ว test login ก่อนเสมอ
4 ตั้งค่า UFW Firewall
UFW (Uncomplicated Firewall) คือ frontend ของ iptables ที่ใช้งานง่าย ช่วยจำกัด traffic ที่เข้า server เฉพาะที่จำเป็น
# ตรวจสอบสถานะ UFW
sudo ufw status
# ตั้งค่า policy เริ่มต้น
sudo ufw default deny incoming
sudo ufw default allow outgoing
# เปิด SSH (สำคัญมาก — ต้องทำก่อน enable UFW)
sudo ufw allow ssh
# หรือถ้าเปลี่ยน SSH port แล้ว:
sudo ufw allow YOUR_SSH_PORT/tcp
# เปิด HTTP และ HTTPS (ถ้าเป็น web server)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Enable UFW
sudo ufw enable
# ตรวจสอบ rules ที่เปิด
sudo ufw status verbose
ตัวอย่าง Rules ตามการใช้งาน
| การใช้งาน | Port | คำสั่ง UFW |
|---|---|---|
| SSH (default) | 22/tcp | sudo ufw allow ssh |
| Web Server HTTP | 80/tcp | sudo ufw allow 80/tcp |
| Web Server HTTPS | 443/tcp | sudo ufw allow 443/tcp |
| MySQL (local only) | 3306/tcp | ไม่ต้องเปิด (ใช้ localhost) |
| Custom SSH port | เช่น 2222 | sudo ufw allow 2222/tcp |
| Node.js app | เช่น 3000 | sudo ufw allow 3000/tcp |
5 อัพเดต System Packages
Ubuntu VPS ใหม่มักมี package เก่าที่อาจมีช่องโหว่ความปลอดภัย การอัพเดตทันทีหลังตั้งค่าพื้นฐานเป็นสิ่งสำคัญ
# อัพเดต package list
sudo apt update
# อัพเกรด package ที่ติดตั้งทั้งหมด
sudo apt upgrade -y
# อัพเกรด kernel และ dependencies สำคัญ
sudo apt full-upgrade -y
# ลบ package ที่ไม่จำเป็นแล้ว
sudo apt autoremove -y
sudo apt autoclean
# รีบูต (ถ้ามีการอัพเดต kernel)
sudo reboot
sudo apt full-upgrade ถ้ามีข้อความ "A reboot is required" ให้รีบูต server ทันที เพื่อให้ kernel ใหม่ทำงาน และ security patch มีผลจริง
6 ตั้งค่า Swap Space
Swap Space คือพื้นที่บน SSD ที่ใช้แทน RAM เมื่อ memory เต็ม ป้องกันระบบ crash เมื่อ RAM หมด แม้จะช้ากว่า RAM จริง แต่สำคัญมากสำหรับ VPS RAM ต่ำ
ขนาด Swap ที่แนะนำ
| RAM ของ VPS | Swap ที่แนะนำ | หมายเหตุ |
|---|---|---|
| 512MB - 1GB | 1-2GB | ใช้ swap บ่อยมาก — พิจารณาอัพเกรด RAM |
| 2GB | 2-4GB | เหมาะสมสำหรับ WordPress, Node.js เล็กๆ |
| 4GB | 2-4GB | ใช้ swap น้อย — mostly safety net |
| 8GB+ | 1-2GB (optional) | ส่วนใหญ่ไม่จำเป็น |
# ตรวจสอบ swap ปัจจุบัน
sudo swapon --show
free -h
# สร้าง swap file ขนาด 2GB
sudo fallocate -l 2G /swapfile
# หรือถ้า fallocate ไม่รองรับ:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
# ตั้งสิทธิ์ให้ถูกต้อง
sudo chmod 600 /swapfile
# เปิดใช้งาน swap
sudo mkswap /swapfile
sudo swapon /swapfile
# ตรวจสอบ
free -h
# ตั้งให้ใช้ swap ทุกครั้งที่รีบูต
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# ปรับ swappiness (แนะนำ 10 สำหรับ server)
sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
7 ตั้ง Timezone และ Hostname
Timezone ที่ถูกต้องทำให้ timestamp ใน log ไฟล์, cron job, และ SSL certificate ถูกต้องตามเวลาจริง ส่วน Hostname ช่วยระบุ server ได้ง่ายเมื่อมีหลายเครื่อง
# ดู timezone ปัจจุบัน
timedatectl
# ตั้ง timezone เป็นกรุงเทพ (สำหรับ server ไทย)
sudo timedatectl set-timezone Asia/Bangkok
# ดู timezone ที่มีทั้งหมด (ถ้าต้องการ zone อื่น)
timedatectl list-timezones | grep Asia
# ตั้ง Hostname
sudo hostnamectl set-hostname my-server-name
# อัพเดต /etc/hosts ด้วย
sudo nano /etc/hosts
# เพิ่ม: 127.0.1.1 my-server-name
# ยืนยัน
hostname
timedatectl
8 ติดตั้ง Fail2Ban
Fail2Ban คือโปรแกรมที่คอยตรวจ log ไฟล์แล้ว ban IP ที่พยายาม login ผิดพลาดหลายครั้งอัตโนมัติ ช่วยป้องกัน SSH brute-force attack ได้อย่างมีประสิทธิภาพ
# ติดตั้ง Fail2Ban
sudo apt install fail2ban -y
# สร้าง config ของตัวเอง (อย่าแก้ไฟล์ .conf โดยตรง)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# ค้นหาและแก้ไข section [sshd]:
# enabled = true
# port = ssh
# maxretry = 5
# bantime = 3600
# findtime = 600
# เริ่มและ enable Fail2Ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# ตรวจสอบสถานะ
sudo fail2ban-client status
sudo fail2ban-client status sshd
ดู IP ที่ถูก Ban และ Unban
# ดู IP ที่ถูก ban ทั้งหมด
sudo fail2ban-client status sshd
# Unban IP ที่ต้องการ
sudo fail2ban-client set sshd unbanip YOUR_IP_ADDRESS
# ดู log ของ Fail2Ban
sudo tail -f /var/log/fail2ban.log
9 เปิด Automatic Security Updates
การอัพเดต security patch ด้วยตนเองทุกวันเป็นเรื่องที่ทำได้ยากในทางปฏิบัติ การเปิด unattended-upgrades ช่วยให้ Ubuntu อัพเดต security patch อัตโนมัติ โดยไม่กระทบการทำงานปกติ
# ติดตั้ง unattended-upgrades
sudo apt install unattended-upgrades -y
# เปิดใช้งาน
sudo dpkg-reconfigure --priority=low unattended-upgrades
# เลือก "Yes" เพื่อเปิดใช้งาน
# ดู config ที่ตั้ง
cat /etc/apt/apt.conf.d/50unattended-upgrades
# ทดสอบว่าทำงาน (dry-run)
sudo unattended-upgrades --dry-run --debug
10 ติดตั้ง Monitoring Tools พื้นฐาน
การมี tools ที่ช่วยดู resource usage แบบ real-time ช่วยให้วิเคราะห์ปัญหาได้เร็วกว่ามาก เป็นสิ่งที่ sysadmin ทุกคนควรมีไว้บน server
# ติดตั้ง essential monitoring tools
sudo apt install htop ncdu tree curl wget git -y
# htop — interactive process viewer
htop
# ncdu — disk usage analyzer แบบ interactive
ncdu /
# ดู disk usage
df -h
# ดู memory usage
free -h
# ดู network connections
ss -tulpn
# ดู CPU info
lscpu
# ดู system load
uptime
สรุปเครื่องมือที่ควรติดตั้ง
| Tool | ใช้ทำอะไร | คำสั่ง |
|---|---|---|
| htop | ดู process, CPU, RAM แบบ real-time | htop |
| ncdu | ดูไฟล์ที่กิน disk มากที่สุด | ncdu / |
| ss | ดู open ports และ connections | ss -tulpn |
| fail2ban-client | ตรวจ IP ที่ถูก ban | fail2ban-client status |
| ufw status | ตรวจ firewall rules | sudo ufw status verbose |
สรุป: Checklist 10 ขั้นตอนหลัง Deploy VPS
นี่คือ checklist สรุปทุกขั้นตอนที่ควรทำหลังได้ VPS Ubuntu ใหม่:
| # | ขั้นตอน | ความสำคัญ | เวลา |
|---|---|---|---|
| 1 | สร้าง non-root sudo user | 🔴 บังคับ | 2 นาที |
| 2 | ตั้งค่า SSH key authentication | 🔴 บังคับ | 5 นาที |
| 3 | ปิด root login และ password auth | 🔴 บังคับ | 2 นาที |
| 4 | ตั้งค่า UFW firewall | 🔴 บังคับ | 3 นาที |
| 5 | อัพเดต system packages | 🔴 บังคับ | 5-10 นาที |
| 6 | ตั้งค่า swap space | 🟡 แนะนำ (RAM ต่ำ) | 3 นาที |
| 7 | ตั้ง timezone และ hostname | 🟡 แนะนำ | 2 นาที |
| 8 | ติดตั้ง Fail2Ban | 🟡 แนะนำ | 5 นาที |
| 9 | เปิด automatic security updates | 🟡 แนะนำ | 2 นาที |
| 10 | ติดตั้ง monitoring tools | 🟢 ทำได้เมื่อมีเวลา | 2 นาที |
การทำ 4 ขั้นตอนแรก (user, SSH key, ปิด root, firewall) ใช้เวลาไม่ถึง 15 นาที แต่ช่วยลดความเสี่ยงจากการโจมตีได้มากกว่า 90% เริ่มต้นจากขั้นตอนเหล่านี้ก่อนที่จะติดตั้ง application ใดๆ บน server เสมอ
ต้องการ VPS ที่พร้อมใช้งานทันที?
AsiaGB VPS ไทย (CS Loxinfo) พร้อม Ubuntu 22.04/24.04 LTS · SSD · Uptime 99% · รองรับ SSH key ตั้งแต่ Deploy · ทีมงานช่วยเหลือตลอด 24 ชั่วโมง
ดูแพ็กเกจ VPS ไทย