06SmartEvent로 이벤트 분석SmartEvent로 이벤트 분석
로그가 수십억 건이면 사람이 다 못 봅니다. SmartEvent Software Blade는 그 로그를 우선순위가 매겨진 보안 이벤트로 압축해, 실시간 그래픽으로 보여 주는 통합 이벤트 관리·분석 솔루션입니다. SmartConsole, SmartView Web Application, SmartEvent GUI 클라이언트가 수십억 건의 로그를 모아 우선순위가 매겨진 보안 이벤트 로 보여 주므로, 보안 사고에 즉시 대응하고 추가 공격을 막을 조치를 취할 수 있습니다. 가장 중요한 이벤트만 골라 보도록 뷰를 자유롭게 맞출 수 있고, 높은 수준의 개요에서 클릭 몇 번이면 상세 포렌식 분석 까지 내려갈 수 있습니다. 자유 텍스트 검색과 자동 제안 덕분에 데이터 분석을 빠르게 돌려 결정적인 보안 이벤트를 금세 짚어낼 수 있습니다. 이 장은 이벤트가 무엇이고 로그가 어떻게 이벤트로 바뀌는지, SmartEvent의 구조, Event Policy를 어떻게 손보는지, 자동 대응·예외·오탐 줄이기·시스템 관리까지를 원문 그대로 빠짐없이 정리합니다.
이벤트란 무엇인가
이벤트는 보안 사고의 기록 입니다. 하나 이상의 로그와, Event Policy(이벤트 정책)에 정의된 규칙을 바탕으로 만들어집니다. 핵심은 이벤트가 "로그 + Event Policy의 규칙" 으로 만들어진다는 점입니다.
- 로그 하나로 되는 이벤트 — 예를 들어 High Severity Anti-Bot 이벤트 는 심각도 High인 Anti-Bot 로그 하나만으로 기록됩니다.
- 여러 로그가 모여야 되는 이벤트 — 예를 들어 Certificate Sharing 이벤트 는 같은 인증서로 사용자만 다르게 로그인한 로그 둘 이 있어야 기록됩니다.
로그는 어떻게 이벤트로 바뀌는가
로그가 이벤트로 바뀌는 길은 둘입니다.
- SmartEvent는 Firewall·VPN·HTTPS Inspection이 아닌 로그 를 자동으로 이벤트로 정의합니다.
- 하나 이상의 로그가 만드는 의심스러운 패턴 에 기반한 이벤트는 SmartEvent Correlation Unit(상관분석 유닛)이 만듭니다. 이렇게 만들어진 상관 이벤트(correlated event)는 SmartEvent 클라이언트 GUI의 Policy 탭 에서 정의합니다.
대부분의 로그는 Firewall·VPN·HTTPS Inspection 로그입니다. 그래서 SmartEvent는 SmartEvent Server의 성능 부담을 피하려고 이들을 기본적으로 이벤트로 정의하지 않습니다.
SmartEvent의 구조
SmartEvent에는 보안 위협을 추적하고 네트워크를 더 안전하게 만들도록 함께 동작하는 여러 부품 이 있습니다.

핵심 동작은 이렇습니다 — SmartEvent Correlation Unit(③)이 Log Server(②)의 로그 항목을 분석해, Log Server가 로그를 저장하듯 이벤트를 저장합니다. SmartEvent Server(④)는 Events Database(⑤)를 품고 있고, SmartEvent·SmartConsole 클라이언트(⑥)가 SmartEvent Server를 관리합니다. 다이어그램의 번호별 부품을 정리하면 다음과 같습니다.
| 번호 | 부품 | 역할 |
|---|---|---|
| 1 | Check Point Security Gateway | 로그를 Log Server로 보냅니다. |
| 2 | Log Server | 로그를 저장합니다. |
| 3 | SmartEvent Correlation Unit | 이벤트 식별 — Log Server의 각 로그 항목을 분석해 설치된 Event Policy에 따라 패턴을 찾습니다. 로그에는 Check Point 제품과 일부 서드파티 장비의 데이터가 담깁니다. 위협 패턴을 찾으면 그 이벤트를 SmartEvent Server로 전달 합니다. |
| 4 | SmartEvent Server | ① SmartView용 로그 인덱싱, ② Event Policy 정의, ③ Correlation Unit 관리 를 맡습니다. |
| 5 | Events Database | 이벤트를 저장합니다. SmartEvent Server 위에 있습니다. |
| 6 | SmartEvent 클라이언트 | 수신된 이벤트를 보여 주고, 이벤트 관리(필터·종료 등)와 미세 조정, Event Policy 설치를 합니다. 클라이언트는 SmartConsole 과 SmartView Web Application 입니다. |
SmartEvent 부품은 한 컴퓨터에 모아(standalone) 설치 하거나, 여러 컴퓨터·사이트에 나눠(distributed) 설치 할 수 있습니다. 로깅 활동량이 많을 때는 분산 배포를 권장합니다. 한 Correlation Unit이 여러 Log Server나 Domain Log Server의 로그 를 분석할 수 있습니다.
Correlation Unit이 하는 일
SmartEvent Correlation Unit 은 로그 항목을 분석해 이벤트를 식별합니다. 분석하는 동안 다음 네 가지를 합니다.
- 단독으로는 이벤트가 아니지만, 나중에 식별될 더 큰 패턴의 일부가 될 수 있는 로그 항목을 표시합니다.
- Event Policy의 기준 중 하나를 충족하는 로그 항목을 받아 이벤트를 생성 합니다.
- 여러 항목이 모여 하나의 보안 이벤트를 이루는 경우, 새 로그 항목을 진행 중인 이벤트에 더합니다.
- 이벤트 기준에 맞지 않는 로그 항목은 버립니다.
Correlation Unit 고가용성(HA)
여러 Correlation Unit이 같은 Log Server를 읽게 하면, 한쪽이 죽어도 다른 쪽이 이어받는 중복(redundancy) 을 얻습니다. 다만 이렇게 하면 각 Unit이 탐지한 이벤트가 SmartEvent 데이터베이스에 중복 됩니다. 이때 Event Query 정의의 Detected By 필드로 필터링하면 어느 Correlation Unit이 탐지한 이벤트인지 구분 해 모호함을 없앨 수 있습니다.
SmartView Web Application
SmartView Web Application 은 환경에서 발생한 이벤트를 분석하는 SmartEvent 클라이언트 중 하나입니다. 환경의 보안 정보를 한눈에 보는 데 쓰며, SmartConsole과 같은 이벤트 모니터링·분석 뷰 를 제공합니다. 클라이언트를 따로 설치하지 않아도 된다는 점이 편리합니다. 로그인하려면 다음 주소로 접속합니다.
https://<Security Management Server의 IP 주소>/smartview/또는
https://<Security Management Server의 호스트 이름>/smartview/SmartEvent Policy·설정 구성하기
SmartEvent GUI 클라이언트 열기
SmartEvent Policy를 정의하는 이벤트는 SmartEvent GUI 클라이언트의 Policy 탭 에서 구성·커스터마이즈합니다. 여는 순서는 다음과 같습니다.
- SmartConsole > Logs & Events 를 엽니다.
- (+) 를 눌러 Catalog(새 탭)를 엽니다.
- SmartEvent Settings & Policy 를 클릭합니다.
Policy 탭
Event Policy는 Event Policy 탭 에서 정의하며, 대부분의 구성 작업이 여기에서 이루어집니다. SmartEvent Correlation Unit, 차단된 IP 주소 목록 같은 시스템 구성요소와 그 밖의 일반 설정도 여기에서 정의합니다. SmartEvent가 탐지할 수 있는 이벤트 종류가 여러 카테고리로 분류 되어 나열되며, 이벤트마다 기본 임계(threshold)를 바꾸고 자동 응답을 설정 하거나, 아예 이벤트를 비활성화 할 수도 있습니다. Policy 탭은 세 영역으로 나뉩니다.
| 영역 | 역할 |
|---|---|
| Selector Tree | 탐색 창(navigation pane). |
| Detail 창 | Selector Tree에서 고른 항목의 설정 을 보여 줍니다. |
| Description 창 | 선택한 항목에 대한 설명 을 보여 줍니다. |
Event Policy를 편집하는 길은 다음과 같습니다.
- Event Policy를 미세 조정(fine-tune) 합니다.
- 기존 Event Definition 을 바꿔 관심 있는 이벤트만 보게 합니다("Event Definition 손보기" 참조).
- 기존 정의에 없는 이벤트를 보려면 새 Event Definition을 만듭니다.
Event Policy 저장 (Save Event Policy)
Event Policy를 바꾼 내용은 SmartEvent Server에 저장하고 SmartEvent Correlation Unit에 설치 해야 비로소 적용됩니다. 적용 순서는 다음과 같습니다.
- File > Save 를 클릭합니다.
- Actions > Install Event Policy 를 클릭합니다.
변경 되돌리기 (Revert Changes)
아직 저장하지 않은 Event Policy 변경은 되돌릴 수 있습니다. File > Revert Changes 를 클릭하면 됩니다.
Event Definition과 General Settings
Selector Tree는 두 가지로 나뉩니다 — Event Policy 가지와 General Settings 가지입니다.
- Event Policy 가지에는 SmartEvent가 탐지할 수 있는 이벤트가 카테고리별로 정리되어 있습니다. Event Definition을 고르면 설정 가능한 속성이 Detail 창에, 설명이 Description 창에 나타납니다. 속성의 선택을 해제(clear)하면 다음 Event Policy 설치 때 그 이벤트 종류가 정책에서 빠집니다.
- General Settings 가지에는 Initial Settings 가 들어 있습니다. 예를 들어 초기 구성에서 흔히 쓰는 SmartEvent Correlation Unit 정의 가 여기에 있습니다. General Settings 항목을 클릭하면 설정 가능한 속성이 Detail 창에 나타납니다.
특정 공격이나 이벤트의 자세한 내용은 Event Definition의 Detail 창 을 참고하세요.
Event Definition 파라미터
Event Definition을 고르면 설정 가능한 요소가 Detail 창에, 설명이 Description 창에 나타납니다. 흔히 손보는 요소는 다음과 같습니다.
| 요소 | 설명 |
|---|---|
| Threshold(임계) | y초 동안 x건 넘게 연결이 탐지되면 이벤트 처럼, 이벤트로 볼 한계치. |
| Severity(심각도) | Critical, Medium, Informational 등. |
| Automatic Reaction(자동 대응) | Block Source, External Script 실행 등(아래 설명). |
| Exception(예외) | 특정 조건에 다른 기준 적용(아래 설명). |
| Time Object | 예: 지정한 Working Hours 밖 에서 발생하면 이벤트 발생. |
이 요소가 모든 Event Definition에 다 나타나는 것은 아닙니다. SmartEvent를 설치해 잠깐 돌려 보면, Event Definition별로 어떤 요소를 미세 조정해야 하는지 알게 됩니다. General Settings의 대부분 객체 구성은 아래 "시스템 관리" 절을 참고하세요.
Event Definition 손보기
SmartEvent는 Log Server에서 끊임없이 데이터를 가져와, 시스템으로 들어오는 모든 네트워크 잡음 속에서 패턴 을 찾습니다. 각 Event Definition에 설정된 수준에 따라 탐지되는 이벤트 수가 매우 많아질 수 있는데, 그중 의미 있는 것은 일부뿐입니다. 임계와 그 밖의 기준을 바꿔 오탐(false alarm)을 줄일 수 있습니다.
Event Threshold (이벤트 임계)
Event Threshold 는 이 한계를 넘으면 이벤트가 발생했다고 볼 기준을 정합니다. 한계는 로그 건수와, 그 로그가 발생한 시간 범위 로 이루어집니다.
특정 이벤트의 오탐을 줄이려면 로그 건수를 늘리거나 시간 범위를 늘리거나, 둘 다 늘립니다.
Severity (심각도)
이벤트의 심각도는 드롭다운 목록에서 수준을 골라 바꿉니다. 다만 Threat Prevention 로그 기반 이벤트는 심각도를 여기 설정이 아니라 protection 타입에서 가져옵니다. 이를 덮어쓰려면 다음과 같이 합니다.
- SmartEvent > Policy 로 갑니다.
- 이벤트를 선택해 우클릭 > Select Properties 를 누릅니다. Edit Event Definition 창이 열립니다.
- Event Format 탭 에서 Determine event's display name and severity from event logs 를 선택합니다.
Automatic Reaction (자동 대응)
이벤트가 탐지되면 Automatic Reaction(자동 대응)을 발동시킬 수 있습니다. SmartEvent 관리자는 시스템 필요에 맞춰 하나 또는 여러 개의 자동 대응 을 만들 수 있습니다. 예를 들어 Mail Reaction 으로 적용된 이벤트를 관리자에게 알리되, 이벤트 종류마다 다른 담당자에게 알리도록 여러 개의 Mail Reaction 을 만들 수 있습니다. 자동 대응을 만드는 흐름은 다음과 같습니다.
- Event Definition 안에서, 또는 General Settings > Objects > Automatic Reactions 에서 자동 대응 객체를 만듭니다.
- 그 자동 대응을 이벤트(또는 이벤트의 예외)에 할당합니다.
- File > Save 로 Event Policy를 저장합니다.
- Actions > Install Event Policy 로 SmartEvent Correlation Unit에 설치합니다.
자동 대응의 종류는 다음과 같습니다.
| 종류 | 하는 일 |
|---|---|
| 이벤트 발생을 관리자에게 이메일 로 알립니다. | |
| Block Source | Security Gateway에 지시해 이 이벤트가 탐지된 출처 IP를 일정 시간 차단 합니다. 1분부터 3주 이상까지 시간 범위를 고릅니다. |
| Block Event Activity | 여러 출처에서 비롯되거나 여러 목적지를 노리는 분산 공격 을 일정 시간 차단하도록 Security Gateway에 지시합니다. 1분부터 3주 이상까지 고릅니다. |
| External Script | 직접 제공한 스크립트를 실행 합니다. SmartEvent 데이터를 활용하는 스크립트를 작성합니다. |
| SNMP Trap | SNMP Trap을 생성 합니다. |
SNMP Trap 메시지에는 이벤트 필드를 담아 보낼 수 있는데, 그 형식은 [seam_event_table_field] 입니다. 담을 수 있는 seam_event 테이블 필드와 자료형은 다음과 같습니다.
| 필드 | 자료형 |
|---|---|
AdditionalInfo | varchar(1024) |
AutoReactionStatus | varchar(1024) |
Category | varchar(1024) |
DetectedBy | integer |
DetectionTime | integer |
Direction | integer |
DueDate | integer |
EndTime | integer |
EventNumber | integer |
FollowUp | integer |
IsLast | integer |
LastUpdateTime | integer |
MaxNumOfConnections | integer |
Name | varchar(1024) |
NumOfAcceptedConnections | integer |
NumOfRejectedConnections | integer |
NumOfUpdates | integer |
ProductCategory | varchar(1024) |
ProductName | varchar(1024) |
Remarks | varchar(1024) |
RuleID | varchar(48) |
Severity | integer |
StartTime | integer |
State | integer |
TimeInterval | integer |
TotalNumOfConnections | varchar(20) |
User | varchar(1024) |
Uuid | varchar(48) |
aba_customer | varchar(1024) |
jobID | varchar(48) |
policyRuleID | varchar(48) |
Mail Reaction 만들기
- Add > Mail 을 선택합니다.
- 자동 대응에 의미 있는 이름 을 줍니다.
- From·To·Cc 의 Mail Parameters를 채웁니다.
- 수신자를 여러 명 넣으려면 이메일 주소를 세미콜론(
;)으로 구분합니다. - (선택) 각 Mail Reaction에 들어갈 표준 본문 텍스트 를 넣습니다.
- SMTP 서버의 도메인 이름 을 입력합니다.
- Save 를 누릅니다.
Block Source Reaction 만들기
- Add > Block Source 를 선택합니다.
- 자동 대응에 의미 있는 이름을 줍니다.
- 드롭다운에서 이 출처를 차단할 분(minute) 수 를 고릅니다.
- Save 를 누릅니다.
Block Event Activity Reaction 만들기
- Add > Block Event Activity 를 선택합니다.
- 자동 대응에 의미 있는 이름을 줍니다.
- 드롭다운에서 이 출처를 차단할 분 수 를 고릅니다.
- Save 를 누릅니다.
SNMP Trap Reaction 만들기
- Add > SNMP Trap 을 선택합니다.
- 자동 대응에 의미 있는 이름을 줍니다.
- SNMP Trap 파라미터인 Host·Message·OID·Community name 을 채웁니다.
- Save 를 누릅니다.
send_snmp 명령은 $CPDIR/lib/snmp/ 디렉터리의 chkpnnt.mib 파일에 있는 값을 씁니다. SNMP Trap 파라미터 창에서 쓰는 OID 값은 chkpnnt.mib 또는 그것을 참조하는 파일에 정의되어 있어야 합니다. OID 필드를 비워 두면 값은 다음에서 결정됩니다.
iso.org.dod.internet.private.enterprises.checkpoint.products.fw.fwEvent = 1.3.6.1.4.1.2620.1.1.11자동 대응이 일어나면 SNMP Trap은 256바이트 DisplayString 텍스트 로 전송됩니다. 다만 OID 타입이 텍스트가 아니면 메시지는 전송되지 않습니다.
External Script 자동 대응 만들기
직접 만든 스크립트를 자동 대응으로 돌릴 수 있습니다. 순서는 다음과 같습니다.
- 스크립트를 만듭니다.
- 스크립트를 SmartEvent Server에 올립니다.
- a.
$RTDIR/bin안에ext_commands폴더를 만듭니다.
- a.
mkdir $RTDIR/bin/ext_commands
- b. 스크립트를
$RTDIR/bin/ext_commands/또는 그 하위 폴더에 둡니다. 경로와 스크립트 이름에 공백이 있으면 안 됩니다.- c. 실행 권한을 줍니다.
chmod +x $RTDIR/bin/ext_commands/<script_filename>
- SmartEvent GUI 클라이언트 Policy 탭의 Automatic Reactions 에서 Add > External Script 를 선택합니다.
- Add Automatic Reaction 창에서
- a. 자동 대응 객체에 의미 있는 Name 을 줍니다.
- b. Command line 에 실행할 스크립트 이름을 입력합니다.
$RTDIR/bin/ext_commands/디렉터리에 있는 스크립트 이름을 지정하되, 필요하면 상대 경로를 쓰고$RTDIR/bin/ext_commands/전체 경로는 적지 않습니다. - c. Save 를 누릅니다.
스크립트 작성 지침
- 스크립트를 수동으로 먼저 실행해 의도대로 동작하는지 확인합니다.
- 스크립트는 10분을 넘기지 않게 합니다. 넘기면 SmartEvent Server가 강제 종료합니다.
- 스크립트 안에서 이벤트 필드를 쓰려면, 이벤트를 가리키는 환경 변수를 다음처럼 정의하고
$EVENT를 씁니다.
awk 나 sed 같은 라인 에디터 명령으로 이벤트를 파싱해 특정 필드를 참조합니다. 형식을 보려면 $EVENT 를 한 번 출력 해 보면 됩니다.
이벤트 내용의 형식은 name-value 집합 으로, 다음 꼴을 가진 구조화된 필드 모음입니다.
(name: value ;* );여기서 name 은 문자열, value 는 세미콜론 전까지의 자유 텍스트이거나 중첩된 name-value 집합 입니다. 샘플 이벤트는 다음과 같습니다.
(Name: Check Point administrator credential guessing; RuleID:
{F182D6BC-A0AA-444a-9F31-C0C22ACA2114}; Uuid:
<42135c9c,00000000,2e1510ac,131c07b6>; NumOfUpdates: 0;
IsLast: 0;
StartTime: 16Feb2015 16:45:45; EndTime: Not Completed;
DetectionTime:
16Feb2015 16:45:48; LastUpdateTime: 0; TimeInterval: 600;
MaxNumOfConnections: 3; TotalNumOfConnections: 3; DetectedBy:
2886735150;
Origin: (IP: 192.0.2.4; repetitions: 3; countryname: United
States;
hostname: theHost) ; ProductName: SmartDashboard; User: XYZ;
Source:
(hostname: theHost; repetitions: 3; IP: 192.0.2.4;
countryname: United
States) ; Severity: Critical; EventNumber: EN00000184; State:
0;
NumOfRejectedConnections: 0; NumOfAcceptedConnections: 0) ;이벤트에 필드를 더 넣어야 하면 다음과 같이 합니다.
- SmartEvent GUI 클라이언트 Policy 탭에서 이벤트를 우클릭 > Properties > Event Format 탭 을 엽니다.
- Display 열에서 이벤트에 담을 Event 필드를 선택합니다.
- SmartEvent Correlation Unit에 Event Policy를 설치 합니다.
이벤트에 자동 대응 할당하기
이 종류의 이벤트가 탐지될 때 SmartEvent가 실행할 자동 대응을 추가할 수 있습니다.
- 아이콘
[...]을 선택합니다. - 목록에서 직접 만든 자동 대응 을 고르거나 Add new? 를 선택합니다. 각 자동 대응을 만드는 방법은 위 절을 참고하세요.
- 자동 대응을 구성합니다.
- Save 를 누릅니다.
- OK 를 클릭합니다.
Working Hours (근무 시간)
Working Hours 는 근무 시간 외에 보호 대상 시스템에 접근하려는 무단 시도나 그 밖의 금지된 작업 을 잡는 데 씁니다. 이벤트의 정규 근무 시간을 정하려면 미리 구성한 Time Object 를 드롭다운에서 고릅니다.
Time Object 만들기
- Policy 탭에서 General Settings Objects > Time Objects 를 선택합니다.
- Add 를 클릭합니다.
- Name 과 Description 을 입력합니다.
- 정규 근무 시간으로 볼 요일과 시각 을 선택합니다.
- OK 를 클릭합니다.
Time Object를 이벤트에 할당하기
- Policy 탭에서 Time Object가 필요한 이벤트(예: Unauthorized Entry 카테고리의 User Login at irregular hours)를 선택합니다.
- 드롭다운에서 직접 만든 Time Object 를 고릅니다.
- File > Save 를 선택합니다.
Exceptions (예외)
Exception 은 같은 이벤트라도 출처·목적지·서비스 등 파라미터에 따라 따로 구성 하게 해 줍니다. 예를 들어 Port Scan from Internal Network 이벤트가 60초 동안 30건의 포트 스캔이면 이벤트 라고 설정되어 있다면, 호스트 A에서 10초 안에 2건의 포트 스캔만 탐지돼도 이벤트 로 정의하도록 추가할 수 있습니다.
예외 추가하기
- Apply the following exceptions 아래에서 Add 를 클릭합니다.
- 이 이벤트에 다른 기준을 적용할 객체의 Source 또는 Destination(혹은 둘 다)을 선택합니다.
이벤트 식별의 전체 흐름
이벤트는 SmartEvent Correlation Unit 이 탐지합니다. Correlation Unit은 Event Definition과 맞는 기준을 찾아 로그를 훑습니다. SmartEvent는 다음 절차를 거쳐 이벤트를 식별합니다.
1단계 — Global Exclusions와 맞춰 보기
Correlation Unit은 로그를 읽으면, 먼저 그 로그가 정의된 모든 Global Exclusions 와 맞는지 봅니다. Global Exclusions(Policy 탭 > Event Policy > Global Exclusions 에서 정의)는 이벤트에 기여할 일이 없는 로그를 SmartEvent가 무시하도록 지시합니다. 로그가 Global Exclusion과 맞으면 버리고, 맞지 않으면 각 Event Definition과 맞춰 보기 시작합니다.
2단계 — 각 Event Definition과 맞춰 보기
각 Event Definition에는 맞는 로그라면 모두 갖춰야 할 여러 기준 으로 이루어진 필터가 있습니다. 기준은 제품(product)별로 나뉘어 있어서, 하나의 Event Definition이 여러 제품을 포함할 수 있되 제품마다 자기만의 기준 을 가집니다. 예컨대 Event Definition "A"에 맞으려면, Endpoint Security 로그는 Endpoint Security 열에 적힌 Action·Event Type·Port·Protocol 값과 맞아야 하고, Security Gateway 로그는 그 열에 적힌 값과 맞아야 합니다. SmartEvent는 이 절차를 두 단계로 나눕니다.
먼저 Correlation Unit은 로그의 Product 값이 Event Definition의 허용 Product 값 중 하나와 맞는지 봅니다. Log 1에 허용 Product 값이 없으면 Event Definition "B"와 견주고, 그렇게 차례로 넘어갑니다. 어떤 Event Definition과도 맞지 않으면 로그는 버려집니다.
그다음 Correlation Unit은 그 로그에 Event Definition을 충족할 제품별 세부 기준이 있는지 봅니다. 예를 들어 Endpoint Security 제품은 Firewall·Spyware·Malicious Code Protection 등과 관련된 로그를 만드는데, 이 정보는 로그의 Event Type 필드에 담깁니다. 이벤트가 Event Type "Firewall"인 Endpoint Security 로그에 맞도록 정의되어 있다면, Event Type이 "Spyware"인 Endpoint Security 로그는 그 필터에 실패 합니다. 제품에 그 밖의 기준을 더 지정할 수도 있습니다. 위 예에서 Log 1은 허용 Product 값으로 Event Definition "A"와 맞았으므로, Correlation Unit은 그 로그가 Endpoint Security 로그가 맞기 위한 필수 기준을 갖췄는지 살핍니다.

기준이 맞지 않으면 Correlation Unit은 그 로그를 다른 Event Definition과 계속 견줍니다.
3단계 — Event Candidate(이벤트 후보) 만들기
로그가 기준에 맞으면 Event Candidate(이벤트 후보)에 더해집니다. 이벤트 후보는 이벤트 임계를 넘을 때까지 로그를 추적하는 임시 묶음으로, 임계를 넘는 순간 이벤트가 생성됩니다.

로그는 서로 다른 Log Server에서 와도 같은 이벤트로 상관 될 수 있습니다. 이벤트 후보는 기준("선언된 초 안에 몇 건의 로그")이 맞을 때까지 로그를 추적합니다. 각 Event Definition은 여러 개의 이벤트 후보 를 가질 수 있고, 각 후보는 같은(동등한) 속성으로 묶인 로그 를 추적합니다. 위 그림에서는 후보를 이루는 로그가 공통의 source 값 을 가집니다 — Security Gateway가 drop·block·reject한 로그들로, 한 출처에서 비롯되는 이런 활동을 탐지하도록 Event Definition이 설계되어 있어서 한데 묶인 것입니다. 이벤트 선언에 source 필드에 대한 그룹핑 선언이 있으면 새 이벤트 후보가 만들어집니다.
로그가 Event Definition과 맞되 기존 후보들과 속성이 다르면, 새 이벤트 후보 가 만들어집니다. 이 후보는 이른바 Event Candidate Pool(이벤트 후보 풀)에 더해집니다.

기본적으로 SmartEvent는 source가 다른 로그마다 새 이벤트 후보 를 만듭니다. 이 기본 동작을 바꾸려면 다음과 같이 합니다.
- SmartEvent > Policy 로 갑니다.
- 이벤트를 우클릭 > Select Properties. Edit Event Definition 창이 열립니다.
- Count logs 탭 에서 Select the fields by which distinct Event Candidates will be created 아래 옵션을 클릭합니다.
- Event Definition Wizard 창에서 구분 기준으로 쓸 로그 필드 를 선택하고 OK 를 누릅니다.
좀 더 풀어 보면, 차단 연결 급증 을 탐지하는 이벤트가 있다고 합시다. SmartEvent는 게이트웨이별로 차단 연결 수를 추적 하고, 각 게이트웨이의 차단 트래픽 로그가 그 게이트웨이의 이벤트 후보를 이룹니다. 한 게이트웨이의 차단 연결 로그가 임계를 넘으면, 그 게이트웨이 후보가 이벤트 가 됩니다. 이 Event Definition은 모니터링하는 게이트웨이마다 후보를 하나씩 만들지만, 다른 Event Definition은 훨씬 많은 후보를 만들 수도 있습니다.

Event Candidate Pool은 새 로그가 더해지고, Event Definition의 시간 임계를 넘긴 오래된 로그는 버려지는 동적인 환경입니다.
4단계 — Event Exclusion과 맞춰 보기
특정 이벤트의 로그를 만들기 전에, SmartEvent는 이 이벤트 후보의 속성이 예외(exclusions) 테이블에 있는지 봅니다. Event Exclusions 는 Policy 탭 > Event Policy > Event Exclusions 에서 선택한 속성에 따라 정의합니다. 속성이 Event Exclusion과 맞으면 버려져 이벤트가 생성되지 않고, 맞지 않으면 다시 각 Event Definition과 맞춰 보기 시작합니다.
5단계 — Event Generation (이벤트 생성)
후보가 이벤트가 되면 Correlation Unit은 그 이벤트를 Event Database로 전달합니다. 하지만 이벤트를 찾았다고 해서 관련 로그 추적을 멈추지는 않습니다. Correlation Unit은 이벤트 임계 기간 동안 계속 들어오는 관련 로그를 그 이벤트에 더합니다. 이벤트를 열어 두면 같은 사건의 여러 인스턴스처럼 보일 수 있는 것을 하나로 압축 하고, 이벤트의 시작·종료 시각을 정확하고 최신으로 유지할 수 있습니다.
User-Defined Event(사용자 정의 이벤트) 만들기
새 Event Definition을 만들려면 기존 Event Definition을 우클릭하거나 Actions 메뉴를 씁니다.
| 우클릭 | Actions 메뉴 | 설명 |
|---|---|---|
| New | New Custom Event | Event Definition Wizard 를 띄워, 기존 Event Definition을 바탕으로 할지 처음부터 만들지 고르게 합니다. |
| Save As | Save Event As | 선택한 Event Definition의 속성을 바탕으로 새 정의를 만듭니다. Save As 를 고르면 나중에 편집할 수 있도록 새 이름으로 저장하라는 프롬프트 가 뜹니다. Save As는 Properties 창에서도 접근할 수 있습니다. |
모든 User Defined Events 는 Policy 탭 > Event Policy > User Defined Events 에 저장됩니다. 이미 있는 Event Definition은 우클릭이나 Actions 메뉴로 여는 Properties 창 에서 수정합니다.
새 Event Definition 만들기
예약된 이벤트가 아닌 모든 이벤트도 편집 할 수 있습니다. 미리 정의된 이벤트를 고치면 그 결과는 새 User Defined Event로 저장 됩니다. 만드는 순서는 다음과 같습니다.
- Actions 메뉴 에서 New Custom Event 를 선택합니다. Event Definition Wizard 가 열립니다.
- 이벤트를 만듭니다.
- a. 기존 이벤트를 바탕으로 만들도록 선택합니다.
- b. 만들려는 이벤트와 동등한 속성을 가진 이벤트 를 고릅니다.
- c. Next 를 클릭합니다.
- Event Definition의 이름 을 정합니다.
- Description 을 입력합니다.
- Severity 수준을 고릅니다.
- Next 를 클릭합니다.
- 어떤 식으로 이벤트를 생성할지 정합니다.
- A single log(로그 하나) — 바이러스 스캐너가 바이러스를 찾았다고 보고하는 로그처럼, 로그 하나가 곧 이벤트인 경우.
- Multiple logs(여러 로그) — High Connection Rate처럼 여러 로그가 모여야만 식별 되는 이벤트에 필요합니다.
그리고 Next 를 클릭합니다. 8. 이 이벤트를 일으킬 수 있는 제품들 을 살핍니다. 9. Next 를 선택합니다. 10. (선택) 제품 필터를 편집합니다. - 제품을 추가했다면, 모든 제품 필터(Edit all product filters) 나 새로 추가한 제품 필터(Edit only newly selected product filters) 를 편집할 수 있습니다. - 다른 제품을 추가하지 않았다면, 기존 제품 필터를 편집(Yes)하거나 이 단계를 건너뜁니다(No, Leave the original files).
그리고 Next 를 클릭합니다. 11. Event Definition 필터에 필요한 로그마다 제품 필터를 편집·추가 합니다. - a. Log field 목록에서 로그 필드를 고릅니다. - b. Add 를 눌러 필터를 편집합니다. - c. 필터가 All Conditions(모든 조건)인지 Any Conditions(아무 조건)인지 확인합니다. - d. 로그 필드를 더블클릭해 필터에 쓸 값을 고릅니다.
그리고 Next 를 클릭합니다. 12. 각 제품의 필터를 정의했으면, 로그를 어떻게 처리할지 다음 옵션의 값을 정합니다. - Detect the event when at least __ logs occurred over a period of __ seconds — 이벤트를 정의하는 임계 입니다. 로그 건수나 기간을 바꿔 임계를 조정할 수 있습니다. - Each event definition may have multiple Event Candidates existing simultaneously — 아래에서 고른 필드(또는 필드 집합)를 기준으로 별도의 이벤트 후보를 만들지 정합니다. - Select the field(s) by which distinct Event Candidates will be created — 이벤트 후보를 구분하는 데 쓸 필드(또는 필드 집합) 를 정합니다. - Use unique values of the __ field when counting logs — 임계를 넘었는지 판단할 때 지정한 필드의 고유 값만 셈 하도록 지시합니다. 이 속성을 선택하지 않으면 받은 로그의 전체 건수 를 셉니다. 13. Finish 를 클릭합니다.
User-Defined Event 커스터마이즈하기
- Policy 탭 > Event Policy > User Defined Events 에서 User-Defined Event를 우클릭 > Properties 를 고릅니다.
- 제공된 탭에서 필요한 부분을 바꿉니다.
Name 탭 — Event Definition의 이름, Description, Severity 수준을 정합니다. Description 필드에 적은 텍스트는 Event Description 영역(이벤트 설정 속성 아래) 에 표시됩니다.
Filter 탭 — 제품 필터를 편집합니다. - a. 제품을 고릅니다. - b. 사용 가능한 Log Fields 목록에서 로그 필드를 고릅니다. - c. 필요한 필드가 안 보이면 Show more fields... 로 Log Fields 목록에 필드를 추가합니다. - d. Add 를 눌러 필터를 편집합니다. - e. 필터가 All Conditions 인지 Any Conditions 인지 고릅니다.
Count logs 탭 — 이 이벤트와 관련된 로그를 SmartEvent가 어떻게 셈하는지 정의합니다. - A Single log — 바이러스 스캐너 로그처럼 로그 하나가 곧 이벤트 인 경우. 이 옵션에서는 이벤트를 후보로 묶는 기준 필드 를 정할 수 있습니다. 이 필드 값이 일치하는 로그가 같은 이벤트에 더해집니다. 예: 같은 출처에서 같은 바이러스 이름으로 보고된 여러 로그를 하나의 이벤트로 묶음. - Multiple logs — High Connection Rate처럼 활동 수준을 식별 하는 이벤트에 필요합니다. 여러 로그가 이벤트를 일으킬 때는 이벤트 후보의 동작을 다음처럼 정합니다. - Detect the event when at least... — 넘으면 이벤트로 보는 Event Threshold 를 설정합니다. - Select the field(s) by which distinct event candidates will be created — 여기 지정한 필드의 값이 같은 로그가 하나의 이벤트 를 만듭니다. 로그를 이벤트 후보로 묶는 기준을 정합니다. - Use unique values of the ... — 지정한 필드 값이 고유한 로그만 이벤트 후보에서 셉니다. 예: Port Scan 이벤트는 스캔된 고유 포트가 담긴 로그만 세고, 이미 등장한 포트가 담긴 로그는 로그 카운트를 늘리지 않습니다. - Advanced — 이벤트의 keep-alive 시간 과, Correlation Unit이 생성된 이벤트의 새 로그를 SmartEvent Server에 얼마나 자주 갱신 할지를 정의합니다.
Event Format 탭 — 이벤트가 생성되면 정보가 Event Detail 창에 표시됩니다. 이 화면에서 어떤 정보를 상세 창에 넣을지, 어느 Log Field에서 가져올지 지정합니다. Display 열에서 해제하면 그 Event Field는 채워지지 않습니다.
GUI representation 탭 — 모든 이벤트를 구성할 수 있습니다. 이 화면에서 표시할 구성 파라미터를 고릅니다. - Threshold 섹션은 이벤트를 만드는 데 맞아야 할 로그 수를 보여 줍니다. 로그 하나 이벤트에는 보통 안 보이고, 여러 로그 이벤트에 보입니다. - Exclude 섹션은 event exclusion을 추가할 때 보일 로그 필드 를 지정합니다. - Exception 섹션은 event exception을 추가할 때 보일 로그 필드 를 지정합니다.
- OK 를 눌러 변경을 저장합니다.
오탐(False Positive) 줄이기
이벤트를 잘 만들어내는 서비스
일부 서비스는 트래픽 양이 많아 이벤트로 오인되기 쉽습니다. 다음이 그런 예입니다.
- 모든 게 잘 도는지 점검하려고 네트워크를 주기적으로 스캔하는 소프트웨어 — SmartEvent를 손봐 이 출처를 스캔 이벤트에서 제외 하면 오탐 원인 하나가 사라집니다.
- 바쁜 웹 서버의 높은 연결률 — SmartEvent가 그 바쁜 웹 서버의 분당 허용 연결률을 높이거나, 그 출처를 스캔 이벤트에서 제외하도록 설정합니다.
서비스별 흔한 이벤트
다음 표는 활동량이 흔히 많은 서버 종류 목록입니다. Event Policy를 바꿀 때 이벤트 임계를 조정하고 서버·서비스에 대한 Exclusion을 추가 하면 탐지되는 오탐을 더 줄일 수 있습니다.
| 서버 종류 | 카테고리 | 이벤트 이름 | Source | Dest | Service | 이유 |
|---|---|---|---|---|---|---|
| SNMP | Scans | IP sweep from internal network | Any | Any | SNMP-read | 다른 호스트에 질의하는 호스트들 |
| DNS Servers | Scans | IP sweep from internal network | DNS servers | - | DNS | DNS 서버 간 업데이트 |
| Denial of Service (DoS) | High connection rate on internal host on service | Any | DNS servers | DNS | DNS 요청 및 DNS 서버 간 업데이트 | |
| Anomalies | High connection rate from internal network | Any | Any | DNS | DNS 요청 및 DNS 서버 간 업데이트 | |
| Anomalies | High connection rate from internal network on service | Any | Any | DNS | DNS 요청 및 DNS 서버 간 업데이트 | |
| Anomalies | Abnormal activity on service | Any | Any | DNS | DNS 요청 및 DNS 서버 간 업데이트 | |
| NIS Servers | Scans | Port scan from internal network | NIS servers | Any | - | 다수의 NIS 질의 |
| Denial of Service (DoS) | High connection rate on internal host on service | Any | NIS servers | NIS | NIS 질의 | |
| Anomalies | High connection rate from internal network | Any | Any | NIS | NIS 질의 | |
| Anomalies | High connection rate from internal network on service | Any | Any | NIS | NIS 질의 | |
| Anomalies | Abnormal activity on service | Any | Any | NIS | NIS 질의 | |
| LDAP Servers | Denial of Service (DoS) | High connection rate on internal host on service | Any | LDAP servers | LDAP | LDAP 요청 |
| Anomalies | High connection rate from internal network | Any | LDAP servers | LDAP | LDAP 요청 | |
| Anomalies | High connection rate from internal network on service | Any | LDAP servers | LDAP | LDAP 요청 | |
| Anomalies | Abnormal activity on service | Any | LDAP servers | LDAP | LDAP 요청 | |
| HTTP Proxy Servers — Hosts To Proxy Server | Denial of Service (DoS) | High connection rate on internal host on service | Any | Proxy servers | HTTP:8080 | 호스트의 Proxy 서버 연결 |
| Anomalies | High connection rate from internal network | Any | Proxy servers | HTTP:8080 | 호스트의 Proxy 서버 연결 | |
| Anomalies | High connection rate from internal hosts on service | Any | Proxy servers | HTTP:8080 | 호스트의 Proxy 서버 연결 | |
| Anomalies | Abnormal activity on service | Any | Proxy servers | HTTP:8080 | 호스트의 Proxy 서버 연결 | |
| HTTP Proxy Servers — Out to the Web | Scans | IP sweep from internal network | Proxy servers | Any | HTTP/HTTPS | Proxy 서버의 여러 사이트로의 외부 연결 |
| Denial of Service (DoS) | High connection rate on internal host on service | Proxy servers | Any | HTTP/HTTPS | Proxy 서버의 여러 사이트로의 외부 연결 | |
| Anomalies | High connection rate from internal network | Proxy servers | Any | HTTP/HTTPS | Proxy 서버의 여러 사이트로의 외부 연결 | |
| Anomalies | High connection rate from internal hosts on service | Proxy servers | Any | HTTP/HTTPS | Proxy 서버의 여러 사이트로의 외부 연결 | |
| Anomalies | Abnormal activity on service | Proxy servers | Any | HTTP/HTTPS | Proxy 서버의 여러 사이트로의 외부 연결 | |
| UFP Servers | Denial of Service (DoS) | High connection rate on internal host on service | Any | UFP servers | Any / UFP by vendor | Firewall의 UFP 서버 연결 |
| Anomalies | High connection rate from internal network | Any | UFP servers | Any / UFP by vendor | Firewall의 UFP 서버 연결 | |
| Anomalies | High connection rate from internal hosts on service | Any | UFP servers | Any / UFP by vendor | Firewall의 UFP 서버 연결 | |
| Anomalies | Abnormal activity on service | Any | UFP servers | Any / UFP by vendor | Firewall의 UFP 서버 연결 | |
| CVP Servers Request | Denial of Service (DoS) | High connection rate on internal host on service | Any | CVP servers | Any / CVP by vendor | Firewall의 CVP 서버 연결 |
| Anomalies | High connection rate from internal network | Any | CVP servers | Any / CVP by vendor | Firewall의 CVP 서버 연결 | |
| Anomalies | High connection rate from internal hosts on service | Any | CVP servers | Any / CVP by vendor | Firewall의 CVP 서버 연결 | |
| Anomalies | Abnormal activity on service | Any | CVP servers | Any / CVP by vendor | Firewall의 CVP 서버 연결 | |
| CVP Servers Replies | Scans | Port scans from internal network | CVP servers | Any | - | 같은 GW로의 다수 CVP 응답 |
| Scans | IP sweep from internal network | CVP servers | - | CVP | 여러 GW로의 CVP 응답 | |
| Denial of Service (DoS) | High connection rate on internal host on service | CVP servers | Any | Any / CVP by vendor | CVP 응답 | |
| Anomalies | High connection rate from internal network | CVP servers | Any | Any / CVP by vendor | CVP 응답 | |
| Anomalies | High connection rate from internal hosts on service | CVP servers | Any | Any / CVP by vendor | CVP 응답 | |
| Anomalies | Abnormal activity on service | CVP servers | Any | Any / CVP by vendor | CVP 응답 | |
| UA Server Request | Denial of Service (DoS) | High connection rate on internal host on service | Any | UA servers | uas-port (TCP:19191~TCP:19194) | UA 서버 연결 |
| Anomalies | High connection rate from internal network | Any | UA servers | (TCP:19191~TCP:19194) | UA 서버 연결 | |
| Anomalies | High connection rate from internal hosts on service | Any | UA servers | uas-port (TCP:19191~TCP:19194) | UA 서버 연결 | |
| Anomalies | Abnormal activity on service | Any | UA servers | uas-port (TCP:19191~TCP:19194) | UA 서버 연결 | |
| UA Servers Replies | Scans | Port scans from internal network | UA servers | Any | - | 같은 컴퓨터로의 다수 UA 응답 |
| Scans | IP sweep from internal network | UA servers | Any | uas-port (TCP:19191~TCP:19194) | 여러 컴퓨터로의 다수 UA 응답 | |
| Denial of Service (DoS) | High connection rate on internal host on service | UA servers | Any | uas-port (TCP:19191~TCP:19194) | UA 응답 | |
| Anomalies | High connection rate from internal network | UA servers | Any | uas-port (TCP:19191~TCP:19194) | UA 응답 | |
| Anomalies | High connection rate from internal hosts on service | UA servers | Any | uas-port (TCP:19191~TCP:19194) | UA 응답 | |
| Anomalies | Abnormal activity on service | UA servers | Any | uas-port (TCP:19191~TCP:19194) | UA 응답 | |
| SMTP Servers | Scans | IP sweep from internal network | SMTP servers | - | SMTP | SMTP 서버의 여러 SMTP 서버로의 외부 연결 |
| Denial of Service (DoS) | High connection rate on internal host on service | SMTP servers | Any | SMTP | SMTP 서버의 여러 SMTP 서버로의 외부 연결 | |
| Anomalies | High connection rate from internal network | SMTP servers | Any | SMTP | SMTP 서버의 여러 SMTP 서버로의 외부 연결 | |
| Anomalies | High connection rate from internal hosts on service | SMTP servers | Any | SMTP | SMTP 서버의 여러 SMTP 서버로의 외부 연결 | |
| Anomalies | Abnormal activity on service | SMTP servers | Any | SMTP | SMTP 서버의 여러 SMTP 서버로의 외부 연결 | |
| Anti-Virus Definition Servers | Scans | IP sweep from internal network | AV_Defs servers | - | Any / AV by vendor | Anti-Virus 정의 업데이트 배포 |
| Denial of Service (DoS) | High connection rate on internal host on service | AV_Defs servers | - | Any / AV by vendor | Anti-Virus 정의 업데이트 배포 | |
| Anomalies | High connection rate from internal network | AV_Defs servers | - | Any / AV by vendor | Anti-Virus 정의 업데이트 배포 | |
| Anomalies | High connection rate from internal hosts on service | AV_Defs servers | - | Any / AV by vendor | Anti-Virus 정의 업데이트 배포 | |
| Anomalies | Abnormal activity on service | AV_Defs servers | - | Any / AV by vendor | Anti-Virus 정의 업데이트 배포 |
시스템 관리
SmartEvent 시스템을 유지하려면 Policy 탭의 General Settings 섹션에서 다음 작업을 할 수 있습니다.
- SmartEvent Correlation Unit과 Log Server 추가
- 과거 로그 파일을 분석하는 offline job 생성(아카이브 로그 가져오기 참조)
- Internal Network에 객체 추가
- 특정 이벤트의 자동 대응으로 돌릴 스크립트 생성("External Script 자동 대응 만들기" 참조)
- 필터에 쓸 객체 생성
네트워크·호스트 객체 추가하기
Network Object 는 Management 객체 데이터베이스에서 동기화된 객체와, 사용자가 추가로 정의한 객체 입니다. Management 서버에서 온 객체는 초기 sync 때 SmartEvent에 추가되고, 정해진 간격으로 갱신 됩니다.
고객은 초기 sync가 끝나기 전에는 Internal Network를 정의할 수 없습니다. SmartEvent에 호스트·네트워크 객체를 추가하려면 다음과 같이 합니다.
- Policy 탭에서 General Settings > Objects > Network Objects > Add > Host 또는 Add Network 를 선택합니다.
- 장치에 의미 있는 이름을 줍니다.
- 호스트라면 IP Address 를 입력하거나 Get Address 를 선택합니다.
- 네트워크 객체라면 Network Address 와 Net Mask 를 입력합니다.
- OK 를 선택합니다.
Internal Network 정의하기
이벤트가 내부에서 비롯됐는지 외부에서 비롯됐는지 를 SmartEvent가 판단하게 하려면 Internal Network 를 정의해야 합니다. 트래픽 방향은 다음과 같이 계산됩니다.
| 방향 | 뜻 |
|---|---|
| Incoming | 모든 출처가 네트워크 외부, 모든 목적지가 내부. |
| Outgoing | 모든 출처가 네트워크 내부, 모든 목적지가 외부. |
| Internal | 출처·목적지가 모두 네트워크 내부. |
| Other | 내부·외부 값이 섞여 결과를 판단할 수 없음. |
Internal Network 정의 순서는 다음과 같습니다.
- Policy 탭에서 General Settings > Initial Settings > Internal Network 를 선택합니다.
- 내부 객체를 추가합니다.
일부 네트워크 객체는 초기 sync 때 Management 서버에서 SmartEvent Server로 복사되고, 그 뒤 갱신 됩니다.
---
이벤트가 떠오른 뒤의 실시간 모니터링이나 트래픽·연결 흐름을 함께 보고 싶다면 트래픽·연결 모니터링 (SmartView Monitor) 장을 이어서 참고하세요.