OS

2024.08.30 16:04

Rocky Linux 9 환경에서 iptables 에 geoip 연동하기(maxmind)

  • 비아웹 오래 전 2024.08.30 16:04 인기
  • 138
    0

안녕하세요

호스팅 전문기업 비아웹입니다.

Rocky Linux 9 환경에서 iptables 에 GeoIP 연동 하는 부분에 대해 정리합니다.

해당 geoip 데이터 베이스는 maxmind.com(https://www.maxmind.com/en/home) 데이터를 사용합니다.

1.사전 준비

- Rocky Linux 9 최소 설치

- Selinux disable

- firewalld 서비스 stop / disable

  • systemctl disable firewalld --now
    
 

2. 패키지 설치

  • dnf install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-9.noarch.rpm
    dnf install iptables-services iptables-devel xtables-addons perl-Text-CSV_XS perl-App-cpanminus wget unzip
    
 

3. perl 모듈 설치

  • cpanm Net::CIDR::Lite
    cpanm Text::CSV_XS
    
 

4. maxmind 회원 가입 및 라이센스 키 발급

  • 회원 가입 

    https://www.maxmind.com/en/geolite2/signup?utm_source=kb&utm_medium=kb-link&utm_campaign=kb-create-account
    

     

  • 이메일 확인 및 패스워드 설정

  • 키 발급

    https://www.maxmind.com/en/account/login
    
    manage license keys 
    	generate new license key
    
 
  • 키 복사

    uploaded_66d16daf93b6f.png

     

5. geoip 다운로드 프로그램 및 설정

  • 관련 git source : https://github.com/mschmitt/GeoLite2xtables

  • mkdir /usr/local/src/geoip
    cd /usr/local/src/geoip
    
    wget https://github.com/mschmitt/GeoLite2xtables/archive/refs/heads/master.zip
    
    unzip master.zip
    mv GeoLite2xtables-master GeoLite2xtables
    
    cd GeoLite2xtables/
    cp geolite2.license.example geolite2.license
    
  •  
  • geolite2.license 키 입력

  • 00_download_geolite2 수정

  • #!/bin/bash -e
    
    source "$(dirname "$(readlink -f "$0")")/geolite2.license"
    TEMPZIP=$(mktemp)
    GEOLITEURL="https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=${YOUR_LICENSE_KEY}&suffix=zip"
    #curl $GEOLITEURL > $TEMPZIP   ## 주석
    wget $GEOLITEURL -O  $TEMPZIP    ## 라인 추가
    unzip -d /tmp -o -j $TEMPZIP '*/GeoLite2-Country-Blocks*'
    rm $TEMPZIP
    
 
 
  •  
  • uploaded_66d16dae96bb3.jpg

 

  • 00_download_geolite2 실행

  • uploaded_66d16daf0a2fb.jpg
  •  
  • 10_download_countryinfo 실행

  • uploaded_66d16daf74b29.jpg
 
  •  
  • 20_convert_geolite2 실행

  • cat /tmp/GeoLite2-Country-Blocks-IPv4.csv /tmp/GeoLite2-Country-Blocks-IPv6.csv | ./20_convert_geolite2 /tmp/CountryInfo.txt > /usr/local/src/geoip/dbip-country-lite.csv
 
  •  
  • uploaded_66d16dafb5f62.jpg
  •  
  • xt_geoip_build 실행

  • cd /usr/local/src/geoip
    
    /usr/libexec/xtables-addons/xt_geoip_dl
    
    /usr/libexec/xtables-addons/xt_geoip_build dbip-country-lite.csv
  • uploaded_66d16daec0027.jpg
  •  

6. geoip 데이터 이전 및 xt_geoip 모듈 추가

  • mkdir /usr/share/xt_geoip/
    mv ./*.iv* /usr/share/xt_geoip/
    modprobe xt_geoip
    
  •  

7. 테스트

  • iptables -A OUTPUT -m state --state NEW -m geoip --dst-cc CH -j DROP
    

이상과 같이 Rocky Linux 9 환경에서 iptables 에서 geoip 사용하는 방법에 대해 정리하였습니다.

geoip 데이터는 주기적(주, 월) 업데이트가 필요하니, 이상의 작업 과정을 스크립트 작성하셔서 cron 등록 후 사용하시기 바랍니다.

감사합니다.

호스팅 전문기업 비아웹

 

 

  • 공유링크 복사

    댓글목록

    등록된 댓글이 없습니다.