Azure Monitor 에이전트를 사용하여 Syslog 및 CEF 메시지를 Microsoft Sentinel에 수집

이 문서에서는 AMA를 통한 SyslogAMA 커넥터를 통한 CEF(Common Event Format)를 사용하여 Linux 컴퓨터와 네트워크/보안 디바이스 및 어플라이언스에서 CEF(Common Event Format) 메시지 등의 Syslog 메시지를 빠르게 필터링하고 수집하는 방법을 설명합니다. 이러한 데이터 커넥터에 대해 자세히 알아보려면 AMA를 통한 Syslog 및 Microsoft Sentinel용 AMA 커넥터를 통한 CEF(Common Event Format)를 참조하세요.

필수 조건

시작하려면 먼저 리소스를 구성하고 이 섹션에 설명된 적절한 권한이 있어야 합니다.

Microsoft Sentinel 필수 구성 요소

  • 해당하는 Microsoft Sentinel 솔루션, 즉 Syslog 및/또는 Common Event Format을 솔루션을 사용하도록 설정해야 합니다. 자세한 내용은 Microsoft Sentinel 기본 제공 콘텐츠 검색 및 관리를 참조하세요.

  • Azure 계정에 다음 Azure RBAC(Azure 역할 기반 액세스 제어) 역할이 있어야 합니다.

    기본 제공 역할 범위 원인
    - 가상 머신 참가자
    - Azure Connected Machine
       리소스 관리자
  • 가상 머신
  • Virtual Machine Scale Sets
  • Azure Arc 지원 서버
  • 에이전트 배포 방법
    작업이 포함된 모든 역할
    Microsoft.Resources/deployments/*
  • 구독
  • Resource group
  • 기존 데이터 수집 규칙
  • Azure Resource Manager 템플릿 배포
    Monitoring Contributor
  • 구독
  • Resource group
  • 기존 데이터 수집 규칙
  • 데이터 컬렉션 규칙 만들기 또는 편집

로그 전달자 필수 구성 요소

로그 전달자에서 메시지를 수집하는 경우 다음과 같은 추가 필수 구성 요소가 적용됩니다.

  • 로그를 수집하려면 지정된 Linux VM(로그 전달자)이 있어야 합니다.

  • 로그 전달자가 Azure Virtual Machine이 아닌 경우 Azure Arc Connected Machine 에이전트가 설치되어 있어야 합니다.

  • Linux 로그 전달자 VM에 Python 2.7 또는 3이 설치되어 있어야 합니다. python --version 또는 python3 --version 명령을 사용하여 확인합니다. Python 3을 사용하는 경우 컴퓨터에서 기본 명령으로 설정되었는지 확인하거나 다음 스크립트를 'python' 대신 'python3' 명령으로 실행합니다.

  • 로그 전달자에 syslog-ng 또는 rsyslog 디먼이 사용되도록 설정되어야 합니다.

  • 로그 전달자에 대한 공간 요구 사항은 Azure Monitor 에이전트 성능 벤치마크를 참조하세요. 확장성 있는 수집을 위한 디자인이 포함된 이 블로그 게시물도 검토할 수 있습니다.

  • 로그 원본(보안 디바이스 및 어플라이언스)에서 로그 메시지를 로컬 Syslog 디먼 대신 로그 전달자의 Syslog 디먼으로 보내도록 구성해야 합니다.

데이터 수집 중복 방지

Syslog 및 CEF 메시지 모두에 같은 기능을 사용하면 CommonSecurityLog 테이블과 Syslog 테이블 간에 데이터 수집 중복이 발생할 수 있습니다.

이 시나리오를 방지하려면 다음 방법 중 하나를 사용합니다.

  • 소스 디바이스에서 대상 기능 구성을 사용하도록 설정한 경우: 로그를 CEF 형식으로 로그 전달자에게 보내는 각 원본 컴퓨터에서 Syslog 구성 파일을 편집하여 CEF 메시지를 보내는 데 사용되는 기능을 제거합니다. 이렇게 하면 CEF 형식으로 전송되는 기능도 Syslog 형식으로 전송되지 않습니다. 다음 단계에서 구성하는 각 DCR에서 각각 CEF 또는 Syslog 관련 기능을 사용하는지 확인합니다.

    동일한 에이전트에서 Syslog 및 CEF 메시지를 모두 수집하도록 DCR을 정렬하는 방법의 예를 보려면 이 문서의 뒷부분에 있는 동일한 DCR의 Syslog 및 CEF 스트림으로 이동합니다.

  • 원본 어플라이언스 기능을 변경할 수 없는 경우: 아래 쿼리 예제에서처럼 중복이 방지되도록 수집 시간 변환을 사용하여 Syslog 스트림에서 CEF 메시지를 필터링합니다. 데이터는 수집기 컴퓨터에서 작업 영역으로 두 번 전송됩니다.

    source |
    where ProcessName !contains "CEF"
    

컴퓨터 보안 구성

머신 보안은 조직의 보안 정책에 따라 구성해야 합니다. 예를 들어 네트워크가 회사 네트워크 보안 정책에 맞게 구성되고 디먼의 포트 및 프로토콜이 사용자의 요구 사항에 맞게 변경될 수 있습니다. 컴퓨터 보안 구성을 개선하려면 Azure에서 VM을 보안하거나 네트워크 보안을 위한 모범 사례를 검토합니다.

디바이스가 TLS를 통해 Syslog 및 CEF 로그를 보내는 경우(예를 들어, 로그 전달자가 클라우드에 있기 때문에) TLS에서 통신하도록 Syslog 디먼(rsyslog 또는 syslog-ng)을 구성해야 합니다.

데이터 커넥터 설정

Syslog 또는 CEF에 대한 지침을 보려면 아래의 해당 탭을 선택합니다.

AMA 커넥터를 통해 Syslog 설정

AMA 커넥터를 통한 Syslog 설정 프로세스는 다음 두 부분으로 구성됩니다.

  1. Azure Monitor 에이전트를 설치하고 DCR(데이터 수집 규칙)을 만듭니다.

  2. 로그 전달자를 사용하여 다른 컴퓨터에서 로그를 수집하는 경우 로그 전달자에서 "설치" 스크립트를 실행하여 다른 컴퓨터의 메시지를 수신 대기하고 필요한 포트를 열도록 Syslog 디먼을 구성합니다.

AMA 설치 및 DCR(데이터 수집 규칙) 만들기

다음 두 가지 방법 중 하나로 이 단계를 수행할 수 있습니다.

  • Microsoft Sentinel 포털에서 AMA를 통한 Syslog 또는 AMA 데이터 커넥터를 통한 CEF(Common Event Format)를 배포하고 구성합니다. 이 설정을 사용하면 작업 영역별로 DCR을 만들기, 관리 및 삭제할 수 있습니다. AMA는 커넥터 구성에서 선택한 VM에 자동으로 설치됩니다.
    —또는—
  • HTTP 요청을 로그 수집 API에 보냅니다. 이 설정을 통해 DCR을 만들기, 관리 및 삭제할 수 있습니다. 이 옵션은 포털보다 더 유연합니다. 예를 들어, API를 사용하면 특정 로그 수준별로 필터링할 수 있지만 UI를 사용하면 최소 로그 수준만 선택할 수 있습니다. 단점은 DCR을 만들기 전에 로그 전달자에 Azure Monitor 에이전트를 수동으로 설치해야 한다는 점입니다.

각 방법에 대한 지침을 보려면 아래의 해당 탭을 선택합니다.

커넥터 페이지를 열고 DCR 마법사를 시작합니다.

  1. Azure Portal을 열고, Microsoft Sentinel 서비스로 이동합니다.

  2. 탐색 메뉴에서 데이터 커넥터를 선택합니다.

  3. 검색 상자에 Syslog를 입력합니다. 결과에서 AMA 커넥터를 통한 Syslog를 선택합니다.

  4. 세부 정보 창에서 커넥터 페이지 열기를 선택합니다.

  5. 구성 영역에서 +데이터 수집 규칙 만들기를 선택합니다.

    AMA 커넥터를 통한 CEF페이지를 보여 주는 스크린샷.

  6. 기본 탭에서 다음을 수행합니다.

    • DCR 이름을 입력합니다.
    • 구독을 선택합니다.
    • DCR을 찾으려는 리소스 그룹을 선택합니다.

    기본 탭의 DCR 세부 정보를 보여 주는 스크린샷.

  7. 다음: 리소스>를 선택합니다.

리소스(VM) 정의

리소스 탭에서 AMA를 설치할 컴퓨터를 선택합니다(이 경우 로그 전달자 컴퓨터). 로그 전달자가 목록에 표시되지 않으면 Azure Connected Machine 에이전트가 설치되어 있지 않을 수 있습니다.

  1. 사용 가능한 필터나 검색 상자를 사용하여 로그 전달자 VM을 찾습니다. 목록에서 구독을 펼쳐 해당 리소스 그룹을 확인하고 리소스 그룹을 펼쳐 VM을 확인합니다.

  2. AMA를 설치하려는 로그 전달자 VM을 선택합니다. 마우스로 가리키면 VM 이름 옆에 확인란이 나타납니다.

    DCR을 설정할 때 리소스를 선택하는 방법을 보여 주는 스크린샷.

  3. 변경 내용을 검토하고 다음: 수집 >을 선택합니다.

기능 및 심각도 선택 및 DCR 만들기

참고 항목

Syslog 및 CEF 메시지 모두에 동일한 기능을 사용하면 데이터 수집 중복이 발생할 수 있습니다. 데이터 수집 중복을 방지하는 방법을 알아보세요.

  1. 수집 탭에서 각 기능의 최소 로그 수준을 구성합니다. 로그 수준을 선택하면 Microsoft Sentinel은 선택한 수준 및 심각도가 높은 다른 수준에 대한 로그를 수집합니다. 예를 들어, LOG_ERR을 선택하면 Microsoft Sentinel은 LOG_ERR, LOG_CRIT, LOG_ALERTLOG_EMERG 수준에 대한 로그를 수집합니다.

    DCR을 설정할 때 로그 수준을 선택하는 방법을 보여 주는 스크린샷.

  2. 선택 사항을 검토하고 다음: 검토 + 만들기를 선택합니다.

  3. 검토 및 만들기 탭에서 만들기를 선택합니다.

    DCR의 구성을 검토하고 만드는 방법을 보여 주는 스크린샷

  • 커넥터는 DCR을 만들 때 선택한 컴퓨터에 Azure Monitor 에이전트를 설치합니다.

  • DCR이 생성되고 에이전트가 설치되면 Azure Portal에서 알림이 표시됩니다.

  • 커넥터 페이지에서 새로 고침을 선택하여 목록에 표시된 DCR을 확인합니다.

기능 및 로그 수준 섹션의 예

기능 및 로그 수준 설정의 다음 예를 검토합니다. name 필드에는 필터 이름이 포함됩니다.

CEF 메시지 수집의 경우 "streams" 값은 "Microsoft-Syslog" 대신 "Microsoft-CommonSecurityLog"여야 합니다.

이 예는 Warning, Error, Critical, AlertEmergency 로그 수준을 사용하여 cron, daemon, local0, local3uucp 시설에서 이벤트를 수집합니다.

    "dataSources": {
      "syslog": [
        {
        "name": "SyslogStream0",
        "streams": [
          "Microsoft-Syslog"
        ],
        "facilityNames": [ 
          "cron",
          "daemon",
          "local0",
          "local3", 
          "uucp"
        ],
        "logLevels": [ 
          "Warning", 
          "Error", 
          "Critical", 
          "Alert", 
          "Emergency"
        ]
      }
    ]
  }
동일한 DCR의 Syslog 및 CEF 스트림

이 예제에서는 동일한 DCR에서 Syslog 및 CEF 메시지를 수집하는 방법을 보여 줍니다.

단일 에이전트 및 DCR을 사용하여 Syslog 및 CEF 메시지를 수집할 때 수행할 단계에 대한 자세한 내용은 이 문서의 앞부분에 있는 데이터 수집 중복 방지를 참조하세요.

DCR은 다음을 위해 CEF 이벤트 메시지를 수집합니다.

  • Info, Notice, Warning, Error, Critical, AlertEmergency 로그 수준이 있는 authprivmark 기능
  • Warning, Error, Critical, AlertEmergency 로그 수준이 있는 daemon 기능

다음을 위해 Syslog 이벤트 메시지를 수집합니다.

  • Critical, AlertEmergency 로그 수준이 있는 kern, local0, local5news 기능
  • 로그 수준이 Emergencymailuucp 기능
    "dataSources": {
      "syslog": [
        {
          "name": "CEFStream1",
          "streams": [ 
            "Microsoft-CommonSecurityLog"
          ],
          "facilityNames": [ 
            "authpriv", 
            "mark"
          ],
          "logLevels": [
            "Info",
            "Notice", 
            "Warning", 
            "Error", 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "CEFStream2",
          "streams": [ 
            "Microsoft-CommonSecurityLog"
          ],
          "facilityNames": [ 
            "daemon"
          ],
          "logLevels": [ 
            "Warning", 
            "Error", 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "SyslogStream3",
          "streams": [ 
            "Microsoft-Syslog"
          ],
          "facilityNames": [ 
            "kern",
            "local0",
            "local5", 
            "news"
          ],
          "logLevels": [ 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "SyslogStream4",
          "streams": [ 
            "Microsoft-Syslog"
          ],
          "facilityNames": [ 
            "mail",
            "uucp"
          ],
          "logLevels": [ 
            "Emergency"
          ]
        }
      ]
    }

“설치” 스크립트 실행

"설치" 스크립트는 실제로 아무것도 설치하지 않지만 로그를 수집하도록 로그 전달자에서 Syslog 디먼을 올바르게 구성합니다.

  1. 커넥터 페이지에서 다음 명령을 실행하여 CEF 수집기를 설치하고 적용합니다. 옆에 있는 복사 아이콘을 선택하여 아래에 표시된 명령줄을 복사합니다.

    커넥터 페이지의 명령줄을 보여 주는 스크린샷.

    여기에서 복사할 수도 있습니다.

    sudo wget -O Forwarder_AMA_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Forwarder_AMA_installer.py&&sudo python Forwarder_AMA_installer.py
    
  2. AMA를 설치한 로그 전달자 컴퓨터에 로그인합니다.

  3. 마지막 단계에서 복사한 명령을 붙여넣어 설치 스크립트를 시작합니다.
    설치 스크립트는 필수 프로토콜을 사용하도록 rsyslog 또는 syslog-ng 디먼을 구성하고 디먼을 다시 시작합니다. 스크립트는 포트 514를 열어 UDP 및 TCP 프로토콜 모두에서 들어오는 메시지를 수신 대기합니다. 이 설정을 변경하려면 컴퓨터에서 실행되는 디먼 유형에 따라 Syslog 디먼 구성 파일을 참조하세요.

    • Rsyslog: /etc/rsyslog.conf
    • Syslog-ng: /etc/syslog-ng/syslog-ng.conf

    참고 항목

    에이전트가 작동할 수 없는 전체 디스크 시나리오를 방지하려면 불필요한 로그를 저장하지 않도록 syslog-ng 또는 rsyslog 구성을 설정하는 것이 좋습니다. 전체 디스크 시나리오는 설치된 AMA의 함수를 방해합니다. RSyslog 또는 Syslog-ng에 대해 자세히 알아봅니다.

커넥터 테스트

  1. syslog 디먼이 UDP 포트에서 실행 중이고 AMA가 수신 대기 중인지 유효성을 검사하려면 다음 명령을 실행합니다.

    netstat -lnptv
    

    포트 514에서 수신 대기 중인 rsyslog 또는 syslog-ng 디먼이 표시되어야 합니다.

  2. 로거 또는 연결된 디바이스에서 보낸 메시지를 캡처하려면 백그라운드에서 다음 명령을 실행합니다.

    tcpdump -i any port 514 -A -vv &
    
  3. 유효성 검사를 완료한 후 tcpdump를 중지하는 것이 좋습니다. fg를 입력한 다음 Ctrl+C를 선택합니다.

  4. 데모 메시지를 보내려면 다음 중 하나를 수행합니다.

    • netcat 유틸리티를 사용합니다. 이 예에서 유틸리티는 newline 스위치가 꺼진 상태에서 echo 명령을 통해 게시된 데이터를 읽습니다. 그런 다음 유틸리티는 시간 제한 없이 localhost의 UDP 포트 514에 데이터를 씁니다. netcat 유틸리티를 실행하려면 추가 패키지를 설치해야 할 수 있습니다.

      echo -n "<164>CEF:0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|1|rt=$common=event-formatted-receive_time" | nc -u -w0 localhost 514
      
    • 로거를 사용합니다. 이 예는 CEF RFC 형식으로 로컬 호스트의 포트 514에 심각도 수준 Warninglocal 4 기능에 메시지를 기록합니다. -t--rfc3164 플래그는 예상되는 RFC 형식을 준수하는 데 사용됩니다.

      logger -p local4.warn -P 514 -n 127.0.0.1 --rfc3164 -t CEF "0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|1|rt=$common=event-formatted-receive_time"
      
  5. 커넥터가 올바르게 설치되었는지 확인하려면 다음 명령 중 하나를 사용하여 문제 해결 스크립트를 실행합니다.

    • CEF 로그의 경우 다음을 실행합니다.

       sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --cef
      
    • Cisco ASA(적응형 보안 어플라이언스) 로그의 경우 다음을 실행합니다.

      sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --asa
      
    • Cisco FTD(Firepower Threat Defense) 로그의 경우 다음을 실행합니다.

      sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --ftd