” 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
해당사이트에서 가입하고 이메일 인증을 합니다.
2️⃣ 라이센스 키 생성 및 발급
maxmind의 계정에서 라이센스 키를 생성 및 발급 받은 후 Account ID 와 License Key 를 따로 저장해줍니다.
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/ vi mconfig 주석처리 ./configure make -j && make install |
2) GeoLite2xtables 설치
1️⃣ GeoLite2xtables 설치
cd /usr/local/src/ git clone https://github.com/mschmitt/GeoLite2xtables 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 번호 |
3️⃣crontab 등록
vi /etc/crontab 0 0 1 * * root /bin/sh /usr/bin/geoipupdate |