본문 바로가기
SW/서버보안

Rocky GeoIP 방화벽 설치 방법 해외 공격 차단 [maxmind]

by bigju 2025. 3. 19.
반응형

 

리눅스를 운영하다보면 공격에 대비하기 위해 단독 방화벽을 많이 설치한다.

하지만

나는 주머니가 털털이기에 방화벽 프로그램을 설치해야하기에

IPTABLES를 많이 이용하지만 한계점은 있다.

 

해외로부터 특정 포트 및 IP를 막고 싶을때 설치하는 GeoIP

Centos 7도 이제 서비스가 끝난 시점

모두가 Rocky로 넘어가기에 나도 늦게 합류해서 GeoIP를 설치 진행.

 


[설치환경]

Rocky Linux 9

 

📸글*사진 @ 빅주

 



​1. 패키지 설치

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

2. Perl 모듈 설치 진행

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

 


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

 


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

 

[사이트에 접속 후 가입을 진행]

본인 상황에 맞게 작성 후 진행하며 메일이 온다.


 

[링크를 클릭해서 P/W 설정]

까먹으면 곤란하다.

왜냐 난 영어 약하니까


https://www.maxmind.com/en/account/login

 

로그인을 하면 해당 아이디에 대한 라이센스 발급이 가능

manage license keys -> generate new license key


4. GeoIP 다운로드 및 설정 진행

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

[라이센스 입력을 위해 파일 오픈]

vi /usr/local/src/geoip/GeoLite2xtables/geolite2.license

 

geolite2.license 라이센스를 넣어주면 된다


 

vi /usr/local/src/geoip/GeoLite2xtable /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

 

이제 Rocky에 GeoIP를 설치 진행해봅시다

[현재 위치 : /usr/local/src/geoip/GeoLite2xtables]

./00_download_geolite2 실행
 
./10_download_countryinfo 실행
 
./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

[xt_geoip_build 실행]

[위치 : /usr/local/src/geoip]

/usr/libexec/xtables-addons/xt_geoip_dl
/usr/libexec/xtables-addons/xt_geoip_build dbip-country-lite.csv

 

 


 

5.  Rocky GeoIP 데이터 이전 및 xt_geoip 모듈 추가 

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

 


6. GeoIP 정책 수립

 

iptables -A OUTPUT -m state --state NEW -m geoip --dst-cc CH -j DROP  // 중국에 대한 모든 접근 차단

iptables -A INPUT -p tcp --dport 443 -m geoip ! --src-cc KR -j DROP // 한국 제외한 모든 국가 443 포트 차단

 

 

완성!

반응형

댓글

메인으로가기


    

Big Ju

IT Engineer


항상 답을 위해 노력하는

엔지니어입니다.

 

 

    


 UP!