OS/Linux2017/03/28 15:19
오랜만에 글을 쓰게 되네요... 

이전엔 커널과 iptables를 소스컴파일하여 사용하여 국가별 차단을 하였습니다.
하지만, 세월이 흐르고 많이 변했죠? Redhat계열에서는 RPM을 많이 사용하시므로 
rpm과 한가지 소스 컴파일만 가지고 국가별 차단할 수 있는 모듈을 만들어 보도록하겠습니다.

1. 관련 자료 다운받기
본 자료는 oops.org에서 가져온 데이터이며, 설치에 대한 부분은 생략 하도록 하겠습니다.
GeoIP는 기존 free 버전을 사용하셔도 무방합니다. 

RPM 소스 



제가 만들어놓은 CentOS 6.8 기준입니다.




xtables-addons-1.47.1.tgz 의 경우 ipv6관련으로 링크가 깨지는 문제로 수정해서 다시 패키징 해놓은 상태입니다.

2. 패키지 설치

2-1. yum 을 이용하여 kernel-debug-devel , iptables-devel  두가지를 설치 합니다.
2-2. 본 사이트에서 제공하는 GeoIP 패키지 (srpm제외)를 설치합니다.
2-3. xtables 애드온을 설치합니다.

# tar xvfz xtables-addons-1.47.1.tgz 
# cd xtables-addons-1.47.1
# ./configure; make; make install
# cd geoip
# cp xt_geoip* /usr/sbin/

위와 같이 하게 되면 설치가 완료되며, 해당 패키지들은 설정이 완료됩니다.2-4. 설정해당 모듈은 /usr/share/xt_geoip 내에 설정 됩니다. 초반에는 해당 디렉토리가 없으므로 디렉토리 생성을 합니다.

 # mkdir /usr/share/xt_geoip ;  cd /usr/share/xt_geoip 

위와 같이 진행하게 되면, 이제 IP대역을 다운 받아와야 합니다.

# /usr/sbin/xt_geoip_dl 
http://geolite.maxmind.com/download/geoip/database/GeoIPv6.csv.gz
Resolving geolite.maxmind.com... 104.16.38.47, 104.16.37.47, 2400:cb00:2048:1::6810:252f,
Connecting to geolite.maxmind.com|104.16.38.47|:80... connected.
>HTTP request sent, awaiting response... 200 OK
Length: 1402286 (1.3M) [application/octet-stream]
Saving to: “GeoIPv6.csv.gz” 100%[===================================>] 1,402,286
(28.3 MB/s) - “GeoIPv6.csv.gz” saved [1402286/1402286]
http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
Reusing existing connection to geolite.maxmind.com:80.
HTTP request sent, awaiting response... 200 OK Length: 2163552 (2.1M) [application/zip]
Saving to: “GeoIPCountryCSV.zip” 100%[===================================>] 2,163,552
(54.1 MB/s) - “GeoIPCountryCSV.zip” saved [2163552/2163552]

# ls -l
-rw-r--r-- 1 root root 2163552 Mar 8 06:20 GeoIPCountryCSV.zip
-rw-r--r-- 1 root root 10814456 Mar 8 06:18 GeoIPCountryWhois.csv
-rw-r--r-- 1 root root 5100890 Mar 8 06:19 GeoIPv6.csv

세가지의 디렉토리가 보일 것입니다. GeoIPCountryCSV.zip의 경우  GeoIPCountryWhois.csv를 압축하여 놓은 것이므로, 두가지만 입력하도록 합니다. 아까 복사해두었던 명령어중 한가지인 xt_geoip_build 명령을 이용합니다.

# /usr/sbin/xt_geoip_build GeoIPCountryWhois.csv
144432 entries total
0 IPv6 ranges for A1 Anonymous Proxy
32 IPv4 ranges for A1 Anonymous Proxy
.
. 많은 데이터가 있으므로 중략...
.
0 IPv6 ranges for ZM Zambia
66 IPv4 ranges for ZM Zambia
0 IPv6 ranges for ZW Zimbabwe
63 IPv4 ranges for ZW Zimbabwe

해당 데이터가 업로드되었습니다. 만일 perl error가 발생되시는 분들이 있다면 epel에서 패키지를 추가로 설치하셔야 합니다.

# yum install  perl-Text-CSV_XS --enablerepo=epel

위와 같이 정상적으로 설치가 된 경우 아래와 같이 iptables 명령어를 추가하여 사용하실 수 있습니다.

# iptables -A INPUT -m geoip --src-cc CN -j DROP 
# iptables -vL | grep DROP 354 19850 DROP
all -- any any anywhere anywhere Source country: CN

위와 같이 나오게 될 경우 정상적으로 중국 국가별로 차단하는 것입니다.
2017/03/28 15:19 2017/03/28 15:19
Posted by JParker

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

Leave your greetings.