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

시스템 운영/구축 실무 6일차 (22/10/31)

ksh_5 2022. 10. 31. 11:22
  • Zeek 로그 형식

 

- 입력 트래픽에서 프로토콜마다 로그 파일 생성

- 생성 파일명 : 프로토콜.log

- 기본 설정에서 모든 로그는 1시간마다 로테이트되면 저장

- 대량의 로그를 검색하고 분석하는 기능은 제공X

 

 

 

 

 

  • 윈도우 로그

 

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

 

 

 

  • 로그 확인 2가지 방법

 

❶ 레즈스트리 통한 확인 : HKEY_LOCAL_MACHINE > SYSTEM > Current ControlSet > Services > EventLog

❷ 이벤트 뷰어 통한 확인

 

 

  • regedit

 

경로 → HKEY_LOCAL_MACHINE > SYSTEM > Current ControlSet > Services > EventLog

 

 

  • 이벤트뷰어

 

① 전역로그 (Windows 로그) ()

- 전체 시스템에 적용되는 이벤트 저장

- 이전 버전의 Windows에서 사용할 수 있는 응용 프로그램, 보안 및 시스템 로그 포함

- ‘설정’과 ‘전달된 이벤트(Forwarded Events)‘ 로그 포함

 

❶ 응용 프로그램

- 윈도우 번들 소프트웨어과 일반 응용프로그램의 활성화 여부 기록

- 기록되는 이벤트는 해당 제품의 개발자에 의해 결정

❷ 보안

- 유효하거나 유효하지 않은 로그인 시도, 파일 생성, 열람 삭제 등 이벤트 기록

- 감사 정책 설정을 통해 다양한 보안 이벤트 저장 가능

❸ 설정

- 어플리케이션 설치 시 발생하는 이벤트 기록

- 프로그램이 잘 설치되었는지 호환성 문제는 없는지 확인

❹ 시스템

- 윈도우 시스템에서 기록하는 로그

- 서비스 실행 여부나 파일 시스템 필터, 디바이스 구성요소가 기록

❺ 전달된 이벤트 (forwarded events)

- 원격 컴퓨터에서 수집된 이벤트 저장

- 구독 사용하고 있다면 전달된 이벤트 로그 기록

 

 

② 응용 프로그램 및 서비스 로그

- 시스템 전체에 영향을 줄 수 있는 이벤트가 아닌 단일 응용 프로그램이나 구성 요소의 이벤트 저장

 

 

  • Windows 로그 > 시스템 > 작업 > 현재 로그 필터링

 

오류 : 이벤트를 트리거한 응용 프로그램 또는 구성 요소 외부에 있는 기능에 영향을 줄 수 있는 문제가 발생했음을 나타냄

위험 : 이벤트를 트리거한 응용 프로그램 또는 구성 요소가 자동으로 복구할 수 없는 오류가 발생했음을 나타냄

 

 

 

  • 이벤트 ID

 

- 로그 유형에 따라 이벤트 ID 부여

- 필요한 데이터를 따로 추출해 로그 분석 가능

- Appendix L - Events to Monitor | Microsoft Learn 

 

Appendix L - Events to Monitor

Learn more about: Appendix L: Events to Monitor

learn.microsoft.com

 

 

이벤트ID 설명
4726 계정 삭제
4624 로그인 성공
4625 로그인 실패
5142 네트워크 공유 개체가 추가
5632 무선네트워크에 인증 요청
4689 프로세스 종료

 

 

  • 시스템 로그

 

- 윈도우 시스템 파일(시스템 구성파일)들의 운영 상태 기록

- 경로 → 제어판 > 시스템 및 보안 > 시스템 > 고급 시스템 설정 > 고급 > 시작 및 복구

 

 

- 시스템 로그의 '날짜 및 시간'을 통해 컴퓨터가 부팅시간과 종료시간 확인 가능

- 이벤트 ID : 6005 (시스템 시작), 6006 (시스템 종료)

 

 

  • 백신

 

- 보안 제품 중에서 대표적인 이벤트 기반 보안 장비

    - 악성코드를 탐지했을 때만 파일을 삭제하거나 격리 등의 보안 행동 수행

- 알려진 위협 탐지

    - 악성코드 샘플 수집 후 이를 분석한 후 백신 탐지 규칙 갱신

    - 악성코드 샘플을 수집하지 못하면 패턴을 만들 수 없으므로 탐지 불가능

 

 

  • EDR(Endpoint Detection & Response)

 

- 행위 기반의 공격 탐지

   - PC에서 발생하는 각종 시스템 이벤트를 분석해서 공격 행위 탐지

- 악성코드의 패턴을 알지 못해도 탐지 가능

  - 악성 코드가 실행된 다음에 발생하는 시스템 호출, 임시파일 생성, 네트워크 접속 행위 등 이용해 악성코드 탐지

- 백신과 같은 정형화된 이벤트가 아니라 운영체제에서 발생하는 로그 수집

   - 프로세스 상태 정보, 임시파일 생성, 네트워크 접속 행위 등 이용 악성코드 탐지

 

 

  • Sysmon

 

- Microsoft의 Sysinternal suite에 포함된 시스템 모니터링 툴

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

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

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

 

 

  • Sysmon 기능

 

- 실행 프로세스와 부모 프로세스의 전체 명령 줄을 로그로 저장

-  MD5, SHA1, SHA256 알고리즘으로 실행 프로그램의 해시 값 기록

- 여러 종류의 해시 값 동시 기록

- 네트워크 연결에서 IP주소, 포트번호, 호스트명, 포트명 등 기록

- 레지스트리에서 환경 설정이 변경된 경우 자동으로 다시 읽어 들임

 

 

  • Sysmon 생성 이벤트 목록

 

 

 

 

 

  • Sysmon 활성화
더보기

※ 파일 다운로드 후 설치 : https://download.sysinternals.com/files/Sysmon.zip 

 

 

C:\> cd /user\sysmon\desktop\sysmon

C:\> sysmon64.exe -accepteula –i

 

* accepteula : 자동으로 사용자 라이선스 동의 후 실행

 

 

> 이벤트 뷰어 확인

 

 

 

  • Zeek 로그 형식

 

# cd /opt/zeek/spool/zeek

# cat conn.log | more

# head 10 dns.log

# head 10 http.log

 

 

  • SIEM을 이용한 관제 시스템

 

 

① ESM를 이용한 관제 시스템

- 통합보안 관제 시스템

   - 기업 보안관리 시스템 (통합보안 관리 시스템, 전사적 보안관리 시스템)

   - 다양한 보안 솔루션을 하나로 모은 통합 보안 관리시스템

   - 다양한 보안 장비에서 발생하는 로그, 보안 이벤트를 통합적으로 수집, 관리, 분석, 통보 대응 및 보안 정책 관리

- ESM 주요 기능 2가지

❶ 서로 다른 기종의 보안 장비들을 통합 관리 기능

❷ 네트워크 자원 현황을 모니터링하는 보안 모니터링 기능

 

- ESM 구조

 

Agent • 관리 대상 보안 장비(보안장비, 시스템장비, 네트워크 장비)에 설치
• 사전에 정의된 규칙에 의한 이벤트 수집 및 보안 정책 반영
• 정책에 따른 로그 및 이벤트 데이터를 수집하여 ESM manager에 전달
Manager (Engine) • ESM agent에 의해 수집된 데이터 분석 및 저장
• 분석 결과를 ESM Console에 전달
Console • ESM Manager에 의해 전달된 정보의 시각적 전달, 상황 판단 및 리포팅 기능 제공
• ESM Manager/Agent에 대해 규칙을 제어/통제 수행

 

 

② SIEM를 이용한 보안 관제 시스템

- SIEM(Security Information & Event Management)

- ESM의 진화된 형태 (2015년 가트너에 의해 처음으로 도입된 개념)

- 기업 정보에 대한 종합 관제 솔루션

   - 기업 내에서 발생하는 모든 자원의 정보 및 보안 이벤트를 통합 관리

   - 보안시스템, 서버 시스템, 네트워크 장비, 플리케이션로그, event, 시스템 감사정보 네트워크 흐름 등이 관리/분석 대상

- HP 아크사이트(ArcSight), IBM 큐레이더(Qrader), Splunk 등 널리 쓰임

 

- SIEM 구조

 

- 정의

• 보안 관련 정보를 관리하는 보안도구

   - 하드웨어 혹은 소프트웨어나 가상 시스템 형식으로 구현 가능

   - 구축 방식은 제조사마다 다름

• 보안 정보관리(security information)와 보안 이벤트 관리(security event management)를 통합한 소프트웨어 제품

   - 애플리케이션과 네트워크 하드웨어 등이 생산한 보안 경보의 실시간 분석 제공

• 네트워크 경계부터 최종 사용자까지 로그를 중앙에 수집, 저장, 분석

    - 통합된 보안 보고와 컴플라이언스 관리 통해 신속한 공격 탐지, 차단, 대응 위해 보안 위협을 모니터링함

 

 

③ SIEM과 ESM 비교

 

 

 

④ SIEM 개략적 처리 프로세스

 

- 로그 수집 (collection)

   - 관제 대상의 Agent, SNMP, Syslog 서버로부터 로그 수집

 

- 로그 정규화(normalization) 필터링 (filtering)

    - 로그 형식을 표준 형식으로 변환

   - 수집한 이벤트나 플로우 데이터를 데이터베이스에 저장하려면 일정한 형태로 변환 필요

   - 업체에 따라 자동 정규화 또는 수동 정규화 방법 사용

   - 정규화 과정에서 불필요한 데이터 필터링 수행

 

- 로그 분류

   - 수집한 이벤트나 플로우 데이터를 데이터베이스에 저장하려면 일정한 형태로 변환

   - 업체에 따라 자동 정규화 또는 수동 정규화 방법 사용

   - 정규화 과정에서 불필요한 데이터 필터링 수행

 

- 상관관계 분석 (Correlation) ()

    - 동기종 또는 이기종의 여러 보안 솔루션에서 발생하는 로그 패턴 간에 연관성 분석

    - 로그들 간에 상호 연관 분석을 함으로써 실시간 보안 위협을 파악하고 대응

 

- 정책 위험 탐지

   - 로그를 분석해서 보호 대상의 전산 환경에 발생하는 문제와 공격과 정책의 위반 탐지

   - 탐지는 설정한 규칙이나 조건에 맞을 때 발생

   - 탐지 규칙은 임계값을 초과하거나 통계 기반의 사용자 행위를 분석하는 방법이 있음

 

- 알림(Alert, 경고)

   - 경고란 보안 담당자의 검토가 필요하다는 의미

   - 정책 위반을 탐지하면 곧 경고가 생성하고 보안 담당자에게 통보

   - 경고를 발생시키는 정책은 운영하는 기업이나 기관의 관심 사안에 따라 다름

   - 경고는 중요도를 부여할 수 있어야 함

   - 중요도는 해당 경고를 향후 상세 분석을 할 것인지를 결정하는 기준으로 사용

 

- 대시보드 (또는 보고서)

   - 로그는 보고서 또는 대시보드로 변환될 수 있음

        ‣ 얼마나 많은 접속이 발생했는가?

        ‣ 가장 많은 접속을 일으키는 호스는 어떤 것인가?

        ‣ 가장 많은 데이터를 인터넷으로 전송한 호스트는 무엇인가?

        ‣ 해당 호스트를 사용하는 사용자는 누구인가?

 

 

⑤ SIEM 상세 처리 프로세스

 

 

 

  • splunk 기능

 

 

* 머신데이터

 

❶ 다양한 이기종 데이터 소스로부터 제약 없는 수집

- 에이전트/에이전트리스 방식 제공으로 유연성과 최적화된 수집 기능 제공

 

 

 

❷ 하루 수백 TB 수집까지 횡적 확장

- 엔터프라이즈급 확장성, 장애 복구, 및 통합성 제공

 

 

 

❸ SPL 활용한 검색 기능

- 머신 데이터 검색에 최적화된 Splunk 자체 검색 언어인 SPL을 활용한 검색

 

 

 

❹ 내장 UI 컴포넌트를 활용한 대시보드 제작

 

 

 

❺ 실시간 감시 및 알람

 

 

- 실시간 모니터링 및 알람 등록

- 검색 쿼리 저장 후 실시간/주기적인 실행을 통한 모니터링

- 자동 대응을 위한 각종 프로그램/스크립트 실행 가능

- RSS, Email 통지 및 NMS/SNS 연동 가능

- PDF 스케줄 전송 기능을 통한 보고서 이메일 발송

 

 

  • splunk 설치

 

* 시스템 요구사항

Splunk Cloud • 웹 브라우저가 있어야 함
• Chrome, Firefox 및 Safari의 최신 버전에서 Splunk Cloud 사용
Splunk Enterprise • Linux, Windows 또는 Mac OS에서 사용가능
• Windows가 아닌 플랫폼
   - 2코어 64비트 CPU 2GHz이상, 4GB RAM
• Windows 플랫폼 - 2코어 64비트 CPU 2GHz이상, 4GB RAM
• 웹브라우저
  - Chrome, Firefox 및 Safari 브라우저의 최신 버전 지원

 

Splunk | The Data Platform for the Hybrid World

 

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

 

* Tutorial 데이터 파일 다운로드

 

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

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

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

- tutorialdata.zip 파일 다운로드 (파일 압축해제 안 함)

- Prices.csv.zip 파일 다운로드 (파일 압축해제 안 함)

 

 

설치 완성한 화면

 

 

  • Tutorial 데이터 추가

 

더보기
설정 - 데이터 추가

 

업로드 내 컴퓨터의 파일 클릭

 

tutorialdata.zip 파일 선택

 

host 필드 값 수정 (splunkclient)

 

파일 업로드 후 검색 시작 클릭

 

파일 실행되는 지 확인

 

 

  • 데이터 요약

 

더보기
Search , Reporting - 데이터 요약 클릭

 

호스트 (splunkclient)

 

Source

 

Sourcetype

 

 

  • Splunk 기본 검색 연습

 

- 검색을 통해 원하는 로그만 필터 가능

  → 사용자 입력어는 대소문자 구분하지 않지만, AND, OR, NOT 대문자로 표기

  → 띄어쓰기는 AND가 생략된 것

  → 우선순위는 괄호 이용

  → " " 로 감싸면 하나의 단어로 인식

  → 최근 시간부터 보여줌

  → 단어의 순서, 공백까지 일치해서 검색

 

더보기

source="tutorialdata.zip:.\\vendor_sales/vendor_sales.log"

 

 

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, rere, len(x)
차트 시각화 timechart, chart
비교 분석 eval, case, cidrmatch, ff, line, match
다중 문자열과 시간 mvindex, split, substr, round, ruldecode, strftime, strptime, now

 

 

  • table

 

- 필드명과 결합해 검색 결과를 테이블 형태로 보여줌

- table 명령어 다음에 확인하고 싶은 필드명 적음

- 필드명을 잘못 적으면 해당 필드에 공란이 보임

   → 다른 필드에는 값이 보이는데 특정 필드가 공백이면 필드명 입력 오류 의심

- 필드명은 대소문자 구분

- 여러 개의 필드는 쉼표(,) 또는 띄어쓰기로 구분

 

더보기

index=main sourcetype=access_combined_wcookie
| table clientip, method, productId, status

 

 

  • rename

 

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

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

 

더보기

index=main sourcetype="access_combined_wcookie" 
| table clientip, method, productId, status 
| rename action As "Customer Action", productId AS ProductID, status AS "HTTP Status"

 

 

  • dedup

 

- 검색 결과에서 중복 제거

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

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

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

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

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

 

더보기
dedup 사용 전 이벤트 수

 

dedup 사용 후 이벤트 수

 

 

  • sort

 

- 검색 결과 정렬

- 기본 값은 오름차순 정렬

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

 

더보기

index=main sourcetype=access_combined_wcookie 
| table clientip, action, productId, status 
| sort action, productId

 

 

index=main sourcetype=access_combined_wcookie 
| table clientip, action, productId, status 
| sort action, -productId

 

 

  • 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필드의 표준편차 반환

 

더보기

index=main sourcetype="access_combined_wcookie" 
| stats count, sum(bytes), avg(bytes), max(bytes), median(bytes), min(bytes) by clientip

 

 

  • top

 

- 지정한 필드에서 가장 많이 나오는 값을 보여주는 명령어

- 검색 결과를 파이프로 입력받아서 계산 후에 결과 반환

- showperc와 showcount의 기본값이 T이므로 지정하지 않더라도 비율과 개수 보여줌

 

limit - 반환되는 결과 개수 지정
- 숫자 지정하지않으면 기본적으로 10개 선정
- 전체 값 모두 보려면 limit=0 설정
showperc 해당 값이 차지하는 비율 보여줌 (기본 값 : T)
showcount 해당 값 개수 보여줌 (기본 값 : T)
useother Top 10 외 다른 숫자의 크기 알아보려면 T 입력

 

더보기

* | top useother=T clientip

 

 

* | top limit=10 clientip by method

→ GET, POST에 대한 상위 10개 추출

 

 

  • rare

 

- top과 반대의 결과인 빈도가 적은 값의 순서 추출

 

 

 

  • len(x)

 

- 문자열의 길이를 양의 정수 값으로 돌려줌

- 문자열의 길이 활용해서 비정상적인 값 추출

 

 

  • eval ()

 

- 검사 결과 값이 변환, 검증을 수행하며 실행 결과 값을 반환

- 시간 단위를 지정

 

 

 

 

  • case (X, "Y"...)

 

- 여러 개의 조건 검증할 때 사용

- 두 개의 인자가 한 그룹으로 동작

- 첫 번째 인자가 참인 경우 두 번째 인자의 내용이 반환, 세 번째 인자가 참이면 네 번째 인자가 수행

 

더보기

index=main sourcetype="access_combined_wcookie" 
| eval description=case(error==404, "Not found", error==500, "internal Server Error", error==200, "OK")

error==404 이면 "Not founf " 출력

error==500 이면 "internal Server Errorf " 출력

error==200 이면 "OK " 출력

 

 

  • cidrmatch ("X", Y)

 

-  IP주소 Y가 네트워크 범위 X에 존재하는지 확인

-  반환 값은 참 또는 거짓이며 두 개의 인자가 사용

-  첫 번째 CIDR형식의 네트워크 주소 범위, 두 번째는 검사를 위한 IP주소 입력

 

 

- cidrmatch 함수는 검색 필터로 사용 가능

 

 

 

  • 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 함수의 와일드카드 문자열은'%'

 

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

 

 

  • match (X, "Y")

 

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

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

 

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

' | ' 는 다중 선택 의미

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

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

 

method가 GET, POST, 또는 - 인지를 검사

 

 

method가 GET, POST, 또는 - 가 아닌 메서드들을 검사

 

 

❶ method가 GET, POST, 또는 “-” 가 아닌 것들을 메서드들을 검사

❷ 검사 된 메서드들 별로 송신지 주소 개수를 결과로 반환

❸ 개수 Count(src)를 src_count에 저장

❹ 저장된 src_count 값을 기준으로 내림 차순 정렬