GeoIP.dat / GeoIPCity.dat / GeoIPASNum.dat 최신 파일로 업데이트 하기 / GeoLite2 이용
O/S : CentOS 7.x만약 O/S 버전이 CentOS 6.x 버전이다면 아래 링크에서 확인
https://xinet.kr/?p=2471
서버에서는 여러가지 어플리케이션을 운용하면서 GeoIP를 이용하는 케이스 많다 예를들어 apache에 국가코드
iptables 를 운용한 국가코드를 이용해서 차단
기존 yum을 통해서 설치를 하게 되면 데이터가 최신 데이터가 아니다 / 업데이트를 통해 진행했지만 현재 2019년 12월인데
자료는 2019년 8월의 데이터이다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@localhost ~]# ls -l /usr/share/GeoIP/ 합계 54760 -rw-r--r-- 1 root root 1242574 8월 8 21:04 GeoIP-initial.dat lrwxrwxrwx 1 root root 17 12월 2 16:32 GeoIP.dat -> GeoIP-initial.dat -rw-r--r-- 1 root root 4638365 8월 8 21:04 GeoIPASNum-initial.dat lrwxrwxrwx 1 root root 39 1 2월 2 16:32 GeoIPASNum.dat -> /usr/share/GeoIP/GeoIPASNum-initial.dat -rw-r--r-- 1 root root 5628114 8월 8 21:04 GeoIPASNumv6-initial.dat lrwxrwxrwx 1 root root 41 2월 2 16:32 GeoIPASNumv6.dat -> /usr/share/GeoIP/GeoIPASNumv6-initial.dat -rw-r--r-- 1 root root 20539238 8월 8 21:04 GeoIPCity-initial.dat lrwxrwxrwx 1 root root 38 12월 2 16:32 GeoIPCity.dat -> /usr/share/GeoIP/GeoIPCity-initial.dat -rw-r--r-- 1 root root 21684452 8월 8 21:04 GeoIPCityv6-initial.dat lrwxrwxrwx 1 root root 40 12월 2 16:32 GeoIPCityv6.dat -> /usr/share/GeoIP/GeoIPCityv6-initial.dat -rw-r--r-- 1 root root 2322773 8월 8 21:04 GeoIPv6-initial.dat lrwxrwxrwx 1 root root 19 12월 2 16:32 GeoIPv6.dat -> GeoIPv6-initial.dat |
그럼 주로 사용하는 GeoIP.dat / GeoIPCity.dat / GeoIPASNum.dat 파일을 최신 데이터로 변경해 보자
( GeoIP.dat / GeoIPCity.dat / GeoIPASNum.dat update)
1. 설치에 앞서 python-ipaddr 패키지가 필요하므로 해당 패키지를 설치 진행한다
1 |
[root@xinet ~]# yum -y install python-ipaddr.noarch |
2. git에서 파일을 다운로드 한다 ( CSV 파일을 가지고 dat 파일을 변환하는 소스들이다)
1 |
[root@xinet ~]# git clone https://github.com/sherpya/geolite2legacy.git |
3. 파일을 다운로드 후 실제 GeoLite2 zip 파일을 다운로드 한다
1 2 3 4 5 6 7 |
[root@xinet ~]# cd geolite2legacy [root@xinet geolite2legacy]# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-City-CSV.zip [root@xinet geolite2legacy]# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip [root@xinet geolite2legacy]# wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-ASN-CSV.zip |
4. 파일 다운로드 후 geolite2legacy.py 명령어를 이용하여 dat 파일을 추출한다 / 다소 시간 필요
1 2 3 4 5 |
[root@xinet geolite2legacy]# ./geolite2legacy.py -i GeoLite2-City-CSV.zip -f geoname2fips.csv -o GeoIPCity.dat [root@xinet geolite2legacy]# ./geolite2legacy.py -i GeoLite2-Country-CSV.zip -f geoname2fips.csv -o GeoIP.dat [root@xinet geolite2legacy]# ./geolite2legacy.py -i GeoLite2-ASN-CSV.zip -o GeoIPASNum.dat |
5.파일을 다 추출하였으면 기존 /usr/share/GeoIP 폴더에 있는 해당 파일들을 삭제 후 복사 해준다
1 2 3 4 5 6 7 |
[root@xinet geolite2legacy]# rm -f /usr/share/GeoIP/GeoIP.dat [root@xinet geolite2legacy]# rm -f /usr/share/GeoIP/GeoIPCity.dat [root@xinet geolite2legacy]# rm -f /usr/share/GeoIP/GeoIPASNum.dat [root@xinet geolite2legacy]# cp -a *.dat /usr/share/GeoIP/ |
6. 확인을 하게 되면 자료는 2019년 12월 4일로 변경된 것을 확인 할 수 있다
1 2 3 4 5 6 7 8 |
[root@xinet GeoIP]# ls -l /usr/share/GeoIP/GeoIP.dat -rw-r--r-- 1 root root 2083689 12월 4 17:31 /usr/share/GeoIP/GeoIP.dat [root@xinet GeoIP]# ls -l /usr/share/GeoIP/GeoIPCity.dat -rw-r--r-- 1 root root 23437885 12월 4 17:30 /usr/share/GeoIP/GeoIPCity.dat [root@xinet GeoIP]# ls -l /usr/share/GeoIP/GeoIPASNum.dat -rw-r--r-- 1 root root 5355492 12월 4 17:32 /usr/share/GeoIP/GeoIPASNum.dat |
7. 그럼 이제 해당 파일을 주기적으로 업데이트 될 수 있게 스크립트를 만들어 보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
[root@xinet ~]# mkdir /shell [root@xinet ~]# vi /shell/geoip_update.sh #!/bin/bash cd /root/geolite2legacy rm -f *.zip rm -f *.dat wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-City-CSV.zip sleep 1 wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip sleep 1 wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-ASN-CSV.zip sleep 1 ### change /root/geolite2legacy/geolite2legacy.py -i /root/geolite2legacy/GeoLite2-Country-CSV.zip -f /root/geolite2legacy/geoname2fips .csv -o /root/geolite2legacy/GeoIP.dat sleep 1 /root/geolite2legacy/geolite2legacy.py -i /root/geolite2legacy/GeoLite2-City-CSV.zip -f /root/geolite2legacy/geoname2fips.cs v -o /root/geolite2legacy/GeoIPCity.dat sleep 1 /root/geolite2legacy/geolite2legacy.py -i /root/geolite2legacy/GeoLite2-ASN-CSV.zip -o /root/geolite2legacy/GeoIPASNum.dat sleep 1 ### old dat file delete and copy rm -f /usr/share/GeoIP/GeoIP.dat rm -f /usr/share/GeoIP/GeoIPCity.dat rm -f /usr/share/GeoIP/GeoIPASNum.dat cp -a /root/geolite2legacy/*.dat /usr/share/GeoIP/ |
8. 퍼미션 수정 및 crontab 등록
1 2 3 4 5 6 7 8 9 10 11 |
[root@xinet ~]# chmod 700 /shell/geoip_update.sh [root@xinet ~]# crontab -e ### GeoIP Update 10 03 6 * * /shell/geoip_update.sh ### cron 재시작 [root@xinet ~]# systemctl restart crond |
매달 6일 오전 3시 10분에 되게 등록해 두었다.