วิธีเสริมความปลอดภัย SSH บน Linux VPS
เซิร์ฟเวอร์ VPS ที่เปิดสู่สาธารณะจะได้รับความพยายามล็อกอินอัตโนมัติภายในไม่กี่นาทีหลังเปิดใช้งาน ขั้นตอนเหล่านี้ทำให้การโจมตี SSH ทำได้ยากขึ้นมาก เขียนไว้สำหรับ Ubuntu หรือ Debian หากยังไม่ได้สร้างเซิร์ฟเวอร์ คุณสามารถเช่า Linux VPS และเริ่มจากอิมเมจที่สะอาดได้ ให้คงเซสชัน SSH ปัจจุบันไว้จนกว่าจะทดสอบการตั้งค่าใหม่จากหน้าต่างที่สองแล้ว
1. สร้างผู้ใช้ทั่วไปพร้อมสิทธิ์ sudo
adduser deploy
usermod -aG sudo deploy2. ใช้คีย์ SSH แทนรหัสผ่าน
บนคอมพิวเตอร์ของคุณ:
ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IPล็อกอินหนึ่งครั้งด้วยคีย์เพื่อยืนยันว่าใช้งานได้ ก่อนปิดการใช้รหัสผ่าน
3. ปิดการล็อกอินด้วยรหัสผ่านและ root
สร้างไฟล์ /etc/ssh/sshd_config.d/99-hardening.conf:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3ตรวจสอบไวยากรณ์และโหลดบริการใหม่ บริการชื่อ ssh บน Ubuntu และ Debian และชื่อ sshd บนระบบที่ใช้ RHEL:
sudo sshd -t && sudo systemctl reload sshเปิดเทอร์มินัลอีกหน้าต่างหนึ่งแล้วล็อกอินใหม่ จากนั้นจึงปิดเซสชันเดิม
4. เปิดใช้งานไฟร์วอลล์
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseเปิดเฉพาะพอร์ตที่จำเป็น เช่น 80 และ 443 สำหรับเว็บเซิร์ฟเวอร์ นอกจากนี้ คุณยังจำกัด SSH ให้เข้าถึงได้เฉพาะ IP address ของคุณได้ด้วยกฎไฟร์วอลล์ในคอนโซลคลาวด์
5. บล็อกการล็อกอินผิดซ้ำๆ ด้วย Fail2ban
sudo apt install -y fail2banสร้างไฟล์ /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1hsudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd6. ติดตั้งการอัปเดตความปลอดภัยอัตโนมัติ
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades7. ส่วนเสริมเพิ่มเติม (ไม่บังคับ)
- การเปลี่ยนพอร์ต SSH ช่วยลดข้อมูลบันทึก (log) ที่รบกวน แต่ไม่ใช่มาตรการความปลอดภัยโดยตัวมันเอง
- ป้องกันคีย์ส่วนตัวด้วยพาสเฟรส (passphrase) และเก็บสำรองไว้ในที่ปลอดภัย
- ตรวจสอบการล็อกอินด้วยคำสั่ง
lastและsudo journalctl -u ssh --since today - เมื่อตั้งค่าเซิร์ฟเวอร์เสร็จแล้ว ให้สร้างสแนปชอต เพื่อให้สามารถกู้คืนสภาพพื้นฐานที่สะอาดได้
หากถูกล็อกออกจากระบบ ให้ใช้คอนโซลบราวเซอร์ในแผงควบคุมคลาวด์เพื่อล็อกอินและแก้ไขการตั้งค่า คู่มือการป้องกัน DDoS ของเราอธิบายการป้องกันในชั้นถัดไป
คำถามที่พบบ่อย
การปิดการล็อกอิน root ปลอดภัยหรือไม่?
ปลอดภัย หากคุณสร้างผู้ใช้ sudo ก่อนและทดสอบแล้วว่าคีย์ของผู้ใช้นั้นใช้งานได้ คุณยังสามารถรันคำสั่งดูแลระบบด้วย sudo ได้
ถ้าใช้คีย์อย่างเดียว ยังต้องใช้ Fail2ban อยู่หรือไม่?
ไม่จำเป็นต้องใช้ เมื่อปิดการล็อกอินด้วยรหัสผ่านแล้ว การเดารหัสผ่านแบบ brute force จะไม่สำเร็จ แต่ Fail2ban ช่วยลดข้อมูล log ที่รบกวนและภาระของระบบได้
หากทำคีย์ SSH หาย ต้องทำอย่างไร?
ใช้คอนโซลในแผงควบคุมคลาวด์เพื่อล็อกอิน แล้วเพิ่มคีย์สาธารณะใหม่ลงใน ~/.ssh/authorized_keys และลบคีย์เก่าออก