메뉴 닫기

GeoIP 적용하기 : CentOS 7

GeoIP 적용하기 : CentOS 7” 


GeoIP : MaxMind에서 제공하는 솔루션으로, 서버에 접근하는 IP를 국가별로 확인할수 있는 기능을 제공합니다.  GeoIP를 설치하여 서버에 접근 하는 IP를 국가별로 제한하거나 허용 할 수 있습니다. 

이 포스팅에서는 CentOS7에서 GeoIP를 적용하는 방법을 설명합니다.

[개  요]

✅ 종    류 : 엔지니어링

✅ 난이도 : ⭐

✅ 내용요약 : GeoIP 를 Cent OS7에서 적용 방법 설명

✅ 테스트환경 : Cent OS7

✅ 관련직무 : 시스템&클라우드 엔지니어

[기초이론&용어설명]

[관련 기술자료]

 

GeoIP 시작하기


1️⃣ maxmind 사이트 가입 

https://dev.maxmind.com/geoip/geolite2-free-geolocation-data

해당사이트에서 가입하고 이메일 인증을 합니다.

GeoIP maxmind 가입

 

GeoIP maxmind 가입

 

2️⃣ 라이센스 키 생성 및 발급

 maxmind의 계정에서 라이센스 키를 생성 및 발급 받은 후 Account ID 와 License Key 를 따로 저장해줍니다.

GeoIP maxmind 라이센스키

 

GeoIP maxmind 라이센스키 생성

 

GeoIP maxmind 라이센스 키 복사

 

 

3️⃣  iptables 설치

CentOS 7 에서 iptables 설치합니다.

설치조건 :  iptables-sevices, iptables 버전 1.4.5, kernel-devel 3.7 이상

설치 환경 : CentOS 7 초기환경

 

 

1) GeoIP 기본환경 설치&설정


1️⃣ GeoIP 기본환경 설치를 위해 아래 작업을 수행한다.

yum install -y wget vim epel-release

yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpmhttps://dev.maxmind.com/geoip/geolite2-free-geolocation-data

yum update -y

yum install -y libdb-devel enchant-devel libxslt libxslt-devel net-snmp-devel readline-devel readline aspell-devel unixODBC unixODBC-devel libicu-devel icu libicu libc-client libc-client-devel libc-client-2007f freetype-devel freetype* freetype libXpm libXpm-devel libpng-devel libpng* libvpx-devel libvpx libcurl libcurl-devel curl* curl-devel curl tcp_wrappers-devel libzip environment-modules uw-imap-utils uw-imap-devel uw-imap uw-imap-static pam-devel libldb-devel openldap-devel cyrus-sasl-devel bzip2-devel bzip2 bzip2-libs ncurses-devel ncurses mysql-devel libjpeg-devel libjpeg* libjpeg-devel openssl-devel openssl* openssl-libs libxml* libxml2 libxml2-devel libmcrypt libmcrypt-devel libmcrypt* mcrypt mhash* mhash mhash-devel libmhash libmhash-devel expat-devel expat expat* gmp* gmp gmp-devel krb5* krb5-devel db4 db4-devel wget make cmake libtool* pcre* gdbm* gdbm gdbm-devel libtiff* libtiff libtiff-devel flex zlib* zlib-devel zlib gd* gd gd-devel patch t1lib t1lib-devel readline libedit-devel libtidy libtidy-devel gcc* gcc gcc-c++ libtermcap-devel dialog sqlite-devel oniguruma oniguruma-devel libzip5 mod_ssl postgresql-devel lcov systemtap-sdt-devel mod_ldap elfutils-devel libwebp-devel libwebp git gzip libnghttp2-devel valgrind* mod_proxy* editline editline-devel patchelf systemd-devel ImageMagick-devel libzstd-devel libffi libffi-devel libraqm-devel libraqm libsodium libsodium-devel perl-NetAddr-IP iptables-devel perl-Text-CSV_XS kernel-devel perl-CPAN.noarch 

2️⃣ 관련 설치 파일을 설정

perl -MCPAN -e shell

install NetAddr::IP

install Getopt::Long

3️⃣ xtables-addons 설치

cd /usr/local/src/
wget https://inai.de/files/xtables-addons/xtables-addons-2.15.tar.xz
tar xvf xtables-addons-2.15.tar.xz
cd xtables-addons-2.15

vi mconfig

주석처리
#build_TARPIT=m

./configure

make -j && make install

 

2) GeoLite2xtables 설치


1️⃣ GeoLite2xtables 설치

cd /usr/local/src/

git clone https://github.com/mschmitt/GeoLite2xtables
cd GeoLite2xtables/
cp -arp geolite2.license.example geolite2.license

vi geolite2.license

YOUR_LICENSE_KEY=’라이센스 키 입력’

수정 후 저장 

2️⃣ geolite2 파일 다운로드

./00_download_geolite2

./10_download_countryinfo

3️⃣csv 파일 만들기

cat /tmp/GeoLite2-Country-Blocks-IPv4.csv /tmp/GeoLite2-Country-Blocks-IPv6.csv | ./20_convert_geolite2 /tmp/CountryInfo.txt > GeoIP-legacy.csv

4️⃣파일 복사

cp -arp /usr/local/src/GeoLite2xtables/GeoIP-legacy.csv /usr/local/src/xtables-addons-2.15/geoip/

./xt_geoip_build GeoIP-legacy.csv

cp -arp BE /usr/share/xt_geoip/

cp -arp LE /usr/share/xt_geoip/

 

3) iptables geoip 활용하기


1️⃣ iptables 방화벽에 국가코드 차단하기

iptables -I INPUT -m geoip –src-cc CN -j DROP

2️⃣ geoip 업데이트

wget https://github.com/maxmind/geoipupdate/releases/download/v4.1.5/geoipupdate_4.1.5_linux_amd64.rpmGeoIP 를 설치를 위한 

rpm -Uvh geoipupdate_4.1.5_linux_amd64.rpm –force

업데이트를 위한 계정 ID 와 라이센스 키를 입력합니다.

vi /etc/GeoIP.conf

AccountID maxmind 계정 ID 번호
LicenseKey 라이센스 키

3️⃣crontab 등록

vi /etc/crontab

0 0 1 * * root /bin/sh /usr/bin/geoipupdate

 

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x