Cài đặt và cấu hình MaxMind GeoIP với CSF để chặn quốc gia trên VPS/Server

Tác giả: 30/09/2025

Cài đặt và sử dụng MaxMind GeoIP với CSF

 

 

 

 

MaxMind là công ty cung cấp cơ sở dữ liệu định vị địa lý dựa trên địa chỉ IP, được sử dụng để xác định vị trí địa lý của một thiết bị. Để sử dụng, bạn cần tạo tài khoản GeoLite2 miễn phí, tải về cơ sở dữ liệu, và sau đó tích hợp nó vào ứng dụng hoặc phần mềm của bạn, ví dụ như CSF để chặn truy cập từ các quốc gia cụ thể.

 

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.

https://www.maxmind.com/en/create-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).

  1. 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

  1. 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.

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 1h sáng.

0 1 * * * /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é.

Mở file cấu hình CSF

File csf sẽ nằm ở vị trí sau. Bạn sử dụng trình sửa file để mở.

vi /etc/csf/csf.conf

Cấu hình chặn quốc gia

Tìm dòng CC_DENY và thêm mã quốc gia (https://localizely.com/iso-3166-1-alpha-2-list/) muốn chặn. Ví dụ, chặn Trung Quốc (CN), Brazil (BR) và Ấn Độ (IN),

Tìm 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”

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é.

Trước khi chặn:

Sau khi chặn:

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.

 

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ệ.