Recolha registos do Cisco Firepower NGFW
Este documento explica como carregar registos da firewall de nova geração (NGFW) do Cisco Firepower para o Google Security Operations através do Bindplane. O analisador extrai os registos de vários formatos (syslog, JSON e combinações dos mesmos), normaliza a data/hora e mapeia os campos relevantes para o modelo de dados unificado (UDM). Processa mensagens syslog convencionais e payloads formatados em JSON nos registos, tirando partido de padrões grok e lógica condicional para extrair campos como o ID do evento, a gravidade e o IP do cliente. Em seguida, enriquece os dados com etiquetas baseadas no nome de anfitrião HTTP e no URI.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
- Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas
- Acesso privilegiado a um dispositivo Cisco Firepower
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento.
- Guarde o ficheiro de forma segura no sistema onde o BindPlane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de raiz ou sudo.
Execute o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
Para ver opções de instalação adicionais, consulte o guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
- Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml
. Normalmente, encontra-se no diretório/etc/bindplane-agent/
no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano
,vi
ou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yaml
da seguinte forma:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'CISCO_FIREPOWER_FIREWALL' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
- Substitua
<customer_id>
pelo ID de cliente real. - Atualize
/path/to/ingestion-authentication-file.json
para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agent
Para reiniciar o agente Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog no dispositivo Cisco FirePower
- Inicie sessão na IU Web do Firepower Device Manager.
- Aceda a Definições do sistema > Definições de registo.
- Mude o interruptor Registo de dados para Ativar.
- Clique no ícone + em Servidores Syslog.
- Clique em Criar novo servidor Syslog. (Em alternativa, pode criar o servidor Syslog em Objetos > Servidores Syslog).
- Indique os seguintes detalhes de configuração:
- Endereço IP: introduza o endereço IP do agente do Bindplane.
- Tipo de protocolo: selecione UDP.
- Número da porta: introduza o número da porta do agente do Bindplane.
- Selecione Interface de dados ou Interface de gestão.
- Clique em OK.
- Selecione o servidor Syslog recém-criado na lista e clique em OK.
- Clique em Nível de gravidade para filtrar todos os eventos e selecione o nível de registo Informativo na lista.
- Clique em Guardar.
- Clique no ícone Implementar novas definições > Implementar agora.
- Clique em Políticas na parte superior do ecrã.
- Passe o cursor do rato sobre o lado direito da regra da PAA e clique em editar Editar.
- Aceda ao separador Registo.
- Selecione No final da ligação.
- Abra a lista Selecionar uma configuração de alerta Syslog.
- selecione o servidor Syslog do Bindplane.
- Clique em OK.
- Clique no ícone Implementar novas definições > Implementar agora.
Tabela de mapeamento do UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
AccessControlRuleAction |
security_result.action |
Mapeado diretamente a partir do registo não processado. Os valores são normalizados para UDM (ALLOW/BLOCK). |
AccessControlRuleName |
security_result.rule_name |
Mapeado diretamente a partir do registo não processado. |
ACPolicy |
security_result.rule_labels.value |
Mapeado diretamente a partir do registo não processado. A chave está definida como "ACPolicy". |
ApplicationProtocol |
network.application_protocol |
Mapeado diretamente a partir do registo não processado. |
Client |
network.http.user_agent |
Mapeado diretamente a partir do registo não processado. |
ClientVersion |
principal.asset.platform_version |
Mapeado diretamente a partir do registo não processado. |
collection_time.nanos |
metadata.event_timestamp.nanos |
Mapeado diretamente a partir do registo não processado. |
collection_time.seconds |
metadata.event_timestamp.seconds |
Mapeado diretamente a partir do registo não processado. |
ConnectionDuration |
network.session_duration.seconds |
Mapeado diretamente a partir do registo não processado, convertido em segundos, se necessário (por exemplo, a partir do formato de duração). |
data |
metadata.description |
Usado em conjunto com eventId para gerar uma descrição mais descritiva. Também é usado para extrair outros campos através de grok e expressões regulares. |
deviceId |
metadata.product_log_id |
Mapeado diretamente a partir do registo não processado após a mudança do nome para device_uuid . |
device_uuid |
metadata.product_log_id |
Mapeado diretamente a partir do registo não processado. |
DstIP |
target.asset.ip , target.ip |
Mapeado diretamente a partir do registo não processado. |
DstPort |
target.port |
Mapeado diretamente a partir do registo não processado. |
EgressInterface |
principal.asset.attribute.labels.value |
Mapeado diretamente a partir do registo não processado. A chave está definida como "EgressInterface". |
EgressZone |
target.location.name |
Mapeado diretamente a partir do registo não processado. |
eventId |
metadata.product_event_type |
Mapeado diretamente a partir do registo não processado. Também é usado para lógica condicional e filtragem. |
FileAction |
security_result.summary |
Mapeado diretamente a partir do registo não processado. |
FileDirection |
metadata.description |
Mapeado diretamente a partir do registo não processado e anexado à descrição. |
FileName |
target.file.full_path |
Mapeado diretamente a partir do registo não processado. |
FilePolicy |
security_result.rule_name |
Mapeado diretamente a partir do registo não processado. |
FileSize |
target.file.size |
Mapeado diretamente a partir do registo não processado. |
FileSHA256 |
target.file.sha256 |
Mapeado diretamente a partir do registo não processado. |
FileSandboxStatus |
security_result.description |
Mapeado diretamente a partir do registo não processado. |
HTTPReferer |
network.http.referral_url |
Mapeado diretamente a partir do registo não processado. |
HTTPResponse |
network.http.response_code |
Mapeado diretamente a partir do registo não processado. |
HTTP_Hostname |
target.resource.attribute.labels.value |
Mapeado diretamente a partir do registo não processado. A chave está definida como "HTTP_Hostname". |
HTTP_URI |
target.resource.attribute.labels.value |
Mapeado diretamente a partir do registo não processado. A chave está definida como "HTTP_URI". |
IngressInterface |
principal.asset.attribute.labels.value |
Mapeado diretamente a partir do registo não processado. A chave está definida como "IngressInterface". |
IngressZone |
principal.location.name |
Mapeado diretamente a partir do registo não processado. |
InitiatorBytes |
network.received_bytes |
Mapeado diretamente a partir do registo não processado. |
InlineResult |
security_result.action_details |
Mapeado diretamente a partir do registo não processado. |
IntrusionPolicy |
security_result.rule_name |
Mapeado diretamente a partir do registo não processado. |
log_type |
metadata.log_type |
Mapeado diretamente a partir do registo não processado. |
Message |
security_result.description |
Mapeado diretamente a partir do registo não processado, muitas vezes com o prefixo "Message : ". |
NAPPolicy |
principal.asset.attribute.labels.value |
Mapeado diretamente a partir do registo não processado. A chave está definida como "NAPPolicy". |
Prefilter Policy |
security_result.rule_labels.value |
Mapeado diretamente a partir do registo não processado. A chave está definida como "Política de pré-filtragem". |
Priority |
security_result.priority_details |
Mapeado diretamente a partir do registo não processado. |
priorityId |
security_result.priority_details |
Mapeado diretamente a partir do registo não processado. |
product |
metadata.product_name |
Definido como "Firepower Firewall". |
Protocol |
network.ip_protocol |
Mapeado diretamente a partir do registo não processado. Os valores são normalizados para UDM (TCP, UDP, ICMP, etc.). |
ResponderBytes |
network.sent_bytes |
Mapeado diretamente a partir do registo não processado. |
Revision |
security_result.about.labels.value |
Mapeado diretamente a partir do registo não processado. A chave está definida como "Signature_Version". |
ruleId |
security_result.rule_id |
Mapeado diretamente a partir do registo não processado. |
security_result.severity |
security_result.severity |
Definido com base no campo severity do registo não processado, através de uma tabela de pesquisa para o mapeamento dos valores de gravidade da UDM. |
security_result.severity_details |
security_result.severity_details |
Definido com base no campo severity do registo não processado, usando uma tabela de consulta para o mapeamento dos detalhes de gravidade do UDM. |
SID |
security_result.threat_id |
Mapeado diretamente a partir do registo não processado. |
SrcIP |
principal.asset.ip , principal.ip |
Mapeado diretamente a partir do registo não processado. |
SrcPort |
principal.port |
Mapeado diretamente a partir do registo não processado. |
syslog_msg_id |
metadata.product_event_type |
Mapeado diretamente a partir do registo não processado após a conversão numa string. Usado para substituir o eventId , se estiver presente. |
syslog_msg_text |
metadata.description , security_result.description |
Mapeado diretamente a partir do registo não processado, por vezes, precedido de "Message : ". Usado para substituir a descrição gerada a partir de data e eventId . |
syslog_severity |
security_result.severity |
Mapeado diretamente a partir do registo não processado após a conversão numa string. Usado para substituir a gravidade derivada de eventId . Os valores são normalizados para UDM (INFORMATIONAL, WARNING, ERROR, etc.). |
sysloghost |
intermediary.hostname |
Mapeado diretamente a partir do registo não processado. |
ThreatName |
security_result.threat_name |
Mapeado diretamente a partir do registo não processado. |
ts |
metadata.event_timestamp |
Analisado a partir do registo não processado através de filtros de data e vários formatos. |
ts_year |
metadata.event_timestamp |
Analisado a partir do registo não processado através de filtros de data e vários formatos. |
URL |
target.url |
Mapeado diretamente a partir do registo não processado. |
URLCategory |
security_result.category_details |
Mapeado diretamente a partir do registo não processado. |
URLReputation |
security_result.confidence_details |
Mapeado diretamente a partir do registo não processado. |
User |
target.user.userid |
Mapeado diretamente a partir do registo não processado. |
UserAgent |
network.http.user_agent |
Mapeado diretamente a partir do registo não processado. |
UserName |
target.user.userid |
Mapeado diretamente a partir do registo não processado. |
user_name |
principal.user.email_addresses |
Mapeados diretamente a partir do registo não processado para tipos de eventos específicos. |
WebApplication |
target.application |
Mapeado diretamente a partir do registo não processado. |
metadata.event_type está definido como um valor predefinido de NETWORK_CONNECTION e, por vezes, é substituído com base no eventId ou noutros campos. |
||
metadata.vendor_name está sempre definido como "Cisco". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.