8.1. 보안공격 탐지
HTTP 트래픽의 보안 공격 패턴을 실시간으로 탐지하고 분석하는 화면입니다.
개요
보안공격 탐지는 Kubernetes 클러스터로 유입되는 모든 HTTP 트래픽의 URI를 eBPF 기반으로 실시간 분석하여, 알려진 보안 공격 패턴을 탐지하는 기능입니다. SQL Injection, XSS, 원격 코드 실행(RCE) 등 OWASP Top 10에 해당하는 주요 웹 공격을 별도의 WAF 장비 없이도 모니터링할 수 있습니다.
좌측 사이드바에서 보안공격 탐지 메뉴를 클릭하면 진입할 수 있습니다.
탐지 원리
- 각 노드의 에이전트가 eBPF를 통해 HTTP 요청의 URI와 User-Agent를 커널 레벨에서 캡처합니다.
- URI에 대해 URL 디코딩 및 이중 디코딩(double decoding)을 수행하여 인코딩 우회 공격도 탐지합니다.
- OWASP ModSecurity CRS 기반의 정규식 패턴과 실시간 매칭합니다. Go RE2 엔진을 사용하여 ReDoS(정규식 서비스 거부) 공격에 안전합니다.
- 탐지된 이벤트는 유형별로 분류되어 VictoriaMetrics 메트릭으로 서버에 전송됩니다.
- 서버는 이벤트를 집계하고, GeoIP 정보를 활용하여 공격 출처의 지리적 분포를 분석합니다.
- DB에 이벤트를 저장하고(90일 보관), WebSocket을 통해 10초 간격으로 대시보드에 실시간 반영됩니다.
eBPF 기반 접근의 특징
| 특징 | 설명 |
|---|---|
| 무계측(Agentless) | 애플리케이션 코드 수정 없이 커널 레벨에서 동작합니다. 어떤 프로그래밍 언어, 프레임워크에서도 동작합니다. |
| 성능 영향 최소 | 커널 레벨에서 패턴 매칭을 수행하므로 서비스 성능에 거의 영향을 주지 않습니다. |
| 탐지 전용 | 트래픽을 차단하지 않고 탐지만 수행합니다. 오탐이 발생해도 서비스에 영향이 없습니다. |
참고: 이 기능은 공격 패턴을 탐지하여 알려주는 모니터링 도구입니다. 트래픽을 차단하는 WAF(Web Application Firewall)와는 다르게, 공격 시도를 가시화하여 보안 상황을 인식하고 대응할 수 있도록 돕습니다.
중요: X-Forwarded-For 헤더 설정 필요 공격 출처 IP 식별 및 지역 분포 기능은 클라이언트의 실제 IP를 기반으로 동작합니다. Ingress Controller, 로드밸런서, CDN 등 리버스 프록시를 사용하는 환경에서는 반드시
X-Forwarded-For헤더가 전달되도록 설정해야 합니다. 이 헤더가 없으면 모든 공격 이벤트의 출처 IP가 프록시의 내부 IP로 표시되어, IP 기반 탐지와 GeoIP 지역 분포가 정상 동작하지 않습니다. 설정 방법은 사용 중인 Ingress Controller의 문서를 참고하세요(예: Nginx Ingress의use-forwarded-headers·compute-full-forwarded-for, HAProxy Ingress의forwarded-for옵션). Ingress Controller별 구체적 설정 예시는 사용자수 추정 문서를 참고하세요.
두 가지 탐지 소스
보안 이벤트는 두 가지 경로를 통해 탐지됩니다.
| 소스 | 표시 | 설명 |
|---|---|---|
| 메트릭 기반 (metric) | "metric" 뱃지 | 에이전트가 HTTP URI 패턴 매칭으로 탐지한 이벤트. 유형별(SQLi, XSS 등) 초당 발생률로 집계되며, 최근 4시간의 시계열 데이터로 보관됩니다. KPI 카드, 이벤트 추이 차트, 알림의 기준 데이터입니다. |
| IP 기반 (ip) | IP 주소 표시 | HyperLogLog 기반으로 추적한 공격 IP 정보. 진행 중인 공격을 빠르게 인지할 수 있도록 최근 10분 이내의 데이터만 사용하며, 요청률 상위 최대 50개 IP만 이벤트 테이블에 표시됩니다. 공격이 중단되면 10분 후 자동으로 목록에서 사라집니다. |
메트릭 기반 탐지와 IP 기반 탐지는 별개의 경로가 아닙니다. 에이전트가 공격 패턴을 탐지하면 메트릭(유형별 발생률)과 IP 정보(어떤 IP에서 왔는지)가 동시에 수집됩니다. 메트릭 기반 이벤트가 공격의 종류와 규모를 보여주는 핵심 데이터이고, IP 기반 이벤트는 같은 공격에 대해 "어떤 IP에서 오는지"를 빠르게 파악할 수 있도록 보조하는 역할입니다. IP 기반 이벤트에도 해당 IP가 시도한 공격 유형(SQLi, XSS 등)이 함께 표시됩니다.
탐지 가능한 공격 유형
공격 유형 상세
eBPF 기반으로 모든 HTTP 트래픽의 URI와 User-Agent를 실시간 분석하여 알려진 공격 패턴을 탐지합니다. OWASP CRS를 참고한 63개 패턴(10개 카테고리)으로 오탐을 최소화합니다.
참고: 공격 탐지 카드 우측 상단의 정보 아이콘(ⓘ)을 클릭하면 아래 정보를 화면에서 바로 확인할 수 있습니다.
SQL Injection HIGH
SQL 쿼리에 악의적 코드를 삽입하여 데이터베이스를 조작하는 공격. OWASP Top 10 중 가장 위험한 공격 유형입니다. tautology, UNION SELECT, 시간 지연(SLEEP/BENCHMARK), 시스템 테이블 접근 등 12개 패턴을 탐지합니다.
예시: ' OR 1=1-- UNION SELECT SLEEP(5) xp_cmdshell
XSS (Cross-Site Scripting) HIGH
웹 페이지에 악성 스크립트를 삽입하여 사용자 세션을 탈취하거나 악성 코드를 실행하는 공격입니다. script 태그, javascript: 프로토콜, 이벤트 핸들러, data: URI, DOM 조작 등 9개 패턴을 탐지합니다.
예시: <script>alert(1) javascript: onerror=
RCE (Remote Code Execution) CRITICAL
서버에서 임의의 명령어를 실행하는 공격. Shellshock(CVE-2014-6271), Log4j JNDI(CVE-2021-44228) 등 치명적 취약점을 이용합니다. 셸 명령 구분자, command substitution 등 7개 패턴을 탐지합니다.
예시: ;cat /etc/passwd ${jndi:ldap://} powershell -
Path Traversal HIGH
디렉토리 경로를 조작하여 서버의 민감한 파일(/etc/passwd, /proc/self 등)에 접근하는 공격. URL 인코딩(%2e%2e), 더블 인코딩(%252e%252e) 우회도 탐지합니다.
예시: ../../etc/passwd %2e%2e/ %00
Scanner MEDIUM
Acunetix, Nessus, Netsparker 등 알려진 취약점 스캐너의 시그니처를 탐지합니다. 공격 전 정찰(Reconnaissance) 단계를 의미하며, 본격적인 공격이 이어질 수 있습니다.
예시: acunetix-wvs-test sqlmap UA nikto UA
Path Probing MEDIUM
관리자 페이지, 설정 파일, 백업 파일 등 민감한 경로를 탐색하는 행위를 탐지합니다.
예시: /phpmyadmin/ /.env /.git/config /wp-login.php
SSRF (Server-Side Request Forgery) HIGH
서버가 내부 시스템이나 클라우드 메타데이터에 접근하도록 유도하는 공격을 탐지합니다.
예시: ?url=http://169.254.169.254 gopher:// dict://
CRLF Injection HIGH
HTTP 헤더에 개행 문자를 삽입하여 응답을 조작하는 공격을 탐지합니다.
예시: %0d%0aSet-Cookie: %0d%0aHTTP/
RFI (Remote File Inclusion) HIGH
외부 URL의 악성 파일을 서버에 포함시키려는 시도를 탐지합니다.
예시: include=http://evil.com/ php://filter phar://
CVE Exploit CRITICAL
Spring4Shell, Struts OGNL 등 알려진 CVE 취약점 경로를 탐지합니다.
예시: class.module.classLoader /server-info.action ?-s
심각도 등급
위의 심각도 뱃지는 화면(공격 탐지 정보 다이얼로그)에 표시되는 표기일 뿐, 실제 알림 심각도와 다를 수 있습니다. 실제 이벤트 분류 시 백엔드에서는 다음 3단계로 매핑됩니다(예: RCE 뱃지는 CRITICAL이지만 알림 심각도는 HIGH).
| 등급 | 색상 | 대상 유형 |
|---|---|---|
| HIGH | 빨간색 | RCE, CVE Exploit |
| MEDIUM | 주황색 | SQL Injection, XSS, Path Traversal, SSRF, CRLF, RFI |
| LOW | 회색 | Scanner, Path Probing |
화면 구성
보안공격 탐지 화면은 다음과 같은 영역으로 구성됩니다.

| 영역 | 설명 |
|---|---|
| 상단 헤더 | 실시간 연결 상태, 보안위협 보고서 버튼, 탐지 제외 규칙 표시 |
| KPI 카드 (ROW 1 좌측) | 실시간 위협, 공격 탐지, 활성 알림 3개 카드 |
| 이벤트 추이 차트 (ROW 1 우측) | 최근 4시간의 보안 이벤트 추이 (공격 유형별 스택 영역 차트) |
| 세계 지도 (ROW 2 좌측) | 공격 출처의 세계 분포 (빨간색 버블) |
| 한국 지도 (ROW 2 우측) | 한국 시/도 단위 공격 출처 분포 |
| 국가별 TOP (ROW 3 좌측) | 공격 건수 상위 국가 바 차트 |
| 최근 보안 이벤트 (ROW 3 우측) | 개별 보안 이벤트 테이블 (최대 1,000건) |
주요 기능
실시간 연결 상태 확인
보안공격 탐지 화면은 WebSocket을 통해 서버와 실시간으로 연결됩니다.
| 상태 | 표시 | 설명 |
|---|---|---|
| 실시간 | 초록색 점이 깜빡이며 "실시간" 표시 | 정상 연결 상태. 10초마다 데이터가 자동 갱신됩니다. |
| 연결 끊김 | 빨간색 점과 "연결 끊김" 표시 | 서버 연결이 끊어졌습니다. 카운트다운(초)이 표시되며 자동 재연결을 시도합니다. |
연결이 끊어지면 화면 상단에 경고 바가 나타나며, 재연결 버튼을 클릭하여 수동으로 재연결할 수 있습니다. 자동 재연결은 지수적 백오프(1초에서 최대 30초)로 시도됩니다.
전체 화면
상단 헤더의 전체 화면 아이콘을 클릭하면 보안 대시보드를 브라우저 전체 화면으로 확대할 수 있습니다. 보안 관제 모니터에 띄워놓을 때 유용합니다.
KPI 카드
화면 첫 번째 행 좌측에 3개의 KPI 카드가 표시됩니다.

실시간 위협
최근 4시간 평균 기준으로 분당 보안 이벤트 발생 빈도를 표시합니다.
| 색상 | 기준 | 의미 |
|---|---|---|
| 초록색 | 0 이벤트/분 | 위협 없음 |
| 주황색 | 0 초과 ~ 10 이하 이벤트/분 | 주의 필요 |
| 빨간색 | 10 초과 이벤트/분 | 높은 위협 수준 |
전 기간 대비 증감률이 함께 표시됩니다. 증가는 빨간색(+%), 감소는 초록색(-%)으로 표시됩니 다.
공격 탐지
최근 4시간 동안 탐지된 공격 유형별 건수를 표시합니다.
- 탐지된 공격이 있으면 총 건수와 유형별 태그(SQLi, XSS, RCE 등)가 색상과 함께 표시됩니다.
- 탐지된 공격이 없으면 초록색 방패 아이콘과 "정상" 메시지가 표시됩니다.
활성 알림
현재 활성 상태인 보안 알림 수와 최근 4시간 동안의 전체 알림 수를 함께 표시합니다.
- 형식:
활성 수 / 전체 수(예:3 / 12) - 활성 알림이 있으면 빨간색, 없으면 초록색으로 표시됩니다.
- 카드를 클릭하면 보안 카테고리로 필터링된 알림 목록 페이지로 이동합니다.
이벤트 추이 차트
최근 4시간의 보안 이벤트 발생 추이를 공격 유형별 색상으로 구분한 스택 영역(area) 차트로 표시합니다.
- 각 공격 유형은 고유한 색상으로 표시됩니다.
- 차트 위에 마우스를 올리면 해당 시점의 총 이벤트 수와 세로 가이드 선이 표시됩니다.
- 피크(최고점) 시점에는 자동으로 수치가 레이블 로 표시됩니다.
- 하단에 시간 축이 표시됩니다.
공격 출처 세계 분포
세계 지도 위에 공격 출처 국가가 빨간색 버블로 표시됩니다. 버블의 크기는 해당 국가에서 발생한 공격 건수에 비례합니다.

한국 지역 분포
한국 시/도 단위 지도에 국내 공격 출처의 분포가 표시됩니다.
국가별 TOP
최근 4시간 동안 공격 건수가 가장 많은 상위 10개 국가를 수평 바 차트로 표시합니다.

| 표시 항목 | 설명 |
|---|---|
| 국기 + 국가명 | 공격 출처 국가 식별 |
| 바 차트 | 최다 공격 국가 대비 비율 시각화 |
| 건수 | 해당 국가에서 탐지된 공격 건수 |
| 비율(%) | 전체 대비 퍼센트 |
최근 보안 이벤트
최근 4시간 동안 탐지된 개별 보안 이벤트가 테이블 형태로 표시됩니다. 최대 1,000건까지 표시되며, 최신 이벤트가 상단에 나타납니다.

테이블 컬럼
| 컬럼 | 설명 |
|---|---|
| 시간 | 이벤트 발생 시각 |
| 소스 | 탐지 출처. IP 기반이면 IP 주소가, 메트릭 기반이면 "metric" 뱃지가 표시됩니다. |
| 유형 | 공격 유형 (색상 점 + 유형명) |
| 심각도 | HIGH(빨간색), MEDIUM(주황색), LOW(회색) 중 하나의 뱃지 |
| 대상 | 공격 대상 애플리케이션 이름. 클릭하면 해당 애플리케이션 상세 화면으로 이동합니다. |
| 네임스페이스 | 대상 애플리케이션의 Kubernetes 네임스페이스. 클릭하면 해당 네임스페이스로 필터링된 애플리케이션 목록으로 이동합니다. |
| 요청률 | 해당 이벤트의 초당 요청 수 |
이벤트 상세 다이얼로그
테이블의 이벤트 행을 클릭하면 상세 정보 다이얼로그가 열립니다.
IP 기반 이벤트의 경우:
| 항목 | 설명 |
|---|---|
| 공격자 IP | 공격 출처 IP 주소. 복사 버튼과 GeoIP 조회 버튼이 제공됩니다. |
| 국가/도시 | GeoIP 기반 공격 출처 위치 (국기 + 국가명 + 도시명) |
| 탐지 유형 | 공격 유형 (색상 점 + 유형명) |
| 요청률 | 초당 요청 수 |
| 대상 | 공격 대상 애플리케이션 |
| 네임스페이스 | 대상의 Kubernetes 네임스페이스 |
메트릭 기반 이벤트의 경우:
| 항목 | 설명 |
|---|---|
| 탐지 방식 | "메트릭 기반 탐지" 표시 |
| 탐지 유형 | 공격 유형 |
| 요청률 | 초당 요청 수 |
| 대상 | 공격 대상 애플리케이션 |
보안 이벤트가 없으면 초록색 방패 아이콘과 함께 "보안 이벤트가 감지되지 않았습니다. 시스템이 정상 운영 중입니다." 메시지가 표시됩니다.
보안위협 보고서
상단 헤더의 보안위 협 보고서 버튼을 클릭하면 상세 분석 다이얼로그가 열립니다.

기간 선택
보고서 상단에서 분석 기간을 선택할 수 있습니다.
| 기간 | 설명 |
|---|---|
| 1주 | 최근 7일간의 데이터 |
| 1개월 | 최근 30일간의 데이터 |
| 3개월 | 최근 90일간의 데이터 |
| 6개월 | 최근 180일간의 데이터 |
| 사용자 지정 | 시작일과 종료일을 직접 입력 |
KPI 카드
보고서 상단에 네 가지 핵심 지표가 카드로 표시됩니다.
| KPI | 설명 |
|---|---|
| 총 이벤트 | 선택 기간 동안 탐지된 전체 보안 이벤트 수. 전 기간 대비 증감률 표시. |
| 고유 IP | 공격에 사용된 고유 IP 주소 수. 전 기간 대비 증감률 표시. |
| 최다 유형 | 가장 많이 탐지된 공격 유형과 건수 |
| 신규 IP | 이전 기간에는 없었으나 이번 기간에 새로 탐지된 IP 수 |
핵심 발견 사항
시스템이 자동으로 분석하여 도출한 주요 인사이트가 목록으로 표시됩니다. 예를 들어 특정 공격 유형의 급증, 피크 시간대, 주요 공격 출처 국가 등의 정보가 포함됩니다.
유형별 분류
선택 기간 동안 각 공격 유형(SQLi, XSS, RCE, Path Traversal, Scanner 등)별로 탐지된 건수가 표시됩니다. 어떤 유형의 공격이 가장 빈번한지 한눈에 파악할 수 있습니다.
추이 차트
선택 기간의 보안 이벤트 추이를 일별(daily) 또는 시간별(hourly) 단위로 전환하여 확인할 수 있습니다. 데이터 밀도에 따라 바 차트 또는 영역 차트가 자동으로 선택됩니다.
상위 공격 IP
공격 건수가 가장 많은 상위 20개 IP 주소 목록이 표시됩니다. 각 IP에 대해 다음 정보를 확인할 수 있습니다.
| 항목 | 설명 |
|---|---|
| IP 주소 | 공격에 사용된 IP |
| 국가/지역 | GeoIP 기반 위치 |
| 총 건수 | 해당 IP에서 발생한 전체 이벤트 수 |
| 공격 유형 | 해당 IP가 시도한 공격 유형 분포 |
| 최초 탐지 | 해당 IP가 처음 탐지된 시각 |
| 최종 탐지 | 해당 IP가 마지막으로 탐지된 시각 |
신규 IP 목록
이전 분석 기간에는 없었으나 현재 기간에 새롭게 나타난 IP 목록입니다. 새로운 공격 소스를 빠르게 식별하는 데 유용합니다.
국가별 분포
공격이 발생한 국가별 건수와 비율이 표시됩니다.
보고서 내보내기
보고서는 다음 형식으로 내보낼 수 있습니다.
| 형식 | 설명 |
|---|---|
| 차트가 포함된 보고서 문서. 관리자에게 보고하거나 보관할 때 유용합니다. | |
| Excel | 상세 데이터가 포함된 스프레드시트. 추가 분석에 활용할 수 있습니다. |
탐지 제외 규칙
특정 공격 유형이 오탐(false positive)으로 판단될 경우, 해당 유형의 탐지를 애플리케이션 단위로 제외할 수 있습니다.
대시보드에서 확인
활성화된 탐지 제외 규칙이 있으면 상단 헤더 우측에 탐지 제외: N건 버튼이 표시됩니다. 이 버튼을 클릭하면 현재 적용 중인 제외 규칙 목록을 확인할 수 있습니다.
| 표시 항목 | 설명 |
|---|---|
| 유형 | 제외된 공격 유형 (색상 점 + 유형명) |
| 대상 | 제외가 적용된 애플리케이션 이름 |
| 네임스페이스 | 대상 애플리케이션의 네임스페이스 |
| 사유 | 제외 사유 |
| 생성자 | 제외 규칙을 생성한 사용자 |
각 항목을 클릭하면 해당 애플리케이션의 상세 화면으로 이동합니다.
애플리케이션에서 설정
각 애플리케이션의 상세 화면에서 보안 탐지 제외 규칙 패널을 통해 제외 규칙을 관리할 수 있습니다.
| 기능 | 설명 |
|---|---|
| 제외 | 특정 공격 유형의 알림을 제 외합니다. 제외 사유를 입력할 수 있습니다. |
| 재활성화 | 제외했던 공격 유형의 알림을 다시 활성화합니다. |
제외 규칙의 주요 특성:
- 차트에는 계속 표시: 제외 후에도 해당 유형의 이벤트는 차트와 이벤트 테이블에 표시됩니다.
- 알림만 제외: 해당 유형에 대한 알림(인시던트)이 발생하지 않습니다.
- 언제든 재활성화 가능: 필요할 때 바로 재활성화할 수 있습니다.
보안 감사(Auditor) 알림
시스템은 보안 이벤트 외에도 다음과 같은 이상 징후를 자동으로 감지하여 알림을 생성합니다. 알림은 기본 제공(builtin) 규칙으로 자동 등록되며, 설정 화면에서 임계값과 알림 조건을 조정할 수 있습니다.
| 알림 규칙 | 기본 심각도 | 지속 조건 | 유지 시간 |
|---|---|---|---|
| DDoS / Traffic spike detected | WARNING | 2분 이상 | 5분 |
| Brute force attack detected | WARNING | 1분 이상 | 5분 |
| 5xx error rate spike | WARNING | 2분 이상 | 5분 |
| Security attack pattern detected | WARNING | 1분 이상 | 5분 |
지속 조건(For): 조건이 이 시간 동안 연속으로 충족되어야 알림이 발생합니다. 일시적인 스파이크에 의한 오탐을 방지합니다. 유지 시간(KeepFiringFor): 조건이 해소된 후에도 이 시간 동안 알림을 유지합니다. 간헐적 공격의 알림이 너무 빨리 사라지는 것을 방지합니다.
트래픽 급증 탐지 (DDoS 유사 패턴)
요청 트래픽이 기준치를 크게 초과할 경우 알림이 발생합니다. 업무시간 시작 등 정상적인 트래픽 증가에 의한 오탐을 방지하기 위해 3단계 검증을 수행합니다.
| 단계 | 검증 내용 |
|---|---|
| 1단계: 최소 절대 임계값 | 초당 0.5 요청 이상일 때만 트래픽 급증으로 판단합니다. 평소 트래픽이 거의 없는 서비스에서의 오탐을 방지합니다. |
| 2단계: 복합 신호 분석 | 트래픽 증가와 함께 에러율(5xx) 상승이 동반되는지 확인합니다. 정상적인 트래픽 증가(업무시간 시작 등)는 에러율이 함께 오르지 않으므로 걸러집니다. |
| 3단계: 7일 EWMA 재검증 | 1~2단계를 통과한 경우에만 실행됩니다. 최근 7일간의 트래픽 데이터로 EWMA(지수가중이동평균) 기준선을 계산하여 재검증합니다. 주간 패턴(평일/주말)과 시간대 별 트래픽 변동을 반영하여 야간 저트래픽 직후 업무시간 시작 시의 오탐을 방지합니다. |
기본 알림 조건: 최근 15분 평균이 기준선의 8배를 초과하고, 2분 이상 지속될 경우 알림이 발생합니다.
무차별 대입 공격 탐지
401/403 응답 비율이 비정상적으로 높을 경우 알림이 발생합니다. 저트래픽 서비스에서의 오탐을 방지하기 위해 3단계 검증을 수행합니다.
| 단계 | 검증 내용 |
|---|---|
| 1단계: 최소 절대 임계값 | 초당 1.0 요청 이상일 때만 비율을 판단합니다. 요청이 극히 적은 서비스에서 인증 실패 1~2건으로 비율이 과도하게 높아지는 오탐을 방지합니다. |
| 2단계: 윈도우 평균 비율 | 마지막 순간값이 아닌 최근 15분 평균으로 인증 실패 비율을 계산합니다. 일시적 변동에 의한 오탐을 방지합니다. |
| 3단계: 7일 EWMA 재검증 | 1~2단계를 통과한 경우에만 실행됩니다. 최근 7일간의 인증 실패 비율 EWMA와 비교하여, 원래 인증 실패가 높은 서비스(예: 공개 API)의 오탐을 방지합니다. |
기본 알림 조건: 최근 15분 평균에서 인증 실패(401+403) 응답이 전체 요청의 **50%**를 초과하고, 1분 이상 지속될 경우 알림이 발생합니다.
5xx 에러 급증 탐지
서버 에러(5xx)가 기준치를 크게 초과할 경우 알림이 발생합니다. 에러가 거의 없던 서비스에서 에러 1~2건 발생 시 오탐이 되는 것을 방지하기 위해 3단계 검증을 수행합니다.
| 단계 | 검증 내용 |
|---|---|
| 1단계: 최소 절대 임계값 | 1시간 평균 에러율이 초당 0.1건(분당 약 6건) 이상일 때만 급증으로 판단합니다. 에러가 거의 없는 서비스에서 에러 1건 발생 시 비율이 과도하게 높아지는 오탐을 방지합니다. |
| 2단계: 비율 검사 | 최근 15분 에러율이 1시간 기준선의 10배를 초과하는지 검사합니다. 순간 에러 1~2건에 의한 오탐을 방지합니다. |
| 3단계: 7일 EWMA 재검증 | 1~2단계를 통과한 경우에만 실행됩니다. 최근 7일간의 에러율 데이터로 EWMA 기준선을 계산하여 재검증합니다. 주간 패턴을 반영하여 1시간 평균이 일시적으로 낮았던 경우의 오탐을 방지합니다. |
기본 알림 조건: 최근 15분 평균이 기준선의 10배를 초과하고, 2분 이상 지속될 경우 알림이 발생합니다.
공격 패턴 탐지
HTTP URI에서 위에 설명한 공격 유형(SQLi, XSS, RCE 등)의 패턴이 탐지될 경우 알림이 발생합니다.
- 유형별 건수: 알림 메시지에 유형별 탐지 건수가 포함됩니다.
- 제외 적용: 탐지 제외 규칙이 설정된 유형은 알림에서 제외됩니다.
데이터 보관 기간
| 데이터 | 보관 기간 |
|---|---|
| 보안 이벤트 (security_events) | 90일 |
| IP 요약 정보 (security_ip_summary) | 365일 |
보관 기간이 지난 데이터는 매일 자동으로 정리됩니다.
자주 묻는 질문
공격이 탐지되었는데 실제로 차단되나요?
아닙니다. 이 기능은 공격 시도를 탐지하고 알려주는 모니터링 도구입니다. 트래픽을 차단하려면 별도의 WAF(Web Application Firewall)를 구성해야 합니다. 탐지된 공격 정보를 활용하여 WAF 규칙을 설정하거나, 방화벽에서 특정 IP를 차단하는 등의 대응 조치를 취할 수 있습니다.
오탐(False Positive)이 너무 많습니다
특정 애플리케이션에서 정상적인 요청이 공격으로 오탐되는 경우, 해당 애플리케이션의 상세 화면에서 탐지 제외 규칙을 설정하세요.
OWASP 원본 패턴에서 오탐 유발 요소를 제외:
OWASP ModSecurity CRS 원본 패턴에는 일반적인 웹 트래픽에서 오탐이 빈번하게 발생하는 요소가 포함되어 있어, 다음 항목을 탐지 대상에서 제외하였습니다.
- RCE (Shell Command): OWASP 원본은 URL 쿼리 구분자
&를 셸 연산자로 포함하여&id=123같은 일반적인 파라미터가 RCE로 오탐됩니다.&를 탐지 대상에서 제외하고;과|만 검사합니다. - RCE (Shellshock): OWASP 원본은
() {패턴만으로 탐지하여 JSONP 콜백이나 JavaScript 함수 표현식에서 오탐이 발생합니다. 중괄호 뒤에 콜론 또는 세미콜론(:,;)이 있는 경우만 탐지하도록 범위를 축소하였습니다. - SSRF (OAuth/OIDC):
redirect_uri,post_logout_redirect_uri등 OAuth/OIDC 표준 파라미터에 내부 URL이 포함되는 것은 정상적인 SSO 흐름입니다. Keycloak, Okta, Auth0 등의 SSO 연동에서 오탐이 발생하지 않도록 9개 OAuth 표준 파라미터를 자동 제외합니다.
여전히 오탐이 발생할 수 있는 유형:
공격 패턴 탐지는 HTTP 요청의 URI(URL 경로 및 쿼리 파라미터) 에서만 수행됩니다. 요청 본문(body)이나 응답 내용은 검사하지 않습니다. 따라서 아래 오탐은 URI에 해당 패턴 문자열이 포함되는 경우에만 발생하며, 해당 애플리케이션에서 탐지 제외 규칙을 설정하여 관리할 수 있습니다.
| 유형 | 주요 오탐 시나리오 | 권장 조치 |
|---|---|---|
| XSS (script tag) | 리치텍스트 에디터(TinyMCE, CKEditor), SVG/XML 콘텐츠, 코드 공유 플랫폼 | CMS/에디터 앱에서 XSS 제외 |
| XSS (event handler) | HTML 템플릿의 onclick, onload 속성, Vue/Angular 이벤트 바인딩 | SPA 프레임워크 앱에서 XSS 제외 |
| XSS (iframe/embed) | YouTube/지도 임베드, CMS 폼 빌더, 미디어 플레이어 | 임베드 기능 앱에서 XSS 제외 |
| XSS (DOM 조작) | JavaScript 프레임워크 API 문서, 코드 리뷰 도구 | 개발 도구 앱에서 XSS 제외 |
| SQL Injection (tautology) | 아포스트로피 포함 이름("O'Brien"), 불리언 검색 파라미터 | 모니터링 후 필요 시 제외 |
| SQL Injection (hex) | CSS 16진수 색상 코드(0x1a2b3c), 해시값 | 모니터링 후 필요 시 제외 |
| SQL Injection (시스템 테이블) | DB 관리 도구, 분석 대시보드 | DB 관리 앱에서 SQLi 제외 |
| Path Traversal (../) | 상대 경로 URL(../assets/style.css), 브레드크럼 네비게이션 | 정적 파일 서빙 앱에서 Path 제외 |
제외 후에도 차트에는 계속 표시되므로 데이터 손실 없이 불필요한 알림만 줄일 수 있습니다.