เซิร์ฟเวอร์ Linux VPS มีความปลอดภัยสูงกว่าระบบ Windows ด้วย Security Model ในตัวของ Linux อย่างไรก็ตาม ไม่มีระบบใดที่ปลอดภัยได้ร้อยเปอร์เซ็นต์ แฮกเกอร์สแกนเซิร์ฟเวอร์หลายล้านเครื่องทุกวัน เพื่อค้นหาช่องโหว่ที่จะใช้ขโมยข้อมูลสำคัญหรือเปิดการโจมตีขนาดใหญ่
การรักษาความปลอดภัยให้เซิร์ฟเวอร์ Linux ต้องอาศัยการตั้งค่าที่รอบคอบ การติดตั้ง VPS ใหม่มักมาพร้อมการตั้งค่าเริ่มต้นที่เน้นความสะดวกในการเข้าถึงมากกว่าความปลอดภัย การทำความเข้าใจวิธีรักษาความปลอดภัยเซิร์ฟเวอร์ Linux ช่วยป้องกันภัยคุกคามที่เปลี่ยนแปลงอยู่เสมอ พร้อมรักษาการทำงานของระบบให้ใช้งานได้ตามปกติ คู่มือนี้รวบรวม 20 ขั้นตอนสำคัญในการรักษาความปลอดภัยโครงสร้างพื้นฐานเซิร์ฟเวอร์ Linux เพื่อเปลี่ยนระบบที่เปราะบางให้กลายเป็นป้อมปราการที่รับมือกับการโจมตีทั่วไปได้อย่างมีประสิทธิภาพ
Linux VPS คืออะไร

Linux VPS (Virtual Private Server) ทำงานบนแพลตฟอร์มคลาวด์พร้อมทรัพยากรเฉพาะที่แยกออกจากผู้ใช้รายอื่น ต่างจากโฮสติ้งแบบ Shared ที่บัญชีหนึ่งถูกโจมตีแล้วอาจกระทบบัญชีอื่นได้ การโฮสต์ VPS แบบปลอดภัยจะแยกสภาพแวดล้อมของคุณออกจากกันโดยสมบูรณ์ อย่างไรก็ตาม ผู้โจมตียังคงมุ่งเป้าไปที่เซิร์ฟเวอร์ VPS ที่ไม่ได้รับการป้องกัน เพื่อขโมยข้อมูล ติดตั้งมัลแวร์ หรือใช้เป็นฐานในการโจมตีระบบอื่น
เมื่อคุณสั่งซื้อ ซื้อ Linux VPS โฮสติ้ง ระบบปฏิบัติการจะมาพร้อมการตั้งค่าพื้นฐานที่ติดตั้งไว้ล่วงหน้า การตั้งค่าเริ่มต้นเหล่านี้เน้นความง่ายในการใช้งานมากกว่าความปลอดภัย ทำให้เซิร์ฟเวอร์ของคุณเสี่ยงต่อการโจมตีอัตโนมัติที่สแกนหาช่องโหว่ทั่วไป การรักษาความปลอดภัยข้อมูลบนคลาวด์ด้วยเซิร์ฟเวอร์ VPS ต้องใช้มาตรการเชิงรุกที่มากกว่าการติดตั้งพื้นฐาน
ทำไมคุณควรรักษาความปลอดภัยให้ Linux VPS ของคุณ
เซิร์ฟเวอร์ที่ไม่ได้รับการป้องกันจะกลายเป็นเป้าหมายภายในไม่กี่ชั่วโมงหลังเปิดใช้งาน ปัจจุบันองค์กรต่างๆ เผชิญกับ การโจมตีทางไซเบอร์เฉลี่ย 1,876 ครั้งต่อสัปดาห์ซึ่งเพิ่มขึ้น 75% จากปีที่ผ่านมา การทำความเข้าใจวิธีรักษาความปลอดภัยโครงสร้างพื้นฐานเซิร์ฟเวอร์ Linux ช่วยป้องกันภัยคุกคามที่ไม่หยุดหย่อนเหล่านี้ไม่ให้เข้าถึงระบบของคุณ
สิ่งที่อันตรายที่สุดคือการโจมตีที่ซับซ้อนมักไม่ถูกตรวจพบ ผู้โจมตีอาจเข้าถึงข้อมูล ดักฟังการสื่อสาร หรือใช้ทรัพยากรของเซิร์ฟเวอร์โดยไม่มีสัญญาณการบุกรุกที่ชัดเจน การโฮสต์ VPS อย่างปลอดภัยต้องอาศัยมาตรการเชิงรุก เพราะผู้โจมตีไม่ประกาศตัวเอง และเมื่อคุณสังเกตเห็นกิจกรรมผิดปกติ ความเสียหายอาจเกิดขึ้นไปมากแล้ว
Security Model ของ Linux (LSM)

Linux มีฟีเจอร์ความปลอดภัยในตัวที่บล็อกการเข้าถึงองค์ประกอบสำคัญของระบบโดยไม่ได้รับอนุญาต Diagram ของ Security Model ใน Linux แสดงให้เห็นว่าการควบคุมการเข้าถึงปกป้องไฟล์ กระบวนการ และการโต้ตอบของผู้ใช้ได้อย่างไร ซึ่งสร้างชั้นการป้องกันหลายชั้นที่ทำให้การเจาะระบบยากกว่าระบบปฏิบัติการอื่น
อย่างไรก็ตาม LSM ไม่สามารถป้องกันการโจมตีที่เกิดจากการตั้งค่าที่ผิดพลาด รหัสผ่านที่อ่อนแอ หรือซอฟต์แวร์ที่ล้าสมัย LSM เป็นเพียงรากฐานสำหรับการรักษาความปลอดภัยเซิร์ฟเวอร์ Linux แต่ต้องมีการนำไปใช้อย่างถูกต้องจึงจะมีประสิทธิผลสำหรับ Ubuntu VPS hosting บริการโฮสติ้ง และ Linux distribution อื่นๆ
20 วิธีรักษาความปลอดภัย Linux VPS

มาตรการความปลอดภัยเหล่านี้เริ่มจากการเปลี่ยนแปลงการตั้งค่าพื้นฐานไปจนถึงระบบการตรวจสอบขั้นสูง การรักษาความปลอดภัยสภาพแวดล้อมเซิร์ฟเวอร์ Linux ให้ได้ผลต้องดำเนินการตามขั้นตอนเหล่านี้อย่างเป็นระบบ เพื่อสร้างเซิร์ฟเวอร์ที่ต้านทานเวกเตอร์การโจมตีทั่วไปได้
แต่ละเทคนิคมุ่งเน้นไปที่ช่องโหว่เฉพาะที่ผู้โจมตีมักใช้ประโยชน์ วิธีการครอบคลุมตั้งแต่การตั้งค่าพื้นฐานที่ทุกเซิร์ฟเวอร์ต้องมี ไปจนถึงระบบการตรวจสอบขั้นสูงสำหรับการตรวจจับภัยคุกคามที่ซับซ้อน มาตรการบางอย่างให้การป้องกันทันที ในขณะที่บางอย่างสร้างความยืดหยุ่นด้านความปลอดภัยในระยะยาว ลำดับการดำเนินการมีความสำคัญ ขั้นตอนการ Hardening พื้นฐานควรทำก่อนติดตั้งเครื่องมือตรวจสอบขั้นสูง ทั้ง 20 กลยุทธ์นี้รวมกันสร้างชั้นการป้องกันที่ซ้อนทับกัน ช่วยลด Attack Surface ของเซิร์ฟเวอร์ได้อย่างมีนัยสำคัญ
1. อัปเดตซอฟต์แวร์ให้เป็นปัจจุบันอยู่เสมอ
ซอฟต์แวร์ที่ล้าสมัยมีช่องโหว่ด้านความปลอดภัยที่เป็นที่รู้จักซึ่งผู้โจมตีใช้ประโยชน์ได้ นักพัฒนาซอฟต์แวร์ออก Patch เพื่อแก้ไขช่องโหว่เหล่านี้อย่างสม่ำเสมอ การอัปเดตจึงเป็นด่านป้องกันแรกสำหรับระบบเซิร์ฟเวอร์ Linux
ตั้งค่าการอัปเดตอัตโนมัติสำหรับ Patch ความปลอดภัยที่สำคัญ:
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL
sudo yum update -y
ตั้งค่าการแจ้งเตือนทางอีเมลสำหรับอัปเดตที่มีให้ใช้งาน เพื่อติดตามแพตช์ความปลอดภัยที่ต้องตรวจสอบด้วยตนเอง
2. ปิดการเข้าสู่ระบบด้วย Root
เซิร์ฟเวอร์ทุกเครื่องของ Linux มีบัญชีผู้ใช้ "root" ที่มีสิทธิ์เข้าถึงระบบอย่างไม่จำกัด เนื่องจากแฮกเกอร์รู้ดีว่าบัญชีนี้มีอยู่ในทุกเซิร์ฟเวอร์ พวกเขาจึงมักโจมตีด้วย การโจมตีแบบ Brute Force เพื่อเดารหัสผ่านและเข้าควบคุมเซิร์ฟเวอร์ได้อย่างสมบูรณ์
สร้างผู้ใช้งานระดับ Administrator ใหม่ก่อนปิดการใช้งาน root:
# Create new user
sudo adduser adminuser
sudo usermod -aG sudo adminuser
# Disable root login in SSH configuration
sudo nano /etc/ssh/sshd_config
# Change: PermitRootLogin no
sudo systemctl restart sshd
วิธีนี้บังคับให้ผู้โจมตีต้องเดาทั้งชื่อผู้ใช้และรหัสผ่าน ซึ่งเพิ่มความปลอดภัยได้อย่างมาก
3. สร้าง Key Pair สำหรับ SSH
การเข้าสู่ระบบด้วยรหัสผ่าน โดยเฉพาะรหัสผ่านที่ไม่แข็งแรง อาจเป็นช่องโหว่ด้านความปลอดภัย การยืนยันตัวตนด้วย SSH key เป็นทางเลือกที่ปลอดภัยกว่า เพราะใช้คีย์เข้ารหัสแทนรหัสผ่าน ทำให้การยืนยันตัวตนแน่นหนาและยากต่อการถอดรหัสมากขึ้น
มาตรการรักษาความปลอดภัยนี้มีความสำคัญเป็นพิเศษ เนื่องจาก ข้อมูลรับรองตัวตนที่ถูกขโมยเป็นช่องทางเริ่มต้นของการโจมตีใน 24% ของเหตุการณ์ข้อมูลรั่วไหล ตามงานวิจัยด้านความปลอดภัย การโจมตีประเภทนี้ใช้เวลานานกว่าการโจมตีรูปแบบอื่นในการตรวจจับและควบคุม ดังนั้นการป้องกันด้วย SSH keys จึงเป็นสิ่งจำเป็น
สร้างคู่คีย์ SSH สำหรับการยืนยันตัวตนที่ปลอดภัย:
ssh-keygen -t rsa -b 4096
ssh-copy-id username@server-ip
คีย์ SSH สามารถมีความยาวได้ถึง 4096 บิต ซึ่งปลอดภัยกว่ารหัสผ่านที่ซับซ้อนที่สุดอย่างเทียบไม่ได้
4. เปิดใช้งานการยืนยันตัวตนสองชั้น
การยืนยันตัวตนสองขั้นตอนเพิ่มชั้นการตรวจสอบอีกหนึ่งขั้นนอกเหนือจากรหัสผ่าน แม้ผู้โจมตีจะได้รหัสผ่านของคุณไป ก็ยังไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้หากไม่มีปัจจัยยืนยันตัวตนขั้นที่สอง
ติดตั้งและตั้งค่าการยืนยันตัวตนสองขั้นตอน:
sudo apt install libpam-google-authenticator
google-authenticator
กำหนดค่าแอปยืนยันตัวตนบนมือถือของคุณเพื่อสร้างรหัสแบบ time-based สำหรับการเข้าถึงเซิร์ฟเวอร์
5. เปลี่ยนพอร์ต SSH
พอร์ตเริ่มต้น SSH (22) ถูกโจมตีอยู่ตลอดเวลาจากเครื่องมือสแกนอัตโนมัติ การเปลี่ยนไปใช้พอร์ตที่กำหนดเองช่วยลดความเสี่ยงจากการโจมตีเหล่านี้ เนื่องจาก ค่าเฉลี่ยทั่วโลกของความเสียหายจากการละเมิดข้อมูลอยู่ที่ 4.88 ล้านดอลลาร์ ในปี 2024 แม้แต่มาตรการรักษาความปลอดภัยพื้นฐาน เช่น การเปลี่ยน port ก็ยังช่วยป้องกันการโจมตีอัตโนมัติได้อย่างมีประสิทธิภาพ
สำหรับดิสทริบิวชันส่วนใหญ่ของ Linux:
sudo nano /etc/ssh/sshd_config
# Find: #Port 22
# Change to: Port 2222 (choose a port between 1024-65535)
sudo systemctl restart sshd
สำหรับ Ubuntu เวอร์ชัน 23.04 และเวอร์ชันที่ใหม่กว่า:
sudo nano /lib/systemd/system/ssh.socket
# Update ListenStream=2222
sudo systemctl daemon-reload
sudo systemctl restart ssh.service
สำคัญ: ทดสอบพอร์ตใหม่ก่อนปิด session ปัจจุบัน:
# Test connection in a new terminal
ssh username@server-ip -p 2222
อัปเดตกฎ firewall เพื่อเปิดใช้พอร์ตใหม่:
sudo ufw allow 2222
sudo ufw delete allow 22 # Remove old rule after testing
อย่าลืมระบุพอร์ตใหม่เมื่อเชื่อมต่อ: ssh ชื่อผู้ใช้@server-ip -p 2222
6. ปิดพอร์ตเครือข่ายและ IPv6 ที่ไม่ได้ใช้งาน
พอร์ตเครือข่ายที่เปิดอยู่คือช่องทางให้ผู้โจมตีเข้าถึงระบบ แต่ละเซอร์วิสที่รันอยู่อาจเป็นช่องโหว่ได้ ให้ปิดเซอร์วิสที่ไม่จำเป็นและพอร์ตที่เกี่ยวข้อง
ดูพอร์ตที่เปิดอยู่ในขณะนี้:
sudo netstat -tulpn
# Alternative command
sudo ss -tulpn
ใช้ iptables เพื่อจัดการกฎ firewall และปิดพอร์ตที่ไม่จำเป็น
ปิด IPv6 หากไม่ต้องการใช้งาน:
sudo nano /etc/sysctl.conf
# Add these lines:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
# Apply changes
sudo sysctl -p
# Verify IPv6 is disabled
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
# Should return 1
อัปเดตการตั้งค่าเครือข่าย (ระบุไฟล์ netplan ที่ใช้งานจริง):
# Find netplan configuration files
ls /etc/netplan/
# Edit your specific configuration file
sudo nano /etc/netplan/[your-config-file].yaml
# Comment out IPv6 configuration lines
sudo netplan apply
7. การกำหนดค่าไฟร์วอลล์
Firewall ควบคุมการรับส่งข้อมูลเครือข่ายที่เข้าถึงเซิร์ฟเวอร์ได้ โดยบล็อกการเชื่อมต่อที่ไม่ได้รับอนุญาต และอนุญาตเฉพาะทราฟฟิกที่ถูกต้องผ่านพอร์ตที่กำหนด
ตั้งค่า UFW เบื้องต้น:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
กฎ firewall พื้นฐาน:
| วัตถุประสงค์ | คำสั่ง | ผลลัพธ์ |
| อนุญาต HTTP | sudo ufw allow 80 | อนุญาต Web traffic |
| อนุญาต HTTPS | sudo ufw allow 443 | Web traffic แบบเข้ารหัส |
| อนุญาตพอร์ต SSH แบบกำหนดเอง | sudo ufw allow 2222 | SSH บนพอร์ตที่กำหนดเอง |
| บล็อก IP ที่เฉพาะเจาะจง | sudo ufw deny from 192.168.1.100 | IP ถูกบล็อกอย่างสมบูรณ์ |
ตรวจสอบสถานะ firewall:
sudo ufw status verbose
การตั้งค่านี้บล็อกทราฟฟิกขาเข้าทั้งหมด ยกเว้นการเชื่อมต่อ SSH
8. ติดตั้งแอปพลิเคชัน Anti-Malware และ Anti-Virus
ระบบ Linux อาจถูกโจมตีด้วย malware ที่ขโมยข้อมูล ขุด cryptocurrency หรือเปิดช่องทางลับให้ผู้โจมตีเข้าถึงได้ ซอฟต์แวร์ anti-malware ช่วยตรวจจับและกำจัดภัยคุกคามเหล่านี้ก่อนที่จะสร้างความเสียหายต่อระบบ
ติดตั้ง ClamAV สำหรับสแกนไวรัสแบบครอบคลุม:
sudo apt install clamav clamav-daemon clamav-freshclam
sudo freshclam
sudo systemctl enable clamav-freshclam
sudo systemctl start clamav-freshclam
สแกนไดเรกทอรีสำคัญด้วยตนเอง:
sudo clamscan -r /home --infected --remove --bell
sudo clamscan -r /var/www --infected --remove
เพื่อเพิ่มความปลอดภัย ติดตั้ง Maldet ควบคู่กับ ClamAV:
# Verify URL availability before downloading
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
tar -xzf maldetect-current.tar.gz
cd maldetect-*
sudo ./install.sh
# Note: Always verify download URLs from official sources before use
ตั้งเวลาสแกนอัตโนมัติทุกวันด้วย cron:
# Add to crontab: Daily scan at 2 AM
0 2 * * * /usr/bin/clamscan -r /home --quiet --infected --remove
9. ติดตั้งโปรแกรมตรวจจับ Rootkit
Rootkit คือโปรแกรมอันตรายที่ฝังตัวอยู่ในระบบปฏิบัติการอย่างลึก และมักหลุดรอดการตรวจจับของซอฟต์แวร์แอนตี้ไวรัสทั่วไป โปรแกรมเหล่านี้ช่วยให้ผู้โจมตีเข้าถึงระบบของคุณได้อย่างต่อเนื่อง โดยไม่ปรากฏให้เห็นด้วยวิธีตรวจสอบปกติ
ติดตั้งและตั้งค่า Chkrootkit สำหรับตรวจจับ rootkit:
sudo apt install chkrootkit
sudo chkrootkit | grep INFECTED
ติดตั้ง RKHunter เพื่อเพิ่มการป้องกัน rootkit:
sudo apt install rkhunter
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check
สร้างกำหนดการสแกน rootkit อัตโนมัติทุกสัปดาห์:
# Add to crontab: Weekly rootkit scan every Sunday at 3 AM
0 3 * * 0 /usr/bin/rkhunter --cronjob --update --quiet
0 4 * * 0 /usr/bin/chkrootkit | grep INFECTED > /var/log/chkrootkit.log
หากตรวจพบ rootkit ให้แยก server ออกจากระบบทันที และพิจารณาติดตั้ง OS ใหม่ทั้งหมด เนื่องจาก rootkit นั้นลบออกได้ยากมากโดยไม่กระทบความสมบูรณ์ของระบบ
10. ใช้ Fail2Ban สำหรับป้องกันการบุกรุก
Fail2Ban ตรวจสอบความพยายามในการเข้าสู่ระบบ และบล็อก IP address ที่แสดงพฤติกรรมน่าสงสัยโดยอัตโนมัติ เช่น การพยายามล็อกอินผิดพลาดซ้ำหลายครั้ง
ติดตั้งอย่างรวดเร็ว:
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
การตั้งค่าป้องกัน SSH ที่จำเป็น:
[sshd]
enabled = true
port = ssh
maxretry = 3
bantime = 3600
findtime = 600
ค่าการตั้งค่าหลัก:
| การตั้งค่า | มูลค่า | ความหมาย |
| maxretry | 3 | จำนวนครั้งที่ล้มเหลวก่อนถูกบล็อก |
| ระยะเวลา禁止 | 3600 | ระยะเวลาการบล็อก (1 ชั่วโมง) |
| ค้นหาเวลา | 600 | ช่วงเวลาตรวจสอบ (10 นาที) |
เริ่มต้นและเปิดใช้งาน:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
ตรวจสอบ IP ที่ถูกบล็อก:
sudo fail2ban-client status sshd
11. เปิด SELinux
SELinux (Security-Enhanced Linux) กำหนดการควบคุมการเข้าถึงแบบบังคับ เพื่อจำกัดสิ่งที่โปรแกรมสามารถทำได้ แม้ว่าโปรแกรมนั้นจะถูกโจมตีแล้วก็ตาม ซึ่งเป็นชั้นการป้องกันเพิ่มเติมที่เหนือกว่าสิทธิ์ Linux มาตรฐาน
ตรวจสอบและเปิดใช้งาน SELinux:
sestatus
sudo setenforce enforcing
นโยบายของ SELinux ป้องกันไม่ให้แอปพลิเคชันที่ถูกโจมตีเข้าถึงทรัพยากรระบบที่ไม่ได้รับอนุญาต ดู คำแนะนำสั้น ๆ เหล่านี้เพื่อใช้งาน SELinux ได้อย่างเต็มประสิทธิภาพ สำหรับการตั้งค่าที่เหมาะสมที่สุด
12. ปกป้องไฟล์ ไดเรกทอรี และอีเมล
เข้ารหัสไฟล์ที่มีข้อมูลสำคัญเพื่อป้องกันการเข้าถึงโดยไม่ได้รับอนุญาต แม้ว่าผู้โจมตีจะเข้าถึงระบบได้แล้วก็ตาม ซึ่งเป็นสิ่งจำเป็นสำหรับการตั้งค่า file server Linux ที่จัดการข้อมูลสำคัญอย่างปลอดภัย
ใช้ GPG สำหรับการเข้ารหัสไฟล์:
gpg --cipher-algo AES256 --compress-algo 1 --s2k-mode 3 --s2k-digest-algo SHA512 --s2k-count 65536 --symmetric filename
ตั้งค่าสิทธิ์การเข้าถึงไฟล์ให้เหมาะสมเพื่อจำกัดการเข้าถึง:
chmod 600 sensitive-file # Owner read/write only
chmod 700 private-directory # Owner access only
13. สำรองข้อมูลอย่างสม่ำเสมอ
การสำรองข้อมูลอย่างสม่ำเสมอช่วยให้คุณกู้คืนระบบได้หลังเกิดเหตุด้านความปลอดภัย ฮาร์ดแวร์ขัดข้อง หรือข้อมูลสูญหายโดยไม่ตั้งใจ การสำรองข้อมูลแบบอัตโนมัติลดความเสี่ยงจากความผิดพลาดของมนุษย์ และเป็นส่วนสำคัญของกลยุทธ์การโฮสต์ VPS ที่ปลอดภัย
สร้างสคริปต์สำรองข้อมูลอัตโนมัติ:
#!/bin/bash
tar -czf /backup/$(date +%Y%m%d)-system.tar.gz /home /etc /var/log
จัดเก็บข้อมูลสำรองไว้หลายที่ รวมถึงพื้นที่จัดเก็บนอกสถานที่ โดยยึดหลักการสำรองข้อมูลแบบ 3-2-1
14. แบ่งพาร์ติชันดิสก์
การแบ่งพาร์ติชันดิสก์แยกไฟล์ระบบออกจากข้อมูลผู้ใช้ ช่วยจำกัดความเสียหายหากพาร์ติชันใดพาร์ติชันหนึ่งถูกโจมตี นอกจากนี้ยังป้องกันไม่ให้พื้นที่ดิสก์หมดในส่วนหนึ่งส่งผลกระทบต่อทั้งระบบ
รูปแบบพาร์ติชันที่แนะนำ:
/boot – 500MB (ไฟล์บูต)
/ – 20GB (ไฟล์ระบบ)
/home – 50GB (ข้อมูลผู้ใช้)
/var – 10GB (ล็อกและฐานข้อมูล)
/tmp – 2GB (ไฟล์ชั่วคราว)
swap – 2GB (หน่วยความจำเสมือน)
เมานต์พาร์ติชันชั่วคราวพร้อมข้อจำกัดด้านความปลอดภัย:
# Add to /etc/fstab for permanent mounting
echo "tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev,size=2G 0 0" >> /etc/fstab
echo "tmpfs /var/tmp tmpfs defaults,noexec,nosuid,nodev,size=1G 0 0" >> /etc/fstab
# สมัครทันที
sudo mount -a
ตรวจสอบความปลอดภัยของพาร์ติชัน:
mount | grep -E "(noexec|nosuid|nodev)"
df -h # Check disk usage by partition
ค่า noexec ตัวเลือกนี้ป้องกันไม่ให้ไฟล์ปฏิบัติการที่เป็นอันตรายทำงาน, nosuid ปิดใช้งานบิต set-user-ID, และ nodev ป้องกันการสร้างไฟล์อุปกรณ์ในไดเรกทอรีชั่วคราว
15. ติดตามล็อกของเซิร์ฟเวอร์
ล็อกของเซิร์ฟเวอร์บันทึกกิจกรรมทั้งหมดในระบบ ช่วยให้ตรวจพบสัญญาณเตือนของเหตุด้านความปลอดภัยได้ตั้งแต่เนิ่น ๆ การตรวจสอบล็อกอย่างสม่ำเสมอช่วยระบุรูปแบบที่ผิดปกติก่อนที่จะกลายเป็นภัยคุกคามร้ายแรง
ล็อกสำคัญที่ควรติดตาม:
| ไฟล์บันทึก | วัตถุประสงค์ | คำสั่ง |
| /var/log/auth.log (Debian/Ubuntu)<br>/var/log/secure (CentOS/RHEL) | ความพยายามในการเข้าสู่ระบบ | sudo tail -f /var/log/auth.log<br>sudo tail -f /var/log/secure |
| /var/log/syslog (Debian/Ubuntu)<br>/var/log/messages (CentOS/RHEL) | ข้อความระบบ | sudo tail -f /var/log/syslog<br>sudo tail -f /var/log/messages |
| /var/log/apache2/access.log (Debian/Ubuntu)<br>/var/log/httpd/access_log (CentOS/RHEL) | การเข้าชมเว็บไซต์ | sudo tail -f /var/log/apache2/access.log<br>sudo tail -f /var/log/httpd/access_log |
| /var/log/fail2ban.log | ที่อยู่ IP ที่ถูกบล็อก | sudo tail -f /var/log/fail2ban.log |
คำสั่งวิเคราะห์ Log เบื้องต้น:
# Failed login attempts (adjust path for your distribution)
sudo grep "Failed password" /var/log/auth.log | tail -10
# Successful logins
sudo grep "Accepted" /var/log/auth.log | tail -10
# Large file transfers (adjust path for your web server)
sudo awk '{print $10}' /var/log/apache2/access.log | sort -n | tail -10
การตรวจสอบ Log อัตโนมัติ:
# Install logwatch for daily summaries
sudo apt install logwatch
sudo logwatch --detail Med --mailto [email protected] --service All
ตั้งค่า log rotation เพื่อป้องกันไฟล์ log ใช้พื้นที่ดิสก์มากเกินไป
16. ใช้รหัสผ่านที่แข็งแกร่ง
รหัสผ่านที่แข็งแกร่งช่วยป้องกัน brute force attack และ dictionary attack ได้ รหัสผ่านที่อ่อนแออาจถูกถอดรหัสได้ภายในไม่กี่นาทีด้วยพลังประมวลผลในปัจจุบัน
ความต้องการของรหัสผ่าน:
- ขั้นต่ำ 12 ตัวอักษร
- ผสมตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก ตัวเลข และสัญลักษณ์
- ไม่ใช้คำในพจนานุกรมหรือข้อมูลส่วนตัว
- ไม่ซ้ำกันในแต่ละบัญชี
ใช้ password manager เพื่อสร้างและจัดเก็บรหัสผ่านที่ซับซ้อนอย่างปลอดภัย เมื่อใช้ร่วมกับหลักการ security model with diagram แบบ Linux รหัสผ่านที่แข็งแกร่งจะสร้างชั้นการป้องกันหลายชั้นที่ขัดขวางการเข้าถึงโดยไม่ได้รับอนุญาต
17. ใช้ SFTP แทน FTP
FTP มาตรฐานส่งข้อมูลและข้อมูลรับรองตัวตนในรูปแบบข้อความธรรมดา ทำให้ผู้ดักฟังบนเครือข่ายมองเห็นได้ SFTP เข้ารหัสข้อมูลทั้งหมดระหว่างการส่ง ปกป้องข้อมูลสำคัญ และรองรับสถาปัตยกรรม file server แบบ Linux ที่ปลอดภัย
กำหนดค่าให้เข้าถึงได้เฉพาะ SFTP:
sudo nano /etc/ssh/sshd_config
# Add: Subsystem sftp internal-sftp
ปิดใช้งาน FTP มาตรฐานเพื่อกำจัดความเสี่ยงด้านความปลอดภัย:
sudo systemctl disable vsftpd
sudo systemctl stop vsftpd
18. เปิดใช้งานการอัปเดตอัตโนมัติของ CMS
ระบบจัดการเนื้อหา (WordPress, Drupal, Joomla) ออกแพตช์ความปลอดภัยอยู่เสมอ การเปิดใช้งานการอัปเดตอัตโนมัติช่วยให้ช่องโหว่สำคัญได้รับการแก้ไขอย่างทันท่วงที
สำหรับ WordPress ให้เพิ่มลงใน wp-config.php:
define('WP_AUTO_UPDATE_CORE', true);
add_filter('auto_update_plugin', '__return_true');
add_filter('auto_update_theme', '__return_true');
ตรวจสอบ log การอัปเดตเพื่อให้แน่ใจว่าระบบทำงานได้อย่างถูกต้องและเข้ากันได้
19. ปิดการอัปโหลดแบบไม่ระบุตัวตนผ่าน FTP
FTP แบบไม่ระบุตัวตนเปิดโอกาสให้ใครก็ได้อัปโหลดไฟล์ขึ้นเซิร์ฟเวอร์โดยไม่ต้องพิสูจน์ตัวตน ซึ่งอาจทำให้เซิร์ฟเวอร์กลายเป็นที่เก็บเนื้อหาผิดกฎหมาย มัลแวร์ หรือถูกใช้เป็นจุดกระจายการโจมตี
ตั้งค่า vsftpd ให้บังคับใช้การยืนยันตัวตน:
sudo nano /etc/vsftpd.conf
# ปิดการเข้าถึงแบบไม่ระบุตัวตน
anonymous_enable=NO
# เปิดใช้การยืนยันตัวตนสำหรับผู้ใช้ในระบบ
local_enable=YES
write_enable=YES
local_umask=022
# จำกัดผู้ใช้ให้เข้าถึงได้เฉพาะ home directory ของตัวเอง
chroot_local_user=YES
allow_writeable_chroot=YES
# การตั้งค่าความปลอดภัย
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
รีสตาร์ทบริการ FTP:
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
สร้างบัญชีผู้ใช้ FTP พร้อมสิทธิ์ที่จำกัด:
sudo adduser ftpuser
sudo usermod -d /var/ftp/uploads ftpuser
sudo chown ftpuser:ftpuser /var/ftp/uploads
sudo chmod 755 /var/ftp/uploads
ตรวจสอบ access log ของ FTP เพื่อหากิจกรรมที่น่าสงสัย:
sudo tail -f /var/log/vsftpd.log
20. ตั้งค่าการป้องกัน Brute Force
เพิ่มชั้นการป้องกัน brute force หลายชั้นนอกเหนือจาก Fail2Ban เพื่อรับมือกับการโจมตีอัตโนมัติที่ซับซ้อน
ตั้งค่าการป้องกันเพิ่มเติม:
# Limit SSH connection attempts
sudo nano /etc/ssh/sshd_config
# Add: MaxAuthTries 3
# Add: ClientAliveInterval 300
# Add: ClientAliveCountMax 2
ใช้เครื่องมืออย่าง DenyHosts ควบคู่กับ Fail2Ban เพื่อการป้องกันที่ครอบคลุม
สรุป
การรักษาความปลอดภัย Linux VPS ต้องอาศัยการป้องกันหลายชั้น ตั้งแต่การปรับค่าพื้นฐานไปจนถึงระบบตรวจสอบขั้นสูง เริ่มจากมาตรการพื้นฐานก่อน ได้แก่ การอัปเดตซอฟต์แวร์ การตั้งค่า firewall และการ hardening SSH จากนั้นจึงเพิ่มเครื่องมือขั้นสูง เช่น ระบบตรวจจับการบุกรุกและการตรวจสอบอัตโนมัติ
เซิร์ฟเวอร์ Linux ที่ปลอดภัยต้องการการดูแลรักษาอย่างต่อเนื่อง ไม่ใช่แค่ตั้งค่าครั้งเดียวแล้วจบ ตรวจสอบ log อัปเดตซอฟต์แวร์ และปรับมาตรการรักษาความปลอดภัยสม่ำเสมอตามภัยคุกคามที่เปลี่ยนแปลงไป การลงทุนกับการตั้งค่าความปลอดภัยที่ถูกต้องช่วยป้องกันการรั่วไหลของข้อมูลและรักษาความเสถียรของระบบในระยะยาว
มาตรการเหล่านี้ทำงานร่วมกัน ไม่มีเทคนิคใดที่ให้การป้องกันได้อย่างสมบูรณ์เพียงอย่างเดียว การใช้ทั้ง 20 กลยุทธ์พร้อมกันสร้างชั้นการป้องกันที่ซ้อนทับกัน ช่วยลดความเสี่ยงของเซิร์ฟเวอร์ต่อการโจมตีทั่วไปได้อย่างมีนัยสำคัญ ไม่ว่าจะต้องการความปลอดภัยสำหรับ file server แบบ Linux หรือการป้องกัน VPS hosting ทั่วไป ขั้นตอนพื้นฐานเหล่านี้ให้ความปลอดภัยที่จำเป็น