เมื่อคุณนั่งอยู่หลัง Cloudflare คุณควร เพียง อนุญาตการจราจรจากช่วง IP ของ Cloudflare บนพอร์ต 80 และ 443 Cloudflare จะอัปเดตช่วงเหล่านี้เป็นระยะ ดังนั้นกฎของ UFW จำเป็นต้องรีเฟรชโดยอัตโนมัติ สคริปต์จาก cloudflare‑ufw, โดย พอล รีด ทำเช่นนั้นได้อย่างสมบูรณ์แบบ.
1. ดาวน์โหลดและทำให้สคริปต์สามารถเรียกใช้งานได้
bashsudo wget -O /usr/local/bin/cloudflare-ufw.sh \
https://raw.githubusercontent.com/Paul-Reed/cloudflare-ufw/refs/heads/master/cloudflare-ufw.sh
sudo chmod +x /usr/local/bin/cloudflare-ufw.sh
2. ตรวจสอบกฎปัจจุบันของ UFW (ก่อนการเปลี่ยนแปลง)
bashsudo ufw status verbose
คุณอาจเห็นบางอย่างที่คล้ายกับ:
textTo Action From
-- ------ ----
22/tcp ALLOW ทุกที่
80/tcp ALLOW ทุกที่
443 ALLOW ทุกที่
...
3. ลบกฎ 80/443 ที่อนุญาตมากเกินไป
กฎเหล่านี้ในปัจจุบันอนุญาตให้ ใดๆ IP ที่จะเข้าถึงพอร์ตเว็บของคุณ เราจะแทนที่ด้วยกฎเฉพาะ Cloudflare เท่านั้น.
bashsudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp
หาก UFW ขอให้ยืนยัน ให้พิมพ์ y และกด Enter.
ตรวจสอบสถานะอีกครั้ง:
bashsudo ufw status verbose
คุณไม่ควรเห็นอีกต่อไป 80/tcp หรือ 443 กับ อนุญาต จาก ที่ไหนก็ได้.
4. รันสคริปต์ Cloudflare‑UFW
bashsudo /usr/local/bin/cloudflare-ufw.sh
สิ่งที่สคริปต์ทำ:
- ดึงช่วง IPv4 และ IPv6 ล่าสุด Cloudflare จาก
https://www.cloudflare.com/ips-v4และ.../ips-v6. - ลบกฎ UFW ที่มีอยู่สำหรับพอร์ต 80 และ 443 ที่อนุญาต
ที่ไหนก็ได้. - เพิ่มใหม่
อนุญาตกฎ เพียง สำหรับแต่ละช่วง IP Cloudflare บนพอร์ต 80 (HTTP) และ 443 (HTTPS). - โหลดใหม่ UFW ตามต้องการเพื่อให้กฎใหม่มีผลทันที.
เมื่อเสร็จสิ้นแล้ว ให้ตรวจสอบ:
bashsudo ufw status verbose
คุณควรเห็นหลายบรรทัดเช่น:
textถึง: ผู้ดำเนินการ จาก
-- ------ ----
80/tcp อนุญาต 173.245.48.0/20
80/tcp อนุญาต 103.21.244.0/22
...
443 อนุญาต 173.245.48.0/20
443 อนุญาต 103.21.244.0/22
...
ไอพีอื่น ๆ ทั้งหมดถูกปฏิเสธโดยปริยายสำหรับพอร์ต 80/443.
5. อัตโนมัติการอัปเดตประจำวันด้วย cron
Cloudflare สามารถเปลี่ยนช่วง IP ได้ตลอดเวลา เพื่อให้ไฟร์วอลล์ของคุณทำงานสอดคล้องกัน ให้กำหนดเวลาให้สคริปต์ทำงานทุกวัน (เช่น เวลา 03:00).
แก้ไข crontab หลัก:
bashsudo crontab -e
หากมีการแจ้งให้เลือก โปรดเลือกโปรแกรมแก้ไขที่คุณต้องการ (เช่น, นาโน).
เพิ่มบรรทัดต่อไปนี้ที่ท้ายสุด:
text0 3 * * * /usr/local/bin/cloudflare-ufw.sh >> /var/log/cloudflare-ufw.log 2>&1
นี่คือสิ่งที่ทำ:
- รันสคริปต์ทุกวันเวลา 03:00 น. ตามเวลาเซิร์ฟเวอร์.
- เพิ่มต่อท้ายผลลัพธ์และข้อผิดพลาดไปยัง
/var/log/cloudflare-ufw.logสำหรับการตรวจสอบ.
บันทึกและออกจากโปรแกรมแก้ไข.
6. ตรวจสอบงาน cron
แสดงรายการ crontab ของ root เพื่อยืนยัน:
bashsudo crontab -l
คุณควรเห็นแถวใหม่.
หากต้องการ สามารถบังคับให้ทำงานทันทีและตรวจสอบบันทึกได้:
bashsudo /usr/local/bin/cloudflare-ufw.sh
sudo tail -n 20 /var/log/cloudflare-ufw.log
7. การบำรุงรักษาอย่างต่อเนื่อง
เพื่อรีเฟรชกฎด้วยตนเองเมื่อใดก็ได้:
bashsudo /usr/local/bin/cloudflare-ufw.sh
เพื่อตรวจสอบบันทึก:
bashsudo less /var/log/cloudflare-ufw.log
หากคุณต้องการย้อนกลับไปใช้ “อนุญาตทุกที่” (ไม่แนะนำสำหรับการใช้งานจริง):
bashsudo ufw delete allow from any to any port 80 proto tcp sudo ufw delete allow from any to any port 443 proto tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp
ด้วยการตั้งค่านี้ ไฟร์วอลล์ UFW ของคุณจะยอมรับเฉพาะการรับส่งข้อมูล HTTP/HTTPS จากช่วง IP ปัจจุบันของ Cloudflare เท่านั้น ซึ่งจะช่วยลดพื้นที่เสี่ยงต่อการโจมตีได้อย่างมาก ในขณะที่ยังคงรับประกันว่าเว็บไซต์ของคุณสามารถเข้าถึงได้ผ่าน Cloudflare.
ใส่ความเห็น