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

Windows 시스템 로그 이벤트 syslog 환경 구축 및 로그 수집 모니터링

by 날으는물고기 2024. 1. 17.

Windows 시스템 로그 이벤트 syslog 환경 구축 및 로그 수집 모니터링

윈도우에서는 기본적으로 syslog를 지원하지 않습니다. 그러나 서드파티 소프트웨어를 사용하여 윈도우 환경에서 syslog를 구현하는 것이 가능합니다. 이를 통해 윈도우 시스템 로그를 리눅스와 유사한 형태로 수집할 수 있습니다.

 

다음은 윈도우에서 syslog를 구동하는 일반적인 방법입니다.

  1. syslog 서버 설치
    • syslog를 수집할 서버를 선택하고, 그 서버에 syslog 서비스를 설치합니다. 유명한 syslog 서버 중 하나는 "Syslog-ng"이며, 다운로드 및 설치는 해당 소프트웨어의 공식 웹사이트에서 가능합니다.
  2. 설정 구성
    • syslog 서버를 설치한 후, 설정 파일을 수정하여 원하는 로그 수집 형식 및 저장 위치 등을 구성합니다. syslog-ng의 경우, 설정 파일은 syslog-ng.conf입니다.
  3. 윈도우 로그 이벤트 전송
    • 윈도우에서 syslog 서버로 로그 이벤트를 전송하도록 구성해야 합니다. 이를 위해 다음 중 하나의 방법을 선택할 수 있습니다.
      • Syslog 에이전트 사용: 윈도우에 syslog 에이전트를 설치하여 로그 이벤트를 syslog 서버로 전송합니다. 예를 들어, "Snare"나 "NXLog"과 같은 에이전트를 사용할 수 있습니다.
      • 이벤트 뷰어 구성: 윈도우 이벤트 뷰어를 사용하여 특정 로그 이벤트를 syslog 서버로 전송하도록 구성할 수도 있습니다.
  4. 테스트 및 모니터링
    • 설정을 완료한 후 syslog 서버 및 윈도우에서 로그 이벤트가 올바르게 수집되는지 확인하고 필요한 경우 모니터링을 설정합니다.

이러한 방법을 통해 윈도우 시스템 로그를 syslog를 사용하여 수집할 수 있습니다. 선택한 syslog 서버 및 에이전트에 따라 설정 및 구성 방법이 다를 수 있습니다.

 

윈도우 로그 이벤트를 syslog 서버로 전송하려면, 다음과 같은 단계를 따를 수 있습니다. 이 예제에서는 NXLog을 사용하여 윈도우 로그를 syslog로 전송하는 방법을 설명하겠습니다.

단계 1: NXLog 설치

  1. NXLog 다운로드
    NXLog 공식 웹사이트에서 NXLog Community Edition을 다운로드하고 설치합니다.

단계 2: NXLog 설정

  1. NXLog 설정 파일 편집
    NXLog 설치 디렉토리에서 nxlog.conf 파일을 찾아 텍스트 에디터로 엽니다.
  2. 로그 전송 구성 추가
    다음과 같이 syslog 서버의 주소와 포트를 설정합니다. syslog-ng 서버가 514번 포트에서 수신 대기 중이라고 가정합니다.
    # 기본 경로와 설정
    ROOT C:\Program Files (x86)\nxlog
    Moduledir %ROOT%\modules
    CacheDir %ROOT%\data
    Pidfile %ROOT%\data\nxlog.pid
    SpoolDir %ROOT%\data
    LogLevel INFO
    
    # syslog 형식의 로그 처리를 위한 확장 모듈
    <Extension _syslog>
        Module xm_syslog
    </Extension>
    
    # 입력 설정: Windows 이벤트 로그 수집
    <Input in>
        Module im_msvistalog
        # 수집할 이벤트 로그 유형을 정의
        Query <QueryList>
            <Query Id="0" Path="Security">*</Query>
            <Query Id="1" Path="System">*</Query>
            <Query Id="2" Path="Application">*</Query>
        </QueryList>
    </Input>
    
    # 출력 설정: UDP를 통해 syslog 서버로 로그 전송
    <Output out>
        Module om_udp
        Host YOUR_SYSLOG_SERVER_IP  # syslog 서버의 IP 주소로 수정해야 함
        Port 514                    # syslog 서버의 포트
        OutputType Syslog
    </Output>
    
    # 라우팅 설정: 입력에서 출력으로 로그 라우팅
    <Route 1>
        Path in => out
    </Route>
    1. 기본 설정
      • Moduledir: 모듈 디렉토리 경로를 설정합니다.
      • CacheDir: 캐시 데이터를 저장할 디렉토리 경로를 설정합니다.
      • Pidfile: 프로세스 ID 파일의 경로를 설정합니다.
      • SpoolDir: 스풀 데이터를 저장할 디렉토리 경로를 설정합니다.
      • LogLevel: 로깅 레벨을 설정합니다 (여기서는 INFO).
    2. 확장 모듈 (<Extension _syslog>)
      • xm_syslog 모듈은 syslog 형식의 로그 메시지를 처리하기 위해 사용됩니다.
    3. 입력 정의 (<Input in>)
      • im_msvistalog 모듈을 사용하여 Windows 이벤트 로그를 수집합니다.
      • Query를 통해 Security, System, Application 로그를 수집합니다.
    4. 출력 정의 (<Output out>)
      • om_udp 모듈을 사용하여 UDP 프로토콜을 통해 로그를 전송합니다.
      • HostPort를 설정하여 syslog 서버로 로그를 보냅니다.
        YOUR_SYSLOG_SERVER_IP는 실제 syslog 서버의 IP 주소로 바꿔야 합니다.
    5. 라우팅 정의 (<Route 1>)
      • 정의된 입력(in)에서 출력(out)으로 로그를 전송합니다.
    이 설정은 Windows 이벤트 로그를 수집하여 syslog 서버로 전송하는 기본적인 구성입니다. 실제 환경에 맞게 YOUR_SYSLOG_SERVER_IP와 같은 부분을 적절히 수정해야 합니다.

단계 3: NXLog 서비스 재시작

  1. NXLog 서비스 재시작
    NXLog 서비스를 재시작하여 새로운 설정을 적용합니다. 명령 프롬프트에서 다음 명령어를 실행합니다.
    net stop nxlog
    net start nxlog

단계 4: syslog 서버 설정

  1. syslog 서버 구성
    syslog 서버에서는 syslog-ng와 같은 서비스가 실행 중이고, syslog-ng 설정 파일에서 UDP 포트 514로 수신 대기 중인지 확인합니다.

단계 5: 테스트

  1. 로그 확인
    NXLog 및 syslog 서버 로그를 확인하여 윈도우 로그 이벤트가 올바르게 syslog로 전송되는지 확인합니다.

이제 윈도우 로그 이벤트는 NXLog을 통해 syslog 서버로 전송됩니다. 이 예제에서는 NXLog을 사용했지만, 다른 syslog 에이전트를 사용할 수도 있습니다.

 

Snare은 또 다른 윈도우 로그 이벤트를 syslog로 전송하기 위한 에이전트입니다. 다음은 Snare을 사용하여 윈도우 로그를 syslog로 전송하는 단계입니다.

단계 1: Snare 설치

  1. Snare 다운로드 및 설치
    Intersect Alliance 웹사이트에서 Snare 다운로드 페이지로 이동하여 Snare for Windows를 다운로드하고 설치합니다.

단계 2: Snare 설정

  1. Snare 구성
    • Snare 설치 후, "Snare for Windows" 프로그램을 실행합니다.
    • "Configuration" 탭에서 "Add"를 클릭하여 새 구성을 만듭니다.
    • 다음과 같이 필요한 정보를 입력합니다.
      • Log File: 수집하려는 로그 파일의 경로 (예: C:\Windows\System32\winevt\Logs\Security.evtx)
      • Syslog Server: syslog 서버의 주소 (예: syslog-ng 서버의 IP 주소)
      • Syslog Port: syslog 서버의 포트 (기본적으로 514)
    • 다른 옵션은 기본값으로 둡니다.
    • "OK"를 클릭하여 설정을 저장하고 창을 닫습니다.

단계 3: Snare 서비스 재시작

  1. Snare 서비스 재시작
    • Snare 서비스를 재시작하여 새로운 설정을 적용합니다.
    • "Services.msc"를 열어 "Snare" 서비스를 찾고, 우클릭하여 "재시작"을 선택합니다.

단계 4: syslog 서버 설정

  1. syslog 서버 구성
    • syslog 서버에서는 syslog-ng와 같은 서비스가 실행 중이고, syslog-ng 설정 파일에서 UDP 포트 514로 수신 대기 중인지 확인합니다.

단계 5: 테스트

  1. 로그 확인
    • syslog 서버에서 윈도우 로그 이벤트가 올바르게 수집되는지 확인합니다.

이제 Snare을 사용하여 윈도우 로그 이벤트를 syslog로 전송하였습니다.

 

윈도우에서 특정 포트가 열려 있는지 체크하는 방법은 여러 가지가 있습니다. 아래는 Python을 사용하여 특정 FTP 포트의 열림 여부를 확인하는 간단한 코드입니다. 이 코드를 실행하려면 Python이 설치되어 있어야 합니다.

import socket

def check_ftp_port(host, port):
    try:
        # 소켓 생성
        sock = socket.create_connection((host, port), timeout=5)
        # 연결이 성공했을 경우
        print(f"Port {port} is open on {host}")
        sock.close()
    except (socket.timeout, ConnectionRefusedError):
        # 연결이 실패했을 경우
        print(f"Port {port} is closed on {host}")

# 체크할 호스트와 포트 지정
ftp_host = "원하는_호스트_주소_또는_IP"
ftp_port = 21  # 일반적으로 FTP는 21번 포트를 사용합니다.

# 함수 호출
check_ftp_port(ftp_host, ftp_port)

위 코드에서 원하는_호스트_주소_또는_IP를 실제 FTP 서버의 주소 또는 IP 주소로 대체하고, 포트 번호도 필요에 따라 수정하여 사용하세요. 코드를 실행하면 해당 호스트의 지정된 포트가 열려 있는지 여부가 출력됩니다.

 

Python이 설치되지 않은 경우에는 파이썬이 아닌 다른 방법으로 포트 체크를 수행해야 합니다. 아래는 PowerShell 스크립트를 사용하여 특정 포트의 열림 여부를 확인하는 코드입니다.

$host = "원하는_호스트_주소_또는_IP"
$port = 21  # 일반적으로 FTP는 21번 포트를 사용합니다.

try {
    $tcpclient = New-Object System.Net.Sockets.TcpClient
    $tcpclient.Connect($host, $port)
    Write-Host "Port $port is open on $host"
    $tcpclient.Close()
} catch {
    Write-Host "Port $port is closed on $host"
}

위 코드에서 원하는_호스트_주소_또는_IP를 실제 FTP 서버의 주소 또는 IP 주소로 대체하고, 포트 번호도 필요에 따라 수정하여 사용하세요. PowerShell을 실행하여 이 스크립트를 실행하면 해당 호스트의 지정된 포트가 열려 있는지 여부가 출력됩니다. PowerShell은 Windows 운영 체제에 기본으로 설치되어 있으므로 별도의 설치가 필요하지 않습니다.

728x90

댓글