ข้ามไปยังเนื้อหาหลัก

VPS: เคล็ดลับความปลอดภัย Linux

คู่มือนี้ถูกสร้างขึ้นด้วยผลิตภัณฑ์ดังต่อไปนี้:

(รายละเอียดอาจแตกต่างกันไปตามผลิตภัณฑ์จากผู้ให้บริการต่างๆ แต่แนวคิดหลักยังคงเหมือนเดิม)

บทนำ

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

ข้อมูล

โปรดทราบว่าคำแนะนำเหล่านี้ไม่ครอบคลุมทั้งหมด และข้อมูลเชิงลึกเพิ่มเติมสามารถหาได้ในส่วนอื่น ๆ ของเอกสาร ZAP (เช่น 2FA (SSH))

เคล็ดลับ

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

การรักษาความปลอดภัย SSH

SSH (Secure Shell) คือบริการที่ให้คุณเข้าถึงคอนโซลของเซิร์ฟเวอร์จากระยะไกลเพื่อสั่งคำสั่งบนเซิร์ฟเวอร์ ดูวิธีตั้งค่า SSH บนเซิร์ฟเวอร์ของคุณได้ที่: การเข้าถึงเบื้องต้น (SSH)

โดยค่าเริ่มต้น SSH จะใช้การล็อกอินด้วยรหัสผ่าน แต่มีข้อเสียใหญ่คือการยืนยันตัวตนอาจถูกเจาะผ่านการโจมตีแบบ brute force ได้ง่าย โดยเฉพาะถ้าคุณใช้รหัสผ่านที่ง่ายเกินไปสำหรับการล็อกอิน SSH ดังนั้นถ้าคุณเลือกใช้วิธีรหัสผ่าน โปรดใช้รหัสผ่านที่ ปลอดภัย

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

การตั้งค่าพอร์ตของบริการของคุณ

บริการพอร์ต
SSH22
FTP21
Mail25
DNS53
HTTP80
HTTPS443

บริการอย่าง SSH หรือ FTP จะใช้พอร์ตเดียวกันโดยค่าเริ่มต้น (บางส่วนแสดงในตารางด้านบน) หากผู้ไม่หวังดีภายนอกต้องการโจมตี brute force บริการ SSH ของเซิร์ฟเวอร์ คุณต้องรู้ก่อนว่าพอร์ตไหนใช้สำหรับ SSH ถ้าคุณไม่เปลี่ยนพอร์ต พอร์ต 22 และ 21 จะเป็นเป้าหมายหลักสำหรับการสั่งคำสั่งบนเซิร์ฟเวอร์หรือเข้าถึงไฟล์ผ่าน FTP

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

อันตราย

พอร์ตที่คุณเลือกต้องอยู่ระหว่าง 1024 ถึง 65536 และไม่ควรเป็นพอร์ตที่ถูกใช้งานอยู่แล้ว!

คุณสามารถใช้คำสั่ง cat /etc/services เพื่อแสดงพอร์ตมาตรฐานบางส่วน เพื่อป้องกันการเลือกพอร์ตที่ถูกใช้งานแล้ว

พอร์ต SSH

เพื่อเปลี่ยนพอร์ต SSH คุณต้องแก้ไขไฟล์คอนฟิก ซึ่งโดยปกติจะอยู่ที่ /etc/ssh/sshd_config แต่ถ้าไม่เจอที่นั่น ให้ใช้คำสั่งนี้ค้นหา

find / -name "sshd_config" 2>/dev/null

เปิดไฟล์ด้วย nano (ในฐานะ root หรือใช้ sudo)

sudo nano /etc/ssh/sshd_config

เพิ่มพอร์ตที่ต้องการหลัง Port ถ้า Port ถูกคอมเมนต์ไว้ (เช่น #Port 22) ให้ลบ "#" ออกแล้วแทนที่ 22 ด้วยพอร์ตที่คุณต้องการ จากนั้นบันทึกไฟล์ (ใน Nano กด Ctrl + o) และปิดไฟล์ (Ctrl + x)

Port sshd

ตอนนี้ต้องรีสตาร์ทบริการ SSH เพื่อให้การเปลี่ยนแปลงมีผล

# ตัวอย่างบน Ubuntu/Debian/CentOS
sudo systemctl restart sshd

พอร์ต FTP

ถ้าคุณติดตั้งบริการ FTP เช่น proFTPd คุณก็สามารถเปลี่ยนพอร์ตได้ง่าย ๆ โดยแก้ไขไฟล์คอนฟิก ขั้นตอนจะคล้ายกับ SSH

ค้นหาไฟล์คอนฟิก proftpd.conf

find / -name "proftpd.conf" 2>/dev/null

ไฟล์นี้โดยปกติจะอยู่ที่ /etc/proftpd.conf (CentOS) หรือ /etc/proftpd/proftpd.conf (Ubuntu, Debian)
เปิดไฟล์ด้วย nano แล้วลบ "#" หน้า port ออก และใส่พอร์ตที่ต้องการหลังคำว่า port โปรดระวังไม่ใส่พอร์ตที่ไม่ถูกต้องตามข้อมูลข้างต้น

เคล็ดลับ

ใช้ Ctrl + W เพื่อค้นหาใน nano

nano /etc/proftpd/proftpd.conf

Port proftpd

การใช้ไฟร์วอลล์

หลักการของการเข้าถึงเซิร์ฟเวอร์จากภายนอกคือ ต้องเปิดพอร์ตเพื่อให้เซิร์ฟเวอร์เข้าถึงได้ ในกรณี SSH พอร์ตที่เปิด โดยค่าเริ่มต้น คือ 22/TCP (ดูวิธีเปลี่ยนพอร์ตด้านบน)

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

เพื่อบรรเทาปัญหาเหล่านี้ คุณสามารถตั้งกฎไฟร์วอลล์เพื่อจำกัดการเข้าถึงพอร์ตที่เปิดอยู่

มีวิธีหลัก ๆ สองแบบให้เลือกใช้:

  • IPTables: ไฟร์วอลล์ Linux แบบดั้งเดิม มีตัวเลือกเยอะ แต่ใช้งานซับซ้อนกว่า
  • UFW: อินเทอร์เฟซที่ง่ายกว่า IPTables สำหรับใช้งานโดยไม่ต้องใช้คำสั่งซับซ้อน แต่มีข้อจำกัดมากกว่า

สุดท้ายแล้วขึ้นอยู่กับคุณว่าจะเลือกใช้วิธีไหน บางแอปพลิเคชันอาจต้องการความยืดหยุ่นของ IPTables แต่บางครั้ง UFW ก็เพียงพอแล้ว (เช่น ถ้าคุณแค่ต้องการเปิด/ปิดพอร์ต ซึ่งยังดีกว่าไม่ทำอะไรเลย!)

IPTables

ในส่วนนี้ คุณจะใช้ IPTables สร้างกฎหลายข้อเพื่อจำกัดจำนวนครั้งที่พยายามเชื่อมต่อ คำอธิบายคำสั่งแต่ละบรรทัดอยู่ใต้โค้ดบล็อก

โปรดทราบว่ากฎนี้จะใช้กับ พอร์ต 22 เท่านั้น (ค่าหลัง --dport) และคำสั่งสำหรับบริการอื่นต้องปรับเปลี่ยนตาม

บันทึก

คำสั่งต่อไปนี้อาจไม่ทำงานในทุกดิสโทร Linux แต่จะทำงานในดิสโทรยอดนิยมส่วนใหญ่

ล็อกอินเข้าเซิร์ฟเวอร์ Linux ของคุณก่อน ถ้าต้องการความช่วยเหลือดูคู่มือ การเข้าถึงเบื้องต้น (SSH) จากนั้นรันคำสั่งตามลำดับนี้

iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 2 --connlimit-mask 32 -j DROP
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 1 --hitcount 2 -j DROP
  1. กฎแรกจะบล็อกแพ็กเก็ตถ้ามีการเชื่อมต่อมากกว่า 2 ครั้งในสถานะ TIME_WAIT ไปยังพอร์ต 22 จาก IP เดียวกัน
  2. กฎที่สองจะเพิ่มที่อยู่ IP ของการเชื่อมต่อใหม่ลงในรายการ recent
  3. กฎที่สามจะบล็อกการเชื่อมต่อใหม่จาก IP ที่พยายามเชื่อมต่อเกิน 2 ครั้งใน 1 วินาทีที่ผ่านมา

UFW

อย่างที่บอกไป UFW คืออินเทอร์เฟซที่ง่ายกว่า IPTables ขั้นตอนแรกคือติดตั้ง UFW เพราะโดยปกติจะไม่มีติดตั้งมาในทุกดิสโทร Linux คุณควรรันคำสั่งในฐานะ root หรือใช้ sudo

ล็อกอินเข้าเซิร์ฟเวอร์ Linux ของคุณก่อน ถ้าต้องการความช่วยเหลือดูคู่มือ การเข้าถึงเบื้องต้น (SSH) คำแนะนำนี้ใช้ Debian และ Ubuntu เป็นตัวอย่าง แต่ควรใช้ได้กับดิสโทรอื่น ๆ ด้วย

อัปเดต apt และอัปเกรดบริการที่มีอยู่

sudo apt update && sudo apt upgrade -y

ติดตั้ง UFW ผ่าน apt

sudo apt install ufw -y

ตรวจสอบการติดตั้งด้วยคำสั่งนี้

sudo ufw status
> Firewall not loaded

เพื่อไม่ให้ล็อกตัวเองออกจากเซิร์ฟเวอร์ ต้องเปิดใช้งานบริการ ssh ก่อนเปิดไฟร์วอลล์

คำเตือน

ถ้าคุณเปลี่ยนพอร์ต SSH แล้ว ให้ใช้พอร์ตใหม่แทน 22 ในคำสั่งด้านล่าง

ใช้คำสั่งนี้เปิดใช้งาน ssh

sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status

ผลลัพธ์ที่สำเร็จควรเป็นแบบนี้

Status: active

To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)

รันคำสั่งนี้เพื่อจำกัดการเชื่อมต่อที่ 6 ครั้งต่อนาที

ufw limit 22/tcp
บันทึก

UFW จำกัดการเชื่อมต่อได้แค่ 6 ครั้งต่อนาทีเท่านั้น ตัวจำกัดของ UFW ค่อนข้างง่ายและอาจไม่เหมาะกับทุกสถานการณ์ สำหรับการตั้งค่าที่ละเอียดและยืดหยุ่นกว่า แนะนำให้ใช้ IPTables โดยตรง

เคล็ดลับ

ไฟร์วอลล์ (ไม่ว่าจะ IPTables หรือ UFW) จะนับจำนวนการเชื่อมต่อและบล็อกตามนั้นเท่านั้น แต่ Fail2Ban สามารถตรวจสอบไฟล์ล็อกเพื่อหาความผิดปกติได้ ส่วนถัดไปจะอธิบายวิธีติดตั้งและเปิดใช้งาน Fail2Ban

มาตรการป้องกันเพิ่มเติมด้วย Fail2Ban

Fail2Ban คือบริการที่บล็อกที่อยู่ IP ที่พยายามเชื่อมต่อเซิร์ฟเวอร์ด้วยเจตนาไม่ดี Fail2Ban จะตรวจสอบไฟล์ล็อกเพื่อหาความผิดปกติและช่วยปกป้องระบบของคุณได้อย่างมีประสิทธิภาพและง่ายดาย

หลังติดตั้ง Fail2Ban จะมาพร้อมกับการตั้งค่าล่วงหน้าสำหรับบริการที่ใช้บ่อย เช่น:

  • apache
  • lighttpd
  • sshd
  • qmail
  • postfix
  • Courier Mail Server
    คุณสามารถเพิ่มบริการอื่น ๆ ได้ง่าย ๆ โดยใช้ regular expression (RegEx) และระบุไฟล์ล็อกที่ต้องการ

ตัวอย่างเช่น ดูบรรทัดใน /var/log/auth.log ซึ่งเก็บข้อมูลการล็อกอิน SSH ทั้งสำเร็จและล้มเหลว
/var/log/auth.log

คุณจะเห็นบรรทัดนี้:

Dec 2 12:59:19 vps-zap515723-2 sshd[364126]: Failed password for root from 92.117.xxx.xxx port 52504 ssh2

Fail2Ban ใช้ไฟล์ล็อกนี้ตรวจสอบการยืนยันตัวตนที่ล้มเหลว เพราะไฟล์ล็อกมีที่อยู่ IP ของผู้โจมตีโดยตรง Fail2Ban จึงบล็อก IP นั้นหลังจากพยายามล้มเหลวหลายครั้ง

การติดตั้ง Fail2Ban

ล็อกอินเข้าเซิร์ฟเวอร์ Linux ของคุณก่อน ถ้าต้องการความช่วยเหลือดูคู่มือ การเข้าถึงเบื้องต้น (SSH) คุณควรรันคำสั่งในฐานะ root หรือใช้ sudo

sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

หลังติดตั้ง Fail2Ban ให้ตรวจสอบสถานะด้วย systemctl: (กด Ctrl+C เพื่อออกจาก systemctl)

systemctl status fail2ban.service
* fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor pres>
Active: active (running) since Sat 2023-12-02 13:10:33 UTC; 24s ago
Docs: man:fail2ban(1)
Process: 23988 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, statu>
Main PID: 23989 (fail2ban-server)
CPU: 409ms
CGroup: /system.slice/fail2ban.service
`-23989 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Starting Fail2Ban Service...
Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Started Fail2Ban Service.
Dec 02 13:10:34 vps-zap515723-1 fail2ban-server[23989]: Server ready

การตั้งค่า Fail2Ban

ตอนนี้ติดตั้ง Fail2Ban แล้ว แต่ยังไม่เปิดใช้งานหรือกำหนดค่า ดูที่ /etc/fail2ban คุณจะเห็นไฟล์เหล่านี้

action.d fail2ban.d jail.conf paths-arch.conf paths-debian.conf
fail2ban.conf filter.d jail.d paths-common.conf paths-opensuse.conf

เพื่อสร้าง "jail" ที่เปิดใช้งานได้ ให้สร้างไฟล์ชื่อ jail.local โดยคัดลอกเนื้อหาจาก jail.conf แล้วเปิดไฟล์ใหม่

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

ตอนนี้คุณสามารถตั้งค่าทุกอย่างในไฟล์ jail.local รวมถึงบริการที่ต้องการตรวจสอบ
ให้ดูเฉพาะส่วนหลัง [Default] ซึ่งเป็นการตั้งค่าทั่วไป

เลื่อนลงมาจนเจอส่วนนี้และปรับตามตัวอย่างนี้:

คุณสมบัติคำอธิบายค่า
ignoreipที่อยู่ IP ที่ไม่ควรถูกบล็อก127.0.0.1/8
ignorecommandไม่เกี่ยวข้อง
bantimeระยะเวลาที่ IP จะถูกบล็อก1h
findtimeช่วงเวลาที่นับการล็อกอินล้มเหลว10m
maxretryจำนวนครั้งที่ล้มเหลวก่อนจะถูกบล็อก5
# สามารถกำหนดโดยใช้ช่องว่าง (และ/หรือ คอมม่า) คั่น
#ignoreip = 127.0.0.1/8 ::1

# ignorecommand = /path/to/command <ip>
ignorecommand =

# "bantime" คือจำนวนวินาทีที่โฮสต์จะถูกบล็อก
bantime = 1h

# โฮสต์จะถูกบล็อกถ้ามี "maxretry" ครั้งในช่วง "findtime"
findtime = 10m

# "maxretry" คือจำนวนครั้งที่ล้มเหลวก่อนถูกบล็อก
maxretry = 5

ตั้งค่าพื้นฐานเสร็จแล้ว เพื่อเฝ้าดูบริการ SSH เลื่อนลงไปที่แท็ก [sshd] ถ้าคุณเปลี่ยนพอร์ต ให้ใส่พอร์ตใหม่ใน port

แท็ก [sshd] จะมีลักษณะดังนี้:

[sshd]

enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
เคล็ดลับ

คุณสามารถตั้งค่าเฉพาะสำหรับแต่ละบริการได้ (เช่น maxretry ที่นี่ต่ำกว่าค่าพื้นฐาน) แม้ว่าคุณจะตั้งค่าทั่วไปไว้แล้ว คุณก็ยังสามารถปรับแต่งแต่ละบริการได้อีก ถ้าไม่ตั้งค่าเฉพาะ จะใช้ค่าทั่วไปแทน

ตอนนี้แค่รีสตาร์ท Fail2Ban เพื่อเริ่มเฝ้าดู

sudo systemctl restart fail2ban.service

ตรวจสอบการทำงานของ Fail2Ban

ถ้าคุณมี VPN หรือเซิร์ฟเวอร์สำรอง คุณสามารถลองบล็อกตัวเองด้วย Fail2Ban เพื่อดูว่าบริการทำงานหรือไม่ ด้วย VPN หรือฮอตสปอตมือถือ คุณจะได้ IP ใหม่ที่ช่วยให้ทดสอบ Fail2Ban ได้

อันตราย

อย่าทดสอบบนเครือข่ายปกติของคุณ เพราะ IP ของคุณอาจถูกบล็อกและคุณจะ ล็อกเอาต์ออกจากเซิร์ฟเวอร์

ลองเชื่อมต่อ SSH ไปยังเซิร์ฟเวอร์ (ด้วย IP ที่ต่างกัน!) และใส่รหัสผ่านผิดหลายครั้ง ผลลัพธ์ควรเป็นแบบนี้:

root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
root@185.223.29.xxx: Permission denied (publickey,password).
root@vps-zap515723-2:/var/log# ssh root@185.223.29.179
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
^C
root@vps-zap515723-2:/var/log# ssh root@185.223.29.xxx
ssh: connect to host 185.223.29.xxx port 22: Connection refused

คุณจะเห็นว่าเซิร์ฟเวอร์ที่ป้องกันด้วย Fail2Ban ปฏิเสธการเชื่อมต่อ (Connection refused แทนที่จะเป็น Permission denied)

แสดงสถานะ Fail2Ban คุณจะเห็นว่ามี IP ถูกบล็อก

fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 4
| |- Total failed: 8
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: xxx

ถ้าต้องการปลดบล็อก IP ใช้คำสั่งนี้: fail2ban-client set sshd unbanip {your IP}

ข้อมูล

ถ้าคุณมีจำนวน IP ที่ถูกบล็อกสูงผิดปกติ แนะนำให้เพิ่มเวลาบล็อกทุกครั้งที่มีการพยายามล็อกอินล้มเหลว เพื่อจำกัดจำนวนครั้งที่พยายามล็อกอิน

[sshd]

enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 4

bantime = 1h
# เวลาบล็อกจะเพิ่มขึ้นทุกครั้งที่บล็อก IP นี้
bantime.increment = true
# อัตราการเพิ่มเวลาบล็อกเป็น 24 ชั่วโมง (1h,24h,48h,3d,4d....)
bantime.factor = 24
# เวลาบล็อกสูงสุด = 5 สัปดาห์
bantime.maxtime = 5w

การรักษาความปลอดภัยเว็บเซิร์ฟเวอร์ด้วย Cloudflare

หลายคนใช้ Cloudflare เป็นผู้จัดการ DNS ของโดเมน Cloudflare ไม่เพียงแต่มีเครือข่ายที่ใหญ่ที่สุดในโลก ช่วยลดเวลาโหลดหน้าเว็บ ลดความหน่วง และเพิ่มประสบการณ์โดยรวม แต่ยังปกป้องเว็บไซต์ของคุณจากการโจมตี DoS/DDoS รวมถึงการโจมตีแบบ flooding และรูปแบบใหม่ ๆ ที่เกิดขึ้นทุกวัน

ในคู่มือนี้ คุณจะได้เรียนรู้วิธีปกป้องเว็บเซิร์ฟเวอร์จากการโจมตี

เราจะเริ่มจากสมมติว่าโดเมนของคุณถูกจัดการโดย Cloudflare แล้ว ถ้าไม่ใช่ คุณสามารถทำตาม คู่มือของพวกเขา เพื่อย้ายโดเมนของคุณ ไปที่แท็บ DNS Records ในแดชบอร์ดของ Cloudflare และตรวจสอบให้แน่ใจว่าระเบียนของเว็บเซิร์ฟเวอร์ของคุณมีเมฆสีส้มและแสดงสถานะ "Proxied"

ตอนนี้ทราฟฟิกทั้งหมดที่ผ่านโดเมนของคุณจะผ่าน Cloudflare ก่อนถึงเซิร์ฟเวอร์ของคุณ ซึ่งเป็นทราฟฟิกที่ถูกต้องตามกฎหมาย
อย่างไรก็ตาม เซิร์ฟเวอร์ของคุณยังเข้าถึงได้จากภายนอก Cloudflare อยู่ คุณต้องจำกัดการเข้าถึงพอร์ต 80 และ 443 ของโปรโตคอล TCP บนเซิร์ฟเวอร์ Linux ของคุณ และอนุญาตการเข้าถึงเฉพาะทราฟฟิกที่มาจาก Cloudflare เท่านั้น

ทำได้โดยจำกัดการเข้าถึงด้วยกฎไฟร์วอลล์โดยใช้ รายชื่อ IPv4 สาธารณะของ Cloudflare และ รายชื่อ IPv6 สาธารณะของ Cloudflare

อีกทางเลือกคือใช้เครื่องมืออย่าง Cloudflare-ufw เพื่อเพิ่มกฎไฟร์วอลล์เหล่านี้จำนวนมากอย่างรวดเร็ว
ตรวจสอบให้แน่ใจว่าไม่มีการตั้งกฎแยกที่อนุญาตให้เข้าถึงเว็บเซิร์ฟเวอร์โดยไม่จำกัด นอกจากกฎที่คุณเพิ่งเพิ่ม มิฉะนั้นกฎจะไม่ทำงาน

สรุป - เซิร์ฟเวอร์ของคุณปลอดภัยขึ้นมากแล้ว!

คู่มือนี้แสดงฟังก์ชันพื้นฐานและขั้นสูงสำหรับการรักษาความปลอดภัยเซิร์ฟเวอร์ Linux ของคุณ หากคุณทำตามคำแนะนำทั้งหมดที่เหมาะกับระบบของคุณ เซิร์ฟเวอร์ของคุณก็ปลอดภัยขึ้นมากแล้ว - ยินดีด้วย!

ยังมีมาตรการเพิ่มเติมที่สามารถทำได้อีก:

  • 2FA (SSH)
  • เพิ่มการตั้งค่าเพิ่มเติมให้ Fail2Ban
  • ตั้งค่าการแจ้งเตือนทางเมลใน Fail2Ban
  • และอื่น ๆ อีกมากมาย...