카이도스의 Tech Blog

geoip 설치 및 설정 본문

서버작업

geoip 설치 및 설정

카이도스 2022. 8. 3. 14:04
728x90
반응형
개요 : GeoIP 설치 및 설정
 
설치방법 :
 
1. libmaxminddb 설치
# yum install -y libmaxminddb libmaxminddb-devel
 
해당 라이브러리가 설치되지 않으면 mod_maxminddb 설치 불가(yum 불가 시 rpm으로 설치요망)
 
2. mod_maxminddb 설치
Apahce 2.2 이상에서 사용 가능
 
# cd /usr/local/src/
# tar zxvf mod_maxminddb-1.2.0.tar.gz
# cd mod_maxminddb-1.2.0
 
# ./configure --with-apxs=/usr/local/httpd2/bin/apxs
# make; make install
 
# 설치 모듈 확인
# ls -lh /usr/local/httpd2/modules/mod_maxminddb.so
-rwxr-xr-x 1 root root 60K  6월 24 16:13 /usr/local/httpd2/modules/mod_maxminddb.so
 
# cat /usr/local/apache/conf/httpd.conf | grep maxminddb
LoadModule maxminddb_module modules/mod_maxminddb.so
 
3. geoipupdate 설치
# yum install curl-devel
# cd /usr/local/src
# tar zxvf geoipupdate-3.1.1.tar.gz
# cd geoipupdate-3.1.1
# ./configure
# make ; make install
 
# GeoIP.conf (라이센스) 파일 등록
# cd /usr/local/etc ; mv GeoIP.conf GeoIP.conf_org
# vi GeoIP.conf
AccountID 638894
LicenseKey XLl2a5JZYpEkXGB7
EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country
 
# GeoIP DB 파일 업데이트 진행.
# /usr/local/bin/geoipupdate
# ll /usr/local/share/GeoIP
-rw-r--r-- 1 root root  7763214  6월 24 16:24 GeoLite2-ASN.mmdb
-rw-r--r-- 1 root root 68194988  6월 24 16:24 GeoLite2-City.mmdb
-rw-r--r-- 1 root root  5433019  6월 24 16:24 GeoLite2-Country.mmdb
 
# cat <<EEE>> /etc/crontab
 
# GeoIP DB Update
00 06 * * 3 root /usr/local/bin/geoipupdate
EEE
 
설치 완료
============================================================
GeoIP 적용 - 로그 포맷 변경
============================================================
1.httpd.conf, LogFormat 부분 확인 후 geoip 포맷 추가
# vi /usr/local/httpd2/conf/httpd.conf
....
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{MM_COUNTRY_CODE}e" geoip
...
 
2. vhost.conf, 기존 CustomLog형식을 geoip 포맷으로 변경
CustomLog logs/pjhtest.shop_log common
-> CustomLog logs/pjhtest.shop.com_log geoip

 

 
3. apache 재구동
 -> 재구동 후 로그포맷 변경된것을 확인
============================================================
GeoIP 적용 - 국가차단
============================================================
1. httpd.conf, 기본설정
<IfModule maxminddb_module>
   MaxMindDBEnable On
   MaxMindDBFile COUNTRY_DB /usr/local/share/GeoIP/GeoLite2-Country.mmdb
   MaxMindDBFile CITY_DB /usr/local/share/GeoIP/GeoLite2-City.mmdb
   MaxMindDBFile ASN_DB /usr/local/share/GeoIP/GeoLite2-ASN.mmdb
   MaxMindDBEnv MM_COUNTRY_CODE COUNTRY_DB/country/iso_code
</IfModule>
2.  vhosts.conf, 도메인별 국가 설정
일부 국가만 허용하는 경우
예시)
<VirtualHost *:80>
DocumentRoot /home/pjhtest.shop/docs
ServerName pjhtest.shop
CustomLog logs/pjhtest.shop-log geoip
  <IfModule maxminddb_module>
      SetEnvIf MM_COUNTRY_CODE ^(KR|US) AllowCountry <- 한국, 미국만 허용
  <Location />
      Deny From all
      Allow from env=AllowCountry
</Location>
</IfModule>
만약 일부 국가만 차단하는경우
예시)
<VirtualHost *:80>
DocumentRoot /home/pjhtest.shop/docs
ServerName pjhtest.shop
CustomLog logs/pjhtest.shop-log geoip
  <IfModule maxminddb_module>
      SetEnvIf MM_COUNTRY_CODE ^(CN|US) BlockCountry <- 중국, 미국만 차단
  <Location />
      Deny From all
      Deny from env=BlockCountry
</Location>
</IfModule>
 
========================================
확인 :
재구동 후 로그확인 하여 로그포맷 변경된것을 확인 및 국가 차단 확인(허용국가만 나오는지 확인

 

728x90
반응형

'서버작업' 카테고리의 다른 글

네임서버 설정 명령어  (0) 2022.08.03
php-zip 설치오류  (0) 2022.08.03
php extention 추가 설치  (0) 2022.08.03
CentOS 7 서버에 php5.1 설치 (apache 2.2)  (0) 2022.08.03
php-fpm 관련 설정  (0) 2022.08.03
Comments