YUMSERV
Published 2021. 8. 29. 16:00
GeoIP 셋팅 LINUX/보안
반응형

GeoIP란 MaxMind에서 제공하는 국가별 로 IP를 확인할 수 있는 오픈소스 라이브러리로 , 이 라이브러리를 통해서 국가별로 서버에 접근하는 것을 관리 할 수 있습니다.

 

* 설치 환경 : CentOS7

 

1. 필수 패키지 설

yum install gcc gcc-c++ make automake unzip zip xz kernel-devel iptables-devel

 

2. Xtables-addon 패키지 설치

xtables-addon과 iptables 호환 버전

xtables 3 버전의 경우, iptables 1.6 이상
xtables 2 버전의 경우 iptables 1.4 이상
cd /usr/local/src
wget https://jaist.dl.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.14.tar.xz
tar xvf xtables-addon-2.14.tar.gz
./configure
make && make install

 

 

xtables-addons 설치시 에러)

checking for libxtables… no
configure: error: Package requirements (xtables >= 1.4.5) were not met:
No package ‘xtables’ found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables libxtables_CFLAGS
and libxtables_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

해결책)
yum -y install iptables-devel
configure: error: Package requirements (xtables >= 1.6.0) were not met:
Reqested 'xtables >= 1.6.0' but version of xtables is 1.4.21

iptables -V
iptables v1.4.21

iptables 과 호환버전으로 설치할 것.
make
make  all-recursive
make[1]: Entering directory `/usr/local/src/xtables-addons-2.14'
Making all in extensions
make[2]: Entering directory `/usr/local/src/xtables-addons-2.14/extensions'
Xtables-addons 2.14 - Linux make: Entering an unknown directory
make: *** /lib/modules/3.10.0-1160.el7.x86_64/build: 그런 파일이나 디렉터리가 없습니다.  멈춤.
make: Leaving an unknown directory
make[2]: *** [modules] 오류 2
make[2]: Leaving directory `/usr/local/src/xtables-addons-2.14/extensions'
make[1]: *** [all-recursive] 오류 1
make[1]: Leaving directory `/usr/local/src/xtables-addons-2.14'
make: *** [all] 오류 2

해결책)
ln s /usr/src/kernels/3.10.0 1160.36.2.el7.x86_64/ /lib/modules/3.10.0 1160.el7.x86_64/build

 

 

3. GeoIP 모듈 셋팅

2019 년  12월 30일 부터 공개 GeoLite2 페이지 , geolite.maxmind.com/download/geoip/database/* 또는 기타 공개 URL에서 다운로드가 더 이상 제공되지 않습니다  .
참고) https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/

따라서 회원가입 이후 라이센스를 발급받은 뒤에 홈페이지에서 다운로드를 진행합니다.

 

GeoLite2-Country-CSV 다운로드 후 서버에 업로드 진행

unzip GeoLite2-Country-CSV_20210824.zip
mkdir -p /usr/share/xt_geoip
./xtables-addons-2.14/geoip/xt_geoip_build -D /usr/share/xt_geoip/ ./GeoLite2-Country-CSV_20210824/*.csv

이후에 데이터베이스 파일은 /usr/share/xt_geoip/BE /usr/share/xt_geoip/LE  디렉토리 안에 데이터파일로 생기게 됩니다.

 

4. iptables를 이용한 GeoIP 허용, 차단 정책

* 국가별 코드
https://dev.maxmind.com/geoip/legacy/codes?lang=en 

 

GeoIP2 Release Notes - 2021 Archive

Develop applications using industry-leading IP intelligence and risk scoring.

dev.maxmind.com

한국 이외의 모든 국가를 차단
iptables -I INPUT -p tcp -m geoip ! --src-cc KR -j DROP

한국에서만 SSH 접속을 허용
iptables -I INPUT -p tcp --dport 22 -m geoip --src-cc KR -j ACCEPT

 

5. GeoIP 업데이트

업데이트를 진행할 때마다, 홈페이지에서 다운로드를 받아야 합니다.

#!/bin/bash

sysdate=`date '+%Y%m%d'`
license_key="라이선스키입력"

# 원본 geoip 데이터베이스 백업
cp arp /usr/share /xt_geoip /usr/share/xt_geoip_$sysdate

# geoip 업데이트
cd /usr/local/src
wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=$license_key&suffix=zip" -O GeoLite2-Country-CSV.zip
update_date=`unzip l GeoLite2-Country-CSV.zip | grep LICENSE.txt | awk '{print $4}' | cut f 2 d'_' | cut f 1 d '/'`
unzip GeoLite2-Country-CSV.zip
cd GeoLite2-Country-CSV_$update_date
/usr/local/src/xtables-addons-2.14/geoip/xt_geoip_build -D /usr/share/xt_geoip/ ./GeoLite2-Country-C SV_$sysdate/*.csv

# iptables 재시작
systemctl restart iptables

 

반응형

'LINUX > 보안' 카테고리의 다른 글

리눅스 해킹점검  (0) 2019.07.07
ClamAV 무료 백신 사용  (0) 2019.07.07
Telegram봇을 통해 ssh 접속 로그 확인  (0) 2019.07.05
Google OTP 이용해서 SSH 인증  (0) 2019.06.25
profile

YUMSERV

@lena04301

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!