192. IDS Rule
velog
📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 192편 이전 글: 191. Anomaly Detection · 다음 글: 193. Snort 1. 개념 IDS Rule(규칙) 은 "어떤 트래픽을 보면 어떤 메시지로 Alert를 만들지"를 정의한 한 줄의 명세입니다. 규칙 문법(헤더와 옵션, content, flow 등)은 06 영역 282. Signature Rule , 288. Snort Rule 기초 , 290. Suricata Rule 기초 에서 자세히 다룹니다. 이 글은 규칙을 센서 장비에서 관리하는 방법 , 즉 규칙이 어느 파일에 있고, 어떤 설정 파일과 연결되며, 로컬 규칙을 어떻게 안전하게 추가·시험하는지를 다룹니다. 규칙 한 줄의 구조는 간단히 다음과 같습니다. alert icmp any any -> $HOME_NET any (msg:"LOCAL ICMP echo request to HOME_NET"; itype:8; sid:1000001; rev:1;) └조치┘└프로토콜┘└출발지┘ └방향┘ └목적지┘ └──────────────── 옵션 (메시지, 조건, 식별자) ───────────────┘ 2. 동작 원리 Suricata 기준으로 규칙과 관련 파일이 엔진에 연결되는 구조입니다(패키지 기본 경로 기준, 설치 방식에 따라 다름). /etc/suricata/suricata.yaml ├─ vars.address-groups (HOME_NET, EXTERNAL_NET) → 규칙의 $변수 값 ├─ default-rule-path: /var/lib/suricata/rules ├─ rule-files: suricata.rules, /etc/suricata/rules/local.rules ├─ classification-file: /etc/suricata/classification.config → classtype → 분류명·우선순위 ├─ reference-config-file: /etc/suricata/reference.config → reference 링크 형식 └─ threshold-file: /etc/suricata/threshold.config → 억제(suppress)·임계치 ↓ 엔진 시작 / reload 시 적재 [탐지 엔진] → Alert: signature_id, rev, signature(msg), category(classtype), severity threshold-file 항목은 패키지에 따라 주석 처리되어 있을 수 있어 사용 전에 확인합니다. Alert의 category 와 severity 는 규칙의 classtype 이 classification.config 에서 어떤 분류명과 우선순위로 정의되었는지에 따라 정해집니다(규칙에 priority 를 직접 지정하면 그 값이 우선). 즉 같은 규칙이라도 설정 파일에 따라 Alert의 심각도가 달라질 수 있습니다. 3. 주요 특징 엔진별 규칙 관련 설정 위치입니다. 항목 Suricata Snort 2 Snort 3 주 설정 파일 suricata.yaml snort.conf snort.lua 규칙 포함 방식 rule-files 목록 include $RULE_PATH/local.rules ips 모듈의 include 또는 rules 변수 vars.address-groups ipvar HOME_NET ... HOME_NET = '...' (Lua 변수) 억제·임계치 threshold.config threshold.conf 등 suppress , event_filter 모듈 규칙 식별자(sid)는 출처별로 범위가 나뉘어 있어, 로컬 규칙은 충돌하지 않는 범위를 써야 합니다. sid 범위(관례) 용도 100 미만 예약(Snort 문서 기준) 100 ~ 999,999 Snort(Talos) 배포 규칙에서 사용 1,000,000 ~ 1,999,999 로컬(자체 작성) 규칙용으로 관례상 예약 2,000,000 ~ Emerging Threats 등 다른 배포처 규칙 범위는 관례이며 배포처마다 세부 구간이 다르므로, 조직 내부에서 로컬 sid 대장을 관리하는 것이 안전합니다. 4. 예시 실습 예시 — Suricata 센서에 로컬 규칙 파일을 추가하고, 실제 트래픽 대신 pcap 파일로 먼저 시험하는 흐름입니다. 경로·IP는 예시(값은 환경마다 다름)입니다. # 1) 로컬 규칙 파일 작성 sudo mkdir -p /etc/suricata/rules echo 'alert icmp any any -> $HOME_NET any (msg:"LOCAL ICMP echo request to HOME_NET"; itype:8; sid:1000001; rev:1;)' \ | sudo tee /etc/suricata/rules/local.rules # 2) suricata.yaml의 rule-files에 추가 # rule-files: # - suricata.rules # - /etc/suricata/rules/local.rules # 3) 문법 검사 sudo suricata -T -c /etc/suricata/suricata.yaml -v # 4) pcap으로 시험: -S 는 지정한 규칙 파일만 적재, -l 은 출력 디렉터리 mkdir -p /tmp/rule-test sudo suricata -c /etc/suricata/suricata.yaml -S /etc/suricata/rules/local.rules \ -r ./icmp-sample.pcap -l /tmp/rule-test jq -c 'select(.event_type=="alert") | .alert.signature_id' /tmp/rule-test/eve.json 특정 내부 호스트에서 반복되는 알려진 오탐은 규칙을 끄지 않고 출발지 조건으로 억제할 수 있습니다. # /etc/suricata/threshold.config 예시: 192.168.10.30에서 발생하는 sid 1000001 Alert만 억제 suppress gen_id 1, sig_id 1000001, track by_src, ip 192.168.10.30 📷 [실습 화면 삽입 위치] suricata -T 검사 통과 메시지와, pcap 시험 후 /tmp/rule-test/eve.json 에서 sid 1000001 Alert가 추출된 화면 5. 보안 관점 로컬 규칙 파일도 탐지 체계의 설정 자산 입니다. 누가 언제 무엇을 바꿨는지 알 수 있도록 Git 같은 버전 관리로 관리하는 것이 좋습니다. 운영 센서에 시험하지 않은 규칙을 바로 넣으면 문법 오류로 적재 실패가 나거나, 너무 넓은 조건으로 Alert 폭주가 생길 수 있습니다. suppress 나 pass 규칙을 넓게 쓰면 실제 공격까지 가려집니다. 억제 범위는 IP·sid 단위로 좁히고 사유를 기록합니다. IPS 모드에서는 규칙 하나의 조치(drop)가 서비스 장애로 이어질 수 있어 변경 관리가 더 엄격해야 합니다( 189. IPS 동작 구조 ). 6. SOC 관점 관제자가 확인할 질문 이 Alert의 sid는 공식 규칙인가, 로컬 규칙인가? 로컬 규칙이면 작성 의도와 작성자를 확인할 수 있는가? Alert의 severity는 규칙 자체의 값인가, classification.config 나 priority 설정에 의한 값인가? 특정 호스트에서 Alert가 갑자기 사라졌다면, 최근 threshold.config 에 억제 설정이 추가되지 않았는가? 규칙 변경 요청 (신규 탐지 / 오탐 억제) ↓ 로컬 sid 대장에서 번호 할당 ↓ pcap 시험 (-S, -r) → 기대한 Alert만 발생하는지 확인 ↓ 문법 검사 (-T) → 운영 센서 반영 → reload ↓ 변경 이력 기록 (사유, 범위, 담당자) 오탐 주의 : 억제 설정이 누적되면 탐지 범위가 조용히 줄어듭니다. 억제 목록은 주기적으로 재검토합니다. Alert 해석 방법은 06 영역 283. IDS Alert 에서 다룹니다. 7. 핵심 정리 IDS 규칙은 조치·프로토콜·출발지·방향·목적지·옵션으로 구성된 한 줄의 탐지 명세입니다. 규칙은 주 설정 파일( suricata.yaml , snort.conf , snort.lua )의 규칙 목록을 통해 엔진에 적재됩니다. classification·reference·threshold 설정 파일이 Alert의 분류·심각도·억제 여부에 영향을 줍니다. 로컬 규칙은 관례상 1,000,000 이상의 sid 범위를 쓰고, 조직 내 대장으로 관리합니다. 규칙 변경은 pcap 시험과 문법 검사를 거쳐 적용하고 변경 이력을 남깁니다.
Балл: 54.4Уверенность: 49%
Подробнее