Ubuntu maxmind GeoIP.dat + iptables geoip

| 2020년 3월 31일 | 0 Comments


Ubuntu maxmind GeoIP.dat + iptables geoip

maxmind 에서는 IP 정보를 유/무료 형태로 관리하여 배포한다. 
기존 GeoIP 데이터를 일부버전은 무료로 오픈하였으나 2019년 12월 30일부터 GeoLite2로 명칭을 변경하면서 회원가입한 사용자만을 대상으로 라이센스키를 발급하여 다운로드 하는 형태로 바뀌었다.

기존 페이지에서는 2019년 12월 30일 이후부터는 다운로드할 수 없으며 새로운 다운로드 방법으로 마이그레이션 해야한다고 명시 되어있다.

세부사항은 아래 maxmind 블로그를 참고하세요
https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/

maxmind 회원가입 
https://idchowto.com/?p=52681

 

설치 테스트환경
iwinv 가상서버
OS : Ubuntu 18.04 LTS 

# cat /etc/issue
Ubuntu 18.04.3 LTS \n \l
 
# iptables -m geoip
iptables v1.6.1: Couldn’t load match `geoip’:No such file or directory
 
Try `iptables -h’ or ‘iptables –help’ for more information.

 

설치에 필요한 기본패키지 설치

# apt install -y unzip libtext-csv-xs-perl
# apt install -y libmoosex-types-netaddr-ip-perl xtables-addons-common

 

여기서는 mschmitt github 에서 배포하고 있는 GeoLite2xtables 스크립트를 이용해서 설치 및 업데이트 방법으로 진행한다.

# git clone https://github.com/mschmitt/GeoLite2xtables
# cd GeoLite2xtables


회원가입을 통해 발급받은 라이센스키 입력

# cp geolite2.license.example geolite2.license
# vim geolite2.license
YOUR_LICENSE_KEY='<LICENSE_KEY>’

 

데이타 정보 다운로드

# ./00_download_geolite2
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1743k 100 1743k 0 0 1812k 0 –:–:– –:–:– –:–:– 1810k
Archive: /tmp/tmp.LvtWjSCkxP
inflating: /tmp/GeoLite2-Country-Blocks-IPv4.csv
inflating: /tmp/GeoLite2-Country-Blocks-IPv6.csv

# ./10_download_countryinfo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 31523 100 31523 0 0 9947 0 0:00:03 0:00:03 –:–:– 9947

 

다운로드 IP 정보 포맷변환

# mkdir /usr/share/xt_geoip
# cat /tmp/GeoLite2-Country-Blocks-IPv{4,6}.csv | ./20_convert_geolite2 /tmp/CountryInfo.txt > /usr/share/xt_geoip/GeoIP-legacy.csv
10000
20000
……….
……….
390000
400000

 

변환된 포맷파일을 xtables geoip build
# /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip /usr/share/xt_geoip/GeoIP-legacy.csv


# pwd

/usr/share/xt_geoip

# ls -l
total 37632
drwxr-xr-x 2 root root 16384 Mar 31 15:25 BE
-rw-r–r– 1 root root 38501371 Mar 31 15:24 GeoIP-legacy.csv
drwxr-xr-x 2 root root 16384 Mar 31 15:25 LE

 

설치확인
:: 본문에서는 KR(한국) 트래픽과 ! KR 트래픽을 카운팅하고 로깅을 위한 Rule이며 기본 Rule을 지우고(-F) 진행하였다.

# iptables -F
# iptables -A INPUT -m geoip –src-cc KR -j RETURN
# iptables -A INPUT -m geoip ! –src-cc KR
# iptables -A INPUT -j LOG –log-prefix “NOT_KR_ACCESS_LOG:”

 

모니터링
:: 패킷카운트를 Zero 로 만들고 모니터링

# iptables -Z
# watch -d iptables -vnL INPUT

   :: KR 접근은 RETURN 처리되며 ! KR 트래픽은 로깅

 

로그에 남겨진 메세지를 확인해보면…외부에서 상당수 접속시도 내역이 확인 가능하다.
# tail -f /var/log/syslog

……………………………
……………………………
Mar 31 16:57:55 mojily-94426 kernel: [ 2742.426498] NOT_KR_LOG:IN=ens3 OUT= MAC=fa:16:3e:03:c1:2b:fa:16:3e:12:bc:74:08:00 SRC=121.58.195.167 DST=10.101.0.29 LEN=52 TOS=0x00 PREC=0x00 TTL=108 ID=26262 DF PROTO=TCP SPT=51919 DPT=445 WINDOW=8192 RES=0x00 SYN URGP=0
Mar 31 16:57:56 mojily-94426 kernel: [ 2743.190736] NOT_KR_LOG:IN=ens3 OUT= MAC=fa:16:3e:03:c1:2b:fa:16:3e:12:bc:74:08:00 SRC=121.58.195.167 DST=10.101.0.29 LEN=52 TOS=0x00 PREC=0x00 TTL=108 ID=26345 DF PROTO=TCP SPT=51919 DPT=445 WINDOW=8192 RES=0x00 SYN URGP=0
Mar 31 16:58:40 mojily-94426 kernel: [ 2787.467480] NOT_KR_LOG:IN=ens3 OUT= MAC=fa:16:3e:03:c1:2b:fa:16:3e:12:bc:74:08:00 SRC=103.45.161.101 DST=10.101.0.29 LEN=40 TOS=0x00 PREC=0x00 TTL=106 ID=256 PROTO=TCP SPT=6242 DPT=60001 WINDOW=16384 RES=0x00 SYN URGP=0


외부에서 무작위로 들어오는 트래픽은 항상 존재하기에 불필요한 트래픽은 유의해서 서버운영을 하시기 바랍니다.

# apt install whois
# whois 103.45.161.101

※ 국가코드는 아래 참고
https://eminwon.qia.go.kr/common/CountrySP.jsp

 

 

Tags: , , , , ,

Category: LINUX, 가상화/클라우드, 네트워크/관제, 보안, 보안이슈, 서버보안, 서버호스팅&코로케이션, 솔루션/IT기타, 운영체제

이 경현

About the Author ()

https://www.cloudv.kr https://www.iwinv.kr (주)스마일서브 IaaS 연구소