[modsecurity]아파치 modsecurity 연동

ModSecurity는 
시스템 소프트웨어, 보안,  modsecurity -> Open Source Web Application Firewall.
웹 서비스를 통해서 공격을 시도하는 XSS, SQL Injection, Command Execute과 같은 공격을
효과적으로 차단하는 역할을 수행하는 보안 모듈이며, Apache HTTP 서버, 마이크로소프트
IIS 및 NGINX에서도 사용 가능 하다고 한다.

[사전 설치]
pcre, apr, apr-util, libxml2, pcre-devel, libxml2-devel, curl-devel

yum install pcre
yum install pcre-*
yum install apr-* apr
yum install libxml2 libxml2-*
yum install curl-devel

[설치]
- 환경 : modsecurity(v2.9.2), apache24(httpd-2.4.41), centos7
1. apache 설치
https://httpd.apache.org/download.cgi#apache24 -> 다운로드 링크 복사 : http://mirror.navercorp.com/apache//httpd/httpd-2.4.41.tar.gz
~]# wget http://mirror.navercorp.com/apache//httpd/httpd-2.4.41.tar.gz
~]# tar xvf httpd-2.4.41.tar.gz 
~]# cd httpd-2.4.41
~]#./configure --prefix=/app/web/apache24 --with-mpm=worker --enable-mods-shared=all
<- 결과에 에러나 정상적인 동작이 진행 안되면,
libc6-dev, g++, gcc 설치해보기
[정상 결과 확인]

~]# make & make install
~]# cd /app/web/apache24 <- 아파치 설치 경로 이동
[아파치 디렉토리 구성]

~]# vi /app/web/apache24/conf/httpd.conf
-> ServerName {hostname} 지정해주기
~]# ./apachectl -t <- 신택스 테스트 하기
~]# ./apachectl start <- 서버 시작
~]# ps -ef | grep httpd
~]# curl localhost
[정상 동작 확인]
2. ModSecurity 모듈 설치
https://www.modsecurity.org/download.html -> 다운로드 링크 복
사 : https://www.modsecurity.org/tarball/2.9.3/modsecurity-2.9.3.tar.gz
~]# wget https://www.modsecurity.org/tarball/2.9.3/modsecurity-2.9.3.tar.gz
~]# tar xvf modsecurity-2.9.3.tar.gz
~]# cd modsecurity-2.9.3 
~]# ./configure --with-apxs=/app/web/apache24/bin/apxs
~]# cp modsecurity.conf-recommended /app/web/apache24/conf/modsecurity.conf
~]# cp unicode.mapping /app/web/apache24/conf/
~]# cd /app/web/apache24/modules/
~]# ls -lart
-> modsecurity 모듈 생성 유무 확인
[생성된 모듈 확인]
3. 아파치, ModSecurity 연동
 3-1. httpd.conf에 해당 모듈 추가
~]# vi /app/web/apache24/conf/httpd.conf  
(mod_security2.so, mod_unique_id.so 추가)
[모듈 추가]

~]# ./apachectl -M | grep security
[추가된 모듈 확인]
(yum install unzip)
~]# mv owasp-modsecurity-crs-2.2.9/ modsecurity-crs <- 디렉토리 이름 변경
~]# mv modsecurity-crs/ /app/web/apache24/conf/ <- 디렉토리 이동
~]# cd /app/web/apache24/conf/modsecurity-crs/
- 룰셋 적용(룰셋 : 광범위한 웹공격으로부터 웹 응용 프로그램을 보호하기 위한 일반적인 공격탐지 규칙의 집합)
~]# cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf <- 파일 복사
~]# for f in 'ls base_rules/'; do ln -s /app/web/apache24/conf/modsecurity-crs/base_rules/$factivated_rules/$f; done
~]# ln -s /app/web/apache24/conf/modsecurity-crs/modsecurity_crs_10_setup.conf activated_rules/modsecurity_crs_10_setup.conf <- 심볼릭 링크 설정

5. ModSecurity 설정
~]# vi modsecurity_crs_10_setup.conf
해당 옵션 추가
SecRuleEngine On
SecAuditEngine On
SecAuditLog /app/web/apache24/logs/modsec_audit.log
SecAuditLogParts ABCFHZ
SecDataDir /tmp
해당 옵션 수정
SecDefaultAction "phase:1,deny,log" -> SecDefaultAction "phase:1,deny,log, auditlog"
SecDefaultAction "phase:2,deny,log" -> SecDefaultAction "phase:2,deny,log, auditlog"
~]# vi /app/web/apache24/conf/http.conf
맨 아랫부분에 추가
Include conf/modsecurity-crs/activated_rules/*.conf

~]# cd /app/web/apache24/bin
~]# ./apachectl -t <- 신택스 검사
~]# ./apachectl stop  <- 서비스 중지
~]# ./apachectl start <- 서비스 시작
~]# ps -ef | grep httpd   <- 서비스 정상 동작 확인

6. ModSecurity 로그 확인
~]# cd /app/web/apache24/logs
~]# cat modsec_audit.log
[로그 확인]

댓글