Recolha registos da firewall Juniper NetScreen
Este documento explica como configurar os registos da firewall Juniper NetScreen para serem enviados para o Google Security Operations. O analisador extrai campos através de padrões grok, processando vários formatos syslog e payloads JSON. Em seguida, mapeia estes campos extraídos para o UDM, categorizando os eventos como ligações de rede, inícios de sessão de utilizadores, atualizações de estado ou eventos genéricos com base na presença de campos específicos, como endereços IP, nomes de utilizadores e portas.
Antes de começar
- Certifique-se de que tem acesso administrativo à sua firewall Juniper NetScreen.
- Certifique-se de que tem uma instância do Google Security Operations.
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
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 este 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: tcplog: # Replace the port and IP address as required listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/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 ingestion_labels: log_type: SYSLOG namespace: juniper_firewall raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog 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 do Bindplane no Windows, pode usar a consola Services ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure a firewall NetScreen da Juniper Networks
- Inicie sessão na interface Web do Juniper NetScreen.
- Selecione Configuração > Definições de relatórios > Definições de registo.
- Selecione todas as caixas de verificação Gravidade do evento.
- Clique em Aplicar.
- Selecione Configuração > Definições de relatórios > Syslog.
- Selecione a caixa de verificação Ativar mensagens syslog.
- Na lista Interface de origem, selecione a interface NetScreen a partir da qual os pacotes syslog têm de ser enviados.
- Na secção Servidores Syslog, selecione a caixa de verificação Ativar e indique o seguinte:
- IP/Nome de anfitrião: introduza o
Bindplane
endereço IP. - Porta: introduza o
Bindplane
número da porta. - Instalação de MDR: selecione o nível de instalação Local0.
- Instalação: selecione o nível de instalação Local0.
- IP/Nome de anfitrião: introduza o
- Clique em Aplicar.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
ACTION |
security_result.action_details |
Mapeado diretamente a partir do campo ACTION extraído através de filtros GROK e KV. |
APPLICATION |
principal.application |
Mapeado diretamente a partir do campo APPLICATION extraído através de filtros GROK e KV. |
application |
target.application |
Mapeado diretamente a partir do campo application extraído através do GROK. |
attack-name |
security_result.threat_name |
Mapeado diretamente a partir do campo attack-name extraído através do GROK. |
bytes-from-client |
network.sent_bytes |
Mapeado diretamente a partir do campo bytes-from-client extraído através do GROK. |
bytes-from-server |
network.received_bytes |
Mapeado diretamente a partir do campo bytes-from-server extraído através do GROK. |
command |
target.process.command_line |
Mapeado diretamente a partir do campo command extraído através do GROK. |
destination-address |
target.ip |
Mapeado diretamente a partir do campo destination-address extraído através do GROK. |
destination-port |
target.port |
Mapeado diretamente a partir do campo destination-port extraído através do GROK. |
destination-zone |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo destination-zone extraído através de filtros GROK e KV. O key está definido como destination-zone . |
destination_zone-name |
security_result.detection_fields[].value |
Mapeado diretamente a partir do campo destination_zone-name extraído através do GROK. O key está definido como dstzone . |
dst-nat-rule-name |
security_result.detection_fields[].value |
Mapeado diretamente a partir do campo dst-nat-rule-name extraído através do GROK. O key está definido como dst-nat-rule-name . |
dst-nat-rule-type |
security_result.detection_fields[].value |
Mapeado diretamente a partir do campo dst-nat-rule-type extraído através do GROK. O key está definido como dst-nat-rule-type . |
elapsed-time |
network.session_duration.seconds |
Mapeado diretamente a partir do campo elapsed-time extraído através do GROK. |
encrypted |
security_result.detection_fields[].value |
Mapeado diretamente a partir do campo encrypted extraído através do GROK. O key está definido como encrypted . |
event_time |
metadata.event_timestamp |
A data/hora é extraída do registo não processado através de vários padrões GROK, dando prioridade a event_time , depois a TIMESTAMP_ISO8601 e, por último, a SYSLOGTIMESTAMP . Em seguida, é convertido num objeto de data/hora. |
host |
principal.hostname , intermediary.hostname |
Se type for NetScreen , mapeado para intermediary.hostname . Caso contrário, é mapeado para principal.hostname . |
host_ip |
intermediary.ip |
Mapeado diretamente a partir do campo host_ip extraído através do GROK. |
icmp-type |
network.icmp_type |
Mapeado diretamente a partir do campo icmp-type extraído através do GROK. |
ident |
target.application |
Mapeado diretamente a partir do campo ident extraído através de filtros GROK e JSON. |
inbound-bytes |
network.received_bytes |
Mapeado diretamente a partir do campo inbound-bytes extraído através do GROK. |
inbound-packets |
network.received_packets |
Mapeado diretamente a partir do campo inbound-packets extraído através do GROK. |
ip |
principal.ip , intermediary.ip |
Se type for NetScreen , mapeado para intermediary.ip . Caso contrário, é mapeado para principal.hostname . |
message |
security_result.description |
Se a mensagem for JSON e o campo log_message_data não estiver presente, o campo message é usado como descrição. |
msg_data |
security_result.summary |
Mapeado diretamente a partir do campo msg_data extraído através do GROK. |
nat-destination-address |
target.nat_ip |
Mapeado diretamente a partir do campo nat-destination-address extraído através do GROK. |
nat-destination-port |
target.nat_port |
Mapeado diretamente a partir do campo nat-destination-port extraído através do GROK. |
nat-source-address |
principal.nat_ip |
Mapeado diretamente a partir do campo nat-source-address extraído através do GROK. |
nat-source-port |
principal.nat_port |
Mapeado diretamente a partir do campo nat-source-port extraído através do GROK. |
outbound-bytes |
network.sent_bytes |
Mapeado diretamente a partir do campo outbound-bytes extraído através do GROK. |
outbound-packets |
network.sent_packets |
Mapeado diretamente a partir do campo outbound-packets extraído através do GROK. |
packets-from-client |
network.sent_packets |
Mapeado diretamente a partir do campo packets-from-client extraído através do GROK. |
packets-from-server |
network.received_packets |
Mapeado diretamente a partir do campo packets-from-server extraído através do GROK. |
packet-incoming-interface |
security_result.detection_fields[].value |
Mapeado diretamente a partir do campo packet-incoming-interface extraído através do GROK. O key está definido como packet-incoming-interface . |
pid |
target.process.pid |
Mapeado diretamente a partir do campo pid extraído através de filtros GROK e JSON. |
policy-name |
security_result.rule_name |
Mapeado diretamente a partir do campo policy-name extraído através do GROK. |
PROFILE |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo PROFILE extraído através de filtros GROK e KV. O key está definido como PROFILE . |
protocol-id , protocol-name |
network.ip_protocol |
Mapeado a partir do campo protocol-id ou protocol-name extraído através do GROK. O valor é convertido na enumeração do protocolo IP correspondente. |
REASON |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo REASON extraído através de filtros GROK e KV. O key está definido como REASON . |
reason |
security_result.description |
Mapeado diretamente a partir do campo reason extraído através do GROK. |
rule-name |
security_result.rule_name |
Mapeado diretamente a partir do campo rule-name extraído através do GROK. |
SESSION_ID |
network.session_id |
Mapeado diretamente a partir do campo SESSION_ID extraído através de filtros GROK e KV. |
service-name |
security_result.detection_fields[].value |
Mapeado diretamente a partir do campo service-name extraído através do GROK. O key está definido como srvname . |
source-address |
principal.ip |
Mapeado diretamente a partir do campo source-address extraído através do GROK. |
source-port |
principal.port |
Mapeado diretamente a partir do campo source-port extraído através do GROK. |
source-zone |
additional.fields[].value.string_value |
Mapeado diretamente a partir do campo source-zone extraído através de filtros GROK e KV. O key está definido como source-zone . |
source_zone-name |
security_result.detection_fields[].value |
Mapeado diretamente a partir do campo source_zone-name extraído através do GROK. O key está definido como srczone . |
src-nat-rule-name |
security_result.detection_fields[].value |
Mapeado diretamente a partir do campo src-nat-rule-name extraído através do GROK. O key está definido como src-nat-rule-name . |
src-nat-rule-type |
security_result.detection_fields[].value |
Mapeado diretamente a partir do campo src-nat-rule-type extraído através do GROK. O key está definido como src-nat-rule-type . |
subtype |
metadata.product_event_type |
Mapeado diretamente a partir do campo subtype extraído através do GROK. |
threat-severity |
security_result.severity_details |
Mapeado diretamente a partir do campo threat-severity extraído através do GROK. |
time |
metadata.event_timestamp |
Mapeado diretamente a partir do campo time extraído através de filtros GROK e JSON. Convertido no objeto de data/hora. |
username |
target.user.userid |
Mapeado diretamente a partir do campo username extraído através do GROK. |
metadata.log_type |
Codificado para JUNIPER_FIREWALL . Codificado como JUNIPER_FIREWALL ou NetScreen com base no campo type . Codificado para JUNIPER_FIREWALL . Definido como ALLOW ou BLOCK com base na lógica do analisador. Definido como LOW, MEDIUM, HIGH, INFORMATIONAL ou CRITICAL com base nos campos subtype e severity_details . |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.