apache2 mod_security 설치 및 테스트


apache2 mod_security 설치 및 테스트

ModSecurity의 주요 특징은 다음과 같다.
o 요청(request) 필터링
– 클라이언트로부터 웹 요청이 들어올 때, 웹서버 또는 다른 모듈들이 처리하기 전에 ModSecurity가 요청 내용을 분석하여 필터링한다.
o 우회 방지 기술
– 경로와 파라미터를 분석하기 전에 정규화시켜 우회 공격을 차단한다.
– 즉, “//”, “\/”, “.”, “%00” 등 우회 공격용 스트링을 제거하고, 인코딩된 URL을 디코딩한다.
o HTTP 프로토콜 이해
– 엔진이 HTTP 프로토콜을 이해하기 때문에 전문적이고 정밀한 필터링을 수행할 수 있다.
o POST 페이로드(payload) 분석
– GET 방식 뿐만 아니라 POST 메소드를 사용해서 전송되는 컨텐츠도 분석 가능하다.
o 감사 로깅
– POST를 포함하여 모든 요청의 모든 상세한 부분들까지 추후 분석을 위해서 로깅될 수 있다.
– ModSecurity에서 차단기능을 비활성화 시킨 후, 강력한 로깅 기능만으로 침입탐지 시스템 역할을 수행할 수 있도록 한다.
o HTTPS 필터링
– 엔진은 웹서버에 임베디드되어 있기 때문에 복호화 한 후에 요청 데이터에 접근하여 HTTPS를 통한 공격도 필터링할 수 있다.

설치 환경
ubuntu 12.04 LTS 64bit
apache2_mod_security_1

1. apache2 설치.

2. PHP5 설치

3. Mysql 설치

4. PHP5 와 Mysql 연동을 위한 설치

phpinfo() 으로 설치된 환경 확인.
apache2_mod_security_2

자 그럼 이제 mod_security를 설치해보자.

5. 필요 라이브러리 설치

6. 64 Bit 사용자 일 경우 아래와 같이 링크를 걸어준다.

7. mod-security 설치

다시 phpinfo() 으로 정상적으로 설치 되었는지 확인.
apache2_mod_security_3

mod_security2가 정상적으로 load 된것을 확인할수 있다.

8. 취약한 테스트 페이지 만들기.

Sql injection에 취약한 로그인페이지를 하나 만들어서 테스트 하자.

먼저 mysql 에 DB와 table를 만들고 계정도 하나 생성하자.

먼저 테스트를 위한 login.php 를 만들자.

apache2_mod_security_4

apollo89 / logintest를 넣어 로그인하니, 정상적으로 로그인이 되었다.

이번에는 username에 ‘ or 1=1 — 넣어 sql injection 공격을 시도했더니..
공격이 성공되어 정상적으로 로그인이 되었다.

9. mod-security rule 설정

기본설정을 복사한다.

/etc/modsecurity/modsecurity.conf 에서 아래 부분을 변경한다.

/etc/apache2/mods-enabled/mod-security.conf 에서 아래의 부분을 추가한다.

/usr/share/modsecurity-crs/activated_rules 디텍토리를 생성하고 활성화 시킬 rule를 복사한다.

이제 다시 login.php 으로 접속해보자.

apollo89 / logintest를 넣어 로그인하니, 정상적으로 로그인이 되었다.

username에 ‘ or 1=1 — 넣어 sql injection 공격을 시도했더니..
에러가 뜨며 차단이 되었다.

윈도우의 경우 APMsetup 을 이용하여 설치했으며,
APMsetup7 버전에는 modsecurity2 가 포함되어있다.

설치후 httpd.conf설정 파일(C:\APM_Setup\Server\Apache\conf\httpd.conf )에서
#Include conf/extra/httpd-modsecurity.conf 부분의 주석을 제거하면 된다.

설정방법은 위와 동일하다.

참고 : https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_security-with-apache-on-debian-ubuntu


This entry was posted in Security/Hacking and tagged , . Bookmark the permalink.

One Response to apache2 mod_security 설치 및 테스트

  1. sugonhwang says:

    저.. 잘보고있습니다 그런데요
    /etc/apache2/mods-enabled/mod-security.conf가 전 없어서 vi실행하면서 바로 만들었ㅇ거든요
    그리고 내용을 추가시켰는데 원래 mod-security.conf가 없어야 하는게 정상인거 맞는거죠?

    한가지 더. mod-seucirty.conf에 모듈을 추가 시킨 후 아파치를 restart 시키면 fail이 뜹니다.

    AH00526 : Syntax error on line 23 of /etc/modsecuriy/modsecurity.conf:
    ModSecurity: Found another rule with the same id
    Action ‘configtest’ failed.
    The Apache error log may have more information

    이렇게 에러가 뜨네요.. 보면 룰 아이디가 중복된다는거 같은데.. 이거 해결을 어떻게 하면 될까요
    해당 라인에 가보니 정규표현식으로 되있던데.. 아직 저가 정규표현식을 제대로 공부하지 못해서 해석이안됩니다ㅠㅠ 도와주십쇼

댓글 남기기