Cách tự động cập nhật các quy tắc UFW với các địa chỉ IP Cloudflare

Khi bạn ngồi sau Cloudflare, bạn nên chỉ cho phép lưu lượng truy cập từ các dải địa chỉ IP của Cloudflare qua các cổng 80 và 443. Cloudflare cập nhật các dải địa chỉ này theo định kỳ, do đó các quy tắc UFW cần được tự động làm mới. Tập lệnh từ Cloudflare-UFW, của Paul Reed, chính xác là như vậy.

1. Tải xuống và thiết lập quyền thực thi cho tập lệnh

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. Kiểm tra các quy định hiện hành của UFW (trước khi có sự thay đổi)

bashsudo ufw status verbose

Bạn có thể sẽ thấy nội dung như sau:

textHành động Từ
-- ------ ----
22/tcp CHO PHÉP Từ mọi nơi
80/tcp CHO PHÉP Từ mọi nơi
443 CHO PHÉP Từ mọi nơi
...

3. Loại bỏ các quy tắc 80/443 quá thoáng

Hiện tại, các quy định này cho phép bất kỳ Địa chỉ IP để truy cập các cổng web của bạn. Chúng tôi sẽ thay thế chúng bằng các quy tắc chỉ áp dụng cho Cloudflare.

bashsudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp

Nếu UFW yêu cầu xác nhận, hãy nhập y và nhấn phím Enter.

Kiểm tra lại trạng thái:

bashsudo ufw status verbose

Bạn sẽ không còn thấy 80/TCP hoặc 443 cùng với CHO PHÉP từ Bất cứ đâu.

4. Chạy tập lệnh Cloudflare‑UFW

bashsudo /usr/local/bin/cloudflare-ufw.sh

Chức năng của tập lệnh:

  • Lấy các dải địa chỉ IPv4 và IPv6 mới nhất của Cloudflare từ https://www.cloudflare.com/ips-v4 Và .../IPv6.
  • Xóa tất cả các quy tắc UFW hiện có cho các cổng 80 và 443 cho phép Bất cứ đâu.
  • Thêm mới CHO PHÉP quy tắc chỉ đối với mỗi dải địa chỉ IP Cloudflare trên cổng 80 (HTTP) và 443 (HTTPS).
  • Tùy chọn: Tải lại UFW để các quy tắc mới có hiệu lực ngay lập tức.

Sau khi hoàn tất, hãy kiểm tra:

bashsudo ufw status verbose

Bây giờ bạn sẽ thấy nhiều dòng như sau:

textNgười gửi Người nhận
-- ------ ----
80/tcp CHO PHÉP 173.245.48.0/20
80/tcp CHO PHÉP 103.21.244.0/22
...
443 CHO PHÉP 173.245.48.0/20
443 CHO PHÉP 103.21.244.0/22
...

Tất cả các địa chỉ IP khác đều bị từ chối truy cập vào các cổng 80/443 theo mặc định.

5. Tự động hóa việc cập nhật hàng ngày bằng cron

Cloudflare có thể thay đổi dải địa chỉ IP của mình bất cứ lúc nào. Để đảm bảo tường lửa của bạn luôn được cập nhật, hãy lên lịch chạy tập lệnh này hàng ngày (ví dụ: lúc 03:00).

Chỉnh sửa tệp crontab gốc:

bashsudo crontab -e

Nếu được yêu cầu, hãy chọn trình soạn thảo ưa thích của bạn (ví dụ:, nano).

Thêm dòng sau vào cuối:

text0 3 * * * /usr/local/bin/cloudflare-ufw.sh >> /var/log/cloudflare-ufw.log 2>&1

Điều này sẽ:

  • Chạy tập lệnh này hàng ngày vào lúc 03:00 theo giờ máy chủ.
  • Ghi kết quả và thông báo lỗi vào /var/log/cloudflare-ufw.log để kiểm toán.

Lưu và thoát khỏi trình soạn thảo.

6. Kiểm tra tác vụ cron

Hiển thị danh sách crontab của người dùng root để xác nhận:

bashsudo crontab -l

Bạn sẽ thấy dòng mới.

Nếu muốn, bạn có thể buộc hệ thống chạy ngay lập tức và kiểm tra nhật ký:

bashsudo /usr/local/bin/cloudflare-ufw.sh
sudo tail -n 20 /var/log/cloudflare-ufw.log

7. Bảo trì thường xuyên

Để làm mới các quy tắc theo cách thủ công bất cứ lúc nào:

bashsudo /usr/local/bin/cloudflare-ufw.sh

Để kiểm tra nhật ký:

bashsudo less /var/log/cloudflare-ufw.log

Nếu bạn cần khôi phục lại chế độ “cho phép ở mọi nơi” (không được khuyến nghị trong môi trường sản xuất):

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

Với cấu hình này, tường lửa UFW của bạn sẽ chỉ chấp nhận lưu lượng HTTP/HTTPS từ các dải IP hiện tại của Cloudflare, giúp giảm đáng kể diện tích tấn công đồng thời đảm bảo các trang web của bạn vẫn có thể truy cập được qua Cloudflare.

Trang này có hữu ích không?

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *