IBM Security Access Manager 로그 수집
이 문서에서는 Bindplane을 사용하여 IBM Security Access Manager 로그를 Google Security Operations로 수집하는 방법을 설명합니다.
IBM Verify Identity Access (이전 명칭: IBM Security Access Manager / IBM Security Verify Access)는 액세스 관리, 웹 보안, 인증 서비스를 제공하는 네트워크 어플라이언스 기반 보안 솔루션입니다. 역방향 프록시 아키텍처 (WebSEAL)를 사용하여 웹 기반 리소스의 보안 정책을 적용하고 보안 모니터링에 중요한 감사, 인증, 승인, 시스템 로그를 생성합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Windows Server 2016 이상 또는
systemd가 설치된 Linux 호스트 - Bindplane 에이전트와 IBM Verify Identity Access 어플라이언스 간의 네트워크 연결
- 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인
- IBM Verify Identity Access Local Management Interface (LMI)에 대한 권한 액세스
Google SecOps 수집 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트로 이동합니다.
- 데이터 수집 인증 파일을 다운로드합니다. Bindplane이 설치될 시스템에 파일을 안전하게 저장합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
- 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
Bindplane 에이전트 설치
다음 안내에 따라 Windows 또는 Linux 운영체제에 Bindplane 에이전트를 설치합니다.
Windows 설치
- 명령 프롬프트 또는 PowerShell을 관리자로 엽니다.
다음 명령어를 실행합니다.
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet설치가 완료될 때까지 기다립니다.
다음을 실행하여 설치를 확인합니다.
sc query observiq-otel-collector서비스가 실행 중으로 표시되어야 합니다.
Linux 설치
- 루트 또는 sudo 권한으로 터미널을 엽니다.
다음 명령어를 실행합니다.
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh설치가 완료될 때까지 기다립니다.
다음을 실행하여 설치를 확인합니다.
sudo systemctl status observiq-otel-collector서비스가 활성 (실행 중)으로 표시되어야 합니다.
추가 설치 리소스
추가 설치 옵션 및 문제 해결은 Bindplane 에이전트 설치 가이드를 참고하세요.
syslog를 수집하여 Google SecOps로 전송하도록 Bindplane 에이전트 구성
구성 파일 찾기
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
구성 파일 설정
config.yaml의 전체 콘텐츠를 다음 구성으로 바꿉니다.receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: 'IBM_SAM' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
구성 매개변수
다음 자리표시자를 바꿉니다.
수신기 구성:
listen_address: Bindplane 에이전트가 수신되는 syslog 메시지를 수신하는 IP 주소와 포트입니다.0.0.0.0:514를 사용하여 포트514의 모든 인터페이스에서 수신 대기합니다.514이 이미 사용 중이거나1514과 같은 권한이 없는 포트를 선호하는 경우 포트를 변경합니다.- UDP 대신 TCP를 사용하려면
receivers섹션과pipelines섹션 모두에서udplog을tcplog로 바꿉니다.
내보내기 도구 구성:
creds_file_path: 이전에 다운로드한 수집 인증 파일의 전체 경로입니다.- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: 이전에 복사한 Google SecOps 고객 ID입니다.endpoint: 지역 엔드포인트 URL:- 미국:
malachiteingestion-pa.googleapis.com - 유럽:
europe-malachiteingestion-pa.googleapis.com - 아시아:
asia-southeast1-malachiteingestion-pa.googleapis.com - 전체 목록은 리전 엔드포인트를 참고하세요.
- 미국:
log_type:IBM_SAM로 설정해야 합니다.
구성 파일 저장
수정 후 파일을 저장합니다.
- Linux:
Ctrl+O,Enter,Ctrl+X순으로 누릅니다. - Windows: 파일 > 저장을 클릭합니다.
변경사항을 적용하려면 Bindplane 에이전트를 다시 시작하세요.
Linux에서 Bindplane 에이전트를 다시 시작하려면 다음을 실행하세요.
다음 명령어를 실행합니다.
sudo systemctl restart observiq-otel-collector서비스가 실행 중인지 확인합니다.
sudo systemctl status observiq-otel-collector로그에서 오류를 확인합니다.
sudo journalctl -u observiq-otel-collector -f
Windows에서 Bindplane 에이전트를 다시 시작하려면 다음을 실행하세요.
다음 옵션 중 하나를 선택합니다.
관리자 권한으로 명령 프롬프트 또는 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector서비스 콘솔:
Win+R키를 누르고services.msc를 입력한 다음 Enter 키를 누릅니다.- observIQ OpenTelemetry Collector를 찾습니다.
- 마우스 오른쪽 버튼을 클릭하고 다시 시작을 선택합니다.
서비스가 실행 중인지 확인합니다.
sc query observiq-otel-collector로그에서 오류를 확인합니다.
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
IBM Verify Identity Access에서 syslog 전달 구성
원격 시스템 로그 서버 정의 추가
- IBM Verify Identity Access Local Management Interface (LMI)에 로그인합니다.
- 모니터 > 로그 > 원격 Syslog 전달로 이동합니다.
- 원격 Syslog 전달 페이지에서 추가를 클릭합니다.
- 다음 구성 세부정보를 제공합니다.
- 서버: Bindplane 에이전트 호스트의 IP 주소 또는 호스트 이름을 입력합니다 (예:
192.168.1.100). - 포트: Bindplane 에이전트가 수신 대기하는 포트 번호를 입력합니다 (예:
514). - 프로토콜: Bindplane 에이전트 구성의
udplog수신기와 일치하도록 UDP를 선택합니다.tcplog로 Bindplane 에이전트를 구성한 경우 TCP를 선택합니다. - 형식: syslog 메시지 형식을 선택합니다.
- BSD Syslog 프로토콜 - RFC 3164 형식 (가장 광범위한 호환성에 권장됨)
- Syslog 프로토콜 - RFC 5424 형식입니다.
- 디버그: 문제 해결이 필요한 경우를 제외하고 선택 해제된 상태로 둡니다. 사용 설정하면 애플리케이션 로그 파일 보기 페이지에서 액세스할 수 있는
rsyslog_forwarder로그 파일에 추가 디버그 정보가 작성됩니다.
- 서버: Bindplane 에이전트 호스트의 IP 주소 또는 호스트 이름을 입력합니다 (예:
- 저장을 클릭합니다.
원격 syslog 서버의 로그 소스 구성
- 원격 시스템 로그 전달 페이지에서 생성한 원격 시스템 로그 서버 항목을 선택합니다.
- 소스를 클릭합니다.
- 추가를 클릭하여 로그 소스를 추가합니다.
- 다음 구성 세부정보를 제공합니다.
- 이름: 드롭다운 목록에서 로그 소스를 선택합니다. 사용 가능한 로그 소스는 다음과 같습니다.
- LMI 메시지 - LMI 애플리케이션 메시지
- LMI 추적 - LMI 추적 및 디버그 로그
- LMI 액세스 - LMI HTTP 액세스 로그
- 런타임 메시지 - 런타임 환경 메시지
- 런타임 추적 - 런타임 추적 및 디버그 로그
- 런타임 감사 - 런타임 감사 이벤트 (인증, 승인)
- 런타임 로그 - 런타임 애플리케이션 로그
- WebSEAL - 웹 역방향 프록시 로그 (인스턴스 이름 및 로그 파일을 선택해야 함)
- 인증 서버 - 인증 서버 로그 (인스턴스 이름 및 로그 파일을 선택해야 함)
- 정책 서버 - 정책 서버 로그 (로그 파일을 선택해야 함)
- 내장 사용자 레지스트리 - 내장 LDAP 사용자 레지스트리 로그
- 클러스터 - 클러스터 관리 로그
- 시스템: 운영체제 수준 로그
- DSC - 분산 세션 캐시 로그
- FELB - 프런트엔드 부하 분산기 로그
- 인스턴스 이름: 이 필드는 이름 필드에서 WebSEAL 또는 인증 서버를 선택한 경우에만 사용할 수 있습니다. 드롭다운 목록에서 인스턴스 이름을 선택합니다 (예:
default). - 로그 파일: 이 필드는 이름 필드에서 WebSEAL, 인증 서버, 정책 서버 또는 런타임 로그를 선택한 경우에 사용할 수 있습니다. 드롭다운 목록에서 특정 로그 파일을 선택합니다.
- 태그: 이 로그 소스의 고유한 태그 이름을 입력합니다. 태그에 공백이 포함되어서는 안 됩니다 (예:
WebSEAL_Audit또는RuntimeAudit). - 기능: 전달된 로그 항목의 syslog 기능 카테고리를 선택합니다 (예:
local0,local1,auth,user). - 심각도: 모든 로그 항목을 캡처하려면 정보를 선택합니다.
- 이름: 드롭다운 목록에서 로그 소스를 선택합니다. 사용 가능한 로그 소스는 다음과 같습니다.
- 확인을 클릭합니다.
로그 소스를 추가하려면 전달하려는 소스마다 3~5단계를 반복합니다.
저장을 클릭하여 로그 소스 구성을 적용합니다.
변경사항을 활성화하려면 페이지 상단으로 이동하여 대기 중인 변경사항 배포를 클릭합니다. syslog 전달 구성은 배포될 때까지 활성화되지 않습니다.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 로직 |
|---|---|---|
| sha256_value | additional.fields | {key: 'sha256_value', value: {string_value: sha256_value}} 및 {key: 'connection_type', value: {string_value: connection_type}} 맵과 병합됨 |
| connection_type | additional.fields | |
| dvc_ip | intermediary.hostname | dvc_ip가 유효한 IP가 아닌 경우 값이 직접 복사됨 |
| dvc_ip | intermediary.ip | 유효한 IP인 경우 dvc_ip로 설정합니다. 유효하고 src_ip 또는 dst_ip와 같지 않고 비어 있지 않고 '-'가 아닌 ip_address의 추가 IP를 병합합니다. |
| ip_address | intermediary.ip | |
| ts | metadata.collected_timestamp | yyyy-MM-ddTHH:mm:ss를 사용하여 ts2에서 파싱됩니다(있는 경우). 그렇지 않으면 ISO8601, MMM dd HH:mm:ss, MMM d HH:mm:ss를 사용하여 ts에서 파싱됩니다. |
| ts2 | metadata.collected_timestamp | |
| 설명 | metadata.description | 값이 직접 복사됨 |
| 타임스탬프 | metadata.event_timestamp | 날짜 형식 dd/MMM/yyyy:HH:mm:ss Z 또는 yyyy-MM-dd-HH:mm:ss.SSSZZI를 사용하여 파싱됩니다. |
| src_ip | metadata.event_type | 주 구성원 (src_ip 또는 src_host)과 대상 (dst_ip 또는 target_hostname), http (method 또는 response_code)가 있는 경우 'NETWORK_HTTP', 주 구성원과 대상이 있는 경우 'NETWORK_CONNECTION', 주 구성원이 있는 경우 'STATUS_UPDATE', 그 외의 경우 'GENERIC_EVENT'로 설정됩니다. |
| src_host | metadata.event_type | |
| dst_ip | metadata.event_type | |
| target_hostname | metadata.event_type | |
| 메서드 | metadata.event_type | |
| response_code | metadata.event_type | |
| product_event_type | metadata.product_event_type | 값이 직접 복사됨 |
| metadata.product_name | metadata.product_name | 'IBM_SAM'으로 설정 |
| metadata.vendor_name | metadata.vendor_name | 'IBM'으로 설정 |
| proto | network.application_protocol | HTTP, HTTPS인 경우 값이 직접 복사됨 |
| 버전 | network.application_protocol_version | 값이 직접 복사됨 |
| 메서드 | network.http.method | 비어 있지 않으면 method_value의 값, 그렇지 않으면 method |
| method_value | network.http.method | |
| response_code | network.http.response_code | 정수로 변환됨 |
| ip_protocol_value | network.ip_protocol | TCP, UDP, ICMP인 경우 값이 직접 복사됨 |
| rcv_bytes | network.received_bytes | uint로 변환됨 |
| sent_bytes | network.sent_bytes | uint로 변환됨 |
| request_id | network.session_id | 값이 직접 복사됨 |
| src_application | principal.application | 값이 직접 복사됨 |
| src_host | principal.asset.hostname | 값이 직접 복사됨 |
| src_ip | principal.asset.ip | 비어 있지 않고, 공백, null, N/A, -가 아닌 경우 값이 바로 복사됩니다. |
| file_name | principal.file.full_path | 값이 직접 복사됨 |
| src_host | principal.hostname | 값이 직접 복사됨 |
| src_ip | principal.ip | 비어 있지 않고, 공백, null, N/A, -가 아닌 경우 값이 바로 복사됩니다. |
| src_port | principal.port | 정수로 변환됨 |
| pid | principal.process.pid | 값이 직접 복사됨 |
| src_resource | principal.resource.name | 값이 직접 복사됨 |
| user_name | principal.user.userid | 인증되지 않았거나 비어 있지 않은 경우 값이 직접 복사됨 |
| 설명 | security_result.action | 설명에 '보안 연결을 설정할 수 없음' 또는 '확인할 수 없음' 또는 '만료됨'이 포함된 경우 'BLOCK'으로 설정됩니다. |
| 줄이는 것을 | security_result.severity | 값이 직접 복사되었으며 WARNING이 MEDIUM에 매핑됨 |
| user_name | security_result.summary | user_name == 'unauthenticated'인 경우 'unauthenticated'로 설정됩니다. |
| target_hostname | target.asset.hostname | 값이 직접 복사됨 |
| dst_ip | target.asset.ip | 비어 있지 않고, 공백, null, N/A, -가 아닌 경우 값이 바로 복사됩니다. |
| target_hostname | target.hostname | 값이 직접 복사됨 |
| dst_ip | target.ip | 비어 있지 않고, 공백, null, N/A, -가 아닌 경우 값이 바로 복사됩니다. |
| url | target.url | url 및 url1에서 연결됨 |
| url1 | target.url | |
ip_protocol_value |
event.idm.read_only_udm.network.ip_protocol |
변경 로그에서 매핑됨 |
method_value |
event.idm.read_only_udm.network.http.method |
변경 로그에서 매핑됨 |
sha256_value |
event.idm.read_only_udm.additional.fields |
변경 로그에서 매핑됨 |
변경 로그
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.