VPS: เคล็ดลับความปลอดภัย Linux
คู่มือนี้ถูกสร้างขึ้นด้วยผลิตภัณฑ์ดังต่อไปนี้:
(รายละเอียดอาจแตกต่างกันไปตามผลิตภัณฑ์จากผู้ให้บริการต่างๆ แต่แนวคิดหลักยังคงเหมือนเดิม)
บทนำ
คู่มือนี้มีเคล็ดลับและคำแนะนำเกี่ยวกับวิธีทำให้เซิร์ฟเวอร์ Linux ของคุณปลอดภัยมากขึ้น โดยเฉพาะอย่างยิ่งเพราะเซิร์ฟเวอร์ (เสมือน) ต้องเข้าถึงจากภายนอก การป้องกันพื้นฐานจากการเข้าถึงที่ไม่พึงประสงค์จึงเป็นสิ่งที่แนะนำอย่างยิ่งและไม่ควรมองข้าม
โปรดทราบว่าคำแนะนำเหล่านี้ไม่ครอบคลุมทั้งหมด และข้อมูลเชิงลึกเพิ่มเติมสามารถหาได้ในส่วนอื่น ๆ ของเอกสาร ZAP (เช่น 2FA (SSH))
วิธีที่ง่ายที่สุดในการปกป้องเซิร์ฟเวอร์ของคุณเหมือนกันเสมอ ไม่ว่าจะเป็นเซิร์ฟเวอร์ประเภทใด: ใช้รหัสผ่านที่ปลอดภัย อัปเดตบริการของคุณอย่างสม่ำเสมอ และโดยทั่วไปให้ระวังว่าคุณจะติดตั้งบริการอะไรและทำตามคู่มือไหน
การรักษาความปลอดภัย SSH
SSH (Secure Shell) คือบริการที่ให้คุณเข้าถึงคอนโซลของเซิร์ฟเวอร์จากระยะไกลเพื่อสั่งคำสั่งบนเซิร์ฟเวอร์ ดูวิธีตั้งค่า SSH บนเซิร์ฟเวอร์ของคุณได้ที่: การเข้าถึงเบื้องต้น (SSH)
โดยค่าเริ่มต้น SSH จะใช้การล็อกอินด้วยรหัสผ่าน แต่มีข้อเสียใหญ่คือการยืนยันตัวตนอาจถูกเจาะผ่านการโจมตีแบบ brute force ได้ง่าย โดยเฉพาะถ้าคุณใช้รหัสผ่านที่ง่ายเกินไปสำหรับการล็อกอิน SSH ดังนั้นถ้าคุณเลือกใช้วิธีรหัสผ่าน โปรดใช้รหัสผ่านที่ ปลอดภัย
เพื่อปกป้องเซิร์ฟเวอร์ของคุณจากการเข้าถึง SSH ที่ไม่พึงประสงค์ให้ดียิ่งขึ้น คุณควรเปิดใช้งานการยืนยันตัวตนผ่าน SSH keys เท่านั้น และปิดการล็อกอินด้วยรหัสผ่าน ดูคู่มือ SSH Key ที่อธิบายวิธีสร้างและเพิ่ม SSH keys
การตั้งค่าพอร์ตของบริการของคุณ
บริการ | พอร์ต |
---|---|
SSH | 22 |
FTP | 21 |
25 | |
DNS | 53 |
HTTP | 80 |
HTTPS | 443 |
บริการอย่าง 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)
ตอนนี้ต้องรีสตาร์ทบริการ 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
การใช้ไฟร์วอลล์
หลักการของการเข้าถึงเซิร์ฟเวอร์จากภายนอกคือ ต้องเปิดพอร์ตเพื่อให้เซิร์ฟเวอร์เข้าถึงได้ ในกรณี 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
- กฎแรกจะบล็อกแพ็กเก็ตถ้ามีการเชื่อมต่อมากกว่า 2 ครั้งในสถานะ
TIME_WAIT
ไปยังพอร์ต 22 จาก IP เดียวกัน - กฎที่สองจะเพิ่มที่อยู่ IP ของการเชื่อมต่อใหม่ลงในรายการ
recent
- กฎที่สามจะบล็อกการเชื่อมต่อใหม่จาก 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 ทั้งสำเร็จและล้มเหลว
คุณจะเห็นบรรทัดนี้:
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
- และอื่น ๆ อีกมากมาย...