Microsoft IAS / 네트워크 정책 서버 (NPS) 로그 수집
이 문서에서는 Microsoft Azure Blob Storage V2를 사용하여 Google SecOps 피드를 설정하여 Microsoft 인터넷 인증 서비스 (IAS) / 네트워크 정책 서버 (NPS) 로그를 수집하는 방법을 설명합니다.
Microsoft 네트워크 정책 서버 (NPS)는 RADIUS (원격 인증 다이얼인 사용자 서비스) 서버 및 프록시의 Microsoft 구현입니다. NPS를 사용하면 VPN 연결, 무선 액세스 포인트, 802.1X 인증 스위치, 다이얼업 원격 액세스의 네트워크 액세스 인증, 승인, 계정을 중앙에서 관리할 수 있습니다. NPS는 이전 버전의 Windows Server 2003에서 인터넷 인증 서비스 (IAS)로 알려져 있었습니다. NPS는 기본 클라우드 내보내기 기능 없이 Windows Server 역할로 실행되므로 이 가이드에서는 Azure Monitor 에이전트를 사용하여 로컬 파일 시스템에서 NPS 계정 로그 파일을 수집하고 Log Analytics 작업 공간을 통해 Azure Blob Storage로 라우팅합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
Google SecOps 인스턴스
다음 권한이 있는 Microsoft Azure 포털에 대한 액세스 권한:
- 스토리지 계정 만들기
- Log Analytics 작업공간 만들기 및 관리
- 데이터 수집 규칙 만들기
- 데이터 내보내기 규칙 만들기
- 액세스 키 관리
NPS 역할이 설치된 Windows Server 2016 이상
NPS 서버에 대한 관리 액세스
NPS 서버에서 Azure로의 네트워크 연결 (포트 443의 HTTPS 아웃바운드)
NPS 회계 및 로깅 구성
NPS가 인증 및 계정 요청을 IAS 형식의 로컬 텍스트 파일에 기록하도록 사용 설정합니다.
NPS 회계 로그 사용 설정
- NPS를 실행하는 Windows Server에서 서버 관리자를 엽니다.
- 도구 > 네트워크 정책 서버로 이동합니다.
- NPS 콘솔 트리에서 계정을 클릭합니다.
- 세부정보 창의 회계에서 회계 구성을 클릭합니다.
- 회계 구성 마법사에서 로컬 컴퓨터의 텍스트 파일에 로깅을 선택하고 다음을 클릭합니다.
- 로그 파일 속성 구성 페이지에서 다음을 구성합니다.
- 다음 정보 로깅 섹션에서 로깅할 정보의 체크박스를 선택합니다.
- 회계 요청
- 인증 요청
- 주기적 회계 상태
- 주기적 인증 상태
- 로그 파일을 사용할 수 없을 때 NPS가 처리를 중지하도록 하려면 로깅 실패 작업 섹션에서 로깅에 실패하면 연결 요청을 삭제합니다를 선택합니다. 로깅이 실패하더라도 NPS가 계속 처리하도록 하려면 선택하지 않은 상태로 둡니다.
- 다음 정보 로깅 섹션에서 로깅할 정보의 체크박스를 선택합니다.
- 다음을 클릭합니다.
- 요약을 검토하고 Finish(완료)를 클릭합니다.
로그 파일 속성 구성
- NPS 콘솔 트리에서 계정을 클릭합니다.
- 세부정보 창의 로그 파일 속성에서 로그 파일 속성 변경을 클릭합니다.
- 로그 파일 탭을 클릭합니다.
- 디렉터리 필드에서 로그 파일 위치를 확인하거나 변경합니다.
- 기본 위치:
%systemroot%\System32\LogFiles - 더 나은 구성을 위해 전용 디렉터리 (예:
C:\NPSLogs)를 지정하세요.
- 기본 위치:
형식 드롭다운에서 IAS (기존)를 선택합니다.
새 로그 파일 만들기에서 로그 순환 간격을 선택합니다.
- 매일 (대부분의 환경에 권장)
- 매주
- 매월
- 없음 (파일 크기 무제한)
- 로그 파일이 이 크기에 도달하면 (MB 단위로 크기 지정)
디스크 공간이 부족할 때 NPS가 오래된 로그 파일을 삭제하도록 하려면 디스크가 가득 차면 오래된 로그 파일 삭제를 선택합니다.
확인을 클릭하여 구성을 저장합니다.
로그 파일이 구성된 디렉터리에 생성되는지 확인합니다.
Azure 스토리지 계정 구성
스토리지 계정 만들기
- Azure 포털에서 스토리지 계정을 검색합니다.
- + 만들기를 클릭합니다.
다음 구성 세부정보를 제공합니다.
설정 값 구독 Azure 구독 선택 리소스 그룹 기존 항목 선택 또는 새로 만들기 스토리지 계정 이름 고유한 이름 (예: npsiaslogs)을 입력합니다.리전 리전을 선택합니다 (예: East US).성능 표준 (권장) 중복성 GRS (지리적 중복 스토리지) 또는 LRS (로컬 중복 스토리지) 검토 + 만들기를 클릭합니다.
계정 개요를 검토하고 만들기를 클릭합니다.
배포가 완료될 때까지 기다립니다.
스토리지 계정 사용자 인증 정보 가져오기
- 방금 만든 스토리지 계정으로 이동합니다.
- 왼쪽 탐색에서 보안 + 네트워킹 아래의 액세스 키를 선택합니다.
- 키 표시를 클릭합니다.
- 나중에 사용할 수 있도록 다음을 복사하여 저장합니다.
- 스토리지 계정 이름: 스토리지 계정 이름 (예:
npsiaslogs) - 키 1 또는 키 2: 공유 액세스 키 (base-64 인코딩의 512비트 무작위 문자열)
- 스토리지 계정 이름: 스토리지 계정 이름 (예:
Blob 서비스 엔드포인트 가져오기
- 동일한 스토리지 계정의 왼쪽 탐색에서 엔드포인트를 선택합니다.
- Blob 서비스 엔드포인트 URL을 복사하여 저장합니다.
- 예:
https://npsiaslogs.blob.core.windows.net/
- 예:
로그 애널리틱스 작업공간 만들기
Azure Blob Storage로 내보내기 전에 Azure Monitor 에이전트에서 맞춤 텍스트 로그를 수신하려면 Log Analytics 작업공간이 필요합니다.
- Azure 포털에서 Log Analytics 작업 영역을 검색합니다.
- + 만들기를 클릭합니다.
다음 구성 세부정보를 제공합니다.
설정 값 구독 Azure 구독 선택 리소스 그룹 스토리지 계정과 동일한 리소스 그룹을 선택합니다. 이름 고유한 이름 (예: nps-ias-workspace)을 입력합니다.리전 스토리지 계정과 동일한 리전을 선택합니다. Review + Create(검토 + 만들기)를 클릭합니다.
설정을 검토하고 만들기를 클릭합니다.
배포가 완료될 때까지 기다립니다.
맞춤 로그 테이블 만들기
Log Analytics 작업공간에 NPS/IAS 로그 데이터를 저장할 맞춤 테이블을 만듭니다.
- Azure 포털에서 방금 만든 Log Analytics 작업공간으로 이동합니다.
- 왼쪽 탐색 메뉴의 설정에서 표를 선택합니다.
- + 만들기 > 새 맞춤 로그 (DCR 기반)를 클릭합니다.
- 테이블 이름 필드에
NpsIasLogs을 입력합니다. 전체 테이블 이름은NpsIasLogs_CL입니다. 만들기를 클릭합니다.
NPS 서버를 Azure Arc에 온보딩
NPS는 온프레미스 Windows Server에서 실행되므로 Azure Monitor 에이전트를 설치하기 전에 서버를 Azure Arc에 온보딩해야 합니다.
Azure Arc에 NPS 서버 등록
- Azure 포털에서 Azure Arc를 검색합니다.
- 왼쪽 탐색 메뉴의 인프라에서 머신을 선택합니다.
- + 추가/생성 > 머신 추가를 클릭합니다.
- Azure Arc로 서버 추가 섹션의 단일 서버 추가에서 스크립트 생성을 선택합니다.
- 다음 구성 세부정보를 제공합니다.
- 구독: Azure 구독을 선택합니다.
- 리소스 그룹: 이전에 사용한 것과 동일한 리소스 그룹을 선택합니다.
- 리전: Log Analytics 작업공간과 동일한 리전을 선택합니다.
- 운영체제: Windows를 선택합니다.
- 연결 방법: 공개 엔드포인트 (또는 네트워크에서 필요한 경우 프록시 서버)를 선택합니다.
- 스크립트 다운로드 및 실행을 클릭합니다.
- 생성된 PowerShell 스크립트를 NPS 서버에 복사합니다.
NPS 서버에서 관리자 권한으로 PowerShell을 열고 스크립트를 실행합니다.
& '.\OnboardingScript.ps1'화면에 표시된 안내에 따라 Azure로 인증하고 온보딩을 완료합니다.
스크립트가 완료되면 Azure 포털 > Azure Arc > 머신으로 돌아가서 NPS 서버가 연결됨 상태로 표시되는지 확인합니다.
Azure Monitor 에이전트 설치
Arc 지원 서버에 Azure Monitor 에이전트 설치
- Azure 포털에서 Azure Arc > Machines(머신)로 이동합니다.
- 머신 목록에서 NPS 서버를 선택합니다.
- 왼쪽 탐색에서 설정 아래의 확장 프로그램을 선택합니다.
- + 추가를 클릭합니다.
- 확장 프로그램 목록에서 Azure Monitor 에이전트를 선택합니다.
- 다음을 클릭합니다.
- 검토 + 만들기를 클릭합니다.
- 만들기를 클릭합니다.
확장 프로그램 설치가 완료될 때까지 기다립니다. 상태가 프로비저닝 성공으로 변경됩니다.
NPS 로그 파일의 데이터 수집 규칙 만들기
데이터 수집 규칙 (DCR)은 Azure Monitor 에이전트가 NPS IAS 로그 파일을 수집하여 Log Analytics 작업공간으로 전송하도록 지시합니다.
- Azure 포털에서 모니터링을 검색합니다.
- 왼쪽 탐색 메뉴의 설정에서 데이터 수집 규칙을 선택합니다.
- + 만들기를 클릭합니다.
- 기본 탭에서 다음 구성 세부정보를 제공합니다.
- 규칙 이름:
dcr-nps-ias-logs를 입력합니다. - 구독: Azure 구독을 선택합니다.
- 리소스 그룹: 이전에 사용한 것과 동일한 리소스 그룹을 선택합니다.
- 리전: Log Analytics 작업공간과 동일한 리전을 선택합니다.
- 플랫폼 유형: Windows를 선택합니다.
- 규칙 이름:
- 다음: 리소스를 클릭합니다.
- 리소스 탭에서 다음 단계를 따르세요.
- + 리소스 추가를 클릭합니다.
- 리소스 그룹을 펼치고 Azure Arc 지원 NPS 서버를 선택합니다.
- 적용을 클릭합니다.
- 다음: 수집 및 배송을 클릭합니다.
수령 및 배송 탭에서 다음을 수행합니다.
- + 데이터 소스 추가를 클릭합니다.
- 데이터 소스 유형 드롭다운에서 맞춤 텍스트 로그를 선택합니다.
파일 패턴 필드에 NPS 로그 파일의 경로를 입력합니다.
C:\Windows\System32\LogFiles\IN*.log표 이름 드롭다운에서
NpsIasLogs_CL를 선택합니다.레코드 구분 기호 필드에서 줄 끝을 선택합니다.
변환 필드에
source를 입력하여 원시 로그 데이터를 변경하지 않고 전송합니다.데이터 소스 추가를 클릭합니다.
대상 섹션에서 만든 Log Analytics 작업 공간이 나열되어 있는지 확인합니다.
다음: 검토 + 만들기를 클릭합니다.
구성을 검토하고 만들기를 클릭합니다.
Azure Blob Storage로 데이터 내보내기 구성
Log Analytics 작업 공간에서 Azure Blob Storage로 NPS/IAS 로그 데이터를 지속적으로 내보내는 데이터 내보내기 규칙을 만듭니다.
데이터 내보내기 규칙 만들기
- Azure 포털에서 생성한 Log Analytics 작업공간으로 이동합니다.
- 왼쪽 탐색 메뉴의 설정에서 데이터 내보내기를 선택합니다.
- + 새 내보내기 규칙을 클릭합니다.
- 기본 탭에서 다음 구성 세부정보를 제공합니다.
- 규칙 이름:
export-nps-ias-logs를 입력합니다. - 대상: 스토리지 계정을 선택합니다.
- 규칙 이름:
- 다음: 소스를 클릭합니다.
- 소스 탭에서 NpsIasLogs_CL 테이블을 선택합니다.
- 다음: 대상을 클릭합니다.
- 대상 탭에서 다음을 수행합니다.
- 구독: 스토리지 계정이 포함된 구독을 선택합니다.
- 스토리지 계정: 이전에 만든 스토리지 계정을 선택합니다 (예:
npsiaslogs).
- 검토 + 만들기를 클릭합니다.
구성을 검토하고 만들기를 클릭합니다.
Microsoft IAS 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정 > 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다(예:
Microsoft IAS NPS Logs). - 소스 유형으로 Microsoft Azure Blob Storage V2를 선택합니다.
- 로그 유형으로 Microsoft IAS를 선택합니다.
- 다음을 클릭합니다.
다음 입력 매개변수의 값을 지정합니다.
- Azure URI: 컨테이너 경로와 함께 Blob 서비스 엔드포인트 URL을 입력합니다.
https://npsiaslogs.blob.core.windows.net/am-NpsIasLogs_CL/- 다음을 바꿉니다.
npsiaslogs: Azure 스토리지 계정 이름am-NpsIasLogs_CL: 데이터 내보내기 규칙에 의해 자동으로 생성된 blob 컨테이너 이름입니다.
- 소스 삭제 옵션: 환경설정에 따라 삭제 옵션을 선택합니다.
- 삭제 안함: 전송 후 파일을 삭제하지 않습니다.
- 전송된 파일 삭제: 전송이 완료되면 파일을 삭제합니다.
- 전송된 파일 및 빈 디렉터리 삭제: 전송이 완료되면 파일과 빈 디렉터리를 삭제합니다.
- 최대 파일 기간: 지난 일수 동안 수정된 파일을 포함합니다 (기본값은 180일).
- 공유 키: 앞에서 스토리지 계정에서 캡처한 공유 키 값 (액세스 키)을 입력합니다.
- 애셋 네임스페이스: 애셋 네임스페이스
- 수집 라벨: 이 피드의 이벤트에 적용할 라벨
다음을 클릭합니다.
확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
Azure Storage 방화벽 구성 (사용 설정된 경우)
Azure Storage 계정에서 방화벽을 사용하는 경우 Google SecOps IP 범위를 추가해야 합니다.
- Azure 포털에서 스토리지 계정으로 이동합니다.
- 보안 + 네트워킹에서 네트워킹을 선택합니다.
- 방화벽 및 가상 네트워크에서 선택한 가상 네트워크 및 IP 주소에서 사용 설정됨을 선택합니다.
- 방화벽 섹션의 IP 주소 범위에서 + IP 범위 추가를 클릭합니다.
각 Google SecOps IP 범위를 CIDR 표기법으로 추가합니다.
현재 IP 범위를 가져오려면 다음 단계를 따르세요.
- IP 허용 목록 문서를 참고하세요.
- 또는 피드 관리 API를 사용하여 프로그래매틱 방식으로 검색합니다.
신뢰할 수 있는 서비스 목록의 Azure 서비스가 이 스토리지 계정에 액세스하도록 허용 체크박스가 선택되어 있는지 확인합니다 (Log Analytics 데이터 내보내기가 작동하는 데 필요).
저장을 클릭합니다.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 로직 |
|---|---|---|
| packet_type | additional.fields | 비어 있지 않은 경우 각 필드의 라벨과 병합됨 |
| auth_type | additional.fields | |
| filter_id | additional.fields | |
| framed_netmask | additional.fields | |
| framed_address | additional.fields | |
| framed_protocol | additional.fields | |
| framed_routing | additional.fields | |
| framed_mtu | additional.fields | |
| framed_compression | additional.fields | |
| reason_code | additional.fields | |
| extensible_auth_protocol | additional.fields | |
| service_type | additional.fields | |
| nas_port | additional.fields | |
| reply_message | additional.fields | |
| nas_identifier | additional.fields | |
| device-type | additional.fields | |
| coa-push | additional.fields | |
| audit-session-id | additional.fields | |
| 날짜 | metadata.event_timestamp | 날짜와 시간을 연결한 후 MM/dd/yyyy HH:mm:ss 형식으로 파싱됩니다. |
| 시간 | metadata.event_timestamp | |
| principal_present | metadata.event_type | principal_present 및 target_present인 경우 'GENERIC_EVENT'로 설정한 다음 'NETWORK_CONNECTION'으로 설정하고, principal_present인 경우 'STATUS_UPDATE'로 설정합니다. |
| target_present | metadata.event_type | |
| ac-user-agent | network.http.parsed_user_agent | 파싱에 성공하면 ac-user-agent에서 변환됩니다. |
| ac-user-agent | network.http.user_agent | 값이 직접 복사됨 |
| session_duration | network.session_duration.seconds | 값이 직접 복사된 후 정수로 변환됨 |
| session_id | network.session_id | 값이 직접 복사됨 |
| principal_hostname | principal.asset.hostname | 값이 직접 복사됨 |
| principal_ip | principal.asset.ip | 유효한 IP인 경우 principal_ip의 값, 유효한 IP인 경우 calling_station_id |
| calling_station_id | principal.asset.ip | |
| principal_hostname | principal.hostname | 값이 직접 복사됨 |
| principal_ip | principal.ip | 유효한 IP인 경우 principal_ip의 값, 유효한 IP인 경우 calling_station_id |
| calling_station_id | principal.ip | |
| device-mac | principal.mac | 비어 있지 않은 경우 device-mac의 값 (빼기를 콜론으로 대체한 후), 그렇지 않은 경우 device-public-mac |
| device-public-mac | principal.mac | |
| nat_ip | principal.nat_ip | 값이 직접 복사됨 |
| device-platform | principal.platform | ["Win","win"]인 경우 'WINDOWS', =~ 'mac|iOS'인 경우 'MAC', =~ 'lin'인 경우 'LINUX'로 설정됩니다. |
| device-platform-version | principal.platform_version | 값이 직접 복사됨 |
| device-uid | principal.resource.product_object_id | 값이 직접 복사됨 |
| user_name | principal.user.user_display_name | 값이 직접 복사됨 |
| userid | principal.user.userid | 값이 직접 복사됨 |
| service_name | target.application | 값이 직접 복사됨 |
| computer_name | target.asset.hostname | 값이 직접 복사됨 |
| target_ip | target.asset.ip | 유효한 IP인 경우 target_ip의 값, 유효한 IP인 경우 called_station_id |
| called_station_id | target.asset.ip | |
| computer_name | target.hostname | 값이 직접 복사됨 |
| target_ip | target.ip | 유효한 IP인 경우 target_ip의 값, 유효한 IP인 경우 called_station_id |
| called_station_id | target.ip | |
| target_port | target.port | 값이 직접 복사된 후 정수로 변환됨 |
| metadata.product_name | metadata.product_name | 'MICROSOFT_IAS'로 설정 |
| metadata.vendor_name | metadata.vendor_name | 'MICROSOFT_IAS'로 설정 |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.