Chặn theo quốc gia
Chặn truy cập từ các quốc gia được chọn ngay ở tường lửa máy chủ, chỉ cho website hoặc mọi cổng, giữ các địa chỉ tin cậy và gỡ chặn an toàn khi lỡ khoá nhầm.
Chặn theo quốc gia loại bỏ kết nối từ các dải IP của những quốc gia bạn chọn, ngay tại tường lửa máy chủ, trước khi tới nginx, SSH, mail hay panel. Hãy dùng khi website chỉ phục vụ một số khu vực và phần lớn tấn công, dò quét hay đăng ký rác đến từ những nước không có khách truy cập thật. Tính năng này giảm nhiễu, không ngăn được kẻ tấn công có chủ đích vì họ có thể dùng VPN hoặc máy chủ ở nước khác.
Đây là tính năng của quản trị viên ở trang Bảo mật, áp dụng cho toàn máy chủ chứ không cho từng website.
Cách hoạt động
- Dải địa chỉ lấy từ ipdeny.com (danh sách IPv4 và IPv6 đã gộp theo từng quốc gia) và nạp vào các tập
ipsetcủa kernel. Góiipsetđược cài ở lần đầu bạn chặn một quốc gia. - ZoPanel thêm một quy tắc vào
before.rulesvàbefore6.rulescủa UFW để loại bỏ kết nối mới từ các dải đó. Kết nối đang mở không bị cắt. - Địa chỉ trong Không bao giờ chặn luôn được cho qua.
- Danh sách tự cập nhật mỗi tuần. Một dịch vụ nhỏ,
zp-geoblock.service, nạp lại danh sách khi khởi động máy, trước khi tường lửa chạy. - Quy tắc chỉ có hiệu lực khi tường lửa (UFW) đang bật. Xem Bảo mật.
Chặn những gì
| Chế độ | Bị chặn với các quốc gia đã chọn | Vẫn truy cập được từ mọi nơi |
|---|---|---|
| Chỉ website (cổng 80 và 443) (mặc định) | Website qua HTTP và HTTPS | SSH, mail (25, 465, 587, 993, 995, 143, 110), panel (8888), webmail (2096), lịch (2080), FTP, DNS |
| Mọi cổng (tắt công tắc) | Mọi dịch vụ trên máy chủ, cả IPv4 và IPv6 | Chỉ các địa chỉ trong Không bao giờ chặn |
Quan trọng: ở chế độ mọi cổng, máy chủ mail ở các nước đó không gửi được thư tới tên miền của bạn, và ai đăng nhập SSH, panel hay hộp thư từ đó đều bị cắt. Hãy bắt đầu với Chỉ website nếu chưa chắc chắn.
Chặn quốc gia
- Mở Bảo mật và kéo xuống thẻ Chặn theo quốc gia.
- Ở Quốc gia, nhập mã ISO 3166 gồm 2 chữ cái, cách nhau bởi dấu cách, ví dụ
CN RU KP. Tối đa 60 quốc gia. - Giữ bật Chỉ website (cổng 80 và 443), hoặc tắt để chặn mọi cổng. Khi tắt, panel hỏi xác nhận Chặn mọi cổng với các quốc gia này?
- Ở Không bao giờ chặn, thêm các IP hoặc dải IP (CIDR) luôn phải được vào, mỗi dòng một: văn phòng, dịch vụ giám sát, callback của cổng thanh toán, đối tác.
- Bấm Lưu. Một tác vụ tải danh sách và áp dụng quy tắc, mất vài giây cho mỗi quốc gia.
Địa chỉ bạn đang dùng được tự thêm vào Không bao giờ chặn khi lưu, nên bạn không thể tự khoá mình khỏi panel do sơ suất. Khi đang chặn, thẻ hiển thị Đang chặn N quốc gia cùng số dải địa chỉ đã nạp và thời điểm cập nhật.
Hãy xem số dải địa chỉ sau khi lưu. Một mã không tồn tại (ví dụ gõ nhầm thành XX) không có danh sách trên ipdeny.com và không thêm dải nào mà không báo lỗi.
Địa chỉ tin cậy (fail2ban)
Thẻ Địa chỉ tin cậy (fail2ban) bên cạnh là một danh sách riêng: các IP hoặc dải IP không bao giờ bị Fail2ban khoá vì đăng nhập sai (SSH, panel, mail, lịch). Dùng cho văn phòng có người hay gõ nhầm mật khẩu, hoặc dịch vụ giám sát có đăng nhập. Tối đa 200 dòng, mỗi dòng một. Danh sách này không liên quan tới chặn quốc gia; một địa chỉ ở nước bị chặn vẫn cần có trong Không bao giờ chặn.
Ảnh hưởng tới người dùng hợp lệ
- Khách truy cập, khách hàng và bot của công cụ tìm kiếm ở nước bị chặn không mở được website. Trình duyệt báo hết thời gian kết nối, không có trang lỗi.
- Dữ liệu IP theo quốc gia không bao giờ hoàn hảo. Mạng di động, VPN và các dải mới chuyển nhượng có thể bị xếp vào nước khác. Nếu có người báo không kết nối được, hãy thêm IP của họ vào Không bao giờ chặn.
- Webhook và callback API (cổng thanh toán, đơn vị vận chuyển, dịch vụ Git) có thể đến từ máy chủ ở nước bị chặn. Thêm các dải IP họ công bố vào Không bao giờ chặn.
- Tài khoản trên Outlook mới đồng bộ qua máy chủ của Microsoft, và nhiều ứng dụng email, dịch vụ điện thoại kết nối từ trung tâm dữ liệu ở nước ngoài. Điều này chỉ ảnh hưởng ở chế độ mọi cổng.
Website đứng sau Cloudflare
Khi website đi qua proxy của Cloudflare (đám mây màu cam), mọi kết nối tới máy chủ đến từ địa chỉ của Cloudflare chứ không phải của khách truy cập. Vì vậy:
- Chặn theo quốc gia không chặn được những khách này. Hãy chặn quốc gia ngay trên Cloudflare bằng WAF custom rule theo trường quốc gia (ví dụ
ip.src.country in {"CN" "RU"}). - Nếu một dải IP của Cloudflare bị xếp vào nước bạn chặn, Cloudflare không kết nối được tới máy chủ và khách ở mọi nơi sẽ thấy trang lỗi của Cloudflare. Hãy thêm các dải IP Cloudflare công bố (cloudflare.com/ips) vào Không bao giờ chặn nếu dùng cả hai.
Công tắc Website đứng sau Cloudflare trên cùng trang giúp log và Fail2ban thấy IP thật của khách. Nó không thay đổi việc chặn theo quốc gia, vốn hoạt động ở tầng tường lửa.
Thay đổi hoặc tắt chặn
- Đổi quốc gia hoặc chế độ: sửa các trường và bấm Lưu. Danh sách được tải lại.
- Tắt: xoá trống Quốc gia và bấm Lưu. Quy tắc tường lửa, các tập địa chỉ và dịch vụ khởi động đều được gỡ.
Nếu bị khoá ngoài
Ở chế độ mọi cổng, nếu không vào được máy chủ từ nơi bạn đang ở, hãy dùng web console của nhà cung cấp VPS hoặc kết nối từ một địa chỉ trong Không bao giờ chặn, rồi chạy với quyền root:
ipset flush zp-geo4
ipset flush zp-geo6
Lệnh này xoá ngay các dải bị chặn. Sau đó đăng nhập panel, thêm địa chỉ của bạn vào Không bao giờ chặn hoặc xoá trống Quốc gia, rồi bấm Lưu. Nếu không, lần cập nhật hằng tuần hoặc lần khởi động lại tiếp theo sẽ nạp lại các dải.
Xử lý sự cố
| Thông báo hoặc hiện tượng | Nguyên nhân và cách xử lý |
|---|---|
| "invalid country code …" | Chỉ dùng mã 2 chữ cái, cách nhau bởi dấu cách hoặc dấu phẩy. |
| "at most 60 countries" | Bớt số quốc gia. |
| "invalid address …" | Mỗi dòng trong Không bao giờ chặn phải là một IP hoặc dải CIDR như 203.0.113.0/24. |
| "too many address ranges: choose fewer countries" | Các quốc gia đã chọn cộng lại có hơn 524.288 dải IPv4 hoặc IPv6. Bớt một số quốc gia. |
| "cannot find where to add the rules in /etc/ufw/before.rules" | File quy tắc UFW đã bị sửa tay và thiếu quy tắc chuẩn cho kết nối đã thiết lập. Kiểm tra file còn dòng -A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT (và before6.rules có dòng tương tự với ufw6-before-input). |
| "the firewall refused the rules (nothing changed): …" | UFW không nạp được quy tắc; quy tắc cũ đã được khôi phục. Kiểm tra UFW đã cài và đang bật. |
| Tác vụ lỗi khi tải danh sách | Không kết nối được ipdeny.com. Danh sách cũ vẫn giữ nguyên; thử lại sau. |
| Khách từ nước bị chặn vẫn vào được | Họ dùng VPN, website đứng sau Cloudflare, hoặc dải IP của họ được xếp vào nước khác. |
| Người dùng hợp lệ không kết nối được | Thêm IP hoặc dải IP của họ vào Không bao giờ chặn và bấm Lưu. |
Xem thêm
- Bảo mật
- Phần mềm email
- Cài đặt panel
- Xử lý sự cố
- Danh sách quốc gia của ipdeny.com
- Cloudflare WAF custom rules