📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 193편 이전 글: 192. IDS Rule · 다음 글: 194. Suricata 1. 개념 Snort 는 1998년에 공개된 오픈소스 네트워크 IDS/IPS 엔진으로, 현재는 Cisco(Talos)가 개발을 이끌고 있습니다. 규칙 기반 탐지의 사실상 표준 문법을 만든 도구여서, 다른 엔진(Suricata 등)도 Snort 규칙 문법을 대부분 호환합니다. 현재 운영 환경에서는 Snort 2(2.9.x) 와 Snort 3 두 세대가 함께 쓰입니다. Snort 3는 내부 구조를 새로 설계한 버전이라 설정 파일 형식과 운영 방식이 크게 다릅니다. Snort의 탐지 개념과 규칙 작성은 06 영역 287. Snort란 무엇인가 · 288. Snort Rule 기초 에서 다루며, 이 글은 설치·구성·실행 구조 를 다룹니다. 항목 Snort 2 (2.9.x) Snort 3 처리 구조 프로세스당 단일 패킷 처리 스레드 여러 패킷 스레드 지원( -z ) 주 설정 파일 snort.conf (자체 문법) snort.lua (Lua 문법) 프로토콜 처리 전처리기(preprocessor) inspector 패킷 수집 DAQ 2.x LibDAQ 3.x (별도 프로젝트) 설정 변환 — snort2lua 도구로 Snort 2 설정 변환 규칙 문법 Snort 2 문법 대부분 호환 + 확장(sticky buffer 등) 2. 동작 원리 Snort 3의 구성 요소 흐름입니다. [NIC] → LibDAQ 모듈 (pcap / afpacket / nfq 등) ↓ 패킷 스레드 1..N (-z 옵션으로 개수 지정) ↓ Codec: 링크·네트워크·전송 계층 디코딩 ↓ Inspector: stream(재조립), http_inspect, dns 등 프로토콜 분석 ↓ Detection: 규칙 매칭 (ips 모듈에 적재된 규칙) ↓ Logger: alert_fast, alert_full, alert_json 등 → 로그 디렉터리(-l) Snort 2는 같은 역할을 "전처리기 → 탐지 엔진 → 출력 플러그인" 순서로 수행합니다. Snort 2 시절에는 unified2 바이너리 출력을 Barnyard2 같은 별도 도구로 읽어 DB·SIEM에 넣는 구성이 많았고, Snort 3에서는 alert_json 같은 텍스트 기반 출력을 수집 도구로 바로 읽는 구성이 늘었습니다. 3. 주요 특징 설치 방식에 따라 파일 위치가 달라지므로, 센서마다 실제 경로를 먼저 확인해야 합니다. 설치 방식 설정 파일 위치(일반적인 경우) 로그 위치 Ubuntu apt install snort (Snort 2 계열 패키지) /etc/snort/snort.conf /var/log/snort/ Snort 3 소스 빌드(기본 prefix /usr/local ) /usr/local/etc/snort/snort.lua , snort_defaults.lua -l 로 지정한 디렉터리 Rocky 기본 저장소에 패키지가 없는 경우가 많아 소스 빌드가 일반적 빌드·실행 옵션에 따름 배포판 패키지가 제공하는 Snort 버전은 배포판 릴리스마다 다르므로 snort -V 로 반드시 확인합니다. 자주 쓰는 실행 옵션입니다(Snort 3 기준). 옵션 의미 -c 파일 설정 파일 지정 (입력 없이 실행하면 설정 검사 후 종료) -R 파일 추가 규칙 파일 적재 -i 인터페이스 / -r 파일 실시간 인터페이스 / pcap 파일 입력 -A 모드 Alert 출력 방식 (예: alert_fast, alert_json) -l 디렉터리 로그 출력 디렉터리 -Q 인라인(IPS) 모드, DAQ가 인라인을 지원해야 함 4. 예시 실습 예시 — 센서 VM에서 Snort 버전을 확인하고 설정을 검사한 뒤 실행하는 흐름입니다. 경로는 설치 방식별 예시(값은 환경마다 다름)입니다. # 버전 확인 (Snort 2인지 3인지 먼저 구분) snort -V # Snort 3: 설정 검사 (입력 소스 없이 -c 만 주면 검사 후 종료) snort -c /usr/local/etc/snort/snort.lua # Snort 3: 로컬 규칙을 추가로 적재해 인터페이스 감시, Alert는 한 줄 형식으로 파일 기록 sudo mkdir -p /var/log/snort sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules \ -i ens33 -A alert_fast -l /var/log/snort -s 65535 -k none # Snort 2 (Ubuntu 패키지): 설정 검사 모드 sudo snort -T -c /etc/snort/snort.conf -k none 은 체크섬 검사를 끄는 옵션입니다. 가상 NIC 오프로딩 때문에 체크섬이 틀린 패킷으로 보이면 엔진이 해당 패킷을 무시할 수 있어 실습 환경에서 자주 사용합니다. # 형식 예시 (값·세부 형식은 버전마다 다름) — alert_fast 한 줄 09/30-10:15:32.123456 [**] [1:1000001:1] "LOCAL ICMP echo request to HOME_NET" [**] [Priority: 0] {ICMP} 192.168.10.50 -> 192.168.10.21 [1:1000001:1] 은 gid:sid:rev 입니다. Snort 3 소스 빌드는 systemd 서비스 파일을 따로 만들어야 부팅 시 자동 실행됩니다. 📷 [실습 화면 삽입 위치] snort -V 로 확인한 버전 정보와, 설정 검사 후 "Snort successfully validated the configuration" 류의 완료 메시지가 출력된 화면 5. 보안 관점 Snort 2와 3은 설정 형식이 달라 설정 파일을 그대로 옮길 수 없습니다. 업그레이드 시 snort2lua 변환 결과를 검토하지 않으면 일부 탐지 기능이 빠질 수 있습니다. Snort 2는 처리 스레드가 하나라 고속 회선에서는 여러 프로세스로 나눠 운영해야 하며, 부족하면 드롭이 생깁니다. 센서 프로세스는 root로 시작하더라도 가능하면 전용 계정으로 권한을 낮춰( -u , -g ) 실행합니다. 패킷 파서 취약점이 있을 때 피해를 줄이기 위해서입니다. 규칙 갱신(PulledPork 계열)과 엔진 업데이트를 분리해서 관리합니다( 190. Signature Detection ). 6. SOC 관점 관제자가 확인할 질문 이 Alert를 만든 센서는 Snort 2인가, 3인가? 버전에 따라 출력 형식과 필드 이름이 다릅니다. 센서 로그 디렉터리의 Alert 파일이 계속 갱신되고 있는가? 프로세스가 멈춰도 마지막 파일은 남아 있어 정상처럼 보일 수 있습니다. Snort Alert의 gid 가 1이 아니라면 규칙이 아니라 inspector(전처리기)가 만든 이벤트일 수 있습니다. Snort Alert 수신 ↓ gid 확인 → 1: 텍스트 규칙 / 그 외: inspector·디코더 이벤트 ↓ sid·rev로 규칙 원문 확인 ↓ 같은 5-tuple의 방화벽·흐름 로그와 대조 오탐 주의 : 실습 환경에서 체크섬 오프로딩 때문에 생기는 디코더 이벤트는 공격 징후가 아닙니다. 스캔 탐지 설정은 05 영역 237. Snort Scan 탐지 에서 다룹니다. 7. 핵심 정리 Snort는 규칙 문법의 표준을 만든 오픈소스 IDS/IPS 엔진이며, 현재 Snort 2와 Snort 3가 함께 쓰입니다. Snort 3는 멀티 스레드, Lua 기반 snort.lua , inspector, LibDAQ 3 구조로 Snort 2와 운영 방식이 다릅니다. 설정·로그 경로는 설치 방식(배포판 패키지, 소스 빌드)에 따라 다르므로 snort -V 와 실행 옵션으로 확인합니다. -c 로 설정 검사, -R 로 규칙 추가, -A · -l 로 Alert 출력 방식과 위치를 정합니다. Alert의 gid:sid:rev 로 규칙 이벤트와 inspector 이벤트를 구분합니다.
📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 195편 이전 글: 194. Suricata · 다음 글: 196. 보안장비 Alert 1. 개념 Wazuh 는 오픈소스 보안 플랫폼으로, 호스트에 설치하는 agent와 중앙 서버로 로그 수집·분석, 파일 무결성 감시, 취약점 탐지 등을 제공합니다. 호스트 기반(HIDS) 성격이 강하지만, 방화벽·스위치의 syslog와 Suricata 같은 네트워크 센서 로그를 받아 규칙으로 분석 하면 네트워크 이벤트도 한 화면에서 볼 수 있습니다. 이 글은 Wazuh가 네트워크 이벤트를 받는 구조와 설정 에 집중합니다. HIDS 개념은 06 영역 279. Host-based IDS 에서 다룹니다. 구성 요소 역할 기본 포트(기본 설정 기준) Wazuh server (manager) agent·syslog 수신, 디코딩, 규칙 분석, Alert 생성 1514/TCP(agent 이벤트), 1515/TCP(agent 등록), 55000/TCP(API) Wazuh indexer Alert·이벤트 저장·검색 9200/TCP Wazuh dashboard 웹 조회 화면 443/TCP Wazuh agent 호스트 로그·파일 수집 후 manager로 전송 — syslog 수신(선택) 네트워크 장비 로그 직접 수신 514/UDP 또는 TCP(설정 시) 2. 동작 원리 네트워크 이벤트가 Wazuh로 들어오는 두 경로입니다. 경로 A: 네트워크 장비 → syslog → Wazuh manager [방화벽 / 스위치] ──syslog 514──→ [manager: remoted] 경로 B: 센서 파일 → agent → Wazuh manager [Suricata 센서] eve.json ──[agent가 읽음]──1514/TCP──→ [manager: remoted] ↓ [analysisd] 디코더(필드 추출) → 규칙 매칭(레벨 부여) ↓ 레벨이 기준 이상이면 /var/ossec/logs/alerts/alerts.json → indexer → dashboard 디코더 는 로그에서 출발지 IP, 목적지 포트 같은 필드를 뽑아내고, 규칙 은 그 필드와 문구를 보고 Alert 여부와 레벨(0~15) 을 정합니다. JSON 형식 로그(Suricata EVE)는 JSON 디코더가 필드를 그대로 추출하므로 data.src_ip , data.alert.signature 같은 이름으로 조회할 수 있습니다. Wazuh 기본 룰셋에는 Suricata EVE용 규칙이 포함되어 있습니다(규칙 ID는 버전의 룰셋 파일에서 확인). 3. 주요 특징 Wazuh 규칙 레벨은 0~15이며, 공식 문서의 분류를 요약하면 다음과 같습니다. 레벨 의미(요약) 0 무시(Alert 생성 안 함) 2~5 낮은 우선순위 알림, 정상·인가된 이벤트, 시스템·사용자 오류 6~9 관련도 낮은 공격, 처음 보는 이벤트, 비정상 출처 오류 10~11 다수 반복 오류, 무결성 검사 경고 12~15 높은 중요도 이벤트 ~ 심각한 공격 manager는 기본적으로 레벨 3 이상만 Alert로 기록합니다( ossec.conf 의 log_alert_level ). 레벨은 숫자가 클수록 심각 하며, Suricata severity (1이 가장 높음)와 방향이 반대라는 점에 주의합니다( 196. 보안장비 Alert ). 관제에서 자주 보는 alerts.json 필드입니다. 필드 의미 rule.id , rule.level , rule.description 일치한 규칙, 레벨, 설명 rule.groups 규칙 분류(예: suricata, firewall) agent.name 로그를 보낸 agent (syslog 직접 수신은 manager로 표시) location 로그 출처(파일 경로 또는 syslog 송신 IP) data.* 디코더가 추출한 필드 (예: data.src_ip , data.alert.signature_id ) full_log 원본 로그 (JSON 디코딩 로그는 없을 수 있음) 4. 예시 실습 예시 — Wazuh manager가 설치된 VM에서 네트워크 장비 syslog를 받고, Suricata 센서의 agent가 eve.json 을 보내도록 설정하는 흐름입니다. IP 대역은 예시(값은 환경마다 다름)입니다. <!-- manager: /var/ossec/etc/ossec.conf — 관리망 장비의 syslog 수신 --> <remote> <connection>syslog</connection> <port>514</port> <protocol>udp</protocol> <allowed-ips>10.10.99.0/24</allowed-ips> </remote> <!-- Suricata 센서의 agent: /var/ossec/etc/ossec.conf --> <localfile> <log_format>json</log_format> <location>/var/log/suricata/eve.json</location> </localfile> # 설정 반영 (manager / agent 각각) sudo systemctl restart wazuh-manager sudo systemctl restart wazuh-agent # manager 방화벽에서 syslog 포트 허용 sudo firewall-cmd --permanent --add-port=514/udp && sudo firewall-cmd --reload # Rocky sudo ufw allow from 10.10.99.0/24 to any port 514 proto udp # Ubuntu # 로그 한 줄이 어떤 디코더·규칙에 걸리는지 시험 sudo /var/ossec/bin/wazuh-logtest # 수신된 Suricata 관련 Alert 확인 sudo jq -c 'select(.rule.groups[]? == "suricata") | [.rule.id, .rule.level, .data.src_ip, .data.alert.signature]' \ /var/ossec/logs/alerts/alerts.json | tail -5 📷 [실습 화면 삽입 위치] wazuh-logtest 에 방화벽 로그 한 줄을 입력했을 때 decoder 이름과 rule id·level이 출력되는 화면, 그리고 dashboard에서 rule.groups가 suricata인 이벤트 목록 5. 보안 관점 syslog 수신은 allowed-ips 로 송신 장비를 제한 해야 합니다. 누구나 514번으로 로그를 보낼 수 있으면 가짜 로그 주입이 가능합니다. Wazuh 규칙은 수정 시 기본 룰셋 파일이 아니라 /var/ossec/etc/rules/local_rules.xml 같은 사용자 규칙 파일에 작성합니다(사용자 규칙 ID는 100000 이상 권장). 기본 파일은 업그레이드 때 덮어써집니다. Wazuh의 Active Response(예: 방화벽 차단 스크립트 실행)는 오탐 시 정상 IP를 차단할 수 있어, 적용 범위와 해제 시간을 신중히 정합니다. manager·indexer 포트는 관리망 안에서만 접근 가능하도록 합니다. 6. SOC 관점 관제자가 확인할 질문 이 Wazuh Alert의 원천은 무엇인가? location 과 agent.name 으로 syslog 직접 수신인지 agent 파일 수집인지 구분했는가? Wazuh 레벨은 Wazuh 규칙이 붙인 값이다. 원본 장비(예: Suricata)의 severity는 data 아래에서 따로 확인했는가? 특정 장비 로그가 갑자기 줄었다면 장비 송신 설정, 네트워크 경로, allowed-ips 변경 중 무엇이 원인인가? Wazuh Alert (rule.level ≥ 기준) ↓ location / agent.name → 원천 장비 확인 ↓ data.* 필드 → 원본 장비의 Alert 정보(sid, severity) 확인 ↓ 원본 로그(eve.json, 방화벽 로그)에서 같은 시각·5-tuple 재확인 오탐 주의 : 레벨 3 미만이나 레벨 0으로 설정된 이벤트는 Alert에 나타나지 않습니다. "Wazuh에 없다"가 "원본 로그에 없다"를 뜻하지 않으므로, 필요하면 원본 로그나 archives( logall 설정 시)를 직접 확인합니다. 7. 핵심 정리 Wazuh는 manager·indexer·dashboard와 agent로 구성되며, 네트워크 장비 syslog와 센서 로그를 받아 규칙으로 분석할 수 있습니다. 네트워크 장비는 syslog( <remote> 설정, allowed-ips 제한)로, Suricata는 agent의 <localfile> JSON 수집으로 연결합니다. 규칙 레벨은 0~15로 클수록 심각하며, 기본적으로 레벨 3 이상만 Alert로 기록됩니다. rule.id , rule.level , location , data.* 필드로 Alert의 원천과 원본 정보를 확인합니다. wazuh-logtest 로 디코더·규칙 동작을 시험하고, 사용자 규칙은 별도 파일에 작성합니다.
Đăng vào Tháng 9 30, 2026 bởi admin Steffi Graf30 Th9 Steffi Graf 링크텍스트 là một trong những biểu tượng lớn nhất của quần vợt nữ thế giới. Sinh năm 1969 tại Brühl, Đức, Graf đã tạo dựng một sự nghiệp kéo dài 17 năm với hàng loạt kỷ lục đặc biệt, trong đó nổi bật nhất là thành tích giành 4 Grand Slam và huy chương vàng Olympic trong cùng năm 1988 – kỳ tích được biết đến với tên gọi Golden Slam. Table of Contents Steffi Graf là người nước nào? Steffi Graf và cuộc chuyển giao quyền lực của quần vợt nữ 1988 – Năm Steffi Graf làm nên lịch sử Roland Garros 1988: Một trận chung kết đặc biệt Wimbledon 1988: Đánh bại Navratilova US Open 1988: Hoàn tất Grand Slam Bộ sưu tập 22 Grand Slam của Steffi Graf Steffi Graf đã giành bao nhiêu danh hiệu? Kỷ lục số 1 thế giới của Steffi Graf Vì sao Steffi Graf được xem là một trong những tay vợt vĩ đại nhất? Steffi Graf giải nghệ khi nào? Steffi Graf – người vợ của Andre Agassi nhưng trước hết là một huyền thoại Steffi Graf là người nước nào và vì sao vẫn được nhắc đến? Dù sau này được nhiều người biết đến với tư cách vợ của huyền thoại Andre Agassi, những thành tựu của Steffi Graf trên sân đấu đã được xác lập từ rất lâu trước cuộc hôn nhân năm 2001. Với 22 Grand Slam đơn nữ, 107 danh hiệu đơn và 377 tuần giữ vị trí số 1 thế giới, Graf để lại một di sản đặc biệt trong lịch sử quần vợt. Steffi Graf là người nước nào? Steffi Graf – Nữ vận động viên quần vợt vĩ đại nhất thế kỷ 20 là người nước nào Steffi Graf là người Đức. Cô có tên đầy đủ là Stefanie Maria Graf, sinh ngày 14/6/1969 tại Brühl, Đức và thi đấu chuyên nghiệp bằng tay phải. Ngay từ khi còn rất trẻ, Graf đã bộc lộ tố chất đặc biệt. Cô thi đấu chuyên nghiệp từ năm 13 tuổi và nhanh chóng trở thành một trong những tài năng nổi bật của quần vợt nữ Đức. Năm 1986, Graf giành danh hiệu WTA đầu tiên tại Hilton Head sau khi đánh bại Chris Evert. Chỉ một năm sau, cô tiếp tục tạo bước ngoặt lớn khi đánh bại Martina Navratilova ở chung kết Roland Garros để giành Grand Slam đầu tiên trong sự nghiệp. Từ đây, sự nghiệp của Steffi Graf bước sang một giai đoạn hoàn toàn khác. Steffi Graf và cuộc chuyển giao quyền lực của quần vợt nữ Trong những năm trước khi Graf vươn lên, quần vợt nữ thế giới chịu ảnh hưởng rất lớn của Chris Evert và Martina Navratilova. Hai huyền thoại này đã thống trị nhiều giải đấu lớn trong thời gian dài. Graf xuất hiện như một thế hệ mới với lối chơi giàu sức mạnh, tốc độ di chuyển ấn tượng và đặc biệt là cú thuận tay inside-out nổi tiếng. WTA đánh giá cú thuận tay của Graf là một trong những vũ khí nổi bật nhất trong lịch sử quần vợt nữ. Năm 1987 là mùa giải mang tính bước ngoặt. Graf giành Roland Garros, sau đó lần đầu tiên vươn lên vị trí số 1 thế giới vào ngày 17/8/1987. Cô giữ ngôi đầu trong 186 tuần liên tiếp, đồng thời có tổng cộng 377 tuần đứng số 1, một kỷ lục đặc biệt trong lịch sử quần vợt chuyên nghiệp. Đó cũng là thời điểm một kỷ nguyên mới bắt đầu. 1988 – Năm Steffi Graf làm nên lịch sử Steffi Graf – Nữ vận động viên quần vợt vĩ đại nhất thế kỷ 20 là người nước nào Nếu phải chọn một mùa giải đại diện cho sự nghiệp của Steffi Graf, năm 1988 chắc chắn đứng đầu danh sách. Graf lần lượt vô địch: Australian Open Roland Garros Wimbledon US Open Huy chương vàng đơn nữ Olympic Seoul Việc giành cả bốn danh hiệu Grand Slam trong cùng một năm vốn đã cực kỳ hiếm. Graf còn tiếp tục đoạt HCV Olympic, qua đó trở thành tay vợt đầu tiên và duy nhất hoàn thành Golden Slam trong một năm dương lịch. Roland Garros 1988: Một trận chung kết đặc biệt Tại Roland Garros 1988, Graf đối đầu Natasha Zvereva trong trận chung kết. Kết quả gần như không thể tin được: 6-0, 6-0. Trận đấu chỉ kéo dài khoảng 34 phút theo các nguồn thống kê lịch sử, và Graf hoàn toàn áp đảo đối thủ. Đây trở thành một trong những trận chung kết Grand Slam đáng nhớ nhất lịch sử quần vợt. Wimbledon 1988: Đánh bại Navratilova Ở Wimbledon, Graf gặp Martina Navratilova trong trận chung kết. Navratilova giành chiến thắng ở set đầu với tỷ số 7-5. Tuy nhiên, Graf nhanh chóng thay đổi cục diện và thắng hai set tiếp theo với tỷ số 6-2, 6-1 để giành chức vô địch. Chiến thắng này càng củng cố vị thế của Graf trong cuộc chuyển giao quyền lực của quần vợt nữ. US Open 1988: Hoàn tất Grand Slam Tại US Open, đối thủ cuối cùng của Graf là Gabriela Sabatini. Graf giành chiến thắng 6-3, 3-6, 6-1, qua đó hoàn tất bộ sưu tập bốn danh hiệu Grand Slam trong năm 1988. Nhưng cô vẫn chưa dừng lại. Tại Olympic Seoul, Graf tiếp tục đánh bại chính Sabatini trong trận chung kết với tỷ số 6-3, 6-3 để giành huy chương vàng. Xem thêm: Ai Là Người Ghi Bàn Quyết Định Giúp Hà Lan Vô Địch Euro 1988? Bộ sưu tập 22 Grand Slam của Steffi Graf Steffi Graf – Nữ vận động viên quần vợt vĩ đại nhất thế kỷ 20 là người nước nào Trong toàn bộ sự nghiệp, Steffi Graf giành 22 Grand Slam đơn nữ. Thành tích này được phân bổ trên cả bốn giải đấu lớn, cho thấy khả năng thích nghi của Graf trên những mặt sân khác nhau. Grand Slam Số lần vô địch Australian Open 4 Roland Garros 6 Wimbledon 7 US Open 5 Tổng cộng 22 Đáng chú ý, Graf không chỉ giành nhiều danh hiệu mà còn vô địch ở tất cả các mặt sân của bốn Grand Slam. Wimbledon trở thành giải đấu thành công nhất của cô với 7 chức vô địch, trong khi Roland Garros đem về 6 danh hiệu. Steffi Graf đã giành bao nhiêu danh hiệu? Bên cạnh 22 Grand Slam đơn nữ, Graf còn giành tổng cộng 107 danh hiệu đơn WTA và 11 danh hiệu đôi. Thành tích thắng-thua ở nội dung đơn trong sự nghiệp của cô là 900-115 theo thống kê chính thức của WTA. Graf cũng từng có những mùa giải đặc biệt thống trị. Cô giành 3 trong 4 Grand Slam ở các năm 1989, 1993, 1995 và 1996. Đặc biệt, Graf là tay vợt duy nhất trong lịch sử, cả nam lẫn nữ, từng giành cả bốn Grand Slam ít nhất bốn lần ở nội dung đơn. Kỷ lục số 1 thế giới của Steffi Graf Một trong những dấu ấn lớn nhất của Steffi Graf là khoảng thời gian cô thống trị bảng xếp hạng WTA. Graf có tổng cộng 377 tuần ở vị trí số 1 thế giới, trong đó có 186 tuần liên tiếp. Cô cũng kết thúc 8 mùa giải ở vị trí số 1, gồm các năm 1987-1990 và 1993-1996. Điều này cho thấy sự thống trị của Graf không chỉ kéo dài trong một mùa giải mà trải rộng qua nhiều năm. Vì sao Steffi Graf được xem là một trong những tay vợt vĩ đại nhất? Điểm đặc biệt trong sự nghiệp của Steffi Graf nằm ở sự kết hợp giữa sức mạnh, tốc độ, khả năng di chuyển và tính ổn định. Cú thuận tay inside-out là vũ khí nổi tiếng nhất của Graf. Nhưng bên cạnh đó, cô còn có khả năng thi đấu hiệu quả trên nhiều mặt sân khác nhau. Graf giành: 4 Australian Open 6 Roland Garros 7 Wimbledon 5 US Open 22 Grand Slam đơn nữ 107 danh hiệu đơn 377 tuần ở vị trí số 1 Golden Slam năm 1988 Những con số này giải thích vì sao tên tuổi Steffi Graf thường xuyên xuất hiện trong các cuộc thảo luận về những tay vợt nữ vĩ đại nhất lịch sử. International Tennis Hall of Fame cũng ghi nhận cô với 22 danh hiệu major và Golden Slam 1988. Steffi Graf giải nghệ khi nào? Sau gần hai thập kỷ thi đấu chuyên nghiệp, Graf khép lại sự nghiệp vào năm 1999 ở tuổi 30. Điều đáng chú ý là Grand Slam cuối cùng của cô cũng là một trong những khoảnh khắc đáng nhớ nhất. Tại Roland Garros 1999, Graf đánh bại Martina Hingis để giành danh hiệu Grand Slam thứ 22 và cũng là cuối cùng trong sự nghiệp. Sau đó, cô tiến vào chung kết Wimbledon trước khi chính thức chia tay quần vợt. Năm 2004, Graf được ghi danh vào International Tennis Hall of Fame. Steffi Graf – người vợ của Andre Agassi nhưng trước hết là một huyền thoại Năm 2001, Steffi Graf kết hôn với Andre Agassi, một trong những tay vợt nam nổi tiếng nhất lịch sử. Cuộc hôn nhân khiến cái tên Graf tiếp tục xuất hiện thường xuyên trong truyền thông thể thao. Tuy nhiên, nếu nhìn lại toàn bộ sự nghiệp, thành công của Graf hoàn toàn không phụ thuộc vào danh tiếng của người chồng. Trước khi trở thành vợ Andre Agassi, Graf đã là nhà vô địch Grand Slam 22 lần, từng giữ số 1 thế giới 377 tuần và tạo nên Golden Slam – thành tích mà đến nay vẫn chưa có tay vợt nào khác lặp lại. Xem thêm: Tay vợt cầu lông số 1 Việt Nam hiện nay: Ai đang dẫn đầu? Steffi Graf là người nước nào và vì sao vẫn được nhắc đến? Vậy Steffi Graf là người nước nào? Câu trả lời là Đức. Cô sinh tại Brühl, Đức và đại diện cho Đức trong sự nghiệp thi đấu quốc tế. Từ một tài năng trẻ của quần vợt Đức, Graf đã vươn lên thành số 1 thế giới và tạo ra một trong những mùa giải nổi tiếng nhất lịch sử thể thao. Năm 1988, cô giành cả bốn Grand Slam và HCV Olympic. Trong sự nghiệp, cô giành 22 Grand Slam, 107 danh hiệu đơn và trải qua 377 tuần trên đỉnh bảng xếp hạng thế giới. Vì vậy, khi nhắc đến Steffi Graf – nữ vận động viên quần vợt vĩ đại nhất thế kỷ 20 là người nước nào?, câu trả lời không chỉ đơn giản là một tay vợt người Đức. Đó còn là câu chuyện về một trong những sự nghiệp thống trị đáng nhớ nhất mà quần vợt từng chứng kiến.
📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 191편 이전 글: 190. Signature Detection · 다음 글: 192. IDS Rule 1. 개념 Anomaly Detection(이상 탐지) 은 평소 상태(기준선, Baseline)를 정의하고, 그와 크게 다른 트래픽을 찾아내는 방식입니다. 알려진 패턴이 없어도 "평소와 다르다"는 이유로 탐지할 수 있다는 점에서 190. Signature Detection 을 보완합니다. 탐지 원리와 오탐 특성은 06 영역 281. Anomaly Detection 에서 다룹니다. 장비 관점에서 이상 탐지의 핵심 질문은 "기준선을 만들 데이터를 어느 장비에서, 어떤 형식으로 모으는가" 입니다. 데이터 원천 제공 장비 담긴 정보 NetFlow v5/v9, IPFIX 라우터, L3 스위치, 방화벽, Linux 수출기 흐름별 주소·포트·프로토콜·패킷 수·바이트 수·시각 sFlow 스위치(샘플링 방식) 일정 비율로 표본 추출한 패킷 헤더와 카운터 IDS 흐름 기록 Suricata flow · netflow 이벤트, Zeek conn.log 흐름 요약 + 애플리케이션 프로토콜 정보 장비 카운터 SNMP 인터페이스 카운터 인터페이스별 트래픽 총량 2. 동작 원리 흐름(Flow) 데이터 기반 이상 탐지의 일반적인 구조입니다. [라우터 / 스위치 / 방화벽] 흐름 기록 생성 (Exporter) ↓ UDP로 전송 (NetFlow 관례 2055 / IPFIX 4739 / sFlow 6343) [Flow Collector] 수신·저장 ↓ 시간대·호스트·포트별 집계 [분석 엔진 / SIEM] 기준선 계산 (예: 요일·시간대별 평균과 편차) ↓ 현재 값과 비교 [이상 이벤트] "평소 대비 N배", "처음 보는 목적지", "새벽 시간대 대량 전송" 흐름 기록은 패킷 내용을 담지 않고 누가·누구와·얼마나·언제 통신했는지만 요약합니다. 그래서 저장 부담이 작고 암호화 트래픽에도 적용할 수 있지만, 무엇을 주고받았는지는 알 수 없습니다. 방화벽·IPS에 내장된 임계치 기반 보호 기능 (초당 SYN 수, 출발지당 세션 수 제한 등)도 넓은 의미의 이상 탐지입니다. 기준선을 자동 학습하지 않고 관리자가 정한 숫자를 기준으로 삼는다는 점이 다릅니다. 3. 주요 특징 같은 "anomaly"라는 단어가 다른 뜻으로 쓰이는 경우가 있어 구분이 필요합니다. 용어 의미 예 행위 기반 이상 탐지 기준선 대비 트래픽 양·패턴의 이상 평소 1GB이던 야간 외부 전송이 30GB 프로토콜 이상(Protocol Anomaly) 규격에 맞지 않는 패킷·메시지 잘못된 헤더 길이, HTTP 파싱 오류 Suricata anomaly 이벤트 엔진의 디코더·스트림·앱 계층이 기록한 프로토콜 이상 EVE event_type: anomaly Suricata의 anomaly 이벤트는 프로토콜 이상 을 기록한 것이지, 기준선 대비 행위 이상을 계산한 결과가 아닙니다. 흐름 데이터 수집 방식별 특징입니다. 방식 장점 한계 NetFlow/IPFIX 모든 흐름 기록(장비 설정에 따라 샘플링 가능), 표준 형식 장비 부하, 흐름 종료·타임아웃 후에 기록됨 sFlow 스위치 부하가 적음, 대용량 망에 적합 샘플링이라 소량 통신은 누락될 수 있음 IDS 흐름 이벤트 애플리케이션 프로토콜 정보 포함 센서가 보는 구간만 기록 4. 예시 실습 예시 — Suricata 센서의 EVE flow 이벤트를 집계해 기준선 비교의 기초 데이터를 만드는 방법입니다. flow 이벤트는 흐름이 끝나거나 타임아웃될 때 기록되며, 필드는 버전에 따라 조금 다를 수 있습니다. 값은 예시(값은 환경마다 다름)입니다. # 출발지별로 서로 다른 목적지 포트 수 집계 (많은 포트에 접근한 호스트 확인) sudo jq -r 'select(.event_type=="flow") | "\(.src_ip) \(.dest_port)"' /var/log/suricata/eve.json \ | sort -u | awk '{print $1}' | sort | uniq -c | sort -rn | head # 출발지별 외부로 보낸 바이트 합계 (flow.bytes_toserver) sudo jq -r 'select(.event_type=="flow") | "\(.src_ip) \(.flow.bytes_toserver)"' /var/log/suricata/eve.json \ | awk '{s[$1]+=$2} END {for (h in s) print s[h], h}' | sort -rn | head # 형식 예시 (값은 환경마다 다름) — EVE flow 이벤트 일부 {"timestamp":"2026-09-30T02:14:07.512345+0900","event_type":"flow","src_ip":"192.168.10.50", "src_port":51514,"dest_ip":"203.0.113.80","dest_port":443,"proto":"TCP","app_proto":"tls", "flow":{"pkts_toserver":5230,"pkts_toclient":2011,"bytes_toserver":7340120, "bytes_toclient":120334,"state":"closed","reason":"timeout"}} 같은 집계를 여러 날 반복해 시간대별 평균을 저장해 두면, 그 값이 곧 간단한 기준선이 됩니다. 실제 운영 환경에서는 SIEM이나 전용 NDR 제품이 이 계산을 자동화합니다. 📷 [실습 화면 삽입 위치] jq·awk 집계 결과에서 출발지별 목적지 포트 수와 전송 바이트 순위가 출력된 화면 5. 보안 관점 이상 탐지는 새로운 공격, 내부 확산, 대량 유출 처럼 시그니처가 없는 상황에서 단서를 줍니다. 기준선을 만드는 기간에 이미 침해가 있었다면, 비정상이 "정상"으로 학습될 수 있습니다. 공격자가 평소 업무 시간·평소 목적지·적은 양으로 천천히 움직이면 기준선 안에 숨을 수 있습니다. 흐름 수출 설정이 빠진 인터페이스나 샘플링 비율이 큰 구간은 이상 탐지의 사각지대입니다. 6. SOC 관점 관제자가 확인할 질문 이 이상 이벤트의 근거 데이터는 어느 장비의 어떤 흐름 기록인가? 샘플링된 데이터인가? 평소와 다른 원인이 업무 변화(백업, 배포, 신규 서비스)로 설명되는가? 같은 호스트에 시그니처 Alert, 방화벽 차단, 엔드포인트 이벤트가 함께 있는가? 이상 이벤트 (예: 새벽 외부 전송량 급증) ↓ 흐름 기록으로 목적지·포트·지속 시간 확인 ↓ 변경 관리·작업 일정과 대조 설명됨 → 기준선 예외 등록 검토 설명 안 됨 → IDS·프록시·호스트 로그로 내용 확인 → 에스컬레이션 오탐 주의 : 이상 탐지는 "다르다"만 알려 줄 뿐 "악성이다"를 말하지 않습니다. 정기 백업, 월말 정산, 패치 배포처럼 주기적인 대량 트래픽을 먼저 확인합니다. 비정상 트래픽 판단 기준은 06 영역 294. 비정상 Network Traffic 탐지 에서 다룹니다. 7. 핵심 정리 이상 탐지는 기준선을 정하고 그와 다른 트래픽을 찾는 방식으로, 시그니처 탐지를 보완합니다. 장비 관점의 핵심은 기준선 데이터 수집이며, NetFlow·IPFIX·sFlow, IDS 흐름 이벤트, SNMP 카운터가 대표적입니다. 흐름 기록은 내용 없이 주소·포트·양·시각을 요약해 암호화 트래픽에도 적용할 수 있습니다. Suricata anomaly 이벤트는 프로토콜 이상 기록이며, 행위 기반 이상 탐지와 구분해야 합니다. 이상 이벤트는 업무 변화 여부와 다른 로그를 함께 확인해 판단합니다.
TK88 tự hào là điểm đến giải trí trực tuyến uy tín, nơi người chơi có thể khám phá thế giới cá cược đa dạng từ thể thao, casino trực tuyến đến xổ số và slot game. Chúng tôi cam kết mang lại một môi trường chơi công bằng, minh bạch cùng hệ thống bảo mật tiên tiến nhất để bảo vệ thông tin cá nhân và giao dịch của bạn. Với đội ngũ hỗ trợ khách hàng 24/7, TK88 luôn sẵn sàng giải đáp mọi thắc mắc, đảm bảo trải nghiệm mượt mà và hài lòng nhất cho mỗi thành viên. Tham gia TK88 ngay hôm nay để không bỏ lỡ những ưu đãi độc quyền và cơ hội thắng lớn! Website: https://tk88asia.com/ Email: support@tk88asia.com Dia chi: Số 20, Đường Trần Văn Giàu, Phường Tân Tạo A, Quận Bình Tân, TP. Hồ Chí Minh SDT: 0777123455 Hashtags: #TK88 #TK88Asia #NhaCaiTK88 #GameTK88 #CaCuocTK88 #UyTinTK88 #GiaiTriTK88 https://x.com/tk88asiacom https://www.youtube.com/@tk88asiacom/about https://www.pinterest.com/tk88asiacom/ https://www.tumblr.com/tk88asiacom https://www.twitch.tv/tk88asiacom/about https://issuu.com/tk88asiacom?ps=24 https://www.reddit.com/user/tk88asiacom/ https://openlibrary.org/people/tk88789 https://orcid.org/0009-0007-6367-2348 https://www.magcloud.com/user/tk88asiacom http://freestyler.ws/user/706613/tk88asiacom https://doselect.com/@2d00f9e6b5d594ef6ae884b40 http://programujte.com/profil/111612-tk88asiacom/ https://www.band.us/band/104654644/post https://illust.daysneo.com/illustrator/tk88asiacom/ https://plugincafe.maxon.net/user/tk88asiacom https://www.instapaper.com/p/tk88asiacom https://myanimeshelf.com/profile/tk88asiacom http://www.genina.com/user/profile/5627389.page https://uiverse.io/profile/tk88_4687 https://www.akaqa.com/account/profile/19192056378 https://diit.cz/profil/kehpyrpsur https://recash.wpsoul.net/members/tk88asiacom/ https://stackshare.io/theresasep94martinez22467/tk88asiacom https://en.islcollective.com/portfolio/13052388 https://tawk.to/tk88asiacom https://luvly.co/users/tk88asiacom https://gettr.com/user/e17013318146637824 https://forum.ircam.fr/profile/tk88asiacom/ https://lightroom.adobe.com/u/nhcitk8815 https://apptuts.bio/tk88asiacom https://phatwalletforums.com/user/tk88asiacom https://axe.rs/forum/members/tk88asiacom.13454060/#about https://expatguidekorea.com/profile/tk88asiacom1/ https://forum.epicbrowser.com/profile.php?id=188417 https://www.foriio.com/tk88asiacom https://pods.link/tk88asiacom https://scenarch.com/userpages/51817 https://tempel.in/view/v1cNK4 https://joy.bio/tk88asiacom https://www.speedrun.com/users/tk88asiacom https://archive.org/details/@tk88789/collections https://blender.community/tk88864/ https://partecipa.poliste.com/profiles/tk88asiacom/activity https://fortunetelleroracle.com/profile/tk88asiacom https://recentstatus.com/tk88asiacom https://app.talkshoe.com/user/tk88asiacom https://vc.ru/id6130201 https://feyenoord.supporters.nl/profiel/183414/tk88asiacom https://www.bahamaslocal.com/userprofile/1/331039/tk88asiacom.html https://raovat.nhadat.vn/members/tk88asiacom-350945.html https://www.thethingsnetwork.org/u/tk88asiacom https://forum.aceinna.com/user/tk88asiacom https://its-my.link/@tk88asiacom https://pinshape.com/users/9075809-tk88asiacom?tab=designs https://hashnode.com/@tk88asiacom https://belgaumonline.com/profile/tk88asiacom/ https://www.aviacionargentina.net/user/tk88-6 https://www.heavyironjobs.com/profiles/tk88asiacom https://maanation.com/tk88asiacom https://www.rareconnect.org/en/user/tk88asiacom https://allmyfaves.com/tk88asiacom https://fanclove.jp/profile/w12Nqa6mB0 https://wakelet.com/@tk88asiacom https://booklog.jp/users/tk88asiacom/profile https://www.getlisteduae.com/listings/tk88-31 https://rapidapi.com/user/theresasep94martinez22467 https://desall.com/User/tk88asiacom/Profile https://www.shadertoy.com/user/tk88asiacom https://www.circleme.com/tk88asiacom https://etextpad.com/zb2o5eaea2 https://leetcode.com/u/tk88asiacom/ https://motion-gallery.net/users/1066310 https://help.orrs.de/user/tk88asiacom https://bizidex.com/en/tk88asiacom https://sparktv.net/tk88asiacom https://aphorismsgalore.com/users/tk88asiacom
한 일 요약 개인 프로젝트인 RFP / 고객 요구사항 대응 검토 Multi-Agent 의 UX Scenario 이후 단계인 Task 도출과 Agent 구조 설계를 진행함. :chatgpt-content-reference{index="0"} Persona 수에 맞춰 Agent를 나누지 않고 실제 업무에서 필요한 Task를 기준으로 Agent 역할을 분리 함. :chatgpt-content-reference{index="1"} 최종적으로 Main Agent 1개 + Sub-Agent 2개 구조로 정리함. Main Agent는 전체 흐름 관리와 결과 취합만 담당하고, 실제 요구사항 분석 및 검토는 Sub-Agent가 담당하도록 역할을 구분함. 각 Agent의 Prompt를 역할 → 입력 → 처리 → 제약 → 출력 구조로 통일함. :chatgpt-content-reference{index="2"} Web Search는 내부 공식 자료를 대체하지 않고 공개 정보 보완용 으로만 사용하도록 기준을 정의함. 다음 단계로 테스트용 RFP와 내부 더미 데이터를 만들고 Expected Output 및 Pass/Fail 기준을 정의할 예정임. :chatgpt-content-reference{index="3"} AI 리터러시 발표 주제로 Jev 를 조사하고 기존 LLM과의 차이를 정리함. Jev의 Choice / Noul / Score / Confidence 개념과 적합한 활용 영역을 학습함. 최종적으로 Jev를 Code, LLM, Agent와 비교하여 각각 어떤 문제에 적합한지 정리하고 7분 발표 구성을 완성함. 1. RFP / 고객 요구사항 대응 프로젝트 재확인 현재 개인 프로젝트의 주제는 RFP / 고객 요구사항 대응 검토 이며, Domain은 B2B 영업 / 기술영업 으로 설정했다. :chatgpt-content-reference{index="4"} 프로젝트의 목적은 고객이 전달한 RFP를 단순히 요약하는 것이 아니라, 고객 요구사항을 내부 제품 및 정책 자료와 비교하여 다음과 같이 정리하는 것이다. 대응 가능 불일치 근거 부족 추가 확인 필요 즉 사용자가 직접 여러 내부 문서를 검색하고 비교하던 작업을 Agent가 지원하여 반복적인 검토 업무를 줄이는 방향이다. 2. UX Scenario 작성 완료 앞선 기획 단계에서는 다음 세 가지 Persona를 기준으로 AS-IS / TO-BE UX Scenario를 작성했다. :chatgpt-content-reference{index="5"} B2B 영업 담당자 기존에는 RFP를 직접 읽고 제품 및 정책 문서를 찾아 대응 가능한 요구사항과 추가 검토가 필요한 요구사항을 구분했다. Agent 도입 후에는 요구사항 구조화와 내부 근거 조회를 지원하여 1차 검토 부담을 줄이는 방향으로 설계했다. 기술영업 담당자 제품 기능, API, 보안 등 기술 자료를 직접 검색하고 고객 요구사항과 비교하던 업무를 Agent가 지원하도록 구성했다. 제안기획 담당자 영업 및 기술 담당자의 검토 결과를 다시 취합하고 미확인 항목을 점검하던 업무를 요구사항별 근거와 함께 정리하도록 설계했다. 3. Persona가 아닌 Task 기준으로 Agent 분리 오늘 설계에서 가장 중요하게 본 부분은 Persona 수와 Agent 수를 동일하게 맞추지 않는 것 이었다. 기존 피드백처럼 다음 구조로 접근하지 않았다. B2B 영업 담당자 → 영업 Agent 기술영업 담당자 → 기술 Agent 제안기획 담당자 → 제안 Agent 대신 UX Scenario에서 실제 필요한 업무를 다시 분석했다. 필요한 주요 Task 전체 RFP 검토 흐름 관리 고객 요구사항 추출 및 구조화 내부 근거 검색 및 대응 상태 검토 처음에는 내부 근거 검색 과 대응 검토 를 서로 다른 Agent로 분리하는 방법도 고려했다. 하지만 내부 근거를 검색한 직후 해당 근거를 기준으로 고객 요구사항을 검토하는 연속적인 작업이기 때문에 별도로 나누면 역할 중복과 Token 사용량 증가 가능성이 있다고 판단했다. :chatgpt-content-reference{index="6"} 최종 구조 Main Agent 1개 + Sub-Agent 2개 로 정리했다. 4. RFP 처리 총괄 Agent Main Agent는 RFP 처리 총괄 Agent 로 정의했다. 주요 역할 사용자 요청 확인 필요한 Sub-Agent 호출 작업 순서 관리 Sub-Agent 결과 취합 최종 사용자 응답 생성 중요한 점은 Main Agent가 직접 고객 요구사항을 분석하거나 대응 가능 여부를 판단하지 않는다는 것이다. Main Agent는 오케스트레이션과 최종 결과 취합 에 집중하도록 역할을 제한했다. :chatgpt-content-reference{index="7"} 5. 요구사항 구조화 Agent 첫 번째 Sub-Agent는 요구사항 구조화 Agent 다. RFP 문서에서 실제 검토해야 하는 고객 요구사항을 찾아 구조화하는 역할을 담당한다. 주요 역할 고객 요구사항 추출 요구사항 항목별 분리 중복 및 유사 요구사항 확인 요구사항 유형 분류 요구사항 유형 예시 기능 기술 보안 서비스 및 지원 정책 또한 문서에 존재하지 않는 요구사항을 임의로 생성하지 않고, 유사하다는 이유만으로 서로 다른 요구사항을 임의로 합치지 않도록 제약을 설정했다. :chatgpt-content-reference{index="8"} 6. 근거 기반 대응 검토 Agent 두 번째 Sub-Agent는 근거 기반 대응 검토 Agent 다. 구조화된 고객 요구사항을 내부 공식 자료와 비교하여 실제 대응 상태를 검토한다. 주요 참조 자료 제품 기능 문서 기술 문서 보안 문서 서비스 및 지원 정책 검토 결과 각 요구사항을 다음 중 하나로 구분한다. 대응 가능 불일치 근거 부족 추가 확인 필요 내부 근거가 없는 상태에서 Agent가 임의로 대응 가능 이라고 판단하지 못하도록 하는 것도 중요한 제약으로 설정했다. :chatgpt-content-reference{index="9"} 7. Web Search 사용 기준 근거 기반 대응 검토 Agent에는 Web Search를 사용할 수 있도록 설정했다. 하지만 Web Search 결과를 회사 내부 공식 자료와 동일한 근거로 사용하면 문제가 발생할 수 있다. 따라서 다음 원칙을 적용했다. 기본 원칙 내부 공식 자료 우선 ↓ 내부 자료만으로 확인하기 어려운 공개 정보만 Web Search로 보완 ↓ 외부 정보와 내부 근거를 구분하여 표시 특히 Web Search 결과만으로 회사가 고객 요구사항에 대응 가능하다고 판단하지 않도록 했다. 즉 Web Search는 회사 정책이나 제품 문서를 대신하는 Source가 아니라 부족한 공개 정보를 보완하는 수단 으로 정의했다. :chatgpt-content-reference{index="10"} 8. Agent 간 실행 흐름 현재 Multi-Agent 구조는 Sub-Agent들이 서로 직접 연결되는 구조가 아니다. 전체 흐름은 다음과 같다. 사용자 요청 ↓ RFP 처리 총괄 Agent ↓ 요구사항 구조화 Agent ↓ Main Agent로 결과 반환 ↓ 근거 기반 대응 검토 Agent ↓ Main Agent로 결과 반환 ↓ 최종 응답 즉 Main Agent가 각 Sub-Agent를 순서대로 호출하고, Sub-Agent의 결과는 다시 Main Agent로 반환하는 구조다. :chatgpt-content-reference{index="11"} 9. Agent Prompt 작성 기준 각 Agent의 Prompt도 동일한 기준으로 작성하기로 했다. Prompt 구조 역할 ↓ 입력 ↓ 처리 ↓ 제약 ↓ 출력 예를 들어 요구사항 구조화 Agent라면 다음과 같이 정의한다. 역할 고객 RFP를 검토 가능한 요구사항 형태로 구조화함. 입력 고객 RFP 및 요구사항 문서 처리 요구사항을 추출하고 유형별로 분류함. 제약 문서에 없는 내용 생성 금지 서로 다른 요구사항 임의 병합 금지 출력 요구사항 번호 요구사항 내용 요구사항 유형 이렇게 구성하면 Agent가 무엇을 해야 하는지만 아니라 무엇을 하지 말아야 하는지도 명확하게 정의할 수 있고 테스트하기도 쉬워진다. :chatgpt-content-reference{index="12"} 10. Agent별 출력 형식 구분 모든 Agent가 동일한 형태로 결과를 반환할 필요는 없다고 판단했다. Main Agent 최종 사용자가 보는 결과이므로 다음 형태를 고려했다. 요약 최종 검토 결과 표 추가 확인사항 요구사항 구조화 Agent 다음 Agent가 처리할 데이터이므로 사람에게 보여주기 위한 문장보다 구조화된 요구사항 데이터 가 적합하다. 근거 기반 대응 검토 Agent 다음 정보를 구조화하여 Main Agent에 전달하도록 설계했다. 요구사항 번호 검토 결과 내부 근거 근거 문서 외부 참고 정보 추가 확인사항 Sub-Agent 사이의 정보 전달에서는 표보다 JSON과 같은 구조화된 형태가 더 적절할 가능성도 함께 검토했다. :chatgpt-content-reference{index="13"} 11. Multi-Agent 설계에서 다시 확인한 점 오늘 설계를 진행하면서 다시 확인한 핵심은 Agent를 많이 만드는 것이 Multi-Agent의 목적은 아니라는 것 이다. 처음에는 Agent를 더 잘게 분리하면 역할이 명확해질 수 있다고 생각할 수 있다. 하지만 Agent가 증가하면 다음 문제도 함께 증가할 수 있다. Agent 호출 횟수 Token 사용량 Context 전달 역할 중복 Prompt 관리 비용 테스트해야 하는 범위 따라서 내부 근거 검색과 대응 검토처럼 서로 강하게 연결된 업무는 하나의 Agent가 함께 처리하도록 구성했다. Main Agent 역시 실제 분석에는 참여하지 않고 흐름 관리에 집중시켜 역할 중복을 줄였다. :chatgpt-content-reference{index="14"} 12. 개인 프로젝트 현재 진행 상태 현재 개인 프로젝트는 다음 단계까지 진행되었다. 주제 선정 완료 ↓ Persona / Pain Point 정의 완료 ↓ UX Scenario 작성 완료 ↓ Task 도출 완료 ↓ Agent 구조 설계 완료 ↓ Agent별 Prompt 설계 기준 정리 완료 다음 단계에서는 테스트용 RFP와 내부 제품 및 정책 더미 데이터를 만들고 다음 내용을 준비할 예정이다. Expected Output Pass / Fail 기준 Agent별 테스트 Scenario Gemini Enterprise 실제 구현 결과 비교 및 개선 :chatgpt-content-reference{index="15"} 13. AI 리터러시 — Jev 조사 개인 프로젝트와 함께 AI 리터러시 발표를 위해 Jev 라는 모델을 조사했다. Jev는 TypeSafe AI가 공개한 System One Model 계열의 모델로, GPT나 Claude처럼 긴 문장을 생성하는 것보다 구조화된 판단 결과를 반환하는 것에 초점을 둔 모델 이다. :chatgpt-content-reference{index="16"} 쉽게 구분하면 다음과 같다. GPT / Claude / Gemini → 생성하는 AI Jev → 판단하는 AI 14. 기존 LLM과 Jev의 차이 일반적인 LLM은 Token을 생성하여 최종 Text를 만드는 것이 기본이다. Input ↓ LLM ↓ Token 생성 ↓ Text 반면 Jev는 입력 상태를 보고 구조화된 확률적 판단 결과 를 반환하는 방향을 지향한다. 상황 입력 ↓ Jev ↓ Typed Probabilistic Decision 따라서 Jev를 단순히 GPT의 작은 버전으로 이해하는 것보다는 목적 자체가 다른 Decision Model 로 이해하는 것이 적절하다고 정리했다. :chatgpt-content-reference{index="17"} 15. Jev가 필요한 이유 일반적인 프로그램에서는 명확한 규칙을 if 문으로 처리할 수 있다. 하지만 실제 자연어는 같은 의미도 매우 다양하게 표현될 수 있다. 반대로 이런 작은 판단마다 대형 LLM을 호출하면 비용과 응답 시간 측면에서 과할 수도 있다. 따라서 Jev는 다음 영역을 목표로 한다. Hard-coded Rule ↓ Jev ↓ Full LLM / Agent 즉, 규칙만으로 처리하기에는 애매하지만, 깊은 추론이나 긴 생성까지는 필요하지 않은 판단 에 사용하는 모델로 이해했다. 쉽게 표현하면 확률적으로 판단하는 똑똑한 if문 에 가까운 개념이다. :chatgpt-content-reference{index="18"} 16. Jev의 세 가지 판단 방식 Jev에서는 크게 Choice, Noul, Score 세 가지 판단 형태를 학습했다. :chatgpt-content-reference{index="19"} Choice 여러 선택지 중 하나를 선택함. 이 문의는 어떤 유형인가? 결제 / 기술 / 계정 → 결제 Choice = 무엇인가? Noul 각 조건이 맞는지 독립적으로 판단함. 환불 요청인가? → Yes / No 중복 결제인가? → Yes / No 사람 확인이 필요한가? → Yes / No 여러 조건이 동시에 참일 수 있다는 점이 Choice와 다르다. Noul = 맞는가? Score 대상의 강도나 수준을 평가함. 고객 불만 수준은? 0 = 낮음 1 = 보통 2 = 높음 → 1.4 Score = 어느 정도인가? 17. Confidence Jev는 판단 결과만 제공하는 것이 아니라 Confidence도 함께 반환한다. 예를 들어 단순히 다음과 같이 반환하지 않고, billing 다음과 같이 반환할 수 있다. billing = 0.96 이를 서비스의 다음 동작과 연결할 수 있다. Confidence 높음 → 자동 처리 Confidence 중간 → 더 강한 모델로 재검토 Confidence 낮음 → Human Review 중요한 점은 Threshold가 Jev에 고정된 공식 숫자가 아니라 서비스의 위험도와 비용에 따라 개발자가 정해야 하는 운영 기준 이라는 점이다. :chatgpt-content-reference{index="20"} 18. Jev가 잘 맞는 업무 Jev는 모든 AI 작업을 대신하기 위한 모델이 아니다. 다음과 같이 빠른 판단이 필요한 업무에 적합하다. Classification Routing Scoring Verification Moderation / Guardrail Fraud Detection Search Ranking 공통점은 긴 문서를 생성하거나 깊은 Reasoning을 수행하기보다 짧고 반복적인 판단이 필요하다는 점 이다. :chatgpt-content-reference{index="21"} 반대로 다음 업무는 기존 LLM이나 Agent가 더 적합하다. 코드 작성 문서 작성 Research 긴 대화 Architecture 설계 복잡한 Reasoning :chatgpt-content-reference{index="22"} 19. Code / Jev / LLM / Agent 구분 오늘 Jev를 공부하면서 가장 이해하기 쉬웠던 구분은 다음과 같다. Code → 확실한 규칙 Jev → 애매하지만 빠른 판단 LLM → 복잡한 추론과 생성 Agent → Tool을 이용한 여러 단계의 작업 예를 들어: HTTP Status 확인 → Code 고객 문의 분류 → Jev 문서 작성 및 복잡한 설명 → LLM 검색 + Tool 호출 + 판단 + 반복 작업 → Agent 즉 모든 문제를 가장 강력한 하나의 모델에게 맡기는 것이 아니라 문제의 성격에 맞는 방법을 선택하는 것이 중요하다 는 방향으로 이해했다. :chatgpt-content-reference{index="23"} 20. Jev의 한계 Jev는 아직 초기 단계이기 때문에 현재 공개된 결과를 그대로 실제 환경에 일반화해서는 안 된다고 정리했다. 추가 확인이 필요한 부분은 다음과 같다. 실제 Traffic 환경의 Latency Domain별 Accuracy Confidence Calibration 장기간 Reliability Pricing API Stability 또한 정해진 형식의 결과만 반환한다고 해서 항상 정답을 선택한다는 의미는 아니다. 예를 들어 실제 정답이 billing 인데 technical 이라고 판단하는 것처럼 Decision Error는 여전히 발생할 수 있다. :chatgpt-content-reference{index="24"} 21. Jev 7분 발표 구성 발표에서는 Jev 내부 구조를 깊게 설명하기보다 이런 새로운 종류의 AI 모델이 등장했고 기존 생성형 LLM과 어떤 차이가 있는지 소개하는 것 을 목표로 했다. 최종 발표는 다음 6개 흐름으로 구성했다. Jev란 무엇인가 기존 LLM과 Jev의 차이 왜 Jev가 필요한가 Jev는 어떻게 판단하는가 Choice Noul Score Confidence 왜 주목받고 있고 어디에 사용할 수 있는가 정리 및 개인 인사이트 :chatgpt-content-reference{index="25"} 22. 오늘의 핵심 정리 RFP / 고객 요구사항 대응 Multi-Agent 프로젝트에서 UX Scenario 이후 Task 도출과 실제 Agent 구조 설계 단계까지 진행함. Persona별 Agent를 만들지 않고 실제 업무에 필요한 Task를 기준으로 Agent 역할을 나눔. 최종적으로 RFP 처리 총괄 Main Agent + 요구사항 구조화 Agent + 근거 기반 대응 검토 Agent 구조로 정리함. Main Agent는 분석하지 않고 전체 업무 흐름과 결과 취합만 담당하도록 역할을 제한함. 근거 검색과 대응 검토는 연속된 작업이기 때문에 하나의 Agent로 구성하여 역할 중복과 Token 사용을 줄이는 방향을 선택함. Agent Prompt는 역할 → 입력 → 처리 → 제약 → 출력 구조로 통일함. Web Search는 내부 공식 자료를 대체하지 않고 공개 정보를 보완하는 용도로 제한함. 다음 단계는 테스트용 RFP 및 내부 더미 데이터, Expected Output, Pass / Fail 기준을 만들고 실제 Gemini Enterprise Agent를 구현하는 것임. AI 리터러시에서는 생성보다 판단에 집중하는 Jev Decision Model 을 조사함. Jev의 Choice, Noul, Score, Confidence 개념을 학습하고 기존 LLM과의 차이를 정리함. 모든 문제에 대형 LLM을 사용하는 대신 Code → Jev → LLM → Agent 처럼 문제 복잡도와 특성에 따라 적절한 도구를 선택할 수 있다는 점이 가장 흥미로웠음. 오늘 학습을 통해 개인 프로젝트와 AI 리터러시 모두에서 공통적으로 “가장 강력하거나 복잡한 구조를 사용하는 것보다 문제에 필요한 만큼의 구조를 선택하는 것이 중요하다” 는 점을 다시 확인함.
📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 194편 이전 글: 193. Snort · 다음 글: 195. Wazuh 네트워크 이벤트 1. 개념 Suricata 는 OISF(Open Information Security Foundation)가 개발하는 오픈소스 네트워크 IDS/IPS·보안 모니터링 엔진입니다. 처음부터 멀티 스레드로 설계되었고, Snort 규칙 문법과 대부분 호환되며, 탐지 결과뿐 아니라 프로토콜 메타데이터(HTTP, DNS, TLS, 흐름 등)를 JSON으로 기록하는 EVE 출력 이 특징입니다. Suricata의 탐지 기능과 규칙 문법은 06 영역 289. Suricata란 무엇인가 · 290. Suricata Rule 기초 에서 다루고, 이 글은 설치·설정 파일·로그 구조·서비스 운영 을 다룹니다. 내부 처리 구조는 188. IDS 동작 구조 , IPS 모드는 189. IPS 동작 구조 을 참고합니다. 파일(패키지 기본값) 역할 /etc/suricata/suricata.yaml 주 설정 (변수, 수집 방식, 출력, 규칙 경로) /var/lib/suricata/rules/suricata.rules suricata-update가 만든 병합 규칙 파일 /var/log/suricata/eve.json JSON 이벤트 로그 (Alert + 메타데이터) /var/log/suricata/fast.log Alert 한 줄 요약 /var/log/suricata/stats.log 엔진 통계 (수신·드롭 등) /var/log/suricata/suricata.log 엔진 자체 동작·오류 로그 2. 동작 원리 센서 VM 한 대에서 Suricata가 동작하는 전체 그림입니다. [SPAN/미러 트래픽] → ens33 (모니터링 NIC, IP 없음) ↓ af-packet 수집 (suricata.yaml의 af-packet.interface) [Suricata 프로세스] ← 규칙: /var/lib/suricata/rules/suricata.rules (suricata-update로 갱신) ↓ 출력 /var/log/suricata/ ├─ eve.json → Filebeat / Wazuh agent 등이 읽어 SIEM으로 전송 ├─ fast.log → 사람이 빠르게 확인 ├─ stats.log → 수신량·드롭 점검 └─ suricata.log → 시작·규칙 적재·오류 확인 eve.json 은 한 줄에 JSON 객체 하나 (JSON Lines) 형식이며, event_type 값으로 이벤트 종류를 구분합니다. 어떤 이벤트를 기록할지는 suricata.yaml 의 outputs › eve-log › types 에서 정합니다. 3. 주요 특징 주요 EVE 이벤트 유형입니다(버전·설정에 따라 추가·변경됨). event_type 내용 alert 규칙 일치 Alert ( alert 객체 포함) flow 흐름 종료 시 요약(패킷·바이트 수, 상태) dns / http / tls 해당 프로토콜 트랜잭션 메타데이터 fileinfo 추출·관찰된 파일 정보 anomaly 디코더·스트림·앱 계층 프로토콜 이상 drop IPS 모드에서 폐기된 패킷 (설정 시) stats 엔진 통계 (설정 시) Alert 이벤트에서 관제자가 가장 먼저 보는 필드입니다. 필드 의미 timestamp 이벤트 시각 (타임존 포함) flow_id 같은 흐름의 이벤트를 묶는 식별자 src_ip , src_port , dest_ip , dest_port , proto 5-tuple app_proto 식별된 애플리케이션 프로토콜 alert.signature_id , alert.rev , alert.signature 규칙 sid, 버전, 메시지 alert.category , alert.severity 분류, 심각도(1이 가장 높음) alert.action allowed / blocked flow_id 가 같으면 Alert와 그 흐름의 http · dns · flow 이벤트를 연결할 수 있습니다. 이 점이 Suricata 로그가 관제에서 유용한 이유입니다. 4. 예시 실습 예시 — 센서 VM에 Suricata를 설치하고 서비스로 운영하는 흐름입니다. 저장소 이름과 버전 번호는 시점에 따라 다르므로 OISF 공식 설치 문서를 확인합니다. 인터페이스·대역은 예시(값은 환경마다 다름)입니다. # Ubuntu: OISF 안정판 PPA sudo add-apt-repository ppa:oisf/suricata-stable sudo apt update && sudo apt install suricata jq # Rocky: EPEL + OISF COPR 저장소 (버전 번호는 시점에 따라 다름) sudo dnf install epel-release dnf-plugins-core sudo dnf copr enable @oisf/suricata-7.0 sudo dnf install suricata jq suricata.yaml 에서 최소한 확인할 항목입니다. vars: address-groups: HOME_NET: "[192.168.10.0/24,10.10.30.0/24]" af-packet: - interface: ens33 default-rule-path: /var/lib/suricata/rules rule-files: - suricata.rules 서비스가 사용할 인터페이스는 배포판 패키지에 따라 /etc/default/suricata (Ubuntu 계열) 또는 /etc/sysconfig/suricata (Rocky 계열)에서도 지정하므로 두 곳이 일치하는지 확인합니다. sudo suricata-update sudo suricata -T -c /etc/suricata/suricata.yaml -v sudo systemctl enable --now suricata sudo systemctl status suricata # Alert만 5-tuple과 sid로 요약 sudo jq -c 'select(.event_type=="alert") | [.timestamp, .src_ip, .dest_ip, .dest_port, .alert.signature_id, .alert.signature]' \ /var/log/suricata/eve.json | tail -5 📷 [실습 화면 삽입 위치] systemctl status suricata 실행 중 화면과, tail -f /var/log/suricata/eve.json 에서 event_type 이 flow·dns·alert 등으로 기록되는 화면 5. 보안 관점 EVE 로그에는 DNS 질의, HTTP URL·User-Agent 등 민감할 수 있는 정보 가 담깁니다. 로그 파일 권한과 보관 기간을 정책으로 관리합니다. eve.json 은 빠르게 커지므로 logrotate 설정이 필요합니다. 디스크가 가득 차면 기록이 멈추고 탐지 공백이 생깁니다. 로그 회전 후에는 Suricata가 새 파일에 쓰도록 신호(HUP 등)를 보내는 구성이 필요할 수 있습니다. HOME_NET 이 실제 보호 대역과 다르면 방향 조건 규칙이 제대로 동작하지 않습니다. 센서 관리 인터페이스는 관리망에만 두고, 모니터링 인터페이스에는 IP를 두지 않습니다( 156. IDS란 무엇인가 ). 6. SOC 관점 관제자가 확인할 질문 이 Alert의 flow_id 로 같은 흐름의 http · dns · tls · flow 이벤트를 찾아봤는가? alert.action 은 allowed 인가 blocked 인가? 센서가 IDS 모드인지 IPS 모드인지 알고 해석하는가? suricata.log 에 규칙 적재 실패나 재시작 기록이 있는가? stats.log 의 드롭은 증가하지 않았는가? Suricata Alert (eve.json) ↓ flow_id 로 같은 흐름 이벤트 조회 (http / dns / tls / fileinfo / flow) ↓ flow 이벤트의 bytes_toclient 로 응답 크기 확인 → 실제 데이터가 오갔는가 ↓ 방화벽 로그·서버 로그와 5-tuple·시각으로 연계 (06 영역) 오탐 주의 : alert.severity 는 규칙 분류에 따른 값이지 해당 환경에서의 실제 위험도가 아닙니다. 대상 자산과 응답 여부를 함께 봐야 합니다. 스캔 탐지 설정은 05 영역 238. Suricata Scan 탐지 에서 다룹니다. 7. 핵심 정리 Suricata는 멀티 스레드 오픈소스 IDS/IPS 엔진이며, EVE JSON으로 Alert와 프로토콜 메타데이터를 함께 기록합니다. 핵심 파일은 suricata.yaml , suricata.rules , /var/log/suricata/ 아래 eve.json · fast.log · stats.log · suricata.log 입니다. event_type 으로 이벤트를 구분하고, flow_id 로 같은 흐름의 이벤트를 연결합니다. Alert 분석의 기본 필드는 5-tuple, alert.signature_id , alert.signature , alert.severity , alert.action 입니다. 설치 후에는 HOME_NET , 인터페이스 설정, 로그 회전, 드롭 여부를 운영 점검 항목으로 관리합니다.
C++ typeid Operator typeid 는 객체나 표현식의 Type Information (타입 정보) 을 얻는 연산자이다. #include <typeinfo> typeid(expression) typeid(type) 반환값은 std::type_info 객체이다. 주요 기능 타입 비교 int a; double b; typeid(a) == typeid(int); // true typeid(a) == typeid(b); // false 타입 이름 확인 cout << typeid(a).name(); name() 의 결과는 Implementation-Defined (구현체 의존적) 이므로 컴파일러마다 다를 수 있다. Static Type vs Dynamic Type class Base { public: virtual ~Base() = default; }; class Derived : public Base {}; int main( void ) { Derived d; Base* p = &d; typeid(p); // Base* typeid(*p); // Derived } Base 가 Polymorphic Class (다형 클래스) 이면 typeid(*p) 는 실제 객체의 Dynamic Type (동적 타입) 을 확인한다. virtual 함수가 없다면 실제 객체가 Derived 여도 Static Type (정적 타입) 인 Base 로 판단한다. nullptr 주의 Base* p = nullptr; typeid(*p); 다형 클래스의 null 포인터를 역참조하면 std::bad_typeid 예외가 발생한다. 핵심 정리 typeid(x) → 타입 정보 확인 typeid(x) == typeid(T) → 타입 비교 .name() → 타입 이름 확인 Polymorphic (다형) 객체 → 실제 Runtime Type 확인 가능 일반 객체 → Static Type 기준 반환 타입 → std::type_info
📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 196편 이전 글: 195. Wazuh 네트워크 이벤트 · 다음 글: 197. 네트워크 보안 아키텍처 1. 개념 보안장비 Alert 는 방화벽, IDS/IPS, WAF, 서버 보안 agent 같은 장비가 "주의가 필요한 이벤트"라고 판단해 생성한 기록입니다. 관제자는 대부분 SIEM 화면에서 Alert를 보지만, 그 Alert는 장비에서 생성 → 전송 → 수집 → 정규화 → 표시 라는 여러 단계를 거친 결과입니다. 이 글은 Alert가 이동하는 장비·전달 경로 관점을 다룹니다. Alert 내용의 해석과 정탐·오탐 판단은 06 영역 283. IDS Alert , 284. IPS Alert , 295. IDS Alert의 Source/Destination 분석 에서 다룹니다. 장비 Alert 예 대표 전달 방식 방화벽 정책 차단, DoS 임계치 초과, 관리자 정책 변경 syslog IDS/IPS (Suricata 등) 규칙 일치 Alert, 차단 이벤트 파일(eve.json) → 수집 agent, syslog WAF 웹 공격 패턴 차단 syslog, API HIDS/서버 agent (Wazuh 등) 로그 규칙 일치, 파일 변경 agent 전용 프로토콜 네트워크 장비 포트 보안 위반, 인증 실패 syslog, SNMP Trap 2. 동작 원리 [장비] 탐지 조건 일치 → Alert 생성 (장비 고유 형식·심각도) ↓ 전달: 파일 기록 / syslog 송신 / API 제공 / SNMP Trap [수집기] Filebeat, Wazuh agent, rsyslog, Logstash 등 ↓ 파싱·정규화: 필드 이름과 심각도 척도를 공통 형식으로 변환 [SIEM / 인덱서] 저장, 상관 분석, 중복 묶음 ↓ [관제 화면] 우선순위별 Alert 목록 → 관제자 분석 각 단계에서 Alert가 바뀌거나 사라질 수 있습니다. 장비는 생성했지만 UDP syslog가 유실될 수 있고, 파서가 형식 변경을 처리하지 못하면 필드가 비거나 이벤트가 버려질 수 있습니다. SIEM 규칙이 같은 Alert를 묶으면 관제 화면에는 한 건으로 보입니다. 3. 주요 특징 장비마다 심각도 척도가 달라 숫자만 보고 비교하면 안 됩니다. 출처 척도 가장 심각한 값 Syslog severity (RFC 5424) 0(Emergency) ~ 7(Debug) 0 Suricata alert.severity 규칙 분류의 우선순위 값 (일반적으로 1~3, 규칙에 따라 더 큰 값 가능) 1 Snort Priority 분류 우선순위 (일반적으로 1~4) 1 Wazuh rule.level 0 ~ 15 15 필드 이름도 장비마다 다릅니다. 그래서 SIEM은 공통 이름으로 정규화합니다. 아래는 Elastic Common Schema(ECS)를 예로 든 대응입니다. 의미 Suricata EVE Linux 방화벽 커널 로그 정규화 예(ECS) 출발지 IP src_ip SRC= source.ip 목적지 IP dest_ip DST= destination.ip 목적지 포트 dest_port DPT= destination.port 탐지 규칙 alert.signature_id 로그 접두어( --log-prefix ) rule.id 등 4. 예시 실습 예시 — 같은 시각, 같은 출발지에서 발생한 세 장비의 Alert가 원래 어떤 모양이고, 비교를 위해 어떻게 공통 필드로 정리하는지 보여 주는 형식 예시(값은 환경마다 다름)입니다. # 형식 예시 — (1) Suricata eve.json (일부 필드) {"timestamp":"2026-09-30T10:15:32.104512+0900","event_type":"alert","src_ip":"192.168.10.50","dest_ip":"10.10.30.10", "dest_port":22,"proto":"TCP","alert":{"action":"allowed","signature_id":1000002,"signature":"LOCAL SSH connection attempts","severity":2}} # 형식 예시 — (2) Linux 방화벽 커널 로그 (187편 형식) Sep 30 10:15:33 lab-fw01 kernel: FW-SSH-DROP IN=ens37 OUT=ens38 SRC=192.168.10.50 DST=10.10.30.10 PROTO=TCP SPT=51522 DPT=22 SYN # 형식 예시 — (3) Wazuh alerts.json (일부 필드) {"timestamp":"2026-09-30T10:15:34.201+0900","rule":{"id":"100010","level":10,"description":"LOCAL: repeated SSH blocks"}, "location":"10.10.99.1","data":{"srcip":"192.168.10.50","dstport":"22"}} 세 로그를 공통 필드로 정리하면 한 표로 비교할 수 있습니다. # Suricata Alert를 "시각 출발지 목적지 포트 출처 규칙" 형식으로 변환 sudo jq -r 'select(.event_type=="alert") | [.timestamp, .src_ip, .dest_ip, .dest_port, "suricata", .alert.signature_id] | @tsv' \ /var/log/suricata/eve.json | tail -3 실제 운영에서는 이 변환을 Logstash·Wazuh 디코더·SIEM 파서가 담당합니다. 실습에서는 장비별로 이런 변환 스크립트를 만들어 보면 필드 대응 관계를 익히는 데 도움이 됩니다. 📷 [실습 화면 삽입 위치] SIEM(또는 Kibana·Wazuh dashboard)에서 같은 출발지 IP로 검색했을 때 Suricata·방화벽·Wazuh 이벤트가 시간순으로 함께 표시되는 화면 5. 보안 관점 Alert 전달 경로도 공격 표면입니다. 공격자가 장비 로그 설정을 끄거나, syslog 수집 경로를 방해하거나, 가짜 로그를 주입할 수 있습니다. 송신 장비 제한과 전송 암호화를 검토합니다. 장비 시각이 서로 다르면 정규화 후에도 순서가 뒤바뀝니다. 모든 장비와 수집기는 같은 NTP 기준을 사용해야 합니다. Alert가 너무 많으면 관제자가 중요한 Alert를 놓칩니다(Alert 피로). 장비 단계의 튜닝과 SIEM 단계의 묶음이 함께 필요합니다. 정규화 과정에서 원본 필드가 버려질 수 있으므로, 원본 로그 보관 정책을 따로 둡니다. 6. SOC 관점 관제자가 확인할 질문 이 Alert의 심각도는 어느 척도의 값인가? 장비 원래 값인가, SIEM이 재계산한 값인가? 같은 사건을 다른 장비도 보았는가? 보았어야 하는데 없다면, 그 장비의 전달 경로(파일 수집·syslog)에 문제가 없는가? SIEM에서 묶인 Alert라면, 원래 몇 건이었고 첫 발생과 마지막 발생 시각은 언제인가? SIEM Alert 확인 ↓ 원천 장비·원본 심각도 확인 (척도 방향 주의) ↓ 같은 5-tuple·시각의 다른 장비 이벤트 검색 있음 → 장비별 판정(허용/차단/탐지) 비교 → 타임라인 구성 없음 → 관찰 범위 밖인지, 전달 누락인지 구분 오탐 주의 : 한 사건이 여러 장비에서 Alert를 만들면 "여러 건의 공격"처럼 보입니다. 5-tuple과 시각으로 묶어 하나의 사건으로 판단합니다. 장비 간 연계 방법은 06 영역 296. Alert와 Firewall Log 연계 · 297. IDS Alert와 Packet 연계 에서 다룹니다. 7. 핵심 정리 보안장비 Alert는 생성 → 전달 → 수집 → 정규화 → 표시 단계를 거치며, 각 단계에서 변형·유실될 수 있습니다. 전달 방식은 파일 수집, syslog, API, SNMP Trap 등 장비마다 다릅니다. 심각도 척도는 장비마다 다르며, syslog·Suricata·Snort는 작은 값이, Wazuh는 큰 값이 더 심각합니다. SIEM은 장비별 필드를 공통 이름으로 정규화해 비교·상관 분석을 가능하게 합니다. Alert가 없을 때는 관찰 범위 밖인지 전달 누락인지를 구분해야 합니다.
📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 197편 이전 글: 196. 보안장비 Alert · 다음 글: 198. 네트워크 장비 장애와 보안 이벤트 1. 개념 네트워크 보안 아키텍처 는 방화벽, IPS, IDS, WAF, 프록시, NAC, VPN, SIEM 같은 통제 수단을 어느 위치에, 어떤 순서로, 어떤 역할 분담으로 배치할지 정한 설계입니다. 160. 네트워크 장비 연결 구조 가 "장비가 어떻게 연결되는가"를 다뤘다면, 이 글은 "그 연결 위에 보안 통제를 어떻게 겹겹이 두는가"를 다룹니다. 구역 분리와 DMZ 자체는 179. Network Segmentation · 180. DMZ 에서 다룹니다. 핵심 원칙은 심층 방어(Defense in Depth) 입니다. 하나의 통제가 뚫리거나 우회되어도 다음 통제가 막거나 최소한 기록하도록 설계합니다. 설계 원칙 의미 예 심층 방어 여러 계층에 서로 다른 통제 배치 방화벽 + IPS + WAF + 서버 방화벽 기본 거부 명시적으로 허용한 것만 통과 경계·내부 방화벽 모두 Default Deny 최소 권한 필요한 구역·포트만 연결 허용 사용자망 → DB 직접 접근 금지 관리 평면 분리 장비 관리 트래픽을 별도 망으로 관리망, 점프 서버 가시성 확보 통제 지점마다 로그를 남기고 모음 모든 장비 로그 → SIEM 2. 동작 원리 외부 요청이 내부 서비스에 도달하기까지 거치는 보안 계층의 예입니다. 실제 순서와 구성은 조직마다 다릅니다. 인터넷 ↓ [DDoS 방어 / 경계 라우터 ACL] 대량 트래픽·명백한 비정상 차단 ↓ [경계 방화벽 (NGFW)] 허용된 서비스 포트만 통과, NAT ↓ [IPS] 허용 트래픽 속 공격 패턴 차단 ↓ [WAF / 리버스 프록시] 웹 요청 검사 (TLS 종료 지점이 되는 경우 많음) ↓ [DMZ 웹 서버] ── [내부 방화벽] ── [WAS / DB 서버망] ↑ 동서 트래픽 통제 [IDS 센서] ← SPAN: 경계 안쪽·DMZ·서버망 복사 트래픽 관찰 [관리망] ── 모든 장비의 관리 인터페이스·로그 전송 → [SIEM] 트래픽 방향에 따라 통제 지점이 다릅니다. 남북(North-South) 트래픽 : 내부 ↔ 외부. 경계 방화벽·IPS·프록시가 통제합니다. 동서(East-West) 트래픽 : 내부 ↔ 내부. 경계 장비를 거치지 않으므로 내부 방화벽, L3 스위치 ACL, 호스트 방화벽, 내부 IDS 센서가 필요합니다. 침입 후 내부 확산은 주로 이 방향에서 일어납니다. 3. 주요 특징 계층별 통제와 남는 로그를 정리하면 아키텍처의 가시성 이 보입니다. 계층 대표 통제 남는 로그 경계 경계 라우터 ACL, NGFW, VPN 방화벽 트래픽·NAT 로그, VPN 인증 로그 탐지·차단 IPS, IDS 센서 Alert, 프로토콜 메타데이터 애플리케이션 WAF, 리버스 프록시, 포워드 프록시 HTTP 요청·차단 로그, URL 로그 내부 내부 방화벽, VLAN·ACL, NAC 구역 간 통신 로그, 단말 인증 로그 호스트 서버 방화벽, HIDS·EDR agent 호스트 이벤트, 프로세스·파일 로그 관제 SIEM, 로그 서버 상관 분석 결과 암호화 구간과 검사 지점의 관계도 설계에 포함해야 합니다. TLS 종료 위치 내용 검사 가능 지점 주의점 웹 서버 서버 로그, 호스트 agent 경계 IDS·IPS는 내용 확인 불가 WAF·로드 밸런서 WAF, 그 뒤 구간의 IDS 뒤 구간이 평문이면 내부 도청 위험 고려 포워드 프록시(복호화) 프록시, 뒤쪽 IDS 개인정보·법적 검토 필요 4. 예시 실습 예시 — VMware 실습망에 오픈소스 도구로 보안 계층을 구성하는 설계표입니다. 자원이 부족하면 일부 역할을 한 VM에 합칠 수 있습니다. 대역은 예시(값은 환경마다 다름)입니다. 역할 실습 도구(예) 위치 로그 전송 경계 방화벽·NAT pfSense 또는 Linux(iptables/nftables) VM WAN ↔ 내부·DMZ syslog → Wazuh IDS 센서 Suricata VM (모니터링 NIC IP 없음) 방화벽 안쪽 SPAN eve.json → agent 웹 서버 Nginx VM DMZ 10.10.30.0/24 접근 로그 → agent 사용자 PC Rocky·Ubuntu 데스크톱 VM 192.168.10.0/24 호스트 agent SIEM Wazuh 올인원 VM 관리망 10.10.99.0/24 — 이 설계에서 각 통신 경로가 어느 통제를 거치는지 가시성 매트릭스 로 확인할 수 있습니다. 경로 방화벽 IDS 웹로그 호스트agent 외부 → DMZ 웹(443) O O O O 사용자 PC → 인터넷 O O - O 사용자 PC → DMZ 웹 SSH(22) O O - O 사용자 PC ↔ 사용자 PC - - - O ← 동서 트래픽: 호스트 로그만 남음 📷 [실습 화면 삽입 위치] 실습망 보안 아키텍처 구성도(방화벽·IDS 센서·DMZ·관리망·Wazuh 위치와 로그 흐름 화살표 표시) 5. 보안 관점 가시성 매트릭스에서 "-"만 있는 경로 가 사각지대입니다. 같은 VLAN 내부 통신, 이중화 회선의 한쪽, 클라우드·원격 근무 구간이 대표적입니다. 장비를 많이 두는 것보다 역할이 겹치거나 비는 곳이 없는지 가 중요합니다. 예: WAF가 TLS를 종료하는데 IDS가 그 앞에만 있으면 웹 요청 내용은 WAF 로그로만 확인 가능합니다. 관리 평면이 분리되지 않으면 공격자가 사용자망에서 보안장비 관리 화면에 접근할 수 있습니다. 경계 중심 설계만으로는 내부 확산을 막기 어렵습니다. 내부 구역 분리와 "내부도 신뢰하지 않는다"는 제로 트러스트 개념이 보완책으로 논의됩니다. 6. SOC 관점 관제자가 확인할 질문 이 사건 경로는 가시성 매트릭스에서 어느 통제를 거치는가? 그 통제들의 로그가 모두 SIEM에 들어오는가? 경계 장비에서 허용된 트래픽이 다음 계층(IPS·WAF·서버)에서 어떻게 처리되었는가? 동서 트래픽이라 네트워크 장비 로그가 없다면, 호스트 로그로 대신 확인할 수 있는가? 사건 발생 ↓ 경로 파악 (출발 구역 → 도착 구역) ↓ 아키텍처 문서에서 경유 통제 목록 확인 ↓ 계층 순서대로 판정 추적: 방화벽 허용? → IPS 탐지? → WAF 차단? → 서버 응답? ↓ 어느 계층에서 멈췄는지 / 모두 통과했는지 결론 오탐 주의 : 아키텍처 문서는 실제 구성과 다를 수 있습니다. 로그가 기대와 다르면 구성 변경(우회 경로, 예외 정책)을 먼저 의심합니다. 방화벽·IDS·IPS를 묶은 탐지·대응 흐름은 06 영역 300. Firewall + IDS + IPS 기반 SOC 탐지/대응 에서 다룹니다. 7. 핵심 정리 네트워크 보안 아키텍처는 보안 통제를 어느 위치에 어떤 순서로 배치할지 정한 설계이며, 심층 방어가 핵심 원칙입니다. 남북 트래픽은 경계 장비가, 동서 트래픽은 내부 방화벽·ACL·호스트 통제가 담당합니다. 계층별로 남는 로그를 정리한 가시성 매트릭스로 사각지대를 찾을 수 있습니다. TLS 종료 위치에 따라 내용 검사가 가능한 지점이 달라집니다. 관리 평면 분리와 모든 통제 지점의 로그 수집이 관제 가능한 아키텍처의 조건입니다.
📚 네트워크 · 패킷 분석 › 04. 네트워크 장비 실습 — 190편 이전 글: 189. IPS 동작 구조 · 다음 글: 191. Anomaly Detection 1. 개념 Signature Detection(시그니처 탐지) 은 알려진 공격의 특징(문자열, 바이트 패턴, 프로토콜 필드 값)을 규칙으로 만들어 트래픽과 비교하는 방식입니다. 탐지 원리, 장단점, 오탐·미탐의 성격은 06 영역 280. Signature Detection 에서 다룹니다. 이 글은 장비 운영 관점에서 "센서에 시그니처가 어떻게 들어오고, 갱신되고, 엔진에 적재되는가" 를 다룹니다. 시그니처 탐지 장비의 탐지 능력은 엔진보다 적재된 규칙 세트 에 의해 결정되기 때문입니다. 규칙 세트(예) 제공 특징 ET Open Proofpoint Emerging Threats 무료, Suricata·Snort용 제공, suricata-update 기본 소스 ET Pro Proofpoint 유료, 범위·갱신 속도 확대 Snort Community Rules Cisco Talos 무료, GPL 규칙 Snort Subscriber / Registered Rules Cisco Talos 유료 구독은 즉시, 등록 사용자는 일정 기간 뒤 제공 로컬 규칙 조직 자체 작성 내부 환경에 맞춘 탐지( 192. IDS Rule ) 제공 조건과 라이선스는 바뀔 수 있으므로 각 제공처의 최신 안내를 확인해야 합니다. 2. 동작 원리 시그니처가 센서에 적용되기까지의 흐름입니다. [규칙 제공처] ET Open / Talos / 로컬 규칙 ↓ 갱신 도구가 내려받기 (Suricata: suricata-update / Snort: PulledPork 등) ↓ 비활성화·활성화·수정 목록 적용 (disable.conf, enable.conf, modify.conf) ↓ 하나의 규칙 파일로 병합 (예: /var/lib/suricata/rules/suricata.rules) ↓ 설정 검사 (suricata -T) ↓ 엔진 재적재 (재시작 또는 무중단 reload) ↓ 탐지 엔진: 규칙들의 고정 문자열을 모아 다중 패턴 매칭 → 후보 규칙만 전체 검사 엔진은 수만 개 규칙을 패킷마다 하나씩 비교하지 않습니다. 각 규칙에서 고정 문자열 하나(fast pattern) 를 골라 다중 패턴 매칭(MPM)으로 한 번에 찾고, 그 문자열이 나온 경우에만 해당 규칙의 나머지 조건을 검사합니다. Suricata는 mpm-algo 설정으로 알고리즘을 고르며, Hyperscan 지원 빌드에서는 hs 를 쓸 수 있습니다. 3. 주요 특징 센서 운영에서 시그니처 관리 시 확인할 항목입니다. 항목 설명 확인 방법(Suricata 예) 규칙 개수 활성 규칙 수가 많을수록 메모리·CPU 사용 증가 시작 로그의 적재 결과 적재 실패 문법 오류·미지원 키워드 규칙은 적재 안 됨 suricata.log 의 오류 메시지 갱신 주기 신규 위협 반영 속도 결정 갱신 작업(cron·systemd timer) 기록 규칙 식별 gid·sid·rev로 규칙과 버전 식별 EVE alert.signature_id , alert.rev 변수 HOME_NET , EXTERNAL_NET 값이 규칙 적용 범위 결정 suricata.yaml 의 vars.address-groups 엔진별 갱신 도구입니다. 엔진 대표 갱신 도구 비고 Suricata suricata-update Suricata 4.1 이후 함께 배포되는 공식 도구 Snort 2 PulledPork(pulledpork.pl) 커뮤니티 도구 Snort 3 PulledPork3 Snort 3 규칙 형식 지원 4. 예시 실습 예시 — Suricata 센서 VM에서 규칙을 갱신하고 적재 상태를 확인하는 흐름입니다. 경로는 패키지 기본값 기준 예시(값은 환경마다 다름)입니다. # 사용 가능한 규칙 소스 목록 갱신 및 조회 sudo suricata-update update-sources sudo suricata-update list-sources # 규칙 내려받기·병합 (기본 소스 ET Open) sudo suricata-update ls -l /var/lib/suricata/rules/suricata.rules # 설정·규칙 문법 검사 후 적용 sudo suricata -T -c /etc/suricata/suricata.yaml -v sudo systemctl restart suricata # 무중단 재적재: 유닉스 소켓이 활성화된 경우 sudo suricatasc -c reload-rules 적재 결과는 suricata.log 에 기록됩니다. # 형식 예시 (값·문구는 버전과 환경마다 다름) <Info> - 1 rule files processed. 45210 rules successfully loaded, 0 rules failed 특정 규칙을 끄고 싶다면 규칙 파일을 직접 편집하지 않고 /etc/suricata/disable.conf 에 sid를 적은 뒤 suricata-update 를 다시 실행합니다. 직접 편집한 내용은 다음 갱신 때 덮어써지기 때문입니다. # /etc/suricata/disable.conf 예시 2100498 📷 [실습 화면 삽입 위치] suricata-update 실행 결과(내려받은 소스와 활성 규칙 수)와 재시작 후 suricata.log 의 규칙 적재 결과 줄 5. 보안 관점 적재되지 않은 규칙은 없는 규칙과 같습니다. 갱신 후 적재 실패가 있었는데 확인하지 않으면, 탐지하고 있다고 착각하게 됩니다. 갱신 작업이 멈추면 신규 위협 탐지가 점점 뒤처집니다. 갱신 성공 여부 자체를 모니터링 대상으로 둡니다. HOME_NET 값이 실제 내부 대역과 다르면 방향 조건이 있는 규칙이 동작하지 않거나 오탐이 늘어납니다. 시그니처는 알려진 패턴만 탐지하므로 변형·암호화된 공격에는 한계가 있습니다. 보완 방식은 191. Anomaly Detection 에서 다룹니다. 6. SOC 관점 관제자가 확인할 질문 이 Alert의 sid·rev는 무엇이며, 해당 규칙이 언제 추가·변경되었는가? 규칙 갱신 직후 Alert가 급증했다면 새 규칙의 영향일 수 있습니다. 알려진 공격인데 Alert가 없다면, 해당 sid가 disable 목록에 있거나 적재 실패한 것은 아닌가? 센서마다 규칙 세트 버전이 같은가? 센서별로 탐지 결과가 다르다면 갱신 상태를 먼저 비교합니다. Alert 급증 감지 ↓ 같은 sid 집중 여부 확인 ↓ 규칙 갱신 기록과 시간 대조 갱신 직후 → 규칙 변경 영향 가능성 → 정탐/오탐 판단 (06 영역) 갱신 무관 → 실제 트래픽 변화 → 출발지·목적지 분석 오탐 주의 : 규칙 세트 갱신으로 생긴 Alert 급증을 공격 캠페인으로 오판하지 않도록, 갱신 이력을 관제 대시보드에서 함께 볼 수 있게 하는 것이 좋습니다. 규칙 문법은 06 영역 282. Signature Rule 에서 다룹니다. 7. 핵심 정리 시그니처 탐지 장비의 탐지 능력은 적재된 규칙 세트에 의해 결정됩니다. ET Open, Snort Community·Subscriber 규칙, 로컬 규칙이 대표적인 규칙 출처입니다. Suricata는 suricata-update, Snort는 PulledPork 계열 도구로 규칙을 내려받아 병합합니다. 엔진은 fast pattern과 다중 패턴 매칭으로 후보 규칙만 전체 검사해 성능을 확보합니다. 갱신 성공, 적재 실패 여부, HOME_NET 설정을 운영 점검 항목으로 관리합니다.