#!/bin/bash
######################################################################
#
# iptables의 GeoIP 적용을 위한 국가별 DB 준비 작업
#
######################################################################
SCRIPT_NAME=$(basename $0)
CURRENT_DIR=$(pwd)
XTABLES_ADDONS_VER=2.14
######################################################################
#
# Error Handling
#
######################################################################
function error_exit
{
clear
echo "${SCRIPT_NAME}: ${1:-\"Unknown Error\"}" 1>&2
exit 1
}
######################################################################
#
# 실행에 필요한 패키지 설치
#
######################################################################
function yum_prepare() {
yum -y install perl-NetAddr-IP perl-Net-CIDR-Lite perl-Text-CSV_XS iptables-devel kernel-devel
}
######################################################################
#
# xtables-addons 다운로드
#
######################################################################
function download_xtables_addons() {
if [ -d xtables-addons-* ]
then
rm -rf xtables-addons-*
fi
if [ -f xtables-addons-${XTABLES_ADDONS_VER}.tar.xz ]
then
rm -f xtables-addons-${XTABLES_ADDONS_VER}.tar.xz
fi
wget https://sourceforge.net/projects/xtables-addons/files/Xtables-addons/xtables-addons-${XTABLES_ADDONS_VER}.tar.xz/download -O xtables-addons-${XTABLES_ADDONS_VER}.tar.xz
if [ ! -f xtables-addons-${XTABLES_ADDONS_VER}.tar.xz ]
then
error_exit
fi
tar -xJf xtables-addons-*.tar.xz
rm -f xtables-addons-*.tar.xz
}
######################################################################
#
# 신DB > 구DB로 변환하기 위한 GeoLite2xtables 다운로드
#
######################################################################
function download_geolite2xtables() {
if [ -d GeoLite2xtables ]
then
rm -rf GeoLite2xtables
fi
git clone https://github.com/mschmitt/GeoLite2xtables.git
if [ ! -d GeoLite2xtables ]
then
error_exit
fi
}
######################################################################
#
# 신DB를 구DB로 변환하는 작업
#
######################################################################
function conv_geolite2xtables() {
if [ -d /usr/share/xt_geoip ]
then
rm -rf /usr/share/xt_geoip
fi
rm -f /tmp/GeoLite2-Country-Blocks-*
rm -f /tmp/CountryInfo.txt
mkdir -p /usr/share/xt_geoip/{BE,LE}
cd ${CURRENT_DIR}/GeoLite2xtables
echo "***********************00_download_geolite2"
./00_download_geolite2
echo "***********************10_download_countryinfo"
./10_download_countryinfo
echo "***********************20_convert_geolite2"
cat /tmp/GeoLite2-Country-Blocks-IPv{4,6}.csv | ./20_convert_geolite2 /tmp/CountryInfo.txt > /usr/share/xt_geoip/GeoIP-legacy.csv
echo "***********************xt_geoip_build"
cd ${CURRENT_DIR}/xtables-addons-${XTABLES_ADDONS_VER}/geoip
./xt_geoip_build -D /usr/share/xt_geoip /usr/share/xt_geoip/GeoIP-legacy.csv
echo "***********************tar -cvzf xt_geoip.tar.gz /usr/share/xt_geoip"
if [ -f /usr/share/xt_geoip/GeoIP-legacy.csv ]
then
rm -f /usr/share/xt_geoip/GeoIP-legacy.csv
fi
cd ${CURRENT_DIR}
tar -cvzf xt_geoip.tar.gz /usr/share/xt_geoip
}
######################################################################
#
# 다운받은 파일들 삭제
#
######################################################################
function clean_data() {
cd ${CURRENT_DIR}
if [ -d xtables-addons-* ]
then
rm -rf xtables-addons-*
fi
if [ -d GeoLite2xtables ]
then
rm -rf GeoLite2xtables
fi
rm -f /tmp/GeoLite2-Country-Blocks-*
rm -f /tmp/CountryInfo.txt
}
yum_prepare
download_xtables_addons
download_geolite2xtables
conv_geolite2xtables
clean_data