CA ACF2 로그 수집
이 문서에서는 Bindplane 에이전트를 사용하여 CA ACF2 로그를 Google Security Operations로 수집하는 방법을 설명합니다.
z/OS용 Broadcom ACF2 (Access Control Facility 2)는 IBM z/OS 시스템에 대한 액세스 제어, 인증, 감사를 제공하는 메인프레임 보안 제품입니다. ACF2는 인증 시도, 데이터 세트 액세스 위반, 리소스 액세스 이벤트, TSO 명령 로깅, 데이터베이스 수정 등 보안 이벤트를 IBM 시스템 관리 기능 (SMF) 레코드 (기본 유형 230)에 로깅합니다. 이러한 SMF 레코드는 BMC AMI Defender for z/OS와 같은 서드 파티 에이전트를 사용하여 Chronicle로 전달해야 합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Windows Server 2016 이상 또는
systemd가 설치된 Linux 호스트 - Bindplane 에이전트와 BMC AMI Defender for z/OS 에이전트 간의 네트워크 연결
- 프록시 뒤에서 실행하는 경우 Bindplane 에이전트 요구사항에 따라 방화벽 포트가 열려 있는지 확인합니다.
- ACF2가 활성화된 z/OS LPAR에 BMC AMI Defender for z/OS가 설치되어 실행 중임
amihlq.CZAGENT.PARM데이터 세트에서 BMC AMI Defender 매개변수 파일을 수정할 수 있는 액세스 권한- z/OS에서 CZAGENT 시작 태스크를 시작하거나 수정할 권한
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서비스가 active (running)으로 표시되어야 합니다.
추가 설치 리소스
추가 설치 옵션 및 문제 해결은 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/acf2_logs: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: CA_ACF2 raw_log_field: body ingestion_labels: env: production source: acf2 service: pipelines: logs/acf2_to_chronicle: receivers: - udplog exporters: - chronicle/acf2_logs다음 자리표시자를 바꿉니다.
수신기 구성:
listen_address: UDP 포트 514에서 모든 인터페이스를 수신하려면0.0.0.0:514로 설정합니다.- 루트가 아닌 사용자로 실행되는 Linux 시스템의 경우 포트
1514이상을 사용합니다. - 이 포트를 BMC AMI Defender SERVER 문 구성과 일치시킵니다.
- 루트가 아닌 사용자로 실행되는 Linux 시스템의 경우 포트
내보내기 도구 구성:
creds_file_path: 수집 인증 파일의 전체 경로- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id:YOUR_CUSTOMER_ID을customer ID로 바꿉니다. 자세한 내용은 Google SecOps 고객 ID 가져오기를 참고하세요.endpoint: 리전 엔드포인트 URL:- 미국:
malachiteingestion-pa.googleapis.com - 유럽:
europe-malachiteingestion-pa.googleapis.com - 아시아:
asia-southeast1-malachiteingestion-pa.googleapis.com - 전체 목록은 리전 엔드포인트를 참고하세요.
- 미국:
log_type:CA_ACF2(ACF2 로그의 Chronicle 수집 라벨)로 설정ingestion_labels: 로그를 분류하는 선택적 라벨 (필요에 따라 맞춤설정)
구성 파일 저장
수정 후 파일을 저장합니다.
- 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"
ACF2 SMF 레코드를 전달하도록 BMC AMI Defender for z/OS 구성
$$$SERVR parameter member
- Sign in to the z/OS system using TSO/ISPF or a 3270 emulator.
- Navigate to the BMC AMI Defender parameter library:
- Enter
ISPFat the TSO READY prompt. - Select option 2 (Edit).
- In the ISPF Library field, enter the data set name:
amihlq.CZAGENT.PARM(replaceamihlqwith your installation high-level qualifier). - Press Enter.
- Enter
- Edit the $$$SERVR 멤버를 수정합니다.
- $$$SERVR member.
- Press Enter.
- Locate the SERVER statement section (approximately line 40-60).
- Uncomment one of the SERVER statements by removing the leading semicolon (
;). Configure the SERVER statement with the Bindplane agent IP address and port:
SERVER bindplane-host-ip:514 TRANS(UDP) MAXMSG(2000)- Replace
bindplane-host-ipwith the IP address of the Bindplane agent host (for example,192.168.1.100). - If using a non-standard port (for example,
1514), specify:bindplane-host-ip:1514. TRANS(UDP)specifies UDP transport protocol (recommended for syslog).MAXMSG(2000)sets the maximum message length to 2000 bytes (ACF2 records may require larger sizes).
- Replace
Verify the OPTIONS statement for syslog format:
- Scroll up to locate the OPTIONS statements (approximately line 10-30).
Ensure one of the following OPTIONS statements is uncommented based on your preferred format:
OPTIONS IF(RFC3164) SIEM(RFC3164) TIMESTAMP INSTNAME(SIEM.Agent)- RFC3164: Standard syslog format (recommended for Chronicle)
- CEF: Common Event Format (alternative)
- LEEF: Log Event Extended Format (alternative)
- JSON: JSON format (alternative)
Save the changes:
- Press F3 to exit the editor.
- Type
SAVEwhen prompted. - Press Enter.
Edit the $$$CONFG 매개변수 구성원 옆에 E를 입력하여 ACF2 SMF 레코드 수집을 사용 설정
amihlq.CZAGENT.PARM데이터 세트 구성원 목록에서 $$$CONFG member:- Type
Enext to the $$$CONFG 구성원을 수정합니다. - Enter를 누릅니다.
- Type
ACF2 SMF 레코드 선택 스위치를 찾습니다 (
ACF2또는SMF 230검색).ACF2의 SELECT 문을 주석 해제합니다.
SELECT IF(ACF2) SMF(ACF2)- 이렇게 하면 ACF2 SMF 레코드 (기본 유형 230)를 수집할 수 있습니다.
- 사이트에서 ACF2에 다른 SMF 레코드 유형을 사용하는 경우 TSO에서
ACF SHOW SYSTEMS명령어를 사용하여 유형을 확인하세요.
변경사항을 저장합니다.
- F3을 눌러 편집기를 종료합니다.
- 메시지가 표시되면
SAVE를 입력합니다. - Enter를 누릅니다.
amihlq.CZAGENT.PARM데이터 세트 구성원 목록에서 $$$ACF2 or SMFACF2 exists.If the member does not exist, create it:
- Type
C(Create) on the command line. - Enter the member name:
$$$ACF2.
- Type
SMF ACF2 문 매개변수 구성원 만들기 또는 수정
구성원을 수정하고 다음 SMF ACF2 문을 추가합니다.
SMF ACF2(230) FACILITY(SECURITY4) SEVERITY(INFORMATIONAL)
ACF2(230): ACF2의 SMF 레코드 유형을 지정합니다 (기본값은 230임.ACF SHOW SYSTEMS로 확인).FACILITY(SECURITY4): syslog 기능을 보안 (4)으로 설정합니다.SEVERITY(INFORMATIONAL): 기본 심각도를 Informational로 설정합니다.- 잘못된 비밀번호 또는 권한 위반은 심각도 오류와 함께 자동으로 전송됩니다.
- 리소스 위반은 심각도 ERROR로 자동 전송됩니다.
원하는 경우 특정 ACF2 하위 유형과 심각도를 구성합니다.
SMF ACF2(230) +
FACILITY(SECURITY4) +
SEVERITY(INFORMATIONAL) +
SUBTYPES(P SEV(ERROR)) +
SUBTYPES(V SEV(ERROR)) +
SUBTYPES(D SEV(ERROR))
- 하위 유형 P: 비밀번호 또는 권한 이벤트가 잘못됨 (오류 심각도)
- 하위 유형 V: 리소스 위반 (오류 심각도)
- 하위 유형 D: 데이터 세트 액세스 위반 (오류 심각도)
변경사항을 저장합니다.
- F3을 눌러 편집기를 종료합니다.
- 메시지가 표시되면
SAVE를 입력합니다. - Enter를 누릅니다.
BMC AMI Defender 매개변수 파일 새로고침
- ISPF를 종료하고 TSO READY 프롬프트로 돌아갑니다.
MODIFY 명령어를 실행하여 파라미터 파일을 다시 로드합니다.
F CZAGENT,PARMS- 다른 경우
CZAGENT을 BMC AMI Defender 시작된 작업 이름으로 바꿉니다. - 이 명령어는 에이전트를 중지하지 않고 매개변수 파일을 다시 로드합니다.
- 다른 경우
CZAPRINT 출력을 확인하여 구성을 확인합니다.
- ISPF에서 옵션 3.4 (DSLIST)를 선택합니다.
- 데이터 세트 이름 패턴 (
CZAGENT.CZAPRINT또는 사이트별 이름 지정 규칙)을 입력합니다. - Enter를 누릅니다.
- 최신 CZAPRINT 데이터 세트 옆에
B(찾아보기)를 입력합니다. - Enter를 누릅니다.
syslog 서버에 대한 연결이 성공했음을 나타내는 메시지를 검색합니다.
CZA0070I Connected to server bindplane-host-ip:514CZA0100I SMF ACF2 statement processed
CZAGENT 시작 작업이 실행되고 있지 않으면 다음을 실행합니다.
S CZAGENT
ACF2 로그 전달 확인
테스트 ACF2 보안 이벤트 생성:
- TSO에서 액세스 권한이 없는 데이터 세트에 액세스하려고 합니다.
- 유효하지 않은 비밀번호로 로그온을 시도합니다 (테스트 계정 사용).
- ACF2에 의해 로깅된 TSO 명령어를 실행합니다.
Bindplane 에이전트 로그를 확인하여 ACF2 syslog 메시지를 수신했는지 확인합니다.
Linux:
sudo journalctl -u observiq-otel-collector -f | grep ACF2Windows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log" | findstr ACF2
Google SecOps 콘솔에 로그인하여 ACF2 로그가 수집되고 있는지 확인합니다.
- 검색 > UDM 검색으로 이동합니다.
다음 쿼리를 입력합니다.
metadata.log_type = "CA_ACF2"검색 결과에 ACF2 보안 이벤트가 표시되는지 확인합니다.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 논리 |
|---|---|---|
| extensions.auth.mechanism | 사용된 인증 메커니즘입니다. | |
| extensions.auth.type | 인증 유형입니다. | |
| 합계 | metadata.description | 이벤트에 대한 설명입니다. |
| metadata.event_type | 이벤트 유형입니다. | |
| event_type, cat | metadata.product_event_type | 제품별 이벤트 유형입니다. |
| product_version | metadata.product_version | 제품 버전입니다. |
| 터미널 | principal.hostname | 주 구성원과 연결된 호스트 이름입니다. |
| name | principal.user.user_display_name | 사용자의 표시 이름입니다. |
| usrName | principal.user.userid | 사용자 ID입니다. |
| security_result.action | 보안 시스템에서 취한 조치입니다. | |
| security_result.category | 보안 결과의 카테고리입니다. | |
| 클래스 | security_result.category_details | 보안 결과 카테고리에 관한 추가 세부정보입니다. |
| reason | security_result.severity | 보안 결과의 심각도 수준입니다. |
| reason | security_result.severity_details | 자세한 심각도 정보입니다. |
| logstr | security_result.summary | 보안 결과 요약입니다. |
| job_id | target.application | 타겟팅되는 애플리케이션입니다. |
| job_group | target.group.group_display_name | 그룹의 표시 이름입니다. |
| target.namespace | 타겟의 네임스페이스입니다. | |
| dsn | target.resource.name | 리소스 이름입니다. |
| vol | target.resource.parent | 상위 리소스입니다. |
| res, dsn | target.resource.product_object_id | 제품별 객체 식별자입니다. |
| target.resource.resource_type | 리소스 유형 | |
| name | target.user.user_display_name | 타겟 사용자의 표시 이름입니다. |
| usrName | target.user.userid | 타겟 사용자의 사용자 ID입니다. |
| product_name | metadata.product_name | 이벤트를 생성하는 제품의 이름입니다. |
| vendor_name | metadata.vendor_name | 공급업체 이름입니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.