2009년 4월 27일 월요일

공개 웹방화벽 ModSecurity 모듈 설치기

인젠 웹에도 방화벽을 씌울 시기가 왔다~

리눅스에 기본으로 깔린 iptables을 제외하고도 여러가지 방화벽이 많다.
이번엔 Apache 보안 모듈인 웹방화벽 ModSecurity를 설치하여 보겠다.
ModSecurity는 Ivan Ristic이 개발한 Apache 웹서버용 공개 웹방화벽으로 PHP Injection 공격 등 Apache 웹서버의 주요 공격 차단 가능하다.

1. ModSecurity 다운로드 및 설치
ModSecurity공식 웹사이트에 접속하여 최신 버젼으로 다운로드 받는다.
다운로드 받을 파일을 모두 두개인데 하나는 ModSecurity 소스파일이고 다른 하나는 Core Rule파일이다.

다운로드: http://www.modsecurity.org/download/index.html

설치과정은 무난하다.

단지 설치하기 전에 mod_unique_id 모듈이 Apache에 설정이 되어져야 한다.
또한 libxml2 라이브러리가 설치된 상태여야 한다.

# tar xvfz modsecurity-apache_2.5.9.tar.gz -C /usr/local/src
# cd /usr/local/src/modsecurity-apache_2.5.9/apache2
# vi modsecurity_config.sh
./configure \
--with-apxs=/usr/local/apache2/bin/apxs \
--with-httpd-src=/usr/local/src/httpd-2.2.11 \
--with-libxml=/usr

# chmod 700 ./modsecurity_config.sh
# ./modsecurity_config.sh
# make
# make install

이러게 되면 /usr/local/apache2/modules/mod_security2.so 모듈 파일이 생긴다.

httpd.conf 파일을 vi로 열고

LoadModule security2_module modules/mod_security2.so

Apache를 재시동 한다.

2. ModSecurity 설정
ModSecurity 기본 설정 Core Rule을 받고 압축을 풀어서 Apache2가 설치된 경로의 conf/modsecurity에 넣는다.

tar xvfz modsecurity-core-rules_2.5-1.6.1.tar.gz -C /usr/local/apache2/conf/modsecurity

httpd.conf파일을 열고 Include conf/modsecurity/*.conf 을 추가한다.
최소 Rule을 적용할려면 modsecurity.minimal.conf파일을 복사하여 conf/modsecurity에 넣고 저 파일을 인클루드 하면 되겠다.
각 Sample Rules에 대한 설정 파일들의 용도는 다음과 같다.

modsecurity_crs_20_protocol_violations.conf
정상적인 http protocol 위반접속요구(request header)
modsecurity_crs_21_protocol_anomalies.conf
정상적인 http protocol 위반접속요구(request header)
modsecurity_crs_30_http_policy.conf

http 정책에 대한 룰
modsecurity_crs_35_bad_robots.conf
User-Agent에 대한 룰 : 고급화된 공격차단보다는 스캐너등 차단목적
modsecurity_crs_40_generic_attacks.conf
SQL injection / PHP injection / Command access 에 대한 룰
modsecurity_crs_45_trojans.conf
trojan이나 백도어에 대한 접근 룰
modsecurity_crs_50_outbound.conf
에러등 특정 결과값을 통해 정보를 취득하려는 시도 차단

구체적인 Rule설정을 볼려면 첨부한 문서를 참조하면 되겠다.

댓글 없음:

댓글 쓰기