윈도우 로그
⇒ 운영체제가 업그레이드됨에 따라 버전 별로 형태와 경로가 조금 상이함
Type1 | Type2 | |
OS | Window 2000/XP/2003 | Windows Vista /2008/7/10 |
로깅 데이터 | System, security, Application | System, security, Application+ |
로그 저장형태 | Binary | Binary, XML |
로그 확장자명 | .evt | .evtx |
저장경로 | \windows\system32\config | \windows\system32\winevt\logs |
‣ 로그 확인 방법 2가지
1. 레지스트리를 통한 확인
2. 이벤트 뷰어를 통한 확인
‣ 전역 로그
⇒ 전체 시스템에 적용되는 이벤트를 저장
⇒ 이전 버전의 Windows에서 사용할 수 있는 응용 프로그램, 보안 및 시스템 로그가 포함
⇒ 설정 과 전달된 이벤트(Forwarded Events) 로그 포함
•응용 프로그램
‣ 윈도우 번들 소프트웨어과 일반 응용프로그램의 활성화 여부 기록
‣ 기록되는 이벤트는 해당 제품의 개발자에 의해 결정
•보안
‣ 유효하거나 유효하지 않은 로그인 시도, 파일 생성. 열람 삭제 등의 이벤트 기록
‣ 감사 정책 설정을 통해 다양한 보안 이벤트 저장 가능
•설정
‣ 어플리케이션 설치 시 발생하는 이벤트 기록
‣ 프로그램이 잘 설치되었는지 호환성 문제는 없는지 확인
•시스템
‣ 윈도우 시스템에서 기록하는 로그
‣ 서비스 실행 여부나 파일 시스템 필터, 디바이스 구성요소가 기록
•전달된 이벤트
‣ 원격 컴퓨터에서 수집된 이벤트를 저장
‣ 구독을 사용하고 있다면 전달된 이벤트 로그에 기록
⇒ 현재 로그 필터링 기능
‣ 오류 : 이벤트를 트리거한 응용 프로그램 또는 구성 요소 외부에 있는 기능에 영향을 줄 수 있는 문제가 발생했음을 나타냄
‣ 위험 : 이벤트를 트리거한 응용 프로그램 또는 구성 요소가 자동으로 복구할 수 없는 오류가 발생했음을 나타냄
•이벤트 ID
‣ 로그 유형에 따라 이벤트 ID가 부여
‣ 필요한 데이터를 따로 추출해 로그 분석 가능
시스템 로그의 '날짜 및 시간' 를 통해 컴퓨터 부팅시간과 종료시간을 확인 가능
6005 : 시스템 시작 6006 : 시스템 종료
이벤트 ID | 설명 |
4726 | 계정 삭제 |
4624 | 로그인 성공 |
4625 | 로그인 실패 |
5142 | 네트워크 공유 개체가 추가 |
5632 | 무선네트워크에 인증을 요청 |
4689 | 프로세스를 끝냄 |
•시스템 로그
‣ 윈도우 시스템 파일(시스템 구성파일)들의 운영 상태를 기록
‣ 응용 프로그램 및 서비스 로그
⇒ 시스템 전체에 영향을 줄 수 있는 이벤트가 아닌 단일 응용 프로그램이나 구성 요소의 이벤트 저장
Sysmon
•백신
‣ 보안 제품 중에서 대표적인 이벤트 기반 보안 장비
⇒ 악성코드를 탐지했을 때만 파일을 삭제하거나 격리 등의 보안 행동 수행
‣ 알려진 위협 탐지
⇒ 악성코드 샘플 수집 후 이를 분석한 후 백신 탐지 규칙 갱신
⇒ 악성코드 샘플을 수집하지 못하면 패턴을 만들 수 없으므로 탐지 불가능
•EDR(Endpoint Detection & Response)
‣ 행위 기반의 공격 탐지
⇒ PC에서 발생하는 각종 시스템 이벤트를 분석해서 공격 행위 탐지
‣ 악성코드의 패턴을 알지 못해도 탐지 가능
⇒ 악성 코드가 실행된 다음에 발생하는 시스템 호출, 임시파일 생성, 네트워크 접속 행위 등을 이용해서 악성코드 탐지
‣ 백신과 같은 정형화된 이벤트가 아니라 운영체제에서 발생하는 로그 수집
⇒ 프로세스 상태 정보, 임시파일 생성, 네트워크 접속 행위등을 이용해서 악성코드 탐지
•Sysmon
‣ Microsoft의 Sysinternal suite에 포함된 시스템 모니터링 툴
‣ 기본 윈도우 이벤트 로그로는 한계가 있는 있음
‣ 프로세스 생성, 네트워크 연결, 파일 생성 시간 변경 등의 정보를 추출한 후 윈도우 이벤트 저장소에 저장
※ 이벤트 기반 정보가 아닌 ‘행동 기반 정보’를 수집에서 이벤트 저장소에 저장
accepteula : 자동으로 사용자 라이선스를 동의하고 실행
SIEM을 이용한 관제 시스템
• ESM를 이용한 관제 시스템
Agent
• 관리 대상 보안 장비(보안장비, 시스템 장비, 네트워크 장비)에 설치 • 사전에 정의된 규칙에 의한 이벤트 수집 및 보안 정책 반영 • 정책에 따른 로그 및 이벤트 데이터를 수집하여 ESM manager에 전달
Manager(Engine)
• ESM agent에 의해 수집된 데이터 분석 및 저장 • 분석 결과를 ESM Console에 전달
Console
• ESM Manager에 의해 전달된 정보의 시각적 전달, 상황 판단 및 리포팅 기능 제공 • ESM Manager/Agent에 대해 규칙을 제어/통제 수행
‣ 통합보안 관제 시스템(NMS + SMS)
⇒ 기업 보안관리 시스템(통합보안 관리 시스템, 전사적 보안관리 시스템)
⇒ 다양한 보안 솔루션을 하나로 모은 통합 보안 관리시스템
⇒ 다양한 보안 장비에서 발생하는 로그, 보안 이벤트를 통합적으로 수집, 관리, 분석, 통보 대응 및 보안 정책을 관리
‣ ESM 주요 기능 2가지
⇒ 서로 다른 기종의 보안 장비들을 통합 관리 기능
⇒ 네트워크 자원 현황을 모니터링하는 보안 모니터링 기능
• SIEM를 이용한 보안 관제 시스템
‣ SIEM(Security Information & Event Management)
‣ ESM의 진화된 형태 (2015년 가트너에 의해 처음으로 도입된 개념)
‣ 기업 정보에 대한 종합 관제 솔루션
⇒ 기업 내에서 발생하는 모든 자원의 정보 및 보안 이벤트를 통합 관리
⇒ 보안시스템, 서버 시스템, 네트워크 장비, 플리케이션로그, event, 시스템 감사정보 네트워크 흐름 등이 관리/분석 대상
‣ HP 아크사이트(ArcSight), IBM 큐레이 더(Qrader), Splunk 등이 널리 쓰임
• SIEM 정의
‣ 보안 관련 정보를 관리하는 보안도구
⇒ 하드웨어 혹은 소프트웨어나 가상 시스템 형식으로 구현 가능
⇒ 구축 방식은 제조사마다 다름
‣ 보안 정보관리(security information)와 보안 이벤트 관리(security event management)를 통합한 소프트웨어 제품
⇒ 애플리케이션과 네트워크 하드웨어 등이 생산한 보안 경보의 실시간 분석 제공
‣ 네트워크 경계부터 최종 사용자까지 로그를 중앙에 수집, 저장, 분석
⇒통합된 보안 보고와 컴플라이언스 관리를 통해 신속한 공격 탐지, 차단, 대응을 위해 보안 위협을 모니터링함
• SIEM과 ESM 비교
EMS | SIEM | |
수 집 • 분 석 | ‣Event 위주의 단시간(최대1일) 위협분석 ‣ RDBMS 기반 상관분석 및 리포트, 중앙 처리 구조 ‣ 초당 3초건 내외 수집/분석 포함 |
‣ 빅데이타 수준의 장기간(수개월) 심층분석 ‣ Indexing, MapReduce 등 빅데이타 처리 기반 상관분석 및 리포트 ‣ 초당 3만~5만건 이상 수집/분석 ⇒ RDBMS 기반의 처리 속도 지연 극복 |
시각화 | ‣ 대시보드, 정형보고서 제공 | ‣ 대시보드, 정형보고서, 사용자 보고서, 시각 화 보고서 제공 ⇒ 다양한 Report 제공 |
사용자 | ‣보안관리자, 관제 요원 위주 | ‣ 보안관리자, 관제요원 ‣ 각업무시스템 별 담당자 ‣ 개인정보보호담당자 ‣ 대외 서비스 담당자 ⇒ 사용자 관점의 다양한 view 지원 |
하드웨어 | ‣고가의 유닉스 서버 스템 | ‣ 저가의 리눅스 x86 시스템 |
정의 | ‣ 기업 내 다양한 보안시스템을 관제/운영/ 관리하여 중앙에서 통합적으로 보안 현황 을 모니터링 하는 시스템 | ‣기업 내에서 발생하는 모든 자원의 정보 및 보안 이벤트를 통합 관리 ⇒ 장애처리 관점에서 운영 및 심층분석, 규제 준수 관점으로 확대 |
수 집 • 저 장 | ‣ 정형데이타 기준, 원본로그 보관안함 ‣ 수집 데이터 보존기간 :1~2개월 |
‣ 정형/비정형데이타 수용, 원본로그 보관 ‣ 수집 데이터 보존기간 :1년 이상 ⇒ 광범위 데이터 처리 및 장기간 보관 |
위협탐지 | ‣ IP, Port 등 시그니처 중심의 네트워크 계층 탐지 ‣ 단순 패턴 기반 탐지 ‣ 알려진 공격 위주 분석 ‣ 단시간(최대1일) 범위 분석 |
‣ IP, Port 외 애플리케이션, 프로토콜 등 연관 성 분석 및 탐지 ‣ APT 등 알려지지 않은 공격 및 공격간의 연관 성 분석, 정상상태에서의 정보위협분석 ‣ 장시간(수개월) 범위 분석 ⇒ 심층분석, 연관분석 지원 |
• SIEM 개략적 처리 프로세스
‣ 로그 수집(collection)
⇒ 관제 대상의 Agent, SNMP, Syslog 서버로부터 로그 수집
‣ 로그 정규화(normalization)와 필터링(filtering)
⇒ 로그 형식을 표준 형식으로 변환
⇒ 수집한 이벤트나 플로우 데이터를 데이터베이스에 저장하려면 일정한 형태로 변환 필요
⇒ 업체에 따라 자동 정규화 또는 수동 정규화 방법 사용
⇒ 정규화 과정에서 불필요한 데이터 필터링 수행
‣ 로그 분류
⇒ 수집한 이벤트나 플로우 데이터를 데이터베이스에 저장하려면 일정한 형태로 변환
⇒ 업체에 따라 자동 정규화 또는 수동 정규화 방법 사용
⇒ 정규화 과정에서 불필요한 데이터 필터링 수행
‣ 상관관계 분석(Correlation)⭐
⇒ 동기종 또는 이기종의 여러 보안 솔루션에서 발생하는 로그 패턴 간에 연관성 분석
⇒ 로그들 간에 상호 연관 분석을 함으로써 실시간 보안 위협을 파악하고 대응
‣ 정책 위험 탐지
⇒ 로그를 분석해서 보호 대상의 전산 환경에 발생하는 문제와 공격과 정책의 위반 탐지
⇒ 탐지는 설정한 규칙이나 조건에 맞을 때 발생
⇒ 탐지 규칙은 임계값을 초과하거나 통계 기반의 사용자 행위를 분석하는 방법이 있음
‣ 알림(Alert, 경고)
⇒ 경고란 보안 담당자의 검토가 필요하다는 의미
⇒ 정책 위반을 탐지하면 곧 경고가 생성하고 보안 담당자에게 통보
⇒ 경고를 발생시키는 정책은 운영하는 기업이나 기관의 관심 사안에 따라 다름
⇒ 경고는 중요도를 부여할 수 있어야 함
⇒중요도는 해당 경고를 향후 상세 분석을 할 것인지를 결정하는 기준으로 사용
‣ 대시보드 (또는 보고서)
⇒ 로그는 보고서 또는 대시보드로 변환될 수 있음 ‣ 얼마나 많은 접속이 발생했는가? ‣ 가장 많은 접속을 일으키는 호스는 어떤 것인가? ‣ 가장 많은 데이터를 인터넷으로 전송한 호스트는 무엇인가? ‣ 해당 호스트를 사용하는 사용자는 누구인가?
• SIEM 상세 처리 프로세스
Splunk
※ 머신 데이터
‣ 다양한 이기종 데이터 소스로부터 제약 없는 수집
에이전트/에이전트리스 방식 제공으로 유연성과 최적화된 수집 기능 제공
‣ 하루 수백 TB 수집까지 횡적 확장
엔터프라이즈급 확장성, 장애 복구 및 통합성 제공
‣ SPL을 활용한 검색 기능
머신 데이터 검색에 최적화된 Splunk 자체 검색 언어인 SPL을 활용한 검색
‣ 내장 UI 컴포넌트를 활용한 대시보드 제작
‣ 실시간 감시 및 알람
- 실시간 모니터링 및 알람 등록
- 검색 쿼리 저장 후 실시간/주기적인 실행을 통한 모니터링
- 자동 대응을 위한 각종 프로그램/스크립트 실행 가능
- RSS, Email 통지 및 NMS.SNS 연동 가능
- PDF 스케줄 전송 기능을 통한 보고서 이메일 발송
• Splunk 설치
Splunk 설치 사이트
• 설치 프로그램이 있는 폴더나 디렉터리로 이동
• splunk.msi 파일을 두 번 클릭하여 설치 프로그램을 시작
- ‘라이선스 계약에 동의합니다’ 클릭 > 다음 클릭
- 사용자 ID와 암호를 지정( 암호 길이는 8자 이상) * 입력하는 동안에는 커서가 이동하지 않음
• 설치 완료 패널에서 Splunk로 브라우저 실행 체크박스가 선택되어 있는지 확인 마침 클릭
• Splunk Web 실행 절차로 이동
https://docs.splunk.com/Documentation/SplunkCloud/8.2.2203/SearchTutorial/Systemrequirements
Tutorial 파일 다운로드 사이트
• 튜토리얼에서 사용할 데이터 파일 다운로드
- CSV 파일 형식인 데이터 파일에는 웹 액세스 로그 파일, 보안 형식 로그 파일, 판매 로그 파일 및 가격 리스트가 포함되어 있음
• tutorialdata.zip 파일을 성공적으로 업로드하려면 압축해야 함
- tutorialdata.zip 파일 다운로드( 파일 압축해제하지 않음)
- Prices.csv.zip 파일 다운로드( 파일 압축해제 하지 않음)
‣ Tutorial 데이터 추가
‣ 데이터 요약
‣ Splunk 기본 검색 연습
• 검색에서 필드 활용하기
‣ 필드는 로그 검색을 편리하게 만들어주는 기능
‣ 검색에 조건을 부여하고 검색 결과를 제한하여 정확한 결과를 보여줌
‣ 필드를 이용한 검색을 수행하려면 로그에서 필드가 먼저 추출되어 있어야 함
‣ 형식 : [필드명 = 값]
• 필드 사용 규칙
‣ 필드 값은 대소문자를 구별하지 않지만 필드 이름은 대소문자를 구별
‣ 필드 추출 또는 필드 이름을 지정하 때 대소문자를 혼용하지 않는 것이 좋음
※ 검색 결과가 없다면 필드 이름을 잘못 썼는지 확인 ⇒ http_statu와 HTTP_Status는 전혀 다른 필드
‣ 필드 IP 주소를 포함하고 있다면 CIDR 형식으로 검색
ex) src = 192.168.10.* src = 192.168.10.0/24
‣ 필드에 할당된 값이 숫자라면 비교 연산자를 사용해서 검색
ex) src_port > 5000 AND src_port < 6000
• 검색 명령어
데이터 나열, 변환 | table, rename, fields, dedup, sort |
통계 계산 | stats, top, rare, len(x) |
차트 시각화 | timechart, chart |
비교분석 | eval, case, cidrmatch, ff, line, match |
다중 문자열과 시간 | mvindex, split, substr, round, ruldecode, strftime, strptime, now |
• table
‣ 필드명과 결합해 검색 결과를 테이블 형태로 보여줌
‣ table 명령어 다음에 확인하고 싶은 필드명 적음
‣ 필드명을 잘못 적으면 해당 필드에 공란이 보임
⇒ 다른 필드에는 값이 보이는데 특정 필드가 공백이면 필드명 입력 오류 의심
‣ 필드명은 대소문자를 구분
‣ 여러 개의 필드는 쉼표(,) 또는 띄어쓰기로 구분
• rename
‣ 필드명을 다른 이름으로 변경
‣ 필드명을 띄어쓰기로 구분하고 싶으면 원하는 필드명을 따옴표로 표시
• dedup
‣ 검색 결과에서 중복을 제거
‣ 중복 제거는 지정한 필드를 기준으로 실행
‣ 두 개 이상의 필드에서 중복을 제거하려면 쉼표(,)로 구분
‣ 중복을 제거하면 해당 필드의 유일한 값을 기준으로 결과를 보여줌
‣ 중복을 제거하면 다른 필드의 값은 중복이 아닌데도 중복된 결과를 제거하면서 사라짐
‣ dedup은 상세 분석이 아니라 해당 필드에 존재하는 값을 확인하는 정도로 사용
index=main sourcetype=access_combined_wcookie status=404
index=main sourcetype=access_combined_wcookie status=404 | dedup host
• sort
‣ 검색 결과를 정렬
‣ 기본 값은 오름차순 정렬
‣ 내림차순으로 정렬하려면 필드 앞에 마이너스( - )를 붙임
• stats
‣ 각종 통계 함수를 이용해서 데이터 계산
함수명 | 설명 |
count(x) | x필드의 개수를 반환 |
dc(x) | x필드의 중복을 제거한 개수 반환 |
sum(x) | x필드의 총합 반환 |
avg(x) | x필드의 평균 반환 |
list(x) | x필드의 목록으로 만들어 반환 |
values(x) | x필드의 중복을 제거한 목록 반환 |
max(x) / median(x) / min(x) | x필드의 최대/중앙/최소값 반환 |
var(x) | x필드의 분산값 반환 |
stdev(x) | x필드의 표준편차 반환 |
• top
‣ 지정한 필드에서 가장 많이 나오는 값을 보여주는 명령어
‣ 검색 결과를 파이프로 입력받아서 계산한 후에 결과를 반환
‣ showperc와 showcount의 기본값이 T이므로 지정하지 않더라도 비율과 개수를 보여줌
GET과 POST에 대한 상위 10개 보임
limit | ‣ 반환되는 결과 개수를 지정 ‣ 숫자를 지정하지 않으면 기본적으로 10개로 선정 ‣ 전체 값을 모두 보려면 limit=0을 설정 |
showperc | ‣ 해당 값이 차지 하지는 비율을 보여줌 ‣ 기본 값이 T |
showcount | ‣ 해당 값의 개수를 보여줌 ‣ 기본 값이 T |
useother | ‣ Top10외 다른 숫자의 크기를 알아보려면 T를 입력 |
• rare
‣ top과 반대의 결과인 빈도가 적은 값의 순서를 추출
• len(x)
‣ 문자열의 길이를 양의 정수 값으로 돌려줌
‣ 문자열의 길이를 활용해서 비정상적인 값을 추출
• eval
‣ 검사 결과 값이 변환, 검증을 수행하며 함수 실행 결과 값을 반환
‣ 시간 단위를 지정
• case(X, "Y",..)
‣ 여러 개의 조건을 검증할 때 사용
‣ 두 개의 인자가 한 그룹으로 동작
‣ 첫 번째 인자가 참인 경우 두 번째 인자의 내용이 반환, 세 번째 인자가 참이면 네 번째 인자가 수행
error==404 이면 "Not founf " 출력
error==500 이면 "internal Server Errorf " 출력
error==200 이면 "OK " 출력
• cidmatch("X", Y)
‣ IP주소 Y가 네트워크 범위 X에 존재하는지 확인
‣ 반환 값은 참 또는 거짓이며 두 개의 인자가 사용
‣ 첫 번째 CIDR형식의 네트워크 주소 범위, 두 번째는 검사를 위한 IP주소가 입력
‣ cidmatch 함수는 검색 필터로 사용할 수 있음
• if(X, Y, Z)
‣ X가 참이면 Y를 실행하고, X가 거짓이면 Z실행
‣ IP필드 값이 10.10.10.100이라면 10.10.0.0/24 네트워크에 포함되므로 network1 필드에 "local" 문자열이 저장
‣ IP 필드 값이 100.10.0.100이라면 network2 필드에는 "external" 이 할당
• like
‣ Like 함수의 X필드에서 일부 문자열인 Y를 검색
‣ 첫 번째 인자는 대상 필드, 두 번째 인자는 정규 표현식의 탐색 패턴
‣ X에서 Y를 찾을 수 있으면 참을 반환
‣ like 함수의 와일드카드 문자열은'%'
• match(X, "Y")
‣ like 함수가 일부라도 맞는 값을 찾는다면 match함수는 함수명과 같이 정확한 일치 여부를 비교
⇒ filename이 malicious.exe와 정확히 같으면 참을, 그렇지 않으면 거짓을 반환(문자열 비교에 대소문자는 구분하지 않음)
⇒ $는 종결자로서 '$' 앞의 문자로 단어가 끝난다는 의미
⇒ ' | ' 는 다중 선택을 의미
⇒ filename 필드 값이. jpg,. gif,. png로 종결($)하는지 검사
⇒ 파일 확장자가 jpg, gif, png 여부 검사
'Rookies 9기 > 클라우드기반 시스템 운영구축 실무' 카테고리의 다른 글
클라우드기반 시스템 운영구축 실무 8일차 (0) | 2022.11.02 |
---|---|
클라우드기반 시스템 운영구축 실무 7일차 (0) | 2022.11.01 |
클라우드기반 시스템 운영구축 실무 5일차 (0) | 2022.10.28 |
클라우드기반 시스템 운영구축 실무 4일차 (0) | 2022.10.27 |
클라우드기반 시스템 운영구축 실무 3일차 (0) | 2022.10.26 |