운영중입니다

geoip 설치 및 사용 방법2_2 (CentOS7) 본문

리눅스보안

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 조회가 가능