Netgate pfSense 로그 수집
이 문서에서는 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 |
설명 필드는 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인 경우 13번째 CSV 열에서 매핑됩니다. TCP/UDP 이벤트의 경우 키가 'Id'인 추가 필드를 만드는 데 사용됩니다. |
| column16 | principal.ip, principal.asset.ip (IPv6이고 column9가 6인 경우) |
설명이 CSV 형식이고 column9가 6인 경우 16번째 CSV 열에서 매핑됩니다. TCP/UDP 이벤트의 경우 column9가 4이면 프로토콜 식별에 사용됩니다. |
| column17 | target.ip, target.asset.ip (IPv6이고 ip_failure가 아닌 경우) |
설명이 CSV 형식이고 column9가 6이며 값이 유효한 IP인 경우 17번째 CSV 열에서 매핑됩니다. TCP/UDP 이벤트의 경우 프로토콜 식별에 사용됩니다. |
| column18 | principal.port (UDP인 경우) |
설명이 CSV 형식이고 프로토콜이 UDP인 경우 18번째 CSV 열에서 매핑됩니다. TCP/UDP 이벤트의 경우 network.received_bytes에 매핑됩니다. |
| column19 | target.port (UDP인 경우) |
설명이 CSV 형식이고 프로토콜이 UDP인 경우 19번째 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 (키: '압축 알고리즘') |
설명 필드에서 추출되어 추가 필드로 추가되었습니다. |
| 내림차순 | 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'로 설정됩니다. |
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.