maxminddb 라는걸로 올릴 수 있는데 그거 하려면 뭐 gcc 랑 c++ 버전 이런게 centos 5버전에는 안맞는 버전들이다.
어쨋든 centos5 버전은 아래와 같이 하면 된다.
https://dev.maxmind.com/geoip/legacy/mod_geoip2/ 참고
설치순서는 대략적으로
1.geoip를 서버에 설치하고
2.geoip의 데이터를 넣어주고
3.설치된 geoip를 가지고 아파치용 geoip 모듈을 설치한다.
1.geoip-api-c-master.zip 다운로드 & 설치
ㄴhttps://github.com/maxmind/geoip-api-c
1-1. 파일 다운로드
1-2. 압축풀고 들어가서 ./bootstrap
ㄴ여기서
~/src/apache_sadong/geoip-api-c-master]# /usr/local/bin/autoreconf -fiv
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/local/bin/autoconf --force
configure.ac:14: error: possibly undefined macro: AC_PROG_LIBTOOL
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/local/bin/autoconf failed with exit status: 1
위와같이 libtool 관련 에러 발생하면 libtool 이거 받아서 압축풀고 ./configure make make install 해서 설치
1-3./configure --prefix=/usr/local/geoip ;make ;make install
2.geoip 컨츄리 파일 받고 넣기
ㄴhttps://dev.maxmind.com/geoip/geoip2/geolite2/
ㄴ용량이 커서 업로드가 안됨, GeoLite2-City-CSV_날짜 파일 받으면됩니다.
2-1.일전에 geoip iptalbles 에 올리는걸로 컨버팅하는 스크립트 했었는데 이번 스크립트는 또 다른거다.
이번 버전은 파이썬 2.7버전에서 실행되는 스크립트다.(2.7 미만의 버전은 해당 스크립트 에러남)
# git clone https://github.com/sherpya/geolite2legacy
# cd geolite2legacy
# curl -O https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip
# ./geolite2legacy.py -i GeoLite2-Country-CSV.zip -f geoname2fips.csv -o GeoIP.dat
ㄴ이거 할 때 ipaddr 모듈 없다하면 pip install ipaddr 명령어로 설치해야한다.
깔끔하게 GEOIP.dat 파일이 생겼다.
geoip.dat 파일은 여기다가 한달에 한번정도 주기적으로 업로드를 해야겠다.
2-2.geoip.dat 파일을 /usr/local/GeoIP/share/GeoIP 여따가 넣어준다.
3.geoip-api-mod_geoip2-1.2.10.tar.gz 다운로드
3-1. 파일 다운로드 받고 압축풀고 해당 디렉토리로 들어가면 mod_geoip.c 가 있다. 해당 경로에서
[root@localhost ~/src/apache_sadong/geoip-api-mod_geoip2-1.2.10]# /home/apache/bin/apxs -i -a -L /usr/local/GeoIP/lib -I /usr/local/GeoIP/include -l GeoIP -c ./mod_geoip.c
이렇게 하면 아파치에 geoip 모듈 탑재 완료.
3-2. 이제 다 됐으면 특정 국가만 허용예시
GeoIPDBFile 이부분은 geoip db 파일을 뭘로 할꺼냐고 그 뒤에 flag 는 Standard 만 있는게 아니다.
MemoryCache / Standard / CheckCache / IndexCache 요렇게 4개가 있다.
메뉴얼에는 전부 MemoryCache 로 돼 있으니까 나도 MemoryCache 로
각 플래그에 대한 설명은 https://dev.maxmind.com/geoip/legacy/mod_geoip2/ 참고
특정 국가에만 접근 허용
<Directory /home>
Options FollowSymLinks MultiViews
AllowOverride FileInfo
Order deny,allow
SetEnvIf GEOIP_COUNTRY_CODE KR AllowCountry
Deny from all
Allow from env=AllowCountry
</Directory>
ps.
아파치 어쎄스 로그에 국가코드 남기고 싶으면 로그 포멧을 아래로 하면됨
LogFormat “%V [%h] %u %t %D \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” GeoIP_Address=\”%{GEOIP_ADDR}e\” Country_Code=\”%{GEOIP_COUNTRY_CODE}e\” Country_Name=\”{GEOIP_COUNTRY_NAME}e\”” vcommon
'job > apache' 카테고리의 다른 글
Additionally, a 400 Bad Request error was encountered while trying to use an ErrorDocument to handle the request. (1) | 2020.03.30 |
---|---|
아파치 특정 디렉토리 아이피 접근제어 (0) | 2018.09.03 |
apache 오래된 버전 이전 (0) | 2018.09.03 |
아파치 모듈 설명 (0) | 2018.09.03 |
apache module forensic log 설정 (0) | 2018.08.31 |