본문 바로가기
운영체제 (LNX,WIN)

Wazuh(OSSEC) 운영에 대한 상세 설명 및 운영 예시

by 날으는물고기 2024. 8. 6.

Wazuh(OSSEC) 운영에 대한 상세 설명 및 운영 예시

1. Endpoint Detection and Response (EDR)

Endpoint Detection and Response(EDR)은 위협이나 보안 침해를 나타낼 수 있는 활동을 모니터링하는 도구와 애플리케이션의 집합입니다. EDR 도구와 애플리케이션의 주요 기능은 다음과 같습니다.

  • 일반 취약점 점검: 기기에 대한 감사 수행
  • 프로액티브 모니터링: 무단 로그인, 브루트 포스 공격, 권한 상승과 같은 의심스러운 활동 모니터링
  • 데이터 시각화: 복잡한 데이터와 이벤트를 깔끔한 그래프로 시각화
  • 정상 운영 행동 기록: 이상 탐지에 도움

2. Wazuh 개요

Wazuh는 2015년에 만들어진 오픈 소스, 무료 EDR 솔루션입니다. 다양한 보안 기능을 제공하며, 특히 다음과 같은 기능을 갖추고 있습니다.

  • 실시간 보안 정보와 이벤트 관리 (SIEM)
  • 규정 준수 감사
  • 침입 탐지
  • 취약점 탐지 및 관리

3. Wazuh 에이전트

  • 에이전트 역할: 시스템의 이벤트와 프로세스를 기록하는 기기를 에이전트라고 합니다. 에이전트는 인증 및 사용자 관리와 같은 기기에서 발생하는 이벤트와 프로세스를 모니터링합니다.
  • 로그 수집: 에이전트는 이러한 로그를 Wazuh와 같은 지정된 수집기로 오프로드하여 처리합니다.

4. Wazuh 에이전트 배포

Wazuh는 에이전트 배포 과정을 안내하며, 이를 위해 다음과 같은 사전 요구사항을 충족해야 합니다.

  • 운영 체제: 에이전트가 설치될 운영 체제의 종류와 버전 (Linux, Windows, 등)
  • Wazuh 서버 주소: 로그를 전송할 Wazuh 서버의 주소(DNS 엔트리 또는 IP 주소)
  • 에이전트 그룹: 에이전트를 그룹으로 분류하여 관리할 수 있음

예시: Windows에서 Wazuh 에이전트 설치

# PowerShell에서 실행
Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.x.x.msi -OutFile wazuh-agent.msi
Start-Process -FilePath .\wazuh-agent.msi -ArgumentList /quiet

5. Wazuh 취약점 평가 및 보안 이벤트

Wazuh의 취약점 평가 모듈은 에이전트의 운영 체제에 설치된 애플리케이션과 그 버전을 주기적으로 스캔할 수 있는 강력한 도구입니다. 이를 통해 보안 관리자는 다음과 같은 작업을 수행할 수 있습니다.

  • 취약점 스캔 주기 설정: 기본적으로 5분 간격으로 스캔
  • 취약점 알림 설정: 중요한 취약점이 발견되면 즉시 알림 전송

 

예시: Vim 버전 취약점 탐지 (CVE-2019-12735)

# 취약점 스캔 결과 예시
{
  "agent": {
    "id": "001",
    "name": "agent-01"
  },
  "vulnerabilities": [
    {
      "cve": "CVE-2019-12735",
      "package": "vim",
      "version": "8.1.0875",
      "severity": "High",
      "status": "Open"
    }
  ]
}

6. Wazuh 정책 감사

Wazuh는 에이전트의 구성을 감사하고 모니터링하며 이벤트 로그를 프로액티브하게 기록할 수 있습니다. 이는 다양한 프레임워크와 법규를 기반으로 한 감사 점수를 제공합니다.

예시: MITRE, NIST, GDPR에 대한 정책 감사 점수

# 정책 감사 결과 예시
{
  "agent": {
    "id": "001",
    "name": "agent-01"
  },
  "frameworks": {
    "MITRE": 85,
    "NIST": 90,
    "GDPR": 88
  }
}

7. Wazuh 로그인 모니터링

Wazuh의 보안 이벤트 모니터는 성공적 및 실패한 인증 시도를 모두 기록할 수 있습니다. 예를 들어, 무단 로그인 시도 또는 성공적인 로그인 이벤트를 감지하여 알림을 생성합니다.

예시: 로그인 이벤트 모니터링

# 로그인 시도 감지
{
  "timestamp": "2024-07-17T12:34:56Z",
  "agent": {
    "id": "001",
    "name": "agent-01"
  },
  "event": {
    "type": "authentication",
    "status": "failed",
    "user": "unknown_user"
  }
}

8. Windows 로그 수집

Windows 운영 체제에서는 다양한 작업과 이벤트가 기록됩니다. Wazuh 에이전트를 사용하여 Sysmon이 기록한 이벤트를 수집하여 Wazuh 관리 서버로 전송할 수 있습니다.

예시: Sysmon 설정 및 로그 수집

# Sysmon 설정 파일 (detect_powershell.xml)
<Sysmon schemaversion="4.10">
  <EventFiltering>
    <ProcessCreate onmatch="include">
      <Image condition="is">C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Image>
    </ProcessCreate>
  </EventFiltering>
</Sysmon>

# Sysmon 설치 및 설정 적용
Sysmon64.exe -accepteula -i detect_powershell.xml

# Wazuh 에이전트 구성 파일 (ossec.conf)
<agent>
  <name>agent-01</name>
  <address>192.168.1.100</address>
  <protocol>tcp</protocol>
</agent>

9. Linux 로그 수집

Linux 에이전트에서 로그를 캡처하는 과정은 Windows 에이전트와 유사합니다. Wazuh의 로그 수집 서비스를 사용하여 어떤 로그를 Wazuh 관리 서버로 전송할지 지시하는 항목을 에이전트에 생성합니다.

 

예시: Apache2 로그 수집

# Wazuh 규칙 파일 (0250-apache_rules.xml)
<group name="apache,">
  <rule id="100100" level="5">
    <decoded_as>json</decoded_as>
    <description>Apache2 Access Log</description>
    <match>access_log</match>
  </rule>
</group>

# 에이전트 구성 파일 (ossec.conf)
<localfile>
  <log_format>apache</log_format>
  <location>/var/log/apache2/access.log</location>
</localfile>

10. Linux에서 명령어 감사

Wazuh는 Debian/Ubuntu 및 CentOS 운영 체제에서 실행되는 에이전트에 auditd 패키지를 설치하여 시스템에서 특정 작업과 이벤트를 모니터링하고 이를 로그 파일에 기록합니다.

 

예시: Auditd 설정

# Auditd 규칙 추가
echo '-w /etc/passwd -p wa -k passwd_changes' >> /etc/audit/rules.d/audit.rules

# Wazuh 에이전트 구성 파일 (ossec.conf)
<localfile>
  <log_format>audit</log_format>
  <location>/var/log/audit/audit.log</location>
</localfile>

11. Wazuh API

Wazuh 관리 서버는 명령 줄에서 상호 작용할 수 있는 풍부하고 광범위한 API를 제공합니다.

예시: API 인증 및 사용

# Wazuh API 인증
curl -u wazuh:wazuh -k -X GET "https://wazuh-manager:55000/security/user/authenticate" -H "Content-Type: application/json"

# Wazuh API 사용 예시 (에이전트 목록 가져오기)
curl -u wazuh:wazuh -k -X GET "https://wazuh-manager:55000/agents" -H "Content-Type: application/json"

12. Wazuh 보고서 생성

Wazuh는 에이전트에서 발생한 이벤트에 대한 요약된 분석을 제공하는 보고서 모듈을 갖추고 있습니다.

예시: 보안 이벤트 보고서 생성

# 보안 이벤트 보고서 생성
curl -u wazuh:wazuh -k -X GET "https://wazuh-manager:55000/reports/security/events?from=2024-07-16T00:00:00Z&to=2024-07-17T00:00:00Z" -H "Content-Type: application/json"

# 보고서 예시
{
  "total_alerts": 79,
  "alerts": [
    {
      "agent": {
        "id": "001",
        "name": "agent-01"
      },
      "timestamp": "2024-07-17T12:34:56Z",
      "event": {
        "type": "authentication",
        "status": "failed",
        "user": "unknown_user"
      }
    }
  ]
}

Wazuh 운영과 관련된 주요 기능과 절차의 포괄적인 내용으로, 보안 관리자의 역할을 지원하는 데 유용합니다. Wazuh를 효과적으로 사용하기 위해 각 모듈과 기능을 심도 있게 이해하고 적용하는 것이 중요합니다.

 

SIEM을 구축할 때 가장 먼저 결정해야 할 것은 분산 아키텍처입니다. 이를 위해 사용 가능한 자원과 보안 운영 센터(SOC)의 필요성을 분석해야 합니다.

고려해야 할 질문들

  1. 몇 개의 호스트를 모니터링할 것인가? (100, 1000, 또는 10000 호스트)
  2. 상용 도구를 위한 예산이 있는가?
  3. 인프라가 얼마나 이질적인가?
  4. 보안 경고만 필요한가, 아니면 감사 목적을 위한 지속적인 이벤트 로그가 필요한가?
  5. 어떤 수준의 세밀함을 추구하는가?
  6. 어떤 응답 시간을 원하는가? 실시간 알림이 필요한가?
  7. 솔루션을 개선/조정할 시간이 있는가, 아니면 즉시 100% 작동하는 솔루션이 필요한가?

오픈 소스와 상용 도구의 선택

오픈 소스를 선택하면 라이선스 비용은 절감할 수 있지만, 이를 조정하고 관리할 인력을 고용해야 합니다. 상용 도구와 지원을 선택하면 더 간편하지만 비용이 증가합니다.

첫 번째 아키텍처: ELK + Elastalert


초기 아키텍처는 각 호스트에 로그/이벤트 전달기(예: Filebeat)를 실행하여 데이터를 Logstash 수집기로 보내고, Logstash가 이를 파싱하고 풍부하게 한 후, Elasticsearch에 저장합니다. Kibana를 통해 이를 시각화할 수 있습니다.


하지만 이 아키텍처에는 수작업이 많이 필요하고, 발견된 중요한 이벤트를 자동으로 기록하지 않는 문제가 있습니다. 이를 해결하기 위해 Elastalert를 추가하여 특정 이벤트 쿼리에 대해 알림을 받도록 했습니다.

알림 시스템

Elastalert는 특정 쿼리에 대한 알림을 제공합니다. 우리는 긴급 알림을 위한 Slack 채널과 기록을 위한 이메일 인박스를 사용했습니다. 더 나아가 Sigma 규칙 프로젝트를 사용하여 다양한 포맷으로 변환 가능한 표준 규칙을 정의했습니다.

두 번째 아키텍처: Wazuh 통합

Wazuh는 오픈 소스 호스트 침입 탐지 시스템(HIDS)으로, 처리 부하를 줄여줍니다. 각 호스트에 Wazuh 에이전트를 설치하고, 여러 Wazuh 관리자가 이벤트를 수신합니다. 이는 Logstash를 대체하여 처리 부하를 줄이고, 경고만 SIEM으로 전달합니다.

 

Wazuh의 규칙 처리기는 특정 이벤트에 대한 규칙을 정의하여 빠르게 매칭합니다. 이를 통해 간단한 규칙은 Wazuh에서, 세부적인 규칙은 Elastalert에서 처리하도록 하여 성능과 세밀함의 균형을 맞췄습니다.

 

최종 아키텍처는 다음과 같습니다.

  1. Wazuh를 사용하여 빠른 규칙 매칭 및 기본적인 경고 처리
  2. Elastalert와 Sigma 규칙을 사용하여 특정한 악성 이벤트 감지
  3. Slack과 이메일 인박스를 통한 알림 및 기록
  4. Jira 통합을 통한 이슈 추적


이 아키텍처는 다양한 환경과 운영 체제에서 수천 대의 호스트를 모니터링하고, 실시간 알림을 받을 수 있으며, 오픈 소스 규칙을 구현하고 맞춤형 규칙을 작성할 수 있도록 합니다.

추가 고려 사항

  1. 실패를 대비한 설계: 여러 Wazuh 관리자와 다양한 환경 설정
  2. 트래픽 분산: Nginx 또는 DNS 로드 밸런서를 사용하여 연결 분산
  3. 네트워크 오버헤드 분석: 적절한 지역에서 관리자 사용
  4. Wazuh 에이전트 서비스의 시작 및 중지 모니터링
  5. 주기적인 레드팀 연습: Mitre의 Att&ck 프레임워크와 Red Canary의 Atomic Tests 사용
  6. Sigma와 Wazuh 규칙의 업데이트
  7. 커뮤니티 규칙 외에 자체 규칙 작성 및 확장

이 모든 과정을 통해, 비용 효율적인 SIEM을 구축하고 운영할 수 있으며, 보안 및 감사 목적을 위한 자동화된 탐지, 추적 및 문서화 기능을 갖출 수 있습니다.

 

원문 : https://medium.com/@4ghora

728x90

댓글