NỘI DUNG
Cài đặt và sử dụng MaxMind GeoIP với CSF chặn quốc gia hiệu quả
MaxMind là gì?
MaxMind là một công ty cung cấp cơ sở dữ liệu định vị địa lý (GeoIP) dựa trên địa chỉ IP, giúp xác định vị trí địa lý của một thiết bị, như quốc gia, thành phố, hoặc nhà cung cấp dịch vụ internet (ISP). Cơ sở dữ liệu GeoLite2 (phiên bản miễn phí) của MaxMind được sử dụng phổ biến để chặn truy cập từ các quốc gia cụ thể khi tích hợp với CSF (ConfigServer Security & Firewall).
Mục đích sử dụng
- Chặn truy cập từ các quốc gia không mong muốn (ví dụ: để giảm nguy cơ tấn công DDoS hoặc brute force).
- Tăng cường bảo mật cho VPS/server.
- Quản lý lưu lượng truy cập hiệu quả, cho phép chỉ một số quốc gia truy cập.
Cách cài đặt và cấu hình MaxMind GeoIP
1. Tạo tài khoản MaxMind và lấy License Key
Truy cập trang đăng ký GeoLite2 và tạo tài khoản miễn phí. Sau đó đăng nhập vào MaxMind Account.
Sau khi đã đăng nhập xong bạn cần thực hiện tạo License Key để sử dụng. Vào Manage License Keys => Generate New License Key.
Lưu lại Account ID và License Key (cần để tải cơ sở dữ liệu GeoIP).

2. Cài đặt công cụ geoipupdate
Công cụ geoipupdate
giúp tải và cập nhật cơ sở dữ liệu GeoIP từ MaxMind.
- Cài đặt trên CentOS/Almalinux
yum install epel-release
yum install geoipupdate
- Trên Ubuntu
add-apt-repository ppa:maxmind/ppa
apt update
apt install geoipupdate
3. Cấu hình file GeoIP.conf
Bạn thực hiệ mở file cấu hình /etc/GeoIP.conf
. Và cập nhật các thông tin sau đã tạo ở mục 1
- AccountID: Điền Account ID từ MaxMind.
- LicenseKey: Điền License Key từ MaxMind.
- EditionIDs: Sử dụng GeoLite2-Country.

3. Tải và cập nhật cơ sở dữ liệu GeoIP
Bây giờ bạn chạy lệnh để tải cơ sở dữ liệu. Cơ sở dữ liệu sẽ được lưu tại /usr/share/GeoIP/GeoLite2-Country.mmdb
.
geoipupdate
Để tự động cập nhật cơ sở dữ liệu (khuyến nghị). Bạn hãy đặt một cron để hệ thống tự update nhé.
Mở crontab -e
và đặt một lịch như sau. Lịch này sẽ chạy hằng ngày vào lúc 2h sáng.
0 2 * * * /usr/bin/geoipupdate
Tích hợp MaxMind GeoIP với CSF
Một số trường hợp bạn cần chặn một quốc gia cụ thể. Bạn có thể sử dụng CSF để chặn như sau. Nhưng để làm được bạn đừng quên trên máy chủ phải được Cài đặt CSF nhé.
1. Mở file cấu hình CSF
Fiel csf sẽ nằm ở vị trí sau. Bạn sử dụng trình sửa file để mở nhứ
vi /etc/csf/csf.conf
2. Cấu hình chặn quốc gia
Tìm dòng CC_DENY và thêm mã quốc gia (ISO 3166-1 alpha-2) muốn chặn. Ví dụ, chặn Trung Quốc (CN), Brazil (BR) và Ấn Độ (IN),
- Tim nhanh mã quốc gia tại https://countrycode.org/
CC_DENY = "CN,IN,BR"
Hoặc sử dụng CC_ALLOW để chỉ cho phép một số quốc gia (các quốc gia khác sẽ bị chặn). Ví dụ, chỉ cho phép Việt Nam (VN) và Singapore (SG):
CC_ALLOW = "VN,SG"
3. Bật tính năng GeoIP
Tìm dòng LF_GEOIP và đặt thành 1. Nếu trong file không có dòng này, bạn có thể thêm vào.
LF_GEOIP = "1"
Lưu ý: Đảm bảo đường dẫn đến cơ sở dữ liệu GeoIP là /usr/share/GeoIP/GeoLite2-Country.mmdb
Sau khi sửa xong bạn lưu lại file và thoát ra. Thực hiện khởi động lại dịch vụ CSF
csf -r
Bây giờ bạn hãy kiểm tra xem đã chặn thành công chưa nhé.

Lưu ý:
- Độ chính xác: Cơ sở dữ liệu GeoLite2 có độ chính xác khoảng 95-99% cho quốc gia, nhưng không hoàn hảo.
- SEO: Chặn quốc gia có thể ảnh hưởng đến Google Bot. Sử dụng CC_ALLOW hoặc thêm IP Google Bot vào /etc/csf/csf.allow.
- Hiệu suất: Chặn nhiều quốc gia có thể làm chậm server. Hãy cân nhắc danh sách đen bổ sung như SPAMHAUS hoặc BOGON.
Tổng kết:
MaxMind GeoIP, khi tích hợp với CSF, giúp chặn truy cập từ các quốc gia không mong muốn, tăng cường bảo mật cho server. Hãy đảm bảo cập nhật cơ sở dữ liệu GeoIP định kỳ và kiểm tra cấu hình CSF cẩn thận để tránh chặn nhầm lưu lượng hợp lệ.