Skip to content

5 กฎทองสำหรับความปลอดภัยเซิร์ฟเวอร์ Linux (คู่มือปฏิบัติ 2026)

BellosatoTech Team

5 กฎทองสำหรับความปลอดภัยเซิร์ฟเวอร์ Linux (คู่มือปฏิบัติ 2026)

เซิร์ฟเวอร์ Linux ที่เชื่อมต่อกับอินเทอร์เน็ตจะถูกสแกนโดยบอตอัตโนมัติภายในไม่กี่นาทีนับจากที่ได้รับ IP address สาธารณะ นี่ไม่ใช่การพูดเกินจริง — มันคือความเป็นจริงในชีวิตประจำวันของทุกคนที่ดูแลโครงสร้างพื้นฐานออนไลน์

ข่าวดีคือการโจมตีส่วนใหญ่ที่ประสบความสำเร็จไม่ได้ใช้ประโยชน์จากช่องโหว่ที่ซับซ้อน แต่ใช้ประโยชน์จากการกำหนดค่าที่ปล่อยไว้เป็นค่าเริ่มต้น การเปลี่ยนค่าเริ่มต้นเหล่านั้นอย่างมีระบบและเป็นลำดับที่ถูกต้องคือสิ่งที่แยกเซิร์ฟเวอร์ที่เปิดเผยออกจากเซิร์ฟเวอร์ที่ได้รับการปกป้อง

นี่คือ 5 กฎที่เราใช้กับทุกเครื่องที่เราดูแล ตั้งแต่ VPS ส่วนตัวไปจนถึงเซิร์ฟเวอร์องค์กรในระบบ production ไม่ใช่ทฤษฎี — นี่คือ checklist จริงที่เราใช้ในทุก deployment ใหม่


สารบัญ

  1. SSH: ปิดใช้งาน Root Login
  2. ไฟร์วอลล์: นโยบาย Deny-All ด้วย UFW
  3. Fail2ban: การป้องกัน Anti-Brute Force
  4. การอัปเดตความปลอดภัยอัตโนมัติ
  5. Audit Trail ด้วย auditd
  6. คำถามที่พบบ่อย

1. SSH: ปิดใช้งาน Root Login

SSH คือโปรโตคอลที่อนุญาตให้เข้าถึงเซิร์ฟเวอร์ Linux จากระยะไกล เป็นเครื่องมือที่ขาดไม่ได้สำหรับผู้ดูแลระบบทุกคน — และยังเป็นประตูแรกที่ผู้โจมตีทุกคนพยายามบุกเข้า

เหตุผลนั้นง่ายมาก: บนเซิร์ฟเวอร์ Linux ทุกเครื่อง ผู้ใช้ root มีอยู่เสมอและมีสิทธิ์สูงสุด หากผู้โจมตีสามารถเข้าถึงในฐานะ root ได้ พวกเขาจะควบคุมเครื่องได้อย่างสมบูรณ์ การกำจัดความเป็นไปได้นี้ตั้งแต่ต้นคือมาตรการที่ตรงไปตรงมาและมีประสิทธิภาพสูงสุดที่คุณสามารถทำได้

การกำหนดค่าที่ถูกต้องต้องการการเปลี่ยนแปลงสามอย่าง: ป้องกัน login โดยตรงในฐานะ root ปิดใช้งานการตรวจสอบสิทธิ์ด้วยรหัสผ่าน (แทนที่ด้วย cryptographic keys ที่ปลอดภัยกว่ามาก) และเปลี่ยน port ที่ฟังเพื่อลด noise ใน log

# /etc/ssh/sshd_config

PermitRootLogin no           # ไม่อนุญาตการเข้าถึงโดยตรงในฐานะ root
PasswordAuthentication no    # เฉพาะ cryptographic keys เท่านั้น ไม่มีรหัสผ่าน
PubkeyAuthentication yes

# แนะนำแต่เป็นตัวเลือก:
Port 2222                    # Port ที่ไม่ใช่มาตรฐาน ลดการสแกนอัตโนมัติ
MaxAuthTries 3               # สูงสุด 3 ครั้งต่อการเชื่อมต่อ
LoginGraceTime 20            # ตัดการเชื่อมต่อหากไม่ได้รับการตรวจสอบสิทธิ์ภายใน 20 วินาที

หลังจากบันทึกไฟล์แล้ว ให้รีสตาร์ทบริการ:

sudo systemctl restart sshd

⚠️ คำเตือนเชิงปฏิบัติ: ก่อนปิด session ปัจจุบัน ให้เปิด SSH connection ที่สองด้วยผู้ใช้ที่ไม่ใช่ root เพื่อตรวจสอบว่าทุกอย่างทำงานได้ ขั้นตอนนี้ดูเหมือนชัดเจน แต่หลายคนข้ามไป — และการล็อกตัวเองออกจากเซิร์ฟเวอร์ของตัวเองเป็นประสบการณ์ที่คุณต้องการทำเพียงครั้งเดียวเท่านั้น


2. ไฟร์วอลล์: นโยบาย Deny-All ด้วย UFW

ลองนึกภาพไฟร์วอลล์เหมือนระบบอินเตอร์คอมของอาคารอพาร์ตเมนต์: หากไม่มีมัน ใครก็สามารถเคาะประตูใดก็ได้ ด้วยไฟร์วอลล์ที่กำหนดค่าถูกต้อง เฉพาะผู้ที่มีเหตุผลที่ถูกต้องเท่านั้นที่สามารถขอเข้ามาได้ — และเฉพาะที่ประตูที่คุณตัดสินใจเปิด

กลยุทธ์ที่ปลอดภัยที่สุดเรียกว่า default deny: การรับส่งข้อมูลขาเข้าทั้งหมดถูกบล็อกตามค่าเริ่มต้น และเปิดเฉพาะสิ่งที่จำเป็นอย่างชัดเจนเท่านั้น

UFW (Uncomplicated Firewall) คือเครื่องมือที่เข้าถึงได้มากที่สุดสำหรับการใช้ตรรกะนี้บน Debian และ Ubuntu:

ufw default deny incoming     # บล็อกการรับส่งข้อมูลขาเข้าทั้งหมด
ufw default allow outgoing    # อนุญาตการเชื่อมต่อขาออก

ufw allow 2222/tcp            # SSH (port ที่เปลี่ยนในขั้นตอนที่ 1)
ufw allow 80/tcp              # HTTP
ufw allow 443/tcp             # HTTPS

ufw enable
ufw status verbose            # ตรวจสอบการกำหนดค่าที่ใช้งาน

สำหรับบริการที่ควรเข้าถึงได้เฉพาะจาก IP address เฉพาะเจาะจง เช่น ฐานข้อมูลที่ไม่ควรเข้าถึงได้จากภายนอก:

# ตัวอย่าง: PostgreSQL เข้าถึงได้เฉพาะจาก IP ที่ได้รับอนุญาต
ufw allow from 203.0.113.10 to any port 5432

รายละเอียดนี้ — การจำกัดฐานข้อมูลให้กับ IP ที่เชื่อถือได้ — เป็นหนึ่งในแง่มุมที่ถูกละเลยมากที่สุดในการกำหนดค่าที่เราพบบ่อยในการตรวจสอบ ฐานข้อมูลมักเข้าถึงได้สาธารณะโดยที่ไม่มีใครสังเกตเห็น


3. Fail2ban: การป้องกัน Anti-Brute Force

แม้แต่กับ SSH ที่กำหนดค่าถูกต้อง บอตก็จะยังคงพยายามเข้าถึงต่อไป พวกมันทำงานโดยอัตโนมัติ ต่อเนื่อง บนเซิร์ฟเวอร์หลายล้านเครื่องพร้อมกัน Fail2ban หยุดพวกมันตั้งแต่ต้น: มันตรวจสอบ log ของระบบและบล็อก IP address ที่แสดงพฤติกรรมน่าสงสัย โดยอัตโนมัติ

ในทางปฏิบัติ: หลังจากความพยายามล้มเหลวจำนวนหนึ่งที่กำหนดค่าได้ IP จะถูกเพิ่มในรายการบล็อกชั่วคราวผ่านไฟร์วอลล์ บอตไม่ได้รับแม้แต่ข้อความแสดงข้อผิดพลาด — มันถูกละเลยไปเลย

# การติดตั้ง
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

การกำหนดค่าควรทำในไฟล์แยกต่างหาก — อย่าแก้ไขไฟล์กำหนดค่าหลัก เพราะจะถูกเขียนทับทุกครั้งที่มีการอัปเดต:

sudo nano /etc/fail2ban/jail.local
[DEFAULT]
bantime  = 1h         # IP ยังคงถูกบล็อกเป็นเวลา 1 ชั่วโมง
findtime = 10m        # ช่วงเวลาการตรวจสอบ: 10 นาที
maxretry = 5          # หลังจาก 5 ครั้งที่ล้มเหลว จะเกิด ban
ignoreip = 127.0.0.1/8 ::1

[sshd]
enabled  = true
port     = 2222       # SSH port ที่คุณกำหนดค่า
maxretry = 3          # เข้มงวดมากขึ้นสำหรับ SSH: 3 ครั้ง
bantime  = 24h        # ban ที่นานขึ้นสำหรับผู้ที่พยายามบน SSH

เพื่อตรวจสอบว่าทุกอย่างทำงานได้และตรวจสอบการ ban ที่ใช้งานอยู่:

sudo fail2ban-client status sshd

4. การอัปเดตความปลอดภัยอัตโนมัติ

ช่องโหว่ซอฟต์แวร์ไม่ใช่ความเป็นไปได้ที่ห่างไกล: มันถูกค้นพบอย่างต่อเนื่อง เผยแพร่ในฐานข้อมูล CVE และถูกใช้ประโยชน์อย่างแข็งขัน — บ่อยครั้งภายในไม่กี่ชั่วโมงหลังการเปิดเผยต่อสาธารณะ ระบบที่ไม่ได้รับการแพตช์จะสะสมความเสี่ยงในช่วงเวลาอย่างเงียบๆ

วิธีแก้ไขไม่ใช่การตื่นดึกเพื่อใช้แพตช์ด้วยตนเอง แต่คือการทำให้แพตช์ความปลอดภัยเป็นอัตโนมัติโดยเฉพาะ

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

wizard ที่เปิดขึ้นจะถามคุณว่าต้องการเปิดใช้งานการอัปเดตความปลอดภัยอัตโนมัติหรือไม่ คำตอบคือใช่ สำหรับผู้ที่ต้องการเจาะลึกการกำหนดค่า ไฟล์กำหนดค่าอยู่ที่ /etc/apt/apt.conf.d/50unattended-upgrades

ขั้นตอนหนึ่งที่คุ้มค่าเสมอ: ทดสอบการกำหนดค่าก่อนให้มันทำงานโดยอัตโนมัติ

sudo unattended-upgrade --dry-run --debug

output จะแสดงสิ่งที่จะได้รับการอัปเดตโดยไม่ต้องใช้อะไร ใช้เวลาสองนาทีและช่วยให้คุณหลีกเลี่ยงความประหลาดใจ


5. Audit Trail ด้วย auditd

กฎสี่ข้อแรกลดพื้นที่การโจมตี กฎนี้มีจุดประสงค์ที่แตกต่างออกไป: การรู้ว่าเกิดอะไรขึ้น เกิดขึ้นเมื่อใด และใครทำ — ทั้งในกรณีเกิดเหตุการณ์และเพื่อการปฏิบัติตามกฎระเบียบ (GDPR, ISO 27001, PCI-DSS)

auditd คือระบบย่อยการตรวจสอบที่รวมอยู่ใน Linux kernel มันบันทึกในระดับระบบปฏิบัติการ: การเข้าถึงไฟล์สำคัญ การเปลี่ยนแปลงการกำหนดค่า คำสั่งที่ดำเนินการด้วยสิทธิ์สูง และความพยายามยกระดับสิทธิ์

sudo apt install auditd -y
sudo systemctl enable auditd
sudo systemctl start auditd

กฎการตรวจสอบกำหนดสิ่งที่ต้องตรวจสอบ ชุดที่เล็กน้อยแต่มีความหมายสำหรับเซิร์ฟเวอร์ใดๆ:

# ไฟล์ authentication: การเปลี่ยนแปลงใดๆ คือเหตุการณ์ที่ควรตรวจสอบ
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k sudoers

# การกำหนดค่า SSH: การเปลี่ยนแปลงที่ไม่ได้รับอนุญาตถือเป็นสัญญาณเตือน
-w /etc/ssh/sshd_config -p wa -k sshd_config

# คำสั่งทุกคำสั่งที่ดำเนินการในฐานะ root จะถูกบันทึก
-a always,exit -F arch=b64 -F euid=0 -S execve -k root_commands

เพื่อตรวจสอบ log ในรูปแบบที่อ่านได้:

sudo ausearch -k identity --start today
sudo aureport --auth
sudo aureport --summary

การมี log เหล่านี้กำหนดค่าไม่ใช่แค่การปฏิบัติที่ดีทางเทคนิค — ในหลายบริบทมันเป็นข้อกำหนดตามกฎระเบียบ และเมื่อมีบางอย่างผิดพลาด การมีบันทึกเหตุการณ์ที่แม่นยำจะลดเวลาการตอบสนองและการวิเคราะห์ลงอย่างมาก


สรุป: Checklist การ Hardening

#กฎความสำคัญความซับซ้อน
1ปิดใช้งาน SSH root login + cryptographic keys🔴 สำคัญมากต่ำ
2ไฟร์วอลล์ UFW ด้วยนโยบาย deny-all🔴 สำคัญมากต่ำ
3Fail2ban anti-brute force🟠 สูงต่ำ
4การอัปเดตความปลอดภัยอัตโนมัติ🟠 สูงต่ำ
5Audit trail ด้วย auditd🟡 ปานกลางปานกลาง

กฎ 5 ข้อนี้ครอบคลุมเวกเตอร์การโจมตีที่พบบ่อยที่สุดและแทนจุดเริ่มต้นที่จำเป็นสำหรับเซิร์ฟเวอร์ใดๆ ที่เชื่อมต่อกับอินเทอร์เน็ต สำหรับการ hardening ที่ก้าวหน้ายิ่งขึ้น เส้นทางจะดำเนินต่อไปด้วยการวิเคราะห์ตาม CIS Benchmarks, SELinux หรือ AppArmor, IDS/IPS และโซลูชัน SIEM


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

ฉันจะรู้ได้อย่างไรว่าเซิร์ฟเวอร์ของฉันถูกบุกรุก?

สัญญาณที่พบบ่อยที่สุดคือ: การชะลอตัวกะทันหันโดยไม่มีสาเหตุที่ชัดเจน การรับส่งข้อมูลเครือข่ายที่ผิดปกติ ผู้ใช้หรือกระบวนการที่ไม่รู้จักในระบบ และรายการที่ผิดปกติใน log การตรวจสอบสิทธิ์ ในหลายกรณีการบุกรุกยังคงเงียบเป็นเวลาหลายสัปดาห์ — นั่นคือเหตุผลที่ audit trail ในข้อที่ 5 มีความสำคัญมาก

การเปลี่ยน SSH port ทำให้เซิร์ฟเวอร์ปลอดภัยขึ้นจริงหรือ?

การเปลี่ยน port ไม่ได้เพิ่มความปลอดภัยที่แท้จริง — ผู้โจมตีที่ตั้งใจจะสแกน port ทั้งหมดในไม่กี่วินาที ประโยชน์ในทางปฏิบัติคือการลด noise ใน log อย่างมาก ความปลอดภัยที่แท้จริงของ SSH มาจากการตรวจสอบสิทธิ์ด้วย public key ไม่ใช่หมายเลข port

Fail2ban เพียงพอต่อการต่อต้านการโจมตี brute force หรือไม่?

Fail2ban มีประสิทธิภาพสูงต่อสแกนเนอร์อัตโนมัติและการโจมตีแบบกระจายที่มีความเข้มข้นต่ำ อย่างไรก็ตาม จุดเริ่มต้นสำหรับการป้องกันที่แข็งแกร่งจริงๆ ต้องเป็นการตรวจสอบสิทธิ์ด้วย public key เท่านั้น: หากปิดใช้งานรหัสผ่าน การโจมตี brute force บนข้อมูลประจำตัวก็ไม่เกี่ยวข้องอีกต่อไป

ควรอัปเดตเซิร์ฟเวอร์ production บ่อยแค่ไหน?

แพตช์ความปลอดภัยสำหรับช่องโหว่วิกฤต (ที่มีคะแนน CVSS สูง) ควรใช้ภายใน 24 ถึง 72 ชั่วโมงหลังการเผยแพร่ สำหรับสิ่งอื่นๆ ทั้งหมด หน้าต่างการบำรุงรักษารายสัปดาห์หรือสองสัปดาห์ถือเป็นการปฏิบัติที่สมเหตุสมผล

UFW เหมาะสำหรับเซิร์ฟเวอร์ทุกประเภทหรือมีกรณีที่ไม่เพียงพอ?

UFW มากกว่าเพียงพอสำหรับเซิร์ฟเวอร์ส่วนใหญ่: VPS, เว็บเซิร์ฟเวอร์, สภาพแวดล้อมการพัฒนา และโครงสร้างพื้นฐานขนาดเล็กถึงกลาง สำหรับสถานการณ์ที่ซับซ้อนกว่า จำเป็นต้องทำงานโดยตรงกับ iptables หรือ nftables

มาตรการเหล่านี้เพียงพอสำหรับเซิร์ฟเวอร์ที่จัดการข้อมูลที่ละเอียดอ่อนหรือไม่?

มันเป็นจุดเริ่มต้นที่แข็งแกร่ง ไม่ใช่เส้นชัย เซิร์ฟเวอร์ที่ประมวลผลข้อมูลส่วนบุคคล ข้อมูลทางการเงิน หรือดำเนินการในอุตสาหกรรมที่มีการกำกับดูแลต้องการแนวทางที่มีโครงสร้างมากขึ้น: การวิเคราะห์การปฏิบัติตามกฎระเบียบ การจัดการ secrets ที่ปลอดภัย การสำรองข้อมูลที่เข้ารหัสและทดสอบเป็นประจำ และการทดสอบ penetration เป็นระยะ


ดูแลเซิร์ฟเวอร์อยู่และไม่แน่ใจว่าจุดอ่อนอยู่ที่ไหน? เราดำเนินการตรวจสอบโครงสร้างพื้นฐาน: วิเคราะห์การกำหนดค่าปัจจุบัน ระบุช่องโหว่ และเสนอแผนการแก้ไขที่เป็นรูปธรรมและจัดลำดับความสำคัญ ติดต่อเรา

ความปลอดภัย linux server hardening linux vps ssh ปลอดภัย ไฟร์วอลล์ ufw fail2ban auditd hardening เซิร์ฟเวอร์