Ubuntu maxmind GeoIP.dat + iptables geoip
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 # ./10_download_countryinfo |
다운로드 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
Category: LINUX, 가상화/클라우드, 네트워크/관제, 보안, 보안이슈, 서버보안, 서버호스팅&코로케이션, 솔루션/IT기타, 운영체제
