국가별아이피차단가이드 작성자 : 기술지원팀백철현작성일 : 2009 년 2 월 20 일 가이드소개 급증하는웹해킹과침해사고, DDOS 공격때문에서비스에장애가많으신분들은 IPTALBES 를활용하여침해사고를예방할수가있습니다. DDOS 공격도또한마찬가지입니다. 중국에서한크래커가사이트를공격을위해서준비할때, 웹사이트를먼저확인하고공격을시도할것입니다. 그러나, 공격전에미리중국으로부터의접속을막고있다면, 일단어느정도의공격받을확률은줄였다고할수가있습니다. 리눅스커널, iptables, geoip 설치와더불어 iptables 의룰셋적용부분에대한가이드입니다. 마지막부분에서는 iprange 모듈을활용한약간무식한방법도소개하겠습니다. 리눅스가이드 필요한설치팩키지 운영체제 : CentOS 5.2 Final 커널 2.6.18.8 버전 ( ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.8.tar.bz2 ) Iptables 1.3.8 버전 ( ftp://ftp.iptables.org/pub/iptables/iptables-1.3.8.tar.bz2 ) Patch-o-matic-ng ( ftp://ftp.iptables.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20080101.tar.bz2) Csv2bin (http://people.netfilter.org/peejix/geoip/tools/csv2bin-20041103.tar.gz) Geoip (http://www.maxmind.com/download/geoip/database/geoipcountrycsv.zip) 위에언급된프로그램을시스템의 /usr/src / 에다운받아서압축을풀어줍니다. 다운로드된프로그램은아래와같습니다. GeoIP 부터설치를하겠습니다. Csv2bin 과 GeoIPCountryCSV.zip 의압축을아래와같이풀어줍니다.
GeoIPCountryWhois.csv 파일과 csv2bin 디렉토리가생성되었습니다. Csv2bin 디렉토리로이동하여 make 명령으로컴파일을합니다. 또는 gcc o csv2bin csv2bin.c 로컴파일해도됩니다. Csv2bin 실행파일이위와같이생성되었다면 shell 에서./csv2bin../GeoIPCountryWhois.csv 를실행합니다. 위에서 geoipdb.bin 데이터파일과 geoipdb.idx 인덱스파일 2 개가생성됩니다. 위 2 개의파일을 /var/geoip 디렉토리를만들고그디렉토리에복사합니다. 설치가완료되었다면해당파일들을삭제하고리눅스커널컴파일준비를하겠습니다. Linux 커널과 iptables, patch-o-matic-ng 파일의압축을아래와같이풀어줍니다. 압축해제후 linux 와 iptables 링크를만듭니다.
patch-o-matic-ng-20080101 디렉토리로이동합니다. 이동후./runme download 명령을내리세요 다운로드가끝나면아래와같이커널과 iptables 의디렉토리를물어봅니다. 기본으로엔터를 2 번치시면됩니다. Geoip 패치가다운로드되었습니다. 패치를위해서아래와같이명령을내리면됩니다. 디렉토리는엔터를 2 번치면됩니다. 엔터를치고나면아래와같은메시지가나옵니다. 패치적용화면입니다. y 를눌러주면적용이됩니다.
Y 를누른후적용된화면입니다. 커널과 iptables 를재컴파일하라는화면입니다. 다음은커널을컴파일하기위한화면입니다. Linux 디렉토리로이동후 /boot/config-2.6.18-92.e15 파일을 /usr/src/linux 로복사합니다. Make menuconfig 명령어를사용하여커널설정으로들어갑니다.
Networking - 옵션으로들어갑니다.
Networking options - 옵션으로이동합니다. [*]Network packet filtering (replaces ipchains) - 옵션으로이동합니다.
IP: Netfilter Configuration - 옵션으로이동해서맨아래로커서를내립니다.
< > geoip match support 항목에서스페이스바를누르면 M 이표기됩니다. M 은모듈로선택되었다는의미입니다. M 이표기되는것을확인하고계속해서 Exit 를누르고빠져나옵니다. 메인메뉴에서 Exit 를누르면설정을저장할지를물어봅니다. Yes 를선택해서저장하도록합니다. 저장이되었으면콘솔에서아래와같이명령어를주어서커널컴파일을시작합니다. 커널컴파일이시작됩니다. 하드웨어사양에따라서 1 시간이상걸릴수도있습니다. 위명령어를다실행하고나면부팅순서를변경해줍니다. /boot/grub/ 로이동후 vi 로 grub.conf 파일을열어봅니다. 커널을컴파일하고인스톨을하면부트이미지는맨위로오게됩니다. 따라서 default 옵션을 0 으로주면컴파일한커널로부팅하게됩니다. Default=0 이제 iptables 를설치합니다. 위와같이 /usr/src/iptables 디렉토리에서 make && make install 를치면컴파일과설치가동시에됩니다. 설치는 /usr/local/sbin/ 디렉토리에바이너리가설치됩니다. 라이브러리는 /usr/local/lib/iptables 에설치가됩니다. 설치가끝난후재부팅을해서 2.6.18.8 커널이정상적으로뜨는것을확인해봅니다. uname a 로확인할수있습니다. 이제 geoip 모듈적용화면입니다.
중국은 CN 으로표시되며웹으로접속하는중국아이피를차단하는룰셋입니다. 이룰셋을가장먼저적용하고싶으시면아래와같이적용하시면됩니다. 이룰셋은 iptables 에룰셋이존재할때첫라인에입력하는룰셋입니다. 가장먼저적용이되고적용되는서버는 192.168.0.22 번서버로들어오는모든중국아이피를차단하는룰셋입니다. 포트를지정하지않는경우에는모든포트가적용대상이됩니다. 위와같이 US,CN 나라별로콤마를사용하여중복적으로나라들리스트를열거할수가있습니다. 2 번줄처럼 KR ( 한국 ) 이아닌경우는모두차단도가능합니다.
아래의경우에는 iprange 모듈을활용한방법입니다. 위에서 DATA 변수는 /usr/src/geoipcountrywhois.csv 파일이존재해야합니다. 또한 IPT 변수도 /usr/local/sbin/iptables 가존재해야합니다. 룰셋이적용된리스트입니다. 중국아이피만차단하게되면 759 라인이만들어집니다. 여타다른나라를막고싶으면 GeoIPCountryWhois.csv 파일을열어서나라이름을확인후스크립트에서 egrep United States 이렇게나라를표시하는부분만변경하시면해당국가를차단하실수있습니다. 또한룰셋의 j DROP 부분만변경하시면차단, 허용조절하실수있습니다.