본문 바로가기

Rookies 9기/클라우드기반 시스템 운영구축 실무

클라우드기반 시스템 운영구축 실무 6일차

728x90

윈도우 로그

⇒ 운영체제가 업그레이드됨에 따라 버전 별로 형태와 경로가 조금 상이함

  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. 레지스트리를 통한 확인

레지스트리 편집기
HKEY_LOCAL_MACHINE > SYSTEM > Current ControlSet > Services > EventLog

 

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에 포함된 시스템 모니터링 툴

‣ 기본 윈도우 이벤트 로그로는 한계가 있는 있음

‣ 프로세스 생성, 네트워크 연결, 파일 생성 시간 변경 등의 정보를 추출한 후 윈도우 이벤트 저장소에 저장

※ 이벤트 기반 정보가 아닌 ‘행동 기반 정보’를 수집에서 이벤트 저장소에 저장

Sysmon 설치 한 후 경로 폴더
sysmon 활성화

accepteula : 자동으로 사용자 라이선스를 동의하고 실행

이벤트뷰어 확인

 

SIEM을 이용한 관제 시스템

• ESM를 이용한 관제 시스템

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 설치

더보기

http://www.splunk.com

 

Splunk | The Data Platform for the Hybrid World

Splunk is the data platform that powers enterprise observability, unified security and limitless custom applications in hybrid environments.

www.splunk.com

Splunk 설치 사이트

• 설치 프로그램이 있는 폴더나 디렉터리로 이동

• splunk.msi 파일을 두 번 클릭하여 설치 프로그램을 시작

- ‘라이선스 계약에 동의합니다’ 클릭 > 다음 클릭

- 사용자 ID와 암호를 지정( 암호 길이는 8자 이상) * 입력하는 동안에는 커서가 이동하지 않음

• 설치 완료 패널에서 Splunk로 브라우저 실행 체크박스가 선택되어 있는지 확인 마침 클릭

• Splunk Web 실행 절차로 이동

 

https://docs.splunk.com/Documentation/SplunkCloud/8.2.2203/SearchTutorial/Systemrequirements

 

What you need for this tutorial - Splunk Documentation

What you need for this tutorial You need to create a Splunk.com account, access the free Trial version of the Splunk software, and download the tutorial data files. There might be other prerequisites, depending on which Splunk platform you use. Create a sp

docs.splunk.com

Tutorial 파일 다운로드 사이트

• 튜토리얼에서 사용할 데이터 파일 다운로드

- CSV 파일 형식인 데이터 파일에는 웹 액세스 로그 파일, 보안 형식 로그 파일, 판매 로그 파일 및 가격 리스트가 포함되어 있음

• tutorialdata.zip 파일을 성공적으로 업로드하려면 압축해야 함

- tutorialdata.zip 파일 다운로드( 파일 압축해제하지 않음)

- Prices.csv.zip 파일 다운로드( 파일 압축해제 하지 않음)

Splunk Home 화면

‣ Tutorial 데이터 추가 

더보기
설정 > 데이터 추가
업로드 내 컴퓨터의 파일 선택
tutorialdata.zip 파일 선택
host 필드 값 수정(구별하기 쉽게 정하기)
업로드 후 검색 시작 클릭
파일실행이 되는지 확인

‣ 데이터 요약

더보기
Search & Reporting > 데이터 요약
호스트
Source
Source Type

‣ Splunk 기본 검색 연습 

sourcetype="vendor_sales/vendor_sales"
sourcetype=access_* status=200 "action=purchase"
(error OR fail* OR server) OR (status=404 OR status=500)
error* (post AND (401 OR 403))

 

 

• 검색에서 필드 활용하기

‣ 필드는 로그 검색을 편리하게 만들어주는 기능

‣ 검색에 조건을 부여하고 검색 결과를 제한하여 정확한 결과를 보여줌

‣ 필드를 이용한 검색을 수행하려면 로그에서 필드가 먼저 추출되어 있어야 함

‣ 형식 : [필드명 = 값]

 

 

• 필드 사용 규칙

‣ 필드 값은 대소문자를 구별하지 않지만 필드 이름은 대소문자를 구별

‣ 필드 추출 또는 필드 이름을 지정하 때 대소문자를 혼용하지 않는 것이 좋음

※ 검색 결과가 없다면 필드 이름을 잘못 썼는지 확인 ⇒ 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

‣ 필드명을 다른 이름으로 변경

‣ 필드명을 띄어쓰기로 구분하고 싶으면 원하는 필드명을 따옴표로 표시

더보기
{"originWidth":1192,"originHeight":634,"style":"alignCenter","caption":"index=main sourcetype=access_combined_wcookie \n

• dedup

‣ 검색 결과에서 중복을 제거

‣ 중복 제거는 지정한 필드를 기준으로 실행

‣ 두 개 이상의 필드에서 중복을 제거하려면 쉼표(,)로 구분

‣ 중복을 제거하면 해당 필드의 유일한 값을 기준으로 결과를 보여줌

‣ 중복을 제거하면 다른 필드의 값은 중복이 아닌데도 중복된 결과를 제거하면서 사라짐

‣ dedup은 상세 분석이 아니라 해당 필드에 존재하는 값을 확인하는 정도로 사용

더보기
dedup 사용 전 이벤트 양

index=main sourcetype=access_combined_wcookie status=404

dedup 사용 후 이벤트 양

index=main sourcetype=access_combined_wcookie status=404 | dedup host

• sort

‣ 검색 결과를 정렬

‣ 기본 값은 오름차순 정렬

‣ 내림차순으로 정렬하려면 필드 앞에 마이너스( - )를 붙임

더보기
{"originWidth":1175,"originHeight":414,"style":"alignCenter","caption":"index=main sourcetype=access_combined_wcookie
{"originWidth":941,"originHeight":391,"style":"alignCenter","caption":"index=main sourcetype=access_combined_wcookie \n

• 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

field 변수가 addr로 시작하는지 검사

‣ Like 함수의 X필드에서 일부 문자열인 Y를 검색

‣ 첫 번째 인자는 대상 필드, 두 번째 인자는 정규 표현식의 탐색 패턴

‣ X에서 Y를 찾을 수 있으면 참을 반환

‣ like 함수의 와일드카드 문자열은'%'

 

 

• match(X, "Y")

‣ like 함수가 일부라도 맞는 값을 찾는다면 match함수는 함수명과 같이 정확한 일치 여부를 비교

⇒ filename이 malicious.exe와 정확히 같으면 참을, 그렇지 않으면 거짓을 반환(문자열 비교에 대소문자는 구분하지 않음)

⇒ $는 종결자로서 '$' 앞의 문자로 단어가 끝난다는 의미

⇒ ' | ' 는 다중 선택을 의미

⇒ filename 필드 값이. jpg,. gif,. png로 종결($)하는지 검사

⇒ 파일 확장자가 jpg, gif, png 여부 검사