아파치웹서버보안 #4 : 아파치 보안모듈 1강
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,099 조회
- 0 추천
- 목록
본문
아파치 보안 모듈
지금까지는 아파치 자체에서 제공하는 기능을 활용한 보안강화 방안에 대해 알아보았다. 그러나 과연 이 대응 방법만으로 다양하고 고급화되고 있는 각종 해킹 시도를 차단할 수 있을까?라고 묻는다면 아마도 자신 있게 대답할 수는 없을 것이다.
. 따라서 뒤에서 살펴볼 IDS와 같이 다양한 침입시도를 사전에 인지하거나 차단할 수 있는 기능을 제공하는 전용 대응 모듈이 있다면 좋겠다는 생각이 들 것이다.
. 특히 최근의 해킹 추세 중 대표적인 방식인 웹해킹은 정상적인 웹 접속을 통한 공격이므로 대표적 보안 장비인 방화벽 등을 우회함으로써 보안 장비를 무력화 시킬 수 있고, 별도의 프로그램이 없이 단지 브라우저만으로도 공격이 가능하므로 전체 해킹의 70% 이상을 차지하고 있어 보안 관리자를 긴장 시키고 있다.
. 물론 최근에는 웹 해킹에 대응하기 위한 전용 웹방화벽 장비도 상용화되어 있지만 천문학적인 액수이기 때문에 실제 도입은 무리가 있을 것이다.
. 그러나 일부 기능이나 인터페이스는 다소 떨어질 수 있으나 오픈소스 중에는 추천할 만한 보안 모듈 프로그램이 없지는 않다.
대표적인 웹 서버 프로그램인 아파치의 경우 기본적으로 제공하는 모듈 외에도 다양한 기능을 제공하는 추가 모듈이 공개되어 있어 필요할 때마다 모듈을 삽입함으로써 부가기능을 이용할 수 있는데, 여기에서는 보안과 관련한 몇 가지 모듈 중 가장 대표적인 웹 해킹 대응 모듈인 mod_security와 웹 기반의 서비스거부(DoS)공격에 대응할 수 있는 mod_dosevasive 기능을 추가해 보도록 하자.
참고로 지금부터 중점적으로 알아보려는 mod_security는 다음과 같은 특징을 가지고 있다.
.
① 웹 서버로 들어오는 요청은 서버에 전달되기 전에 mod_security에게 전달되어 정상적인 트래픽인지 여부에 대한 유효성 여부를 체크하게 된다.
② 여러 가지 IDS 우회(evasion)기법을 인식할 수 있는 기능을 제공한다.
③ mod_security는 HTTPS뿐만 아니라 HTTP 프롵토콜을 정확히 이해하고 있으므로 정확도가 높고 상세한 설정도 가능하다.
④ POST 메소드로 작동하는 데이터에 대해서도 작동한다.
⑤ 모든 요청에 대해 사후 분석을 위해 로그에 남길 수도 있다.
.
두 모듈의 홈페이지는 각각 아래와 같으며 사이트에서 모듈 프로그램을 다운로드하면 된다.
modsecurity의 경우 https://bsn.breach.com/에서 회원가입 후 다운로드 가능하다.
* mod_security : http://www.modsecurity.org/
* mod_dosevasive : http://www.nuclearelephant.com/projects/dosevasive/
[그림] mod_security 홈페이지 [그림] mod_dosevasive 홈페이지
modsecurity는 1.x 버전과 2.x 버전을 제공하고 있는데, 각 버전의 차이점은 다음과 같다.
버 전 및 항 목 | modsecurity 1.x | modsecurity 2.x |
processing phase | Inbound(Request body) / Outbound(Response body) 지원 | Request header(phase:1) Request body(phase:2) Response header(phase:3) Response body(phase:4) logging(phase:5) |
설정 방법 | apache 1.x <IfModule mod_security.c> apache 2.x<IfModulesecurity_module> |
<IfModule security2_module>
|
설치 방법 | apache 1.x/2.x모두 지원 DSO/컴파일 지원 | apache 2.x만 지원 DSO방식만 지원 |
turn on/off rule engline | SecFilterEngine | SecRuleEngine |
default rule action | SecFilterDefaultAction | SecDefaultAction |
rule directive | SecFilter, SecFilterSelective |
Secrule |
accessing request bodies | SecFilterScanPost | SecRequestBodyAccess |
accessing response bodies | SecFilterScanOutput | SecResponseBodyAccess |
업데이트 | 개발 및 업데이트 중단 | 계속 지원 |
아직까지는 apache 1.3.x 때문에 modsecurity 1.x 사용자가 많이 있지만 현재는 개발이 중단되었고 개발자도 modsecurity 2.x 사용을 권장하고 있으므로 modsecurity 버전 선정시 참고하기 바라며 참고로 apache 1.x의 경우 modsecurity1.x를, apache2.x의 경우에는 modseucrity 2.x를 사용하면 된다.
각 버전에 따른 설치 방법에 대해 살펴보도록 하자.
- apache 1.3.x 와 modsecurity 1.x
먼저 파일을 다운로드한 후 압축 해제하여 각각의 모듈 파일인 mod_security.c와 mod_dosevasive.c 파일을 아파치의 소스 내 모듈 디렉토리인 src/modules/extra/에 복사하도록 한다.
그리고 다음과 같이 해당 기능을 포함하도록 아파치를 재설정하면 된다.
참고로 아래의 예는 mod_security와 mod_dosevasive 모듈을 함께 사용하는 것으로 각자의 필요에 따라 일부만 사용해도 된다.
[root@www apache_1.3.xx]# ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a --activate-module=src/modules/extra/mod_security --enable-module=security --activate-module=src/modules/extra/mod_dosevasive --enable-shared=dosevasive |
그리고 컴파일하여 아래와 같이 설치하면 된다.
[root@www apache_1.3.xx]# make; make install |
- apache 2.x 와 modsecurity 2.x
apache 2.x를 이용할 경우 rpm 버전이면 httpd 및 httpd-devel등의 패키지를 설치하고 소스 설치 시에는 ./configure --enable-so --enable-unique-id 옵션을 추가하여 설치 하도록 한다.
그리고 libxml2-devel rpm 패키지 및 2.5이상의 최근 modsecurity를 설치 하려면 lua(http://www.lua.org/download.html)도 설치한다.
(1) # rpm -q httpd
httpd-2.0.52-28.ent.centos4
(2) modsecurity의 Makefile을 열어 top_dir 부분의 변수를 적당한 경로로 변경한다.
rpm의 경우 /etc/httpd로 변경하고, 소스의 경우 /usr/local/apach2로 변경하면 된다.
modsecurity 2.5이상에서는 apache2/ 디렉토리에서 ./configure를 실행하면 된다.
(3) make; make install 로 설치하면 modules/mod_security2.so 파일이 생성된다.
(4) httpd.conf에 아래의 라인을 추가한다.
LoadFile /usr/lib/libxml2.so
LoadFile /usr/lib/liblua5.1.so (modsecurity 2.5 이상의 경우)
LoadModule security2_module modules/mod_security2.so
(5) 아파치의 conf 디렉토리 이하에 modsecurity 디렉토리를 생성하고 modsecurity
의 소스 내 rules/에 있는 룰파일을 모두 복사한다.
이후 httpd.conf 에 다음의
설정을 추가한다.
conf/modsecurity/*.conf
(6) 이후 httpd를 재가동하여 적용한다.
# /etc/rc.d/init.d/httpd restart
서비스를 적용하기 전에 주의할 부분이 있다.
. 다른 솔루션도 마찬가지이지만 보안 모듈을 적용할 때에는 실제 서비스 중인 서버에 바로 적용하지 말고, 임시로 테스트할 수 있는 서버에서 충분히 테스트 후 각자의 환경에 맞는 적당한 설정값을 찾아야 한다.
또는 설정값에 대해서는 처음부터 차단이 아닌 탐지 모드로 설정하여 일정 기간 모니터링 후 정상적인 접속이 차단되지 않도록 하여야 한다.
실제로 상용 IDS나 IPS 장비도 auto learning 기능이 있어 일정기간 이를테면 일주일 동안에는 비정상적인 트래픽으로 간주되더라도 장비를 통과하는 패킷을 차단하지 않고 모두 통과하도록 하여 모니터링 기간을 갖도록 하고 있다.
.
관련자료
-
이전
-
다음