정보보안핵심 · 21분 읽기

방화벽·pfSense·ModSecurity·CRS의 처리 과정

패킷 상태와 NAT 순서, WAF의 HTTP 트랜잭션 단계, 규칙·변수·변환·점수와 실제 차단을 구분하고 원본 로그의 잘못된 해석을 바로잡습니다.

개념부터 찾아보기

정의·역할·동작 원리를 독립 페이지에서 확인하세요. 본문의 밑줄 용어에도 설명이 있습니다.

이 노트에서 설명할 수 있게 되는 것

  1. 패킷 상태·NAT·정책 방향을 실제 흐름에 적용한다.
  2. ModSecurity의 단계·변수·규칙과 CRS 차단 판단을 구분한다.
  3. 원본 로그에서 관찰한 사실과 침해 성공 여부를 분리한다.

01개념과 구성 요소

  • 주소·포트·프로토콜·연결 상태를 기준으로 네트워크 통과를 결정한다.
  • HTTP 요청·응답의 헤더·본문·파라미터를 응용 문맥에서 검사한다.
  • 배치 위치· 종료· ·· 점수·모드가 실제 처리와 차단을 결정한다.

02ModSecurity의 HTTP 처리 단계

  1. 요청 헤더를 검사한다. 아직 본문 파싱 전이므로 본문 필드가 필요한 규칙을 대신하지 못한다.
  2. 설정된 body processor와 접근·크기 조건에 따라 본문·파라미터를 검사한다.
  3. 서버가 만든 응답 헤더를 검사한다. 이 시점에 응답 본문 전체가 준비되었다고 가정하지 않는다.
  4. 활성화한 응답 본문 검사를 수행한다. 백엔드의 상태 변경이 이미 진행되었을 가능성은 따로 남는다.
  5. 거래와 규칙 결과를 로그에 남긴다. 기록 자체가 앞선 요청을 차단했다는 뜻은 아니다.

03네트워크 방화벽과 WAF가 보는 대상

  • 네트워크 방화벽은 출발지·목적지 주소, 프로토콜·포트, 인터페이스·방향과 연결 상태 등을 기준으로 전달을 통제한다. 는 HTTP 요청·응답을 해석한 문맥에서 URI·헤더·파라미터·본문 등을 검사한다.
  • 처럼 의 자원 접근을 제한하는 통제와도 대상이 다르다.
  • 는 와 PF 기반 방화벽·라우터 플랫폼이다. 배포판도 아니고 를 실행하기 위한 전용 GUI만도 아니다.
  • · 패키지를 추가해 /를 구성할 수 있지만 패키지의 분석 경로와 기본 PF 정책은 각각 확인한다.
  • Cisco ASA는 별도의 보안 장비 제품군이다. ··는 각각 검사 계층·배치·운영 역할이 달라 같은 기술의 다른 이름으로 볼 수 없다.

04Stateful 처리: 첫 패킷·상태표·반환 트래픽

  • 은 허용한 흐름의 주소·포트·프로토콜과 필요한 프로토콜 상태를 추적한다. 첫 패킷이 규칙을 통과해 state가 만들어지면 같은 연결의 반환 패킷을 상태와 대조해 처리할 수 있다.
  • 도 전송 프로토콜의 연결 협상은 없지만 방화벽에서 흐름과 타임아웃을 추적할 수 있다.
  • 규칙을 수정했는데 이미 연결된 SSH가 계속 동작하는 것은 기존 state가 남아서일 수 있다. 신규 연결과 기존 연결을 따로 시험하고 필요한 상태만 범위를 정해 제거한다.
  • 전체 state 초기화는 관계없는 사용자 연결도 끊을 수 있으므로 단순 검증의 기본 동작으로 쓰지 않는다.
  • 비대칭 경로로 요청과 응답이 서로 다른 stateful 장비를 통과하면 상태 정보가 없는 쪽에서 응답을 버릴 수 있다. 규칙 표만 보지 말고 실제 진입 인터페이스·반환 경로··state를 함께 확인한다.
  • 방화벽의 정상 상태는 특정 서비스 인증·앱 동작의 정상까지 의미하지 않는다.
  1. 상태표에 없는 트래픽을 적용되는 인터페이스·방향·정책에 따라 평가한다.
  2. 허용된 첫 패킷으로 연결 문맥과 필요한 변환 관계를 상태표에 만든다.
  3. 후속·반환 패킷은 기존 상태와 일치하는지 평가한다. 도 방화벽 내부에서 시간 제한 상태를 유지할 수 있다.
  4. 연결 종료나 timeout으로 상태가 사라진다. 정책 변경만으로 기존 상태가 즉시 같은 방식으로 재평가된다고 가정하지 않는다.

05pfSense의 NAT·규칙 평가와 관측 위치

  • 인터페이스 탭 규칙은 일반적으로 그 인터페이스로 들어오는 트래픽을 기준으로 읽는다. WAN 는 목적지 변환 이후 주소에 대해 필터 규칙을 평가하므로 연결된 허용 규칙의 목적지가 내부 서버 주소가 될 수 있다.
  • WAN의 외부 주소만 조건에 넣고 실제 변환 순서를 무시하면 예상과 다른 정책이 된다.
  • LAN에서 시작한 일반적인 흐름은 LAN 진입 정책과 WAN 출구 등 관련 단계를 거친다. ·규칙··상태 처리의 관계는 패킷 방향과 구성에 따라 달라진다.
  • Floating·group·interface 규칙, 자동 규칙과 설정이 영향을 주며 이 없는 floating 규칙은 마지막 일치가 적용될 수 있다.
  • 패킷 캡처는 진입과 출구에서 각각 다른 주소를 볼 수 있다. 내부 10.0.0.10:50000이 외부 문서용 주소 198.51.100.10:62000으로 변환되는 설명용 예에서 두 캡처를 같은 주소로만 검색하면 반쪽만 찾게 된다.
  • state에 기록된 변환 관계와 시간을 사용해 동일 흐름을 연결한다.

06센서 배치·HA·관리 경로

  • LAN 스위치 내부에서 직접 오가는 트래픽은 를 거치지 않으면 해당 인터페이스 센서가 볼 수 없다. HOME_NET 값을 넓혀도 보이지 않던 패킷이 생성되지 않는다.
  • passive , inline , 탐지 후 주소 차단의 지연과 적용 경로를 구분한다.
  • 고가용성 구성에서 CARP는 가상 IP 전환, pfsync는 state 동기화, XMLRPC는 설정 동기화의 역할을 한다. 같은 VIP를 사용한다는 이유만으로 모든 연결 상태와 장비별 인터페이스 설정이 자동으로 동일해지는 것은 아니다.
  • 전환 시험에서 신규·기존 연결과 노드별 관리 경로를 확인한다.
  • config.xml에는 계정·인증서· 등 민감한 설정이 포함될 수 있다. 관리 UI 접근, 백업 보관과 복원 권한을 제한하고 패키지 업데이트와 기반 시스템 업데이트를 구분한다.
  • 장애 때 fail-open 또는 fail-close인지도 제품 이름 하나로 결정하지 말고 실제 배치·동작 모드·우회 경로로 확인한다.

07WAF의 배치와 TLS 종료 지점

  • 는 , 웹 서버 모듈, 클라우드 edge 형태로 배치할 수 있다. 암호화된 본문을 검사하려면 종료 지점에서 평문 HTTP를 보거나 별도로 복호화한 요청을 전달받아야 한다.
  • 단순히 HTTPS 포트를 통과시키는 것만으로 · 본문 검사 기능이 생기지 않는다.
  • 는 웹 서버·, 는 검사 엔진, OWASP 는 범용 탐지 규칙 집합이다. connector와 엔진 버전·서버 구성에 따라 지원 기능과 설정이 다르다.
  • 엔진 설치, connector 연결, 규칙 로드, 실제 검사 대상 경로를 각각 확인한다.
  • origin 서버에 직접 접근할 수 있으면 를 우회하는 경로가 남는다. origin의 접근 통제와 재암호화, 신뢰한 프록시의 실제 클라이언트 주소 전달을 설계한다.
  • 통과가 애플리케이션의 ·prepared statement·출력 인코딩·패치 책임을 대신하지 않는다.
LEARN THROUGH PRACTICE

인라인 차단 설정과 Apache 요청 로그를 다른 증거로 읽기

네트워크 차단 경로와 HTTP 내용 검사가 어떤 관찰 자료를 남기는지 구분한다.

실습 구성과 전제

  • 격리 ·웹 서버의 설정과 기존 로그를 읽는다.
  • 설정 화면과 스캔 로그는 서로 다른 환경의 비교 자료다. 한 제품이 같은 요청을 차단한 앞뒤 증거로 연결하지 않는다.
  1. 설정된 차단 방식의 위치를 확인한다

    • 화면은 패키지의 Block Offenders와 Mode를 보여 준다. Inline 모드는 실제 패킷 경로와 NIC 지원 조건을 요구한다.
    • 선택 상자가 켜져 있다는 사실과 드롭이 발생했다는 사실은 다르다. 경보·차단 테이블·클라이언트 결과를 연결해야 한다.
    7/21 - pfsense · 실습·개념 참고 화면 1원본 크기로 보기 ↗
    • Block Offenders가 체크돼 있고 IPS Mode는 Inline Mode로 선택돼 있다.
    • 설명에는 Legacy가 복제 패킷을 보고 Inline은 패킷을 직접 검사한다고 적혀 있으며 지원 NIC 조건도 함께 나온다.
    확인 기준

    현재 실행 모드·인터페이스·드롭 규칙을 확인한 뒤 차단 효과를 판정한다.

  2. 접근 로그가 보는 HTTP 결과를 읽는다

    • access log의 요청 경로·상태 코드·시각·User-Agent를 분리한다. 스캔 표식 문자열이 있다고 실제 코드 실행이 일어났다고 단정하지 않는다.
    • 404는 해당 경로의 HTTP 응답 상태다. 로그 처리 과정의 취약한 해석이나 다른 부작용까지 안전하다는 뜻은 아니다.
    ModSecurity 요청·로그 해석 · Nessus로 발생하는 로그에 대한 분석원본 크기로 보기 ↗
    • 여러 CGI·PHP 경로에 대한 GET과 대부분의 404, 별도 HEAD 요청의 200이 보인다.
    • User-Agent 부분에는 스캐너 표식이 반복된다. 화면 하단의 '대부분 실패' 평가는 실제 취약점 부작용까지 증명하지 못한다.
    확인 기준

    감사 로그의 규칙 ID·매치 변수·액션을 추가로 확인한다.

  3. 요청 ID로 탐지와 차단을 대조한다

    • 의 탐지는 변수·연산자·변환·액션 조건으로 결정된다. access log의 상태만 보지 않고 동일 요청의 감사 로그와 응답을 연결한다.
    • 관찰 모드에서는 규칙이 맞아도 요청이 통과할 수 있다. 정상 표본도 함께 시험해 오탐을 좁히고 규칙 전체 비활성화를 첫 해결책으로 삼지 않는다.
    shell
    apachectl -t
    journalctl -u apache2 --since today --no-pager

    설정 문법과 서비스 오류를 조회하는 예시. 배포판에 따라 httpd 서비스와 도구를 사용한다.

    확인 기준

    탐지 로그 존재·disruptive action·사용자 응답을 각각 기록한다.

실습에서 확인한 동작 원리

  • 차단 설정 화면은 차단 성공 증거를 대신하지 않는다.
  • 404 응답과 미탐·취약점 비영향 여부는 다른 판정이다.

설정·출력 추가로 확인하기 34장

아래 화면을 펼쳐 위 실습의 설정값, 명령과 확인 기준을 비교해 보세요. 각 묶음은 별도 실습 기록입니다.

실습 화면 묶음 01 2장
7/21 - pfsense · 실습·개념 참고 화면 3원본 크기로 보기 ↗
  • 「Pfsense (IPS)」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 방화벽·pfSense·ModSecurity·CRS의 처리 과정 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
7/21 - pfsense · 패킷 캡처 2원본 크기로 보기 ↗
  • 「Pfsense (IPS)」 문맥에 삽입된 원본 패킷 캡처이다. 방화벽·pfSense·ModSecurity·CRS의 처리 과정 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 02 1장
7/30 - 발표 · 구성도 1원본 크기로 보기 ↗
  • 「전체 토폴로지」 문맥에 삽입된 원본 구성도이다. 방화벽·pfSense·ModSecurity·CRS의 처리 과정 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 03 3장
8/24 - ospf , 해킹 툴 · 실습·개념 참고 화면 1원본 크기로 보기 ↗
  • 「kali 에서 waf 켜져있는지 확인」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 방화벽·pfSense·ModSecurity·CRS의 처리 과정 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
8/24 - ospf , 해킹 툴 · 실습·개념 참고 화면 2원본 크기로 보기 ↗
  • 「kali 에서 waf 켜져있는지 확인」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 방화벽·pfSense·ModSecurity·CRS의 처리 과정 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
8/24 - ospf , 해킹 툴 · 실습·개념 참고 화면 3원본 크기로 보기 ↗
  • 「kali 에서 waf 켜져있는지 확인」 문맥에 삽입된 원본 실습·개념 참고 화면이다. 방화벽·pfSense·ModSecurity·CRS의 처리 과정 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 04 8장
ASA 방화벽 관리 · ASA (2)원본 크기로 보기 ↗
  • 수업 원본 자료 · ASA 관리 접속·설정 백업·ASDM 연결. 원문에서 「ASA」에 배치된 그림 또는 화면이다.
ASA 방화벽 관리 · ASA ASDM 연결 설정하기 (5)원본 크기로 보기 ↗
  • 수업 원본 자료 · ASA 관리 접속·설정 백업·ASDM 연결. 원문에서 「ASA ASDM 연결 설정하기」에 배치된 그림 또는 화면이다.
ASA 방화벽 관리 · ASA ASDM 연결 설정하기 (6)원본 크기로 보기 ↗
  • 수업 원본 자료 · ASA 관리 접속·설정 백업·ASDM 연결. 원문에서 「ASA ASDM 연결 설정하기」에 배치된 그림 또는 화면이다.
ASA 방화벽 관리 · ASA ASDM 연결 설정하기 (7)원본 크기로 보기 ↗
  • 수업 원본 자료 · ASA 관리 접속·설정 백업·ASDM 연결. 원문에서 「ASA ASDM 연결 설정하기」에 배치된 그림 또는 화면이다.
ASA 방화벽 관리 · ASA ASDM 연결 설정하기 (8)원본 크기로 보기 ↗
  • 수업 원본 자료 · ASA 관리 접속·설정 백업·ASDM 연결. 원문에서 「ASA ASDM 연결 설정하기」에 배치된 그림 또는 화면이다.
ASA 방화벽 관리 · ASA ASDM 연결 설정하기 (9)원본 크기로 보기 ↗
  • 수업 원본 자료 · ASA 관리 접속·설정 백업·ASDM 연결. 원문에서 「ASA ASDM 연결 설정하기」에 배치된 그림 또는 화면이다.
ASA 방화벽 관리 · ASA 에서 TFTP 백업 (3)원본 크기로 보기 ↗
  • 수업 원본 자료 · ASA 관리 접속·설정 백업·ASDM 연결. 원문에서 「ASA 에서 TFTP 백업」에 배치된 그림 또는 화면이다.
ASA 방화벽 관리 · ASA 에서 TFTP 백업 (4)원본 크기로 보기 ↗
  • 수업 원본 자료 · ASA 관리 접속·설정 백업·ASDM 연결. 원문에서 「ASA 에서 TFTP 백업」에 배치된 그림 또는 화면이다.
실습 화면 묶음 05 1장
ASDM 관리자 접속·정책 조회 · ASDM 사용원본 크기로 보기 ↗
  • 학습 원본 · ASDM 관리자 접속·정책 조회의 ASDM 사용에 수록된 화면·도식이다.
실습 화면 묶음 06 1장
ASDM 관리자 접속·정책 조회 · ASDM 사용원본 크기로 보기 ↗
  • 학습 원본 · ASDM 관리자 접속·정책 조회의 ASDM 사용에 수록된 화면·도식이다.
실습 화면 묶음 07 1장
ASDM 관리자 접속·정책 조회 · ASDM 사용원본 크기로 보기 ↗
  • 학습 원본 · ASDM 관리자 접속·정책 조회의 ASDM 사용에 수록된 화면·도식이다.
실습 화면 묶음 08 1장
ASDM 관리자 접속·정책 조회 · ASDM 사용원본 크기로 보기 ↗
  • 학습 원본 · ASDM 관리자 접속·정책 조회의 ASDM 사용에 수록된 화면·도식이다.
실습 화면 묶음 09 1장
ASDM 관리자 접속·정책 조회 · ASDM 사용원본 크기로 보기 ↗
  • 학습 원본 · ASDM 관리자 접속·정책 조회의 ASDM 사용에 수록된 화면·도식이다.
실습 화면 묶음 10 1장
ASDM 관리자 접속·정책 조회 · ASDM 사용원본 크기로 보기 ↗
  • 학습 원본 · ASDM 관리자 접속·정책 조회의 ASDM 사용에 수록된 화면·도식이다.
실습 화면 묶음 11 1장
ASDM 관리자 접속·정책 조회 · ASDM 사용원본 크기로 보기 ↗
  • 학습 원본 · ASDM 관리자 접속·정책 조회의 ASDM 사용에 수록된 화면·도식이다.
실습 화면 묶음 12 1장
Cisco ASAv 인터페이스·정책 구성원본 크기로 보기 ↗
  • 학습 원본 · Cisco ASAv 인터페이스·정책 구성의 ASAv에 수록된 화면·도식이다.
실습 화면 묶음 13 1장
Cisco ASAv 인터페이스·정책 구성 · GNS에서 ASAv 구축원본 크기로 보기 ↗
  • 학습 원본 · Cisco ASAv 인터페이스·정책 구성의 GNS에서 ASAv 구축에 수록된 화면·도식이다.
실습 화면 묶음 14 1장
Cisco ASAv 인터페이스·정책 구성 · GNS에서 ASAv 구축원본 크기로 보기 ↗
  • 학습 원본 · Cisco ASAv 인터페이스·정책 구성의 GNS에서 ASAv 구축에 수록된 화면·도식이다.
실습 화면 묶음 15 1장
Cisco ASAv 인터페이스·정책 구성 · GNS에서 ASAv 구축원본 크기로 보기 ↗
  • 학습 원본 · Cisco ASAv 인터페이스·정책 구성의 GNS에서 ASAv 구축에 수록된 화면·도식이다.
실습 화면 묶음 16 1장
Cisco ASAv 인터페이스·정책 구성 · GNS에서 ASAv 구축원본 크기로 보기 ↗
  • 학습 원본 · Cisco ASAv 인터페이스·정책 구성의 GNS에서 ASAv 구축에 수록된 화면·도식이다.
실습 화면 묶음 17 1장
Cisco ASAv 인터페이스·정책 구성 · GNS에서 ASAv 구축원본 크기로 보기 ↗
  • 학습 원본 · Cisco ASAv 인터페이스·정책 구성의 GNS에서 ASAv 구축에 수록된 화면·도식이다.
실습 화면 묶음 18 1장
Cisco ASAv 인터페이스·정책 구성 · GNS에서 ASAv 구축원본 크기로 보기 ↗
  • 학습 원본 · Cisco ASAv 인터페이스·정책 구성의 GNS에서 ASAv 구축에 수록된 화면·도식이다.
실습 화면 묶음 19 1장
Cisco ASAv 인터페이스·정책 구성 · GNS에서 ASAv 구축원본 크기로 보기 ↗
  • 학습 원본 · Cisco ASAv 인터페이스·정책 구성의 GNS에서 ASAv 구축에 수록된 화면·도식이다.
실습 화면 묶음 20 1장
Cisco ASAv 인터페이스·정책 구성 · 시나리오원본 크기로 보기 ↗
  • 학습 원본 · Cisco ASAv 인터페이스·정책 구성의 시나리오에 수록된 화면·도식이다.
실습 화면 묶음 21 1장
WAF 탐지 도구와 HTTP 실습 · waf00f원본 크기로 보기 ↗
  • 학습 원본 · WAF 탐지 도구와 HTTP 실습의 waf00f에 수록된 화면·도식이다.
실습 화면 묶음 22 1장
WAF 탐지 도구와 HTTP 실습 · waf00f원본 크기로 보기 ↗
  • 학습 원본 · WAF 탐지 도구와 HTTP 실습의 waf00f에 수록된 화면·도식이다.
실습 화면 묶음 23 1장
WAF 탐지 도구와 HTTP 실습 · waf00f원본 크기로 보기 ↗
  • 학습 원본 · WAF 탐지 도구와 HTTP 실습의 waf00f에 수록된 화면·도식이다.
실습 화면 묶음 24 1장
WAF 탐지 도구와 HTTP 실습 · waf00f원본 크기로 보기 ↗
  • 학습 원본 · WAF 탐지 도구와 HTTP 실습의 waf00f에 수록된 화면·도식이다.
동작·명령 참고 문서

08ModSecurity의 다섯 처리 단계

  • 규칙은 언제 실행되는지에 따라 볼 수 있는 데이터가 다르다. 1은 요청 헤더 시점으로 아직 요청 본문 파싱 결과를 기대하지 않는다.
  • 2는 요청 본문 처리 단계이고 SecRequestBodyAccess와 body processor, content type·크기 제한에 따라 실제 검사 범위가 달라진다.
  • 3은 응답 헤더, 4는 응답 본문, 5는 로깅 단계다. 응답 본문 검사는 접근 설정·MIME 유형·크기 제한·connector 지원에 영향을 받는다.
  • 응답을 차단할 때에는 backend가 이미 요청을 처리했을 수 있으므로 DB 변경까지 되돌린다고 생각하지 않는다.
  • JSON·multipart·일반 form 데이터가 모두 같은 방식으로 에 나타난다고 가정하지 않는다. 파서가 선택되지 않았거나 본문이 잘렸으면 규칙이 실행되어도 필요한 값이 없을 수 있다.
  • body parse error와 limit 처리 정책도 감사 로그에서 확인한다.
단계주요 관측 대상검사 시점의 한계
1요청 헤더본문 파싱 전
2요청 본문·파라미터body access·processor·limit 필요
3응답 헤더응답 본문 미완성
4응답 본문서버 처리가 이미 진행되었을 수 있음
5로깅이 시점의 기록이 사전 차단을 뜻하지 않음

09SecRule: 변수·연산자·변환·액션을 분리해서 읽기

  • 은 검사 변수, 비교 연산자, 실행 액션을 조합한다. 는 파싱된 파라미터 값, ARGS_NAMES는 이름, :User-Agent는 특정 헤더, TX는 현재 의 변수 집합이다.
  • &는 컬렉션의 원소 수이며 문자열 길이 전체를 뜻하지 않는다.
  • @streq는 정확한 문자열 비교, @rx는 정규표현식, @pm은 여러 패턴, @ipMatch는 주소 범위를 검사한다. @detectSQLi·@detectXSS도 탐지 휴리스틱과 구현 조건을 가지며 모든 공격의 정확한 판별기가 아니다.
  • 이 매칭되었다는 사실은 입력이 악성이라는 확정과 구분한다.
  • t:none과 t:lowercase 같은 변환은 검사에 사용할 값을 준비한다. URL 디코딩·공백 처리·소문자화의 순서와 애플리케이션 파서가 다르면 오탐·미탐이 생길 수 있다.
  • 규칙이 본 값을 로그로 대조하며 원본 요청을 무조건 똑같이 바꿔 backend에 보낸다고 이해하지 않는다.
SecRule REQUEST_HEADERS:X-Course-Check "@streq block-me" \
 "id:1100001,phase:1,t:none,deny,status:403,log,msg:'Course WAF check'"

무해한 시험 헤더를 정확히 비교하는 학습용 규칙이다. id는 예시이며 기존 규칙과 충돌 여부를 확인한다. 에서는 차단 대신 관찰에 사용된다.

10액션·chain·상태 저장

  • deny는 차단 결정, status는 응답 코드, log는 기록, id·msg·tag·rev는 식별·설명에 쓰인다. pass는 해당 규칙의 비차단 동작이며 뒤 모든 규칙을 자동 통과시키는 뜻이 아니다.
  • allow·skip 계열은 뒤 검사를 생략할 수 있어 광범위하게 적용하면 검사 공백을 만든다. drop을 모든 connector에서 항상 특정 FIN 패킷을 보내는 기능이라고 단정하지 않는다.
  • 은 뒤따르는 조건을 결합한다. capture는 매칭 그룹을 TX 변수에 보관하는 기능이며 로그에 매칭 데이터를 남기거나 Filebeat로 전송하기 위한 보편적인 필수 조건은 아니다.
  • 로그 포맷과 수집 파서가 어떤 필드를 보존하는지 별도로 확인한다.
  • 로그인 빈도 제한에는 상태 초기화와 LOGIN_COUNT 비교뿐 아니라 실패 판정, 카운터 증가, 집계 키, 만료 조건이 필요하다. 비교 규칙만 있어서는 실제 횟수가 누적되지 않는다.
  • 상태 저장의 범위·동시성·엔진 지원, 신뢰한 클라이언트 IP, 실패 이벤트의 정의와 시간 창이 필요하다. User-Agent에 도구 이름이 있다는 이유만으로 공격이나 행위자 신원을 확정하지 않는다.

11CRS: 개별 탐지와 최종 차단 점수

  • anomaly scoring은 여러 탐지 규칙의 기여 점수를 에 모으고 별도의 평가 단계에서 임계값과 비교한다. 따라서 어떤 rule ID가 매칭되었다는 로그와 최종 요청 차단은 구분해야 한다.
  • 요청과 응답의 점수·차단 경계도 별개이다.
  • 설명용으로 임계값이 5이고 두 탐지가 각각 3과 2점을 더하면 합계 5에서 차단 조건에 도달한다. 이는 설정을 이해하는 예이며 모든 rule의 점수가 같거나 모든 설치의 임계값이 5라는 뜻은 아니다.
  • 실행 모드·early blocking·예외 규칙에 따라 실제 처리도 확인한다.
  • 은 활성화되는 탐지 규칙의 범위·엄격함과 관련되며 경보 severity나 확정된 공격 위험도와 같은 숫자가 아니다. 레벨을 높이면 정상 입력의 오탐도 늘 수 있다.
  • 정상 요청과 공격 재현을 함께 비교해 path·parameter·rule ID 단위로 필요한 예외를 제한한다.
원리 심화

12CRS 점수·평가 시점·실행 모드

  • 여러 규칙이 한 요청에서 서로 다른 신호를 발견할 수 있다. Anomaly scoring에서는 각 탐지의 점수를 누적한 뒤 차단 임계값과 비교한다.
  • 의 기본 심각도 점수는 CRITICAL 5·ERROR 4·WARNING 3·NOTICE 2다. 실제 배포의 변수 값과 임계값은 별도로 확인한다.
  • 은 실행할 규칙 집합과 관련된다. 높은 수준은 더 많은 신호와 오탐 가능성을 만들므로 임계값 숫자와 같은 개념이 아니다.
  • 요청 헤더·본문의 처리 단계와 최종 점수 판정 시점을 구분한다. 한 규칙의 매칭 로그가 바로 실제 차단을 뜻하지는 않는다.
  • 에서는 탐지·기록과 실제 차단 효과를 분리해 읽는다. 높은 점수 기록만 보고 사용자의 요청이 차단됐다고 단정하지 않는다.
예제로 추적

13가상 임계값 7에서 점수 5와 3이 합쳐질 때

  1. 교육용 정책의 요청 차단 임계값을 7로 둔다. 이는 제품 기본값을 주장하는 예제가 아니다.
  2. 규칙 A가 CRITICAL 점수 5를 더해 누적값이 5가 된다. 이 점수만으로는 설정한 임계값 7에 도달하지 않는다.
  3. 규칙 B가 WARNING 점수 3을 더하면 누적값은 8이다. 각 규칙이 독립적으로 본 신호와 누적값을 구분한다.
  4. 차단을 적용하는 모드에서 최종 평가가 8≥7을 확인하면 해당 정책에 따라 거부한다. 로그의 규칙 ID··누적값을 연결한다.
  5. 같은 입력을 로 처리하면 탐지 기록이 남아도 차단 액션은 적용되지 않는다. 응답·백엔드 도달 여부를 함께 관찰한다.
검증·예외

14정상 요청의 WAF 차단을 좁히는 기준

  • 규칙 ID·검사 변수·매칭된 파라미터·변환 결과를 확인한다. URL 전체를 전역 예외로 만들기 전에 원인을 특정한다.
  • URL 디코딩·정규화와 애플리케이션 파싱 결과를 비교한다. 와 백엔드가 다른 문자열을 해석하면 누락이나 오탐이 생길 수 있다.
  • 정상 기능의 특정 변수·경로·규칙에 제한된 예외를 적용하고 같은 기능의 비정상 표본을 재시험한다.
  • 를 통과하지 않는 백엔드 직접 경로와 다른 가상 호스트를 확인한다. 차단 화면 하나만으로 전체 서비스 경로가 보호된다고 판단하지 않는다.

15원본 Apache 스캔 로그: 404는 안전 판정이 아니다

  • 원본 이미지에는 JNDI 형태 문자열과 여러 경로 요청이 보인다. 이것은 요청이 기록되었다는 근거이며 실제 취약한 라이브러리가 문자열을 평가했는지, 외부 조회·코드 실행이 발생했는지는 다른 증거가 필요하다.
  • 문자열이 악성 시도의 후보라는 판단과 침해 성공이라는 결론을 분리한다.
  • 404는 요청한 자원을 찾지 못했다는 HTTP 결과다. 로그 기록은 그 전후에 발생할 수 있으므로 404만으로 취약점 시도가 실패했다고 보장할 수 없다.
  • 반대로 200도 공격 성공의 증거가 아니다. 요청 ID·시각으로 audit, 앱 오류, ·네트워크와 흔적을 대조한다.
수업 원본 자료

원본 Apache 로그의 관찰과 해설을 분리해 읽기

Apache access log에 여러 CGI 경로 요청과 JNDI 형태 문자열, 404·301·200 상태가 기록된 원본 학습 캡처원본 크기로 보기 ↗
ModSecurity log rule 조사 노트의 원본이다. 이미지 아래의 기존 해설에는 단정적인 표현이 있어 아래 판독 설명과 함께 읽어야 한다. 이 자료는 WAF 차단 로그 자체가 아니다.

이 자료에서 읽어낼 것

  1. 요청 URI, 상태 코드, User-Agent/Referer 위치 등에 같은 형태의 JNDI 문자열이 반복된다. 스캔으로 보이는 행위의 단서이지만 로그 문자열만으로 실제 원격 코드 실행을 입증하지 않는다.
  2. 이미지 아래의 “404=대부분 실패”는 정정한다. 404는 HTTP 자원 처리 결과이며, 그 이전이나 별도 경로의 취약한 로깅 처리가 안전했음을 보증하지 않는다.
  3. nessus.org 문자열과 테스트용 패턴은 사용한 도구의 단서다. 헤더 값은 요청자가 넣을 수 있으므로 도구·행위자 신원을 확정하는 증거는 아니다.
  4. 이 화면에는 ModSecurity rule ID, intervention, CRS 누적 점수와 최종 차단 결정이 없다. WAF audit log·애플리케이션 로그·DNS/외부 연결 흔적을 대조해야 한다.

16관찰 모드에서 운영 정책으로 전환하기

  • 처음에는 SecRuleEngine 와 필요한 audit 설정으로 정상 요청의 baseline을 확보한다. 는 규칙이 매칭되더라도 실제 차단을 하지 않으므로 “경보가 났다=방어됐다”로 보고하지 않는다.
  • 정상 로그인·업로드·API JSON·큰 본문 등 서비스의 실제 기능을 시험한다.
  • 오탐을 재현하고 최소 범위 예외를 적용한 뒤 정상·비정상 시험을 반복하고 조치·되돌릴 절차를 정해 blocking으로 전환한다. 엔진· 버전, 과 예외에 담당자·사유·검토 기한을 남긴다.
  • 일부 URL의 동작을 살리려고 전체를 끄면 다른 경로의 보호도 사라진다.
  • 최종 검증은 요청이 어느 경로를 지났는지, 어떤 rule이 무엇을 매칭했는지, 점수와 최종 action이 무엇인지, 앱에 전달되었는지와 정상 기능 영향까지 포함한다. wafw00f의 응답 지문은 제품 추정 단서이며 확정적인 구성 증거는 아니다.
READ · OBSERVE · CONNECT

함께 보는 학습 자료

아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.

공식 가이드

OWASP CRS: 이상 점수와 차단 판정 흐름

개별 규칙의 severity 점수가 누적되어 요청·응답 차단 임계값에 도달하는 과정을 예제로 따라갈 수 있다.

읽으면서 확인할 것
  • CRITICAL·ERROR·WARNING·NOTICE의 기본 점수
  • 요청과 응답의 별도 누적 임계값
  • 일반 평가 단계와 선택적인 Early Blocking
학습 확인

이해했는지 확인하기

  • 들어오는 인터페이스·NAT·상태·매칭 규칙을 함께 확인한다.
  • WAF의 TLS 처리 지점과 탐지·차단 모드를 확인한다.
  • 정상·비허용 사례를 시험하고 예외 범위를 최소화한다.

함께 확인할 공식 자료