Collecter les journaux Sophos XG Firewall
Ce document explique comment collecter les journaux du pare-feu Sophos Next Gen (XG) à l'aide de Bindplane. L'analyseur extrait les journaux, normalise les paires clé-valeur et les mappe à l'UDM. Il gère différents formats de journaux, convertit les codes temporels, enrichit les données réseau et catégorise les événements en fonction des ID de journaux et de l'activité réseau.
Avant de commencer
- Assurez-vous de disposer d'une instance Google Security Operations.
- Assurez-vous d'utiliser Windows 2016 ou une version ultérieure, ou un hôte Linux avec
systemd
. - Si vous exécutez le programme derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.
- Assurez-vous de disposer d'un accès privilégié à Sophos XG Firewall.
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- Téléchargez le fichier d'authentification d'ingestion. Enregistrez le fichier de manière sécurisée sur le système sur lequel Bindplane sera installé.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent Bindplane
Installation de fenêtres
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installation de Linux
- Ouvrez un terminal avec les droits root ou sudo.
Exécutez la commande suivante :
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Ressources d'installation supplémentaires
- Pour plus d'options d'installation, consultez ce guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
Accédez au fichier de configuration :
- Recherchez le fichier
config.yaml
. En règle générale, il se trouve dans le répertoire/etc/bindplane-agent/
sous Linux ou dans le répertoire d'installation sous Windows. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano
,vi
ou le Bloc-notes).
- Recherchez le fichier
Modifiez le fichier
config.yaml
comme suit :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: '/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: sophos_firewall raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
Remplacez
<customer_id>
par le numéro client réel.Mettez à jour
/path/to/ingestion-authentication-file.json
en indiquant le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.
Redémarrez l'agent Bindplane pour appliquer les modifications.
Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :
sudo systemctl restart bindplane-agent
Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :
net stop BindPlaneAgent && net start BindPlaneAgent
Configurer les serveurs syslog du pare-feu Sophos
- Connectez-vous au pare-feu Sophos XG.
- Accédez à Configurer > Services système > Paramètres de journal.
- Dans la section Serveurs Syslog, cliquez sur Ajouter.
- Fournissez les informations de configuration suivantes :
- Nom : saisissez un nom unique pour le collecteur Google SecOps.
- Adresse IP/Domaine : saisissez l'adresse IP de Bindplane.
- Port : saisissez le numéro de port Bindplane.
- Établissement : sélectionnez DAEMON.
- Niveau de gravité : sélectionnez Information.
- Format : sélectionnez Format standard de l'appareil.
- Cliquez sur Enregistrer.
- Revenez à la page Paramètres de journal et sélectionnez les types de journaux spécifiques à transférer vers le serveur syslog.
Configurer les paramètres de journalisation du pare-feu Sophos XG
- Sélectionnez les journaux Pare-feu de base (journal de la stratégie de sécurité) suivants :
- Règles
- Trafic incorrect
- LCA locaux
- Attaque par déni de service (DoS)
- Paquet ICMP redirigé supprimé
- Paquet routé à la source supprimé
- Trafic fragmenté abandonné
- Filtrage MAC
- Filtrage des paires IP-MAC
- Prévention de l'usurpation d'adresse IP
- Tunnel VPN SSL
- Serveur d'applications protégé
- Pulsation
- Sélectionnez les journaux Protection Web suivants (journal de filtrage Web et journal de filtrage des applications) :
- Filtre Web
- Filtre d'application
- Sélectionnez les journaux Protection du réseau (journal IPS) suivants :
- Anomalie
- Signature
- Sélectionnez le journal Journal système suivant :
- Événements système
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
activityname |
security_result.detection_fields.activityname |
Valeur du champ activityname . |
app_category |
security_result.detection_fields.Application Category , application_category |
Valeur du champ app_category . |
app_filter_policy_id |
security_result.detection_fields.app_filter_policy_id |
Valeur du champ app_filter_policy_id . |
app_is_cloud |
security_result.detection_fields.app_is_cloud |
Valeur du champ app_is_cloud . |
app_name |
principal.application |
Valeur du champ app_name . |
app_resolved_by |
security_result.detection_fields.app_resolved_by |
Valeur du champ app_resolved_by . |
app_risk |
security_result.detection_fields.Application Risk , application_risk |
Valeur du champ app_risk . |
app_technology |
application_technology |
Valeur du champ app_technology . |
application |
principal.application |
Valeur du champ application . |
application_category |
security_result.detection_fields.Application Category |
Valeur du champ application_category . |
application_risk |
security_result.detection_fields.Application Risk |
Valeur du champ application_risk . |
application_technology |
security_result.detection_fields.Application Technology |
Valeur du champ application_technology . |
bytes_received |
network.received_bytes |
Valeur du champ bytes_received . |
bytes_sent |
network.sent_bytes |
Valeur du champ bytes_sent . |
category |
application_category |
Valeur du champ category . |
category_type |
security_result.detection_fields.category_type |
Valeur du champ category_type . |
client_host_name |
network.dhcp.client_hostname |
Valeur du champ client_host_name . |
client_physical_address |
network.dhcp.chaddr |
Valeur du champ client_physical_address . |
con_event |
security_result.detection_fields.con_event |
Valeur du champ con_event . |
con_id |
security_result.detection_fields.con_id |
Valeur du champ con_id . |
connevent |
security_result.detection_fields.connevent |
Valeur du champ connevent . |
connid |
security_result.detection_fields.connid |
Valeur du champ connid . |
date |
event.timestamp |
Analysé à partir des champs date et time , ajusté en fonction du fuseau horaire. |
device_id |
intermediary.asset.asset_id |
Valeur du champ device_id , précédée de ID: . |
device_model |
intermediary.hostname |
Valeur du champ device_model . |
device_name |
intermediary.hostname |
Valeur du champ device_name . |
device_serial_id |
intermediary.asset.asset_id |
Valeur du champ device_serial_id , précédée de ID: . |
domain |
principal.administrative_domain , target.hostname |
Valeur du champ domain . |
dst_country |
target.location.country_or_region |
Valeur du champ dst_country . |
dst_country_code |
target.location.country_or_region |
Valeur du champ dst_country_code . |
dst_ip |
target.ip |
Valeur du champ dst_ip . |
dst_mac |
target.mac |
Valeur du champ dst_mac . |
dst_port |
target.port |
Valeur du champ dst_port . |
dst_trans_ip |
target.nat_ip |
Valeur du champ dst_trans_ip . |
dst_trans_port |
target.nat_port |
Valeur du champ dst_trans_port . |
dst_zone |
security_result.detection_fields.dst_zone |
Valeur du champ dst_zone . |
dstzone |
security_result.detection_fields.dstzone |
Valeur du champ dstzone . |
dstzonetype |
security_result.detection_fields.dstzonetype |
Valeur du champ dstzonetype . |
duration |
network.session_duration.seconds |
Valeur du champ duration . |
ether_type |
security_result.detection_fields.ether_type |
Valeur du champ ether_type . |
exceptions |
security_result.detection_fields.exceptions |
Valeur du champ exceptions . |
fw_rule_id |
security_result.rule_id |
Valeur du champ fw_rule_id . |
fw_rule_name |
security_result.rule_name |
Valeur du champ fw_rule_name . |
fw_rule_section |
security_result.rule_set |
Valeur du champ fw_rule_section . |
fw_rule_type |
security_result.rule_type |
Valeur du champ fw_rule_type . |
gw_id_request |
security_result.detection_fields.gw_id_request |
Valeur du champ gw_id_request . |
gw_name_request |
security_result.detection_fields.gw_name_request |
Valeur du champ gw_name_request . |
hb_health |
security_result.detection_fields.hb_health |
Valeur du champ hb_health . |
hb_status |
security_result.detection_fields.hb_status |
Valeur du champ hb_status . |
http_category |
security_result.detection_fields.http_category |
Valeur du champ http_category . |
http_category_type |
security_result.detection_fields.http_category_type |
Valeur du champ http_category_type . |
http_status |
network.http.response_code |
Valeur du champ http_status . |
in_display_interface |
security_result.detection_fields.in_display_interface |
Valeur du champ in_display_interface . |
in_interface |
security_result.detection_fields.in_interface |
Valeur du champ in_interface . |
ipaddress |
principal.ip , network.dhcp.ciaddr |
Valeur du champ ipaddress . |
log_component |
metadata.product_event_type , security_result.detection_fields.log_component |
Valeur du champ log_component . |
log_id |
metadata.product_log_id |
Valeur du champ log_id . |
log_msg |
metadata.description |
Valeur du champ message après suppression de message= . |
log_occurrence |
security_result.detection_fields.log_occurrence |
Valeur du champ log_occurrence . |
log_subtype |
security_result.detection_fields.log_subtype , security_result.action |
Valeur du champ log_subtype . |
log_type |
security_result.detection_fields.log_type |
Valeur du champ log_type . |
log_version |
security_result.detection_fields.log_version |
Valeur du champ log_version . |
message |
metadata.description |
Valeur du champ message . |
nat_rule_id |
security_result.detection_fields.nat_rule_id |
Valeur du champ nat_rule_id . |
nat_rule_name |
security_result.detection_fields.nat_rule_name |
Valeur du champ nat_rule_name . |
out_display_interface |
security_result.detection_fields.out_display_interface |
Valeur du champ out_display_interface . |
out_interface |
security_result.detection_fields.out_interface |
Valeur du champ out_interface . |
packets_received |
network.received_packets |
Valeur du champ packets_received . |
packets_sent |
network.sent_packets |
Valeur du champ packets_sent . |
priority |
security_result.severity |
Mappé à partir du champ priority ou severity en fonction d'une table de correspondance. |
protocol |
network.ip_protocol |
Analysé à partir du champ protocol à l'aide d'une table de correspondance. |
reason |
security_result.detection_fields.reason , security_result.summary |
Valeur du champ reason . |
recv_bytes |
network.received_bytes |
Valeur du champ recv_bytes . |
recv_pkts |
network.received_packets |
Valeur du champ recv_pkts . |
referer |
network.http.referral_url |
Valeur du champ referer . |
rule_id |
security_result.rule_id |
Valeur du champ rule_id . |
rule_name |
security_result.rule_name |
Valeur du champ rule_name . |
sent_bytes |
network.sent_bytes |
Valeur du champ sent_bytes . |
sent_pkts |
network.sent_packets |
Valeur du champ sent_pkts . |
severity |
priority |
Valeur du champ severity . |
src_country |
principal.location.country_or_region |
Valeur du champ src_country . |
src_country_code |
principal.location.country_or_region |
Valeur du champ src_country_code . |
src_ip |
principal.ip |
Valeur du champ src_ip . |
src_mac |
principal.mac |
Valeur du champ src_mac . |
src_port |
principal.port |
Valeur du champ src_port . |
src_trans_ip |
principal.nat_ip |
Valeur du champ src_trans_ip . |
src_trans_port |
principal.nat_port |
Valeur du champ src_trans_port . |
src_zone |
security_result.detection_fields.src_zone |
Valeur du champ src_zone . |
srczone |
security_result.detection_fields.srczone |
Valeur du champ srczone . |
srczonetype |
security_result.detection_fields.srczonetype |
Valeur du champ srczonetype . |
status |
security_result.action_details , security_result.action |
Valeur du champ status . |
status_code |
network.http.response_code |
Valeur du champ status_code . |
target.url |
target.url |
Valeur du champ url . |
time |
event.timestamp |
Analysé à partir des champs date et time , ajusté en fonction du fuseau horaire. |
timestamp |
event.timestamp |
Analysé à partir du champ timestamp . |
tran_dst_ip |
target.nat_ip |
Valeur du champ tran_dst_ip . |
tran_dst_port |
target.nat_port |
Valeur du champ tran_dst_port . |
tran_src_ip |
principal.nat_ip |
Valeur du champ tran_src_ip . |
tran_src_port |
principal.nat_port |
Valeur du champ tran_src_port . |
url |
target.url |
Valeur du champ url . |
used_quota |
security_result.detection_fields.used_quota |
Valeur du champ used_quota . |
user_agent |
network.http.user_agent , network.http.parsed_user_agent |
Valeur du champ user_agent . Une version analysée a également été générée. |
user_gp |
extensions.auth.type |
Si user_gp est vpn , définit extensions.auth.type sur VPN . |
user_name |
principal.user.userid , principal.user.email_addresses |
Valeur du champ user_name . Si elle contient @ , elle est également ajoutée à email_addresses . |
web_policy_id |
security_result.detection_fields.web_policy_id |
Valeur du champ web_policy_id . |
N/A | event.idm.read_only_udm.metadata.event_timestamp |
Copié depuis event.timestamp . |
N/A | event.idm.read_only_udm.metadata.log_type |
Le schéma d'ingestion Chronicle spécifie le type de journal comme SOPHOS_FIREWALL . |
N/A | event.idm.read_only_udm.metadata.vendor_name |
Valeur constante SOPHOS . |
N/A | event.idm.read_only_udm.metadata.product_name |
Valeur constante SOPHOS Firewall . |
N/A | event.idm.read_only_udm.network.application_protocol |
Définie sur DHCP si le champ ipaddress est présent. Sinon, il est dérivé du champ protocol . |
N/A | event.idm.read_only_udm.metadata.event_type |
Déterminé par une logique basée sur la présence d'autres champs (par exemple, NETWORK_HTTP , NETWORK_CONNECTION , NETWORK_DHCP , STATUS_UPDATE , GENERIC_EVENT ). |
N/A | event.idm.read_only_udm.security_result.action |
Dérivé des champs status ou log_subtype . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.