blob: 3a68d75a63616858b88f56d61465286ae5579e87 [file] [log] [blame]
{
"template": "bro_index*",
"mappings": {
"bro_doc": {
"_timestamp": {
"enabled": true
},
"dynamic_templates": [
{
"geo_location_point": {
"match": "enrichments:geo:*:location_point",
"match_mapping_type": "*",
"mapping": {
"type": "geo_point"
}
}
},
{
"geo_country": {
"match": "enrichments:geo:*:country",
"match_mapping_type": "*",
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
},
{
"geo_city": {
"match": "enrichments:geo:*:city",
"match_mapping_type": "*",
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
},
{
"geo_location_id": {
"match": "enrichments:geo:*:locID",
"match_mapping_type": "*",
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
},
{
"geo_dma_code": {
"match": "enrichments:geo:*:dmaCode",
"match_mapping_type": "*",
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
},
{
"geo_postal_code": {
"match": "enrichments:geo:*:postalCode",
"match_mapping_type": "*",
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
},
{
"geo_latitude": {
"match": "enrichments:geo:*:latitude",
"match_mapping_type": "*",
"mapping": {
"type": "float"
}
}
},
{
"geo_longitude": {
"match": "enrichments:geo:*:longitude",
"match_mapping_type": "*",
"mapping": {
"type": "float"
}
}
},
{
"timestamps": {
"match": "*:ts",
"match_mapping_type": "*",
"mapping": {
"type": "date",
"format": "epoch_millis"
}
}
},
{
"threat_triage_score": {
"mapping": {
"type": "float"
},
"match": "threat:triage:*score",
"match_mapping_type": "*"
}
},
{
"threat_triage_reason": {
"mapping": {
"type": "string"
},
"match": "threat:triage:rules:*:reason",
"match_mapping_type": "*"
}
},
{
"threat_triage_name": {
"mapping": {
"type": "string"
},
"match": "threat:triage:rules:*:name",
"match_mapping_type": "*"
}
}
],
"properties": {
/*
* WARNING
*
* Because Metron inserts many distinct bro records into a single ElasticSearch index
* by default, it encounters field collisions due to field name reuse across bro logs.
*
* Be careful when modifying this file to not unintentionally affect other logs.
* For instance, the "version" field exists in the HTTP, SSL, and SSH logs. If you
* were to only consider the SSH log, you would set the type to integer, but because
* in the SSL and HTTP logs version is a string, we must set the type to string.
*/
/*
* Metron-specific fields
*/
"source:type": {
"type": "string",
"index": "not_analyzed"
},
/*
* Widely-used Bro fields (potentially renamed during Metron ingest)
*/
"timestamp": {
"type": "date",
"format": "epoch_millis"
},
"uid": {
"type": "string",
"index": "not_analyzed"
},
"alert": {
"type": "nested"
},
"ip_src_addr": {
"type": "ip"
},
"ip_src_port": {
"type": "integer"
},
"ip_dst_addr": {
"type": "ip"
},
"ip_dst_port": {
"type": "integer"
},
/*
* HTTP log support
* https://www.bro.org/sphinx/scripts/base/protocols/http/main.bro.html#type-HTTP::Info
*
* Notable Fields
* Field: password
* Notes: Field exists in the HTTP and FTP logs
*
* Field: capture_password
* Notes: Field exists in the HTTP and FTP logs
*
* Field: trans_depth
* Notes: Field exists in the HTTP and SMTP logs
*
* Field: user_agent
* Notes: Field exists in the HTTP and SMTP logs
*
* Field: version
* Notes: Field exists in the HTTP, SSL, and SSH logs
*
* Field: host
* Notes: Field exists in the HTTP and Software logs
*
* Field: username
* Notes: Field exists in the HTTP and RADIUS logs
*/
"trans_depth": {
"type": "integer"
},
"method": {
"type": "string",
"index": "not_analyzed"
},
"host": {
"type": "string",
"index": "not_analyzed"
},
"uri": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 8191
},
"referrer": {
"type": "string",
"index": "not_analyzed"
},
"version": {
"type": "string",
"index": "not_analyzed"
},
"user_agent": {
"type": "string"
},
"request_body_len": {
"type": "long"
},
"response_body_len": {
"type": "long"
},
"status_code": {
"type": "integer"
},
"status_msg": {
"type": "string",
"index": "not_analyzed"
},
"username": {
"type": "string",
"index": "not_analyzed"
},
"password": {
"type": "string",
"index": "not_analyzed"
},
"capture_password": {
"type": "boolean"
},
/*
* DNS log support
* https://www.bro.org/sphinx/scripts/base/protocols/dns/main.bro.html#type-DNS::Info
*
* Notable Fields
* Field: proto
* Notes: Field exists in the DNS, Conn, DPD, and Notice logs
*
* Field: trans_id
* Notes: Field exists in the DNS and DHCP logs
*/
"proto": {
"type": "string",
"index": "not_analyzed"
},
"trans_id": {
"type": "long"
},
"query": {
"type": "string",
"index": "not_analyzed"
},
"qclass": {
"type": "integer"
},
"qclass_name": {
"type": "string",
"index": "not_analyzed"
},
"qtype": {
"type": "integer"
},
"qtype_name": {
"type": "string",
"index": "not_analyzed"
},
"rcode": {
"type": "integer"
},
"rcode_name": {
"type": "string",
"index": "not_analyzed"
},
"AA": {
"type": "boolean"
},
"TC": {
"type": "boolean"
},
"RD": {
"type": "boolean"
},
"RA": {
"type": "boolean"
},
"Z": {
"type": "integer"
},
"answers": {
"type": "string"
},
"rejected": {
"type": "boolean"
},
/*
* Conn log support
* https://www.bro.org/sphinx/scripts/base/protocols/conn/main.bro.html#type-Conn::Info
*
* Notable Fields
* Field: proto
* Notes: Field exists in the DNS, Conn, DPD, and Notice logs
*
* Field: duration
* Notes: Field exists in the Conn and Files logs
*
* Field: local_orig
* Notes: Field exists in the Conn and Files logs
*/
"service": {
"type": "string",
"index": "not_analyzed"
},
"duration": {
"type": "float"
},
"orig_bytes": {
"type": "long",
"index": "not_analyzed"
},
"resp_bytes": {
"type": "long",
"index": "not_analyzed"
},
"conn_state": {
"type": "string",
"index": "not_analyzed"
},
"local_orig": {
"type": "boolean"
},
"local_resp": {
"type": "string",
"index": "not_analyzed"
},
"missed_bytes": {
"type": "long",
"index": "not_analyzed"
},
"history": {
"type": "string",
"index": "not_analyzed"
},
"orig_pkts": {
"type": "long",
"index": "not_analyzed"
},
"orig_ip_bytes": {
"type": "long",
"index": "not_analyzed"
},
"resp_pkts": {
"type": "long",
"index": "not_analyzed"
},
"resp_ip_bytes": {
"type": "long",
"index": "not_analyzed"
},
"tunnel_parents": {
"type": "string",
"index": "not_analyzed"
},
/*
* DPD log support
* https://www.bro.org/sphinx-git/scripts/base/frameworks/dpd/main.bro.html#type-DPD::Info
*
* Notable Fields
* Field: proto
* Notes: Field exists in the DNS, Conn, DPD, and Notice logs
*/
"analyzer": {
"type": "string",
"index": "not_analyzed"
},
"failure_reason": {
"type": "string",
"index": "not_analyzed"
},
/*
* FTP log support
* https://www.bro.org/sphinx/scripts/base/protocols/ftp/info.bro.html#type-FTP::Info
*
* Notable Fields
* Field: password
* Notes: Field exists in the HTTP and FTP logs
*
* Field: capture_password
* Notes: Field exists in the HTTP and FTP logs
*
* Field: mime_type
* Notes: Field exists in the FTP and Files logs
*
* Field: fuid
* Notes: Field exists in the FTP and Notice logs
*/
"user": {
"type": "string",
"index": "not_analyzed"
},
"command": {
"type": "string",
"index": "not_analyzed"
},
"arg": {
"type": "string",
"analyzer": "simple"
},
"mime_type": {
"type": "string",
"analyzer": "simple"
},
"file_size": {
"type": "long"
},
"reply_code": {
"type": "integer"
},
"reply_msg": {
"type": "string",
"index": "not_analyzed"
},
"data_channel:passive": {
"type": "boolean"
},
"data_channel:orig_h": {
"type": "ip"
},
"data_channel:resp_h": {
"type": "ip"
},
"data_channel:resp_p": {
"type": "integer"
},
"cwd": {
"type": "string",
"analyzer": "simple"
},
"passive": {
"type": "boolean"
},
"fuid": {
"type": "string",
"index": "not_analyzed"
},
/*
* Files log support
* https://www.bro.org/sphinx/scripts/base/frameworks/files/main.bro.html#type-Files::Info
*
* Notable Fields
* Field: tx_hosts
* Notes: Metron rewrites this to "ip_src_addr"
*
* Field: rx_hosts
* Notes: Metron rewrites this to "ip_dst_addr"
*
* Field: mime_type
* Notes: Field exists in the FTP and Files logs
*/
"conn_uids": {
"type": "string",
"analyzer": "simple"
},
"source": {
"type": "string",
"index": "not_analyzed"
},
"depth": {
"type": "integer"
},
"analyzers": {
"type": "string",
"analyzer": "simple"
},
"filename": {
"type": "string",
"index": "not_analyzed"
},
"is_orig": {
"type": "boolean"
},
"seen_bytes": {
"type": "long"
},
"total_bytes": {
"type": "long"
},
"missing_bytes": {
"type": "long"
},
"overflow_bytes": {
"type": "long"
},
"timedout": {
"type": "boolean"
},
"parent_fuid": {
"type": "string",
"index": "not_analyzed"
},
"md5": {
"type": "string",
"index": "not_analyzed"
},
"sha1": {
"type": "string",
"index": "not_analyzed"
},
"sha256": {
"type": "string",
"index": "not_analyzed"
},
/*
* Known::CertInfo log support
* https://www.bro.org/sphinx/scripts/policy/protocols/ssl/known-certs.bro.html#type-Known::CertsInfo
*
* Notable Fields
* Field: subject
* Notes: Field exists in the Known::CertInfo and SMTP logs
*/
"port_num": {
"type": "integer"
},
"subject": {
"type": "string",
"analyzer": "simple"
},
"issuer_subject": {
"type": "string",
"analyzer": "simple"
},
"serial": {
"type": "string",
"index": "not_analyzed"
},
/*
* SMTP log support
* https://www.bro.org/sphinx/scripts/base/protocols/smtp/main.bro.html#type-SMTP::Info
*
* Notable Fields
* Field: subject
* Notes: Field exists in the Known::CertInfo and SMTP logs
*/
"helo": {
"type": "string",
"analyzer": "simple"
},
"mailfrom": {
"type": "string",
"analyzer": "simple"
},
"rcptto": {
"type": "string",
"analyzer": "simple"
},
"date": {
"type": "string",
"index": "not_analyzed"
},
"from": {
"type": "string",
"analyzer": "simple"
},
"to": {
"type": "string",
"analyzer": "simple"
},
"reply_to": {
"type": "string",
"analyzer": "simple"
},
"msg_id": {
"type": "string",
"index": "not_analyzed"
},
"in_reply_to": {
"type": "string",
"index": "not_analyzed"
},
"x_originating_ip": {
"type": "ip"
},
"first_received": {
"type": "string",
"analyzer": "simple"
},
"second_received": {
"type": "string",
"analyzer": "simple"
},
"last_reply": {
"type": "string",
"analyzer": "simple"
},
"path": {
"type": "string",
"index": "not_analyzed"
},
"tls": {
"type": "boolean"
},
"fuids": {
"type": "string",
"index": "not_analyzed"
},
"is_webmail": {
"type": "boolean"
},
/*
* SSL log support
* https://www.bro.org/sphinx/scripts/base/protocols/ssl/main.bro.html#type-SSL::Info
*
* Notable Fields
* Field: version
* Notes: Field exists in the HTTP, SSL, and SSH logs
*/
"cipher": {
"type": "string",
"index": "not_analyzed"
},
"curve": {
"type": "string",
"index": "not_analyzed"
},
"server_name": {
"type": "string",
"index": "not_analyzed"
},
"resumed": {
"type": "boolean"
},
"last_alert": {
"type": "string",
"index": "not_analyzed"
},
"next_protocol": {
"type": "string",
"index": "not_analyzed"
},
"established": {
"type": "boolean"
},
/*
* Weird log support
* https://www.bro.org/sphinx/scripts/base/frameworks/notice/weird.bro.html#type-Weird::Info
*/
"name": {
"type": "string",
"index": "not_analyzed"
},
"addl": {
"type": "string",
"index": "not_analyzed"
},
"notice": {
"type": "boolean"
},
"peer": {
"type": "string",
"index": "not_analyzed"
},
/*
* Notice log support
* https://www.bro.org/sphinx/scripts/base/frameworks/notice/main.bro.html#type-Notice::Info
*
* Notable Fields
* Field: fuid
* Notes: Field exists in the FTP and Notice logs
*
* Field: proto
* Notes: Field exists in the DNS, Conn, DPD, and Notice logs
*/
"file_mime_type": {
"type": "string",
"index": "not_analyzed"
},
"file_desc": {
"type": "string",
"index": "not_analyzed"
},
"note": {
"type": "string",
"index": "not_analyzed"
},
"msg": {
"type": "string",
"index": "not_analyzed"
},
"sub": {
"type": "string",
"index": "not_analyzed"
},
"src": {
"type": "ip"
},
"dst": {
"type": "ip"
},
"p": {
"type": "integer",
"index": "not_analyzed"
},
"n": {
"type": "integer",
"index": "not_analyzed"
},
"src_peer": {
"type": "ip"
},
"peer_descr": {
"type": "string",
"index": "not_analyzed"
},
"actions": {
"type": "string",
"index": "not_analyzed"
},
"suppress_for": {
"type": "double",
"index": "not_analyzed"
},
"dropped": {
"type": "boolean"
},
/*
* DHCP log support
* https://www.bro.org/sphinx/scripts/base/protocols/dhcp/main.bro.html#type-DHCP::Info
*
* Notable Fields
* Field: trans_id
* Notes: Field exists in the DNS and DHCP logs
*
* Field: mac
* Notes: Field exists in the DHCP, RADIUS, and Known::DevicesInfo logs
*/
"mac": {
"type": "string",
"index": "not_analyzed"
},
"assigned_ip": {
"type": "ip"
},
"lease_time": {
"type": "float",
"index": "not_analyzed"
},
/*
* SSH log support
* https://www.bro.org/sphinx/scripts/base/protocols/ssh/main.bro.html#type-SSH::Info
*
* Notable Fields
* Field: version
* Notes: Field exists in the HTTP, SSL, and SSH logs
*/
"auth_success": {
"type": "boolean"
},
"auth_attempts": {
"type": "integer",
"index": "not_analyzed"
},
"direction": {
"type": "string",
"index": "not_analyzed"
},
"client": {
"type": "string",
"index": "not_analyzed"
},
"server": {
"type": "string",
"index": "not_analyzed"
},
"cipher_alg": {
"type": "string",
"index": "not_analyzed"
},
"mac_alg": {
"type": "string",
"index": "not_analyzed"
},
"compression_alg": {
"type": "string",
"index": "not_analyzed"
},
"kex_alg": {
"type": "string",
"index": "not_analyzed"
},
"host_key_alg": {
"type": "string",
"index": "not_analyzed"
},
"host_key": {
"type": "string",
"index": "not_analyzed"
},
/*
* Software log support
* https://www.bro.org/sphinx/scripts/base/frameworks/software/main.bro.html#type-Software::Info
*
* Notable Fields
* Field: host
* Notes: Field exists in the HTTP and Software logs
*/
"host_p": {
"type": "integer",
"index": "not_analyzed"
},
"software_type": {
"type": "string",
"index": "not_analyzed"
},
"version:major": {
"type": "string",
"index": "not_analyzed"
},
"version:minor": {
"type": "string",
"index": "not_analyzed"
},
"version:minor2": {
"type": "string",
"index": "not_analyzed"
},
"version:minor3": {
"type": "string",
"index": "not_analyzed"
},
"version:addl": {
"type": "string",
"index": "not_analyzed"
},
"unparsed_version": {
"type": "string",
"analyzer": "simple"
},
/*
* RADIUS log support
* https://www.bro.org/sphinx/scripts/base/protocols/radius/main.bro.html#type-RADIUS::Info
*
* Notable Fields
* Field: username
* Notes: Field exists in the HTTP and RADIUS logs
*
* Field: mac
* Notes: Field exists in the DHCP, RADIUS, and Known::DevicesInfo logs
*/
"remote_ip": {
"type": "ip"
},
"connect_info": {
"type": "string",
"index": "not_analyzed"
},
"result": {
"type": "string",
"index": "not_analyzed"
},
/*
* X509 log support
* https://www.bro.org/sphinx/scripts/base/files/x509/main.bro.html#type-X509::Info
*
* Notable Fields
* Field: id
* Notes: In other bro records, the id field is of type conn_id, so it is
* expanded before being logged into 4 fields, all of which are addressed
* under the "Widely-used Bro fields" section of this template. In X509
* logs, however, id is a string to identify the certificate file id.
*/
"id": {
"type": "string",
"index": "not_analyzed"
},
"certificate:version": {
"type": "integer",
"index": "not_analyzed"
},
"certificate:serial": {
"type": "string",
"index": "not_analyzed"
},
"certificate:subject": {
"type": "string",
"index": "not_analyzed"
},
"certificate:issuer": {
"type": "string",
"index": "not_analyzed"
},
"certificate:not_valid_before": {
"type": "string",
"index": "not_analyzed"
},
"certificate:not_valid_after": {
"type": "string",
"index": "not_analyzed"
},
"certificate:key_alg": {
"type": "string",
"index": "not_analyzed"
},
"certificate:sig_alg": {
"type": "string",
"index": "not_analyzed"
},
"certificate:key_type": {
"type": "string",
"index": "not_analyzed"
},
"certificate:key_length": {
"type": "integer",
"index": "not_analyzed"
},
"certificate:exponent": {
"type": "string",
"index": "not_analyzed"
},
"certificate:curve": {
"type": "string",
"index": "not_analyzed"
},
"san:dns": {
"type": "string",
"index": "not_analyzed"
},
"san:uri": {
"type": "string",
"index": "not_analyzed"
},
"san:email": {
"type": "string",
"index": "not_analyzed"
},
"san:ip": {
"type": "string",
"index": "not_analyzed"
},
"basic_constraints:ca": {
"type": "boolean"
},
"basic_constraints:path_len": {
"type": "integer",
"index": "not_analyzed"
},
/*
* Known::DevicesInfo log support
* https://www.bro.org/sphinx/scripts/policy/misc/known-devices.bro.html#type-Known::DevicesInfo
*
* Notable Fields
* Field: mac
* Notes: Field exists in the DHCP, RADIUS, and Known::DevicesInfo logs
*/
"dhcp_host_name": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}