반응형
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
한국 이외의 모든 국가를 차단
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 |