Cài đặt và cấu hình MaxMind GeoIP với CSF để chặn quốc gia trên VPS/Server
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
- 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).
- 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
- 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ệ.