Netgate pfSense 로그 수집
다음에서 지원:
Google SecOps
SIEM
이 문서에서는 Google Security Operations 전달자를 사용하여 Netgate pfSense 로그를 수집하는 방법을 설명합니다.
자세한 내용은 Google SecOps에 데이터 수집을 참조하세요.
수집 라벨은 원시 로그 데이터를 구조화된 UDM 형식으로 정규화하는 파서를 식별합니다. 이 문서의 정보는 PFSENSE
수집 라벨이 있는 파서에 적용됩니다.
Netgate pfSense 구성
- 관리자 사용자 인증 정보로 pfSense 인터페이스에 로그인합니다.
- 전역 로그 설정에서 다음을 수행합니다.
- 상태 > 시스템 로그 > 설정을 선택합니다.
- 설정 탭에서 일반 로깅 옵션을 선택하고 다음을 실행합니다.
- 로그 메시지 형식 필드에서 syslog (RFC 5424, RFC 3339 마이크로초 정밀도 타임스탬프 포함)를 선택합니다.
- 방화벽 기본 차단 로그 필드에서 다음 체크박스를 선택합니다.
- 규칙 세트의 기본 차단 규칙과 일치하는 패킷 로깅
- 규칙 집합에 설정된 기본 패스 규칙에서 일치하는 로그 패킷
- '블록 에러 네트워크' 규칙에 의해 차단된 패킷 로깅
- '비공개 네트워크 차단' 규칙에 의해 차단된 패킷 로깅
- 새 설정을 저장하려면 저장을 클릭합니다.
방화벽 로그를 Google SecOps로 전송
- 전역 로그 설정에서 상태 > 시스템 로그 > 설정을 선택합니다.
- 설정 탭에서 원격 로깅 옵션을 선택하고 다음을 실행합니다.
- 원격 로깅 사용 설정 필드에서 원격 syslog 서버로 로그 메시지 전송 체크박스를 선택합니다.
- 소스 주소 입력란의 기본값은 Any로 둡니다.
- IP 프로토콜 필드에서 소스 주소가 기본값으로 선택된 경우 IP 주소를 지정할 필요가 없습니다. 그렇지 않으면 IP 주소를 입력합니다.
- 원격 로그 서버에서 Google SecOps 포워더 IP 주소를 지정합니다.
- 원격 syslog 콘텐츠에서 방화벽 이벤트 체크박스를 선택합니다.
- 변경사항을 저장하려면 저장을 클릭합니다.
Netgate pfSense 로그를 수집하도록 Google SecOps 전달자 구성
- SIEM 설정 > 전달자를 선택합니다.
- 새 전달자 추가를 클릭합니다.
- 전달자 이름 입력란에 전달자의 고유한 이름을 입력합니다.
- 제출을 클릭한 다음 확인을 클릭합니다. 전달자가 추가되고 수집기 구성 추가 창이 표시됩니다.
- 수집기 이름 필드에 수집기의 고유한 이름을 입력합니다.
- 로그 유형으로 pfSense를 선택합니다.
- 수집기 유형 필드에서 Syslog를 선택합니다.
- 다음 필수 입력 매개변수를 구성합니다.
- 프로토콜: 수집기가 syslog 데이터를 리슨하는 데 사용하는 연결 프로토콜을 지정합니다.
- 주소: 수집기가 상주하고 syslog 데이터를 리슨하는 대상 IP 주소 또는 호스트 이름을 지정합니다.
- 포트: 수집기가 상주하고 syslog 데이터를 리슨하는 대상 포트를 지정합니다.
- 제출을 클릭합니다.
Google SecOps 전달자에 관한 자세한 내용은 Google SecOps UI를 통해 전달자 구성 관리를 참고하세요.
전달자를 만들 때 문제가 발생하면 Google SecOps 지원팀에 문의하세요.
필드 매핑 참조
이 pfSense 방화벽 파서는 grok 패턴을 사용하여 syslog 메시지에서 필드를 추출하여 DHCP 및 방화벽 이벤트를 비롯한 다양한 로그 형식을 처리합니다. 그런 다음 추출된 필드를 UDM에 매핑하여 IP 주소, MAC 주소, 사용자 이름, 네트워크 세부정보와 같은 문맥 정보를 사용하여 데이터를 보강합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
애플리케이션 | principal.application |
값은 grok 패턴을 사용하여 로그 메시지에서 추출됩니다. syslog 메일의 경우 애플리케이션 이름은 일반적으로 호스트 이름과 타임스탬프 뒤에 표시됩니다. |
명령어 | principal.process.command_line |
로그에서 명령어 실행을 나타내는 경우 설명 필드에서 추출됩니다. |
description | metadata.description |
description 필드는 syslog-ng 애플리케이션 로그를 제외하고 UDM 메타데이터 설명에 매핑됩니다(syslog-ng 애플리케이션 로그의 경우 metadata.description 에 매핑됨). DHCP 이벤트의 경우 dhcp_type 가 설명 앞에 추가됩니다. |
dhcp_type | metadata.product_event_type |
DHCP 메시지 유형입니다 (예: DHCPDISCOVER, DHCPOFFER)가 추출되고 매핑됩니다. |
호스트 | intermediary.hostname 또는 intermediary.ip |
호스트 값이 유효한 IP 주소인 경우 intermediary.ip 에 매핑됩니다. 그렇지 않으면 intermediary.hostname 에 매핑됩니다. |
호스트 | principal.hostname , principal.asset.hostname |
기본 IP가 없으면 호스트가 기본 호스트 이름으로 처리됩니다. |
mac | principal.mac , network.dhcp.chaddr |
DHCP 요청과 연결된 MAC 주소가 추출되고 매핑됩니다. |
src_ip | principal.ip , principal.asset.ip |
Grok 패턴을 사용하여 특정 로그 형식에서 추출됩니다. |
src_mac | principal.mac |
Grok 패턴을 사용하여 특정 로그 형식에서 추출됩니다. |
dst_mac | target.mac |
Grok 패턴을 사용하여 특정 로그 형식에서 추출됩니다. |
타임스탬프 | metadata.event_timestamp |
타임스탬프는 로그 메시지에서 추출되어 UDM 타임스탬프 형식으로 변환됩니다. 시간대 정보 (tz)는 가능한 경우 변환 전에 타임스탬프에 추가됩니다. |
timestamp_no_year | metadata.event_timestamp |
연도가 없는 타임스탬프가 있는 경우 파싱되고 파싱 프로세스 중에 현재 연도가 추가됩니다. |
사용자 | principal.user.userid |
이벤트와 연결된 사용자 이름이 추출되고 매핑됩니다. |
1 열 | security_result.rule_id |
설명이 CSV 형식인 경우 첫 번째 CSV 열에서 매핑됩니다. |
column6 | security_result.rule_type |
설명이 CSV 형식인 경우 여섯 번째 CSV 열에서 매핑됩니다. |
column7 | security_result.action |
설명이 CSV 형식인 경우 일곱 번째 CSV 열에서 매핑됩니다. 'BLOCK' 또는 'ALLOW'로 변환되었습니다. |
column8 | network.direction |
설명이 CSV 형식인 경우 여덟 번째 CSV 열에서 매핑됩니다. 'INBOUND' 또는 'OUTBOUND'로 변환되었습니다. |
column13 | network.ip_protocol (UDP 또는 ICMP인 경우) |
설명이 CSV 형식이고 프로토콜이 UDP 또는 ICMP인 경우 열세 번째 CSV 열에서 매핑됩니다. TCP/UDP 이벤트의 경우 키가 'Id'인 추가 필드를 만드는 데 사용됩니다. |
column16 | principal.ip , principal.asset.ip (IPv6이고 column9가 6인 경우) |
설명이 CSV 형식이고 열 9가 6인 경우 16번째 CSV 열에서 매핑됩니다. TCP/UDP 이벤트의 경우 column9가 4인 경우 프로토콜 식별에 사용됩니다. |
column17 | target.ip , target.asset.ip (IPv6이고 ip_failure가 아닌 경우) |
설명이 CSV 형식인 경우 열17 CSV 열에서 매핑되며, 열9는 6이고 값은 유효한 IP입니다. TCP/UDP 이벤트의 경우 프로토콜 식별에 사용됩니다. |
column18 | principal.port (UDP인 경우) |
설명이 CSV 형식이고 프로토콜이 UDP인 경우 열여덟 번째 CSV 열에서 매핑됩니다. TCP/UDP 이벤트의 경우 network.received_bytes 에 매핑됩니다. |
column19 | target.port (UDP인 경우) |
설명이 CSV 형식이고 프로토콜이 UDP인 경우 열 아홉 번째 CSV에서 매핑됩니다. DHCP 이벤트의 경우 network.dhcp.yiaddr 에 매핑됩니다. 다른 이벤트의 경우 principal.ip , principal.asset.ip 에 매핑됩니다. |
column20 | additional.fields (키: 'data_length') (UDP인 경우) |
설명이 CSV 형식이고 프로토콜이 UDP인 경우 20번째 CSV 열에서 매핑됩니다. 다른 이벤트의 경우 target.ip , target.asset.ip 에 매핑됩니다. |
column21 | principal.port (TCP/UDP인 경우) |
설명이 CSV 형식이고 프로토콜이 TCP 또는 UDP인 경우 21번째 CSV 열에서 매핑됩니다. |
column22 | target.port (TCP/UDP인 경우) |
설명이 CSV 형식이고 프로토콜이 TCP 또는 UDP인 경우 22번째 CSV 열에서 매핑됩니다. |
column23 | additional.fields (키: 'data_length') (TCP/UDP인 경우) |
설명이 CSV 형식이고 프로토콜이 TCP 또는 UDP인 경우 23번째 CSV 열에서 매핑됩니다. |
column24 | additional.fields (키: 'tcp_flags') (TCP인 경우) |
설명이 CSV 형식이고 프로토콜이 TCP인 경우 24번째 CSV 열에서 매핑됩니다. |
column25 | additional.fields (키: 'sequence_number') (TCP/UDP인 경우) |
설명이 CSV 형식이고 프로토콜이 TCP 또는 UDP인 경우 25번째 CSV 열에서 매핑됩니다. |
column29 | additional.fields (키: 'tcp_options') (TCP인 경우) |
설명이 CSV 형식이고 프로토콜이 TCP인 경우 29번째 CSV 열에서 매핑됩니다. |
compression_algo | additional.fields (키: 'Compression Algorithm') |
설명 필드에서 추출하여 추가 필드로 추가했습니다. |
내림차순 | metadata.description |
메시지 필드에서 추출되어 설명으로 사용됩니다. |
principal_ip | principal.ip , principal.asset.ip |
설명 필드에서 추출되며 기본 IP 주소를 나타냅니다. |
principal_username | principal.user.userid |
설명 입력란에서 추출되며 기본 사용자 이름을 나타냅니다. |
상태 | security_result.detection_fields (키: 'status') |
설명 필드에서 추출되어 보안 결과 내에 감지 필드로 추가됩니다. |
target_host | target.hostname , target.asset.hostname |
설명 필드에서 추출되며 대상 호스트 이름을 나타냅니다. |
src_port | principal.port |
설명 필드에서 추출되며 소스 포트를 나타냅니다. 다양한 로그 필드와 파서 로직을 기반으로 결정됩니다. NETWORK_CONNECTION, NETWORK_DHCP, STATUS_UPDATE 또는 GENERIC_EVENT일 수 있습니다. 'PFSENSE'로 하드코딩되었습니다. 'PFSENSE'로 하드코딩되었습니다. 'PFSENSE'로 하드코딩되었습니다. DHCP 이벤트의 경우 'DHCP'로 설정합니다. DHCPDISCOVER 및 DHCPREQUEST의 경우 'BOOTREQUEST'로, DHCPOFFER 및 DHCPACK의 경우 'BOOTREPLY'로 설정합니다. dhcp_type 필드에 따라 'DISCOVER', 'REQUEST', 'OFFER' 또는 'ACK'로 설정합니다. |
변경사항
2024-05-08
- 'description' 필드를 파싱하는 Grok 패턴을 추가했습니다.
- 'principal_ip'가 'principal.ip' 및 'principal.asset.ip'에 매핑되었습니다.
- 'src_port'가 'principal.port'에 매핑되었습니다.
- 'compression_algo'가 'additional.fields'에 매핑되었습니다.
- 'status'가 'security_result.detection_fields'에 매핑되었습니다.
- 'principal_username'이 'principal.user.userid'에 매핑되었습니다.
- 'target_host'가 'target.hostname' 및 'target.asset.hostname'에 매핑되었습니다.
2023-05-05
- 'network.ip_protocol'을 매핑하기 전에 대문자로 변환을 추가했습니다.
- 'column13'에 프로토콜이 있는 경우 'column18'이 'principal.port'에 매핑되었습니다.
- 'column13'에 프로토콜이 있는 경우 'column19'가 'target.port'에 매핑되었습니다.
- 'column13'에 프로토콜이 있는 경우 'column20'이 'additional.fields'에 'data-length'로 매핑되었습니다.
2023-02-20
- 새로운 filter-log 형식 및 syslog-ng 형식을 지원하도록 Grok 패턴이 추가되었습니다.
2022-10-04
- event_types가 'NETWORK_CONNECTION'인 로그에서 방화벽 기기 이름이 principal.hostname 대신 intermediary.hostname으로 다시 매핑되었습니다.
2022-09-05
- Enhancement-
- csv 형식 로그에서 다음 필드가 매핑되었습니다.
- 'IP' 및 'MAC'를 검색하는 grok 패턴이 추가되었습니다.
- 'source-address'인 'column19'가 'network.dhcp.yiaddr'에 매핑되었습니다.
- 'column7'이 'pass'와 일치하는 경우 'security_result.action'이 'ALLOW'에 매핑되었습니다.
- 'column9'가 'IPV6'을 나타내는 '6'과 일치하는 경우 다음 필드가 매핑됩니다.
- 'destination-address'인 'column17'이 'target.ip'에 매핑되었습니다.
- 'source-address'인 'column16'이 'principal.ip'에 매핑되었습니다.
- 'column16' 및 'column17'이 null이 아닌 경우 'event_type'이 'NETWORK_CONNECTION'에 매핑되었습니다.
- 'hop_limit'인 'column12'가 'additional.fields'에 매핑되었습니다.
- 'ip_protocol'인 'column13'이 'network.ip_protocol'에 매핑되었습니다.
- 커스텀 파서를 기본 파서로 마이그레이션했습니다.
- 'event_type'을 'STATUS_UPDATE'로 설정하는 조건부 검사를 추가했습니다.
2022-06-30
- 'ttl'이 'additional.fields'에 매핑되었습니다.
- 'Id'가 'additional.fields'에 매핑되었습니다.
- 'Offset'이 'additional.fields'에 매핑되었습니다.
- 'Data length'가 'additional.fields'에 매핑되었습니다.
- 'Length'가 'additional.fields'에 매핑되었습니다.
- 'Sequence-number'가 'additional.fields'에 매핑되었습니다.
2022-04-11
- 새로 생성된 파서