리눅스보안
geoip 설치 및 사용 방법2_2 (CentOS7)
https443
2025. 7. 20. 12:10
✅4. Maxmind 가입 및 라이센스 키 발급
* 기존에는 GeoIP 데이터가 자유롭게 배포되었지만, MaxMind는 2019년 12월부터 정책을 변경하여 GeoLite2 데이터 다운로드에 사용자 인증(계정+라이선스 키)이 필요
https://www.maxmind.com
#회원 가입 및 로그인 후 Manage License Key 메뉴에서 키 발급
#라이센스 키를 발급 후 저장 필수
(발급받은 라이센스 키는 다시 볼 수 없음. 저장 필요!)

✅5. xtables-addons 설치 (iptables에서 GeoIP match 기능 사용 가능)
cd /usr/local/src/
git clone https://github.com/mschmitt/GeoLite2xtables
cd GeoLite2xtables/
# 라이선스 키 설정
cp geolite2.license.example geolite2.license
vim geolite2.license
# YOUR_LICENSE_KEY='여기에 라이센스 키 입력' ← 작은따옴표는 일반 기호(' ')로 입력
#Maxmind 에서 발급 받은 라이센스 키 사용

✅6. GeoLite2 데이터 다운로드 및 처리
# 00_download_geolite2 스크립트에서 아래 라인 수정
vim 00_download_geolite2
# 기존 curl "$GEOLITEURL" -o "$TEMPZIP" → curl -sSL "$GEOLITEURL" -o "$TEMPZIP"
# 실행
./00_download_geolite2
./10_download_countryinfo
✅7. CSV 파일 생성
cat /tmp/GeoLite2-Country-Blocks-IPv4.csv /tmp/GeoLite2-Country-Blocks-IPv6.csv \
| ./20_convert_geolite2 /tmp/CountryInfo.txt > GeoIP-legacy.csv
# 위 명령어 사용 후 /usr/local/src/GeoLite2xtables의 GeoIP-legacy.csv 파일을 확인

✅8. CSV 파일 생성
# 1. 변환된 CSV 복사
cp -a /usr/local/src/GeoLite2xtables/GeoIP-legacy.csv /usr/local/src/xtables-addons-2.15/geoip/
# 2. xtables-addons 디렉터리로 이동
cd /usr/local/src/xtables-addons-2.15/geoip/
# 3. xt_geoip 빌드 수행
./xt_geoip_build GeoIP-legacy.csv
# 4. 결과 디렉토리 복사 (iptables에서 자동 인식 경로로)
cp -a BE /usr/share/xt_geoip/
cp -a LE /usr/share/xt_geoip/
# csv 파일 복사 이유
#xt_geoip 모듈은 /usr/share/xt_geoip/ 경로 내의 BE, LE 디렉토리에서 GeoIP 데이터를 찾기 때문
# BE, LE 디렉토리를 /usr/share/xt_geoip/로 복사하는 이유
# iptables의 GeoIP 확장 모듈(xt_geoip)은 변환된 데이터 파일들을
# /usr/share/xt_geoip/ 경로에서 자동으로 찾음
# xt_geoip_build로 생성된 BE, LE 디렉토리는 기본적으로
# **로컬 디렉토리(=현재 작업 경로)**에 생성되므로,
# 시스템이 사용하는 정식 위치인 /usr/share/xt_geoip/로 옮겨야
# iptables 명령에서 GeoIP가 동작
✅9. geoipupdate로 최신 .mmdb DB 갱신
yum install geoipupdate -y
vi /etc/GeoIP.conf
# 아래 내용 작성
AccountID YOUR_ACCOUNT_ID
LicenseKey YOUR_LICENSE_KEY
EditionIDs GeoLite2-Country GeoLite2-City GeoLite2-ASN
geoipupdate
# libmaxminddb libmaxminddb-devel
#.mmdb 포맷은 mod_geoip가 아닌 mod_maxminddb를 사용할 때 필요
# libmaxminddb, libmaxminddb-devel 패키지는 .mmdb를 사용하는 모듈을 직접 컴파일하거나 개발할 경우에만 필요
# 단순히 .mmdb 파일 갱신만 하려면 geoipupdate만으로 충분
✅10. geoipupdate로 최신 .mmdb DB 갱신
| 목적 | 사용 모듈 | 데이터 포맷 | 관련 도구 |
| Apache에서 국가/도시별 응답 | mod_geoip (구버전) / mod_maxminddb (신버전) | .dat 또는 .mmdb | geoip, geoipupdate |
| iptables에서 국가 기반 차단 | xt_geoip (xtables-addons) | BE/LE (legacy CSV 변환) | xt_geoip_build |
✅11. 테스트
#국가 차단 설정
iptables -I INPUT -m geoip --src-cc US -j DROP
#설정 확인
iptables -L INPUT -n --line-numbers
#설정 삭제
iptables -F
iptables -D INPUT (num)

✅12. dat 파일 적용
* 현재는 추가로 다운로드 불가하며 배포 중단 이전에 해당 파일을 보유해야 설정 가능
cd /usr/share/GeoIP
GeoIPCity.dat
GeoIPASNum.dat
GeoIPCity.dat
GeoIPASNumv6.dat
# 위 파일들이 /usr/share/GeoIP 경로에 있는 경우 City, ASNum 조회가 가능