라이센스 발급은 아래 URL을 참고
Maxmind GeoIP2 업데이트
설치환경
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
다운로드
여기서는 아래 github 에서 배포하고 있는 설치 및 업데이트 방법으로 진행한다.
# 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
다운로드된 정보 포맷변환
# 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
참고로 국가코드는 아래 참고