6. 웹 방화벽(modsecurity) 기본 실습

2024. 11. 25. 09:00·프로젝트/[ESXi]인프라 구축 및 모니터링


🚩 주요 경로

경로 설명
/etc/nginx/sites-available/test-server 도메인 이름으로 접근하는 경우에만 프록시 서버로 연결되도록 설정
vim /etc/nginx/modsec/modsecurity.conf 룰 지정

/etc/nginx/modsec/owasp-modsecurity-crs/rules 무료 룰 설치 디렉터리
/etc/nginx/modsec/main.conf 룰 지정 파일

 

1. 네트워크 구성도

네트워크 구성도

 

2. modsecurity 설치

 

가상 시스템 이름 ubuntu20.04
호환성 VMware Workstation

 

CPU 1
메모리 2GB
하드디스크 100GB
네트워크 어댑터 VMware(dhcp)

 

nginx 설치

sudo -i
apt update && apt install nginx -y

 

modsecurity 설치 전 필요한 패키지 설치

apt-get install -y apt-utils autoconf automake build-essential git libcurl4-openssl-dev libgeoip-dev liblmdb-dev libpcre++-dev libtool libxml2-dev libyajl-dev pkgconf wget zlib1g-dev

 

modsecurity를 깃헙 레포지토리에서 다운로드

git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity

 

modsecurity 디렉터리 접근 후 컴파일 수행

cd ModSecurity
git submodule init
git submodule update
./build.sh
./configure
make
make install

 

nginx 버전 확인

 

nginx 관련 데이터 다운로드 Modseucrity 모듈 컴파일

git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar zxvf nginx-1.18.0.tar.gz

cd nginx-1.18.0
./configure --with-compat --add-dynamic-module=../ModSecurity-nginx
make modules
cp objs/ngx_http_modsecurity_module.so /usr/share/nginx/modules/ngx_http_modsecurity_module.so

vim /etc/nginx/nginx.conf
load_module modules/ngx_http_modsecurity_module.so;

 

다이나믹 모드로 로드하기

/etc/nginx/nginx.conf 파일 상단에 다음 내용 추가 (vim /etc/nginx/nginx.conf)
load_module modules/ngx_http_modsecurity_module.so;

 

1. modsecurity 설정 및 차단 활성화
mkdir /etc/nginx/modsec
wget -P /etc/nginx/modsec/ https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended
mv /etc/nginx/modsec/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf

2. sed를 이용해 특전 문석의 원하는 부분 수정
sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/nginx/modsec/modsecurity.conf

3. /etc/nginx/modsec/main.conf 파일을 다음과 같이 작성 vim /etc/nginx/modsec/main.conf
# From https://github.com/SpiderLabs/ModSecurity/blob/master/ # modsecurity.conf-recommended # # Edit to set SecRuleEngine On Include "/etc/nginx/modsec/modsecurity.conf" # Basic test rule SecRule ARGS:testparam "@contains test" "id:1234,deny,status:403"

4. /etc/nginx/sites-available/default에 다음 두라인 추가 vim /etc/nginx/sites-available/default
server {
    # ... modsecurity on;
    modsecurity_rules_file /etc/nginx/modsec/main.conf;
}

5. NGINX 설정 오류 확인과 unicode.mapping 복제
find / -name unicode.mapping
/root/ModSecurity/unicode.mapping
cp /root/ModSecurity/unicode.mapping /etc/nginx/modsec/unicode.mapping
nginx -t
service nginx restart

 

모드 시큐리티 동작 테스트(1)

 

모드 시큐리티 동작 테스트(2)

 

3. 웹 방화벽 프록시 설정

/etc/nginx/sites-available/default(1)

 

/etc/nginx/sites-available/default(2) - 기본 라우팅은 404로 설정

 

ip 설정 시 index.html(error) 페이지로 연결 확인 - 설정후 index.html 파일을 생성

 

/etc/nginx/sites-available/test-server - 도메인 이름으로 접근하는 경우에만 프록시 서버로 연결되도록 설정

 

/etc/nginx/nginx.conf - http에 include 추가

 

소프트 링크를 통해서 enabled 디렉토리에 파일 배치

 

boanproject.com을 도메인 등록 후 테스트

 

4. modsecurity 로그 확인 및 무료 룰 적용

Section  Description
A Audit log header (mandatory)
B Request headers
C Request body
D Reserved
E Response body
F Response headers
G Reserved
H Audit log trailer, which contains additional data
I Compact request body alternative (to part O) which excludes files
J Information on uploaded files
K Contains a list of all rules that matched for the transaction
Z Final boundary (mandatory)

 

modsecurity 로그

 

/etc/nginx/modsec/modsecurity.conf - waf 차단 해제

 

무료로 제공하는 코어 룰 셋 설치

cd ~
wget https://github.com/coreruleset/coreruleset/archive/v3.2.0.tar.gz
tar -xvf v3.2.0.tar.gz
mkdir /etc/nginx/modsec/owasp-modsecurity-crs
cp coreruleset-3.2.0/crs-setup.conf.example /etc/nginx/modsec/owasp-modsecurity-crs/crs-setup.conf
cp -r coreruleset-3.2.0/rules /etc/nginx/modsec/owasp-modsecurity-crs/rules
cd /etc/nginx/modsec/owasp-modsecurity-crs/rules
ls

 

코어 룰 셋 지정 - /etc/nginx/modsec/main.conf

# id 가 동일한 룰이 존재할 경우 오류 발생
vim /etc/nginx/modsec/modsecurity.conf

 

5. modsecurity ESXi 이전 및 테스트

ovf 파일로 변환 후 ESXi에 업로드, dmz-net

 

고정 IP 할당

 

curl 10.0.10.100으로 bee-box 연결 확인

 

vi /etc/nginx/sites-enabled/test-server

 

포트포워딩을 10.0.10.2(WAF)로 변경

 

웹 방화벽 접근 시 bee-box로 접근 확인

 

IP 접근 시 error 생성

 

/etc/hosts 파일 변경

 

waf rule 지정

 

owasp-zap 설치를 위한 업데이트

 

zaproxy 설치

 

owsap-zap 실행

 

waf.com 공격

 

/var/log/modsec_audit.log 파일 로그 생성

 

bee-box(10.0.10.100)에서는 웹 방화벽에서 공격한 것 처럼 확인됨

 

'프로젝트 > [ESXi]인프라 구축 및 모니터링' 카테고리의 다른 글

8. Splunk 튜토리얼  (3) 2024.11.27
7. 방화벽에서 VLAN 인터페이스 할당  (0) 2024.11.26
5. pfsense 방화벽 정책 설정(개발자 대역)  (0) 2024.11.22
4. IDS와 IPS 스노트 룰 패턴 탐지 실습  (2) 2024.11.21
3. Securityonion을 활용한 IDS(Suricata) 구축  (0) 2024.11.20
'프로젝트/[ESXi]인프라 구축 및 모니터링' 카테고리의 다른 글
  • 8. Splunk 튜토리얼
  • 7. 방화벽에서 VLAN 인터페이스 할당
  • 5. pfsense 방화벽 정책 설정(개발자 대역)
  • 4. IDS와 IPS 스노트 룰 패턴 탐지 실습
real-again
real-again
realagin 님의 블로그 입니다.
  • real-again
    또또, 다시
    real-again
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 프로젝트
        • AOS 모바일 앱 모의해킹
        • Spring Boot 웹 애플리케이션 구축
        • [ESXi]인프라 구축 및 모니터링
        • 인프라 취약점 진단 고도화
      • CVE 분석
      • 기반 지식
        • AWS
        • 인프라
        • 웹 어플리케이션
        • Android
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    브로트캐스트
    하드코드
    aos정리
    insecure authentication/authorization
    diva
    Snort
    app intsructure
    owasp mobile top10
    sd스토리지
    통신 과정 취약점 진단
    splunk #esm
    tocken
    콘텐츠 프로바이더
    android directory
    spring boot
    AWS
    vlan
    dvm
    pfsense
    EC2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
real-again
6. 웹 방화벽(modsecurity) 기본 실습
상단으로

티스토리툴바