NGINX App Protect ist eine NGINX basierte App Sicherheitslösung für die Infrastruktur von Webanwendungen. Die Software basiert auf der marktführenden WAF (Web Application Firewall) von F5, Sicherheitskontrollen lassen sich in Apps einbeziehen und es läuft nativ auf NGINX Plus. Somit können Applikationen mit leistungsstarker, skalierbarer und bewährter Sicherheit ausgestattet und vor Angriffen und Datendiebstahl geschützt werden. Durch die Integration von NGINX App Protect in die Entwicklungspipelines ist es möglich, bereits vor der Freigabe Fehler zu entdecken und zu beheben. Dadurch lassen sich Kosten sparen und gleichzeitig die Produktivität steigern.
NGINX App Protect selbst liefert jedoch keine Möglichkeit der Visualisierung. Hierfür gibt es eine Open-Source-Implementierung, das auf Github hier gehostet wird. Dieses bereitet die Inhalte der Logdateien von NGINX App Protect auf und übersendet diese an Elasticsearch. Eigens hierfür erstellte Dashboards werten diese übermittelten Indexeinträge aus und stellen diese grafisch in folgender Form dar.
Das Dashboard erlaubt einen schnellen Überblick über die Zugriffe auf unsere Webseiten. Dabei kann u.a. schnell erkannt werden, aus welchen Regionen diese Zugriffe erfolgen und ob diese Zugriffe entsprechend der Sicherheitsbestimmungen einen versuchten Angriff auf die geschützten Webseiten darstellt. Entsprechende Gegenmaßnahmen können nun eingeleitet werden, in dem z.B. auffällige ungewünschte IP Adressen über eine entsprechende Firewall Regel bereits vorher blockiert werden.
Die Anreicherung der Logdaten von App Protect für die Indizierung in Elasticsearch erfolgt in diesem Projekt per logstash.
Aufgabenstellung
Projektvorgaben erforderten den Verzicht auf logstash. Basierend auf diesem Open-Source-Projekt sollte die Anreicherung der Logdaten für die Indizierung in Elasticsearch über eine sogenannte „ingest pipeline“ erfolgen. D.h. anstelle von logstash soll das gleiche Ergebnis mit einer derartigen Eingangspipeline erzielt werden, um eine Visualisierung der durch NGINX App Protect blockierten HTTP-Requests hinzubekommen.
Anpassung App Protect in /etc/nginx/nginx.conf
Damit NGINX App Protect ein Security-Logfile erstellt, muss in der Konfigurationsdatei nginx.conf folgender Eintrag ergänzt werden. /var/log/app_protect/security.log wird in einem zweiten Schritt von filebeat an Elastic gesendet.
.......
app_protect_enable on;
app_protect_policy_file "/etc/nginx/NginxDefaultPolicy.json"; # This is a reference to the policy file to use.
app_protect_security_log_enable on; # This section enables the logging capability
app_protect_security_log "/etc/app_protect/conf/log_default.json" /var/log/app_protect/security.log; # Configuration of security log file, which will be passed to the elastic ingest pipeline via filebeat
.......
Zuordnung der ingest-pipeline in /etc/filebeat/filebeat.yml
Damit /var/log/app_protect/security.log der ingest-pipeline tm-waf-logs zugeordnet wird müssen folgende Änderungen in /etc/filebeat/filebeat.yml vorgenommen werden.
.....
output.elasticsearch:
hosts: ["http://localhost:9200"]
# Zuordnung der ingest pipeline tm-waf-logs wenn die Zeile aus dem security logfile von NGINX App Protect stammt
pipelines:
- pipeline: tm-waf-logs
when.contains:
message: "attack_type"
# Zuordnung eines Index für die spätere Analyse über das Dashbaord
indices:
- index: "waf-logs-%{+YYY.MM.dd}"
when.contains:
message: "attack_type"
..........
Erzeugen der ingest pipeline tm-waf-logs
Da bei ingest pipelines per default break_on_match: true ist und dies nicht geändert werden kann, ist es notwendig, die einzelnen patterns in jeweils einen eigenen grok filter zu packen.
Ansonsten würde beim ersten Treffer der Rest der pipeline übersprungen und somit nicht alle notwendigen Felder für das Dashboard zugeordnet werden.
Entsprechend der log Einträge wird der Block message in seine Einzelbestandteile “zerlegt” und einzelnen Feldern zugeordnet. Diese Felder werden später durch das entsprechende Dashboard ausgewertet .
Enthält so z.B. der http request eine ip Adresse in x_forwarded_for_header_value, dann wird diese Ip Adresse für die Auswertung der geoip verwendet. Falls diese entfällt (N/A) wird die Adresse des ip_client verwendet.
Auszug ingest-pipeline tm-waf-logs
PUT _ingest/pipeline/tm-waf-logs
{
"description": "waf-logs-ingest-pipeline",
"processors": [
{
"grok": {
"field": "message",
"patterns": [
"attack_type=\"%{DATA:attack_type}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
"blocking_exception_reason=\"%{DATA:blocking_exception_reason}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
"date_time=\"%{DATA:date_time}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
"dest_port=\"%{DATA:dest_port}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
"ip_client=\"%{DATA:ip_client}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",is_truncated=\"%{DATA:is_truncated}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",method=\"%{DATA:method}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",policy_name=\"%{DATA:policy_name}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",protocol=\"%{DATA:protocol}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",request_status=\"%{DATA:request_status}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",response_code=\"%{DATA:response_code}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",severity=\"%{DATA:severity}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",sig_cves=\"%{DATA:sig_cves}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",sig_ids=\"%{DATA:sig_ids}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",sig_names=\"%{DATA:sig_names}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",sig_set_names=\"%{DATA:sig_set_names}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",src_port=\"%{DATA:src_port}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",sub_violations=\"%{DATA:sub_violations}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",support_id=\"%{DATA:support_id}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",threat_campaign_names=\"%{DATA:threat_campaign_names}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",unit_hostname=\"%{DATA:unit_hostname}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",uri=\"%{DATA:uri}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",violation_rating=\"%{DATA:violation_rating}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",vs_name=\"%{DATA:vs_name}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",x_forwarded_for_header_value=\"%{DATA:x_forwarded_for_header_value}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",outcome=\"%{DATA:outcome}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",outcome_reason=\"%{DATA:outcome_reason}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",violations=\"%{DATA:violations}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",violation_details=\"%{DATA:violation_details}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",bot_signature_name=\"%{DATA:bot_signature_name}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",bot_category=\"%{DATA:bot_category}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",bot_anomalies=\"%{DATA:bot_anomalies}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",enforced_bot_anomalies=\"%{DATA:enforced_bot_anomalies}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",client_class=\"%{DATA:client_class}\""
]
}
},
{
"grok": {
"field": "message",
"patterns": [
",request=\"%{DATA:request}\""
]
}
},
{
"set": {
"description": "If 'x_forwarded_for_header_value' is not 'N/A', set 'source_host' to 'x_forwarded_for_header_value'",
"if": "ctx.x_forwarded_for_header_value != 'N/A'",
"field": "source_host",
"value": "{{x_forwarded_for_header_value}}"
}
},
{
"set": {
"description": "If 'x_forwarded_for_header_value' is 'N/A', set 'source_host' to 'ip_client'",
"if": "ctx.x_forwarded_for_header_value == 'N/A'",
"field": "source_host",
"value": "{{ip_client}}"
}
},
{
"geoip": {
"field": "source_host"
}
}
]
}
HIER befindet sich der komplette Code zur Erzeugung der ingest-pipeline auch nochmal zum Download.
Einspielen des Dashboards TM NGINX Waf - Overview
Als letzter Schritt muss das Dashboard TM_NGINX_WAF_Overview.ndjson über Kibana→ Stack Management → Saved Objects importiert werden ( Elasticsearch Version 7 ).
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"title":"Requests Rate","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Requests Rate\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(split=request_status.keyword:20, index=waf-logs-*).label(\\\"Request Status: $1\\\", \\\"^.*:(.*) >.*\\\")\",\"interval\":\"auto\"},\"aggs\":[]}"},"coreMigrationVersion":"7.13.1","id":"92a3e950-3438-11ea-983a-f74b5d6c2f97","migrationVersion":{"visualization":"7.13.1"},"references":[],"type":"visualization","updated_at":"2021-04-23T09:21:45.628Z","version":"WzIxMDMzLDJd"}
{"attributes":{"fieldAttrs":"{\"geoip.country_iso_code\":{\"count\":1},\"geoip.region_iso_code\":{\"count\":1},\"method\":{\"count\":1}}","fields":"[]","runtimeFieldMap":"{}","timeFieldName":"@timestamp","title":"waf-logs-*"},"coreMigrationVersion":"7.13.1","id":"b6896160-1ade-11ea-bb19-634fb23c25ea","migrationVersion":{"index-pattern":"7.11.0"},"references":[],"type":"index-pattern","updated_at":"2021-06-09T15:01:38.941Z","version":"WzMzNDIzLDJd"}
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Requests Distribution","uiStateJSON":"{\"vis\":{\"colors\":{\"Blocked\":\"#BF1B00\",\"Alarmed\":\"#EAB839\",\"Alerted\":\"#E5AC0E\"}}}","version":1,"visState":"{\"title\":\"Requests Distribution\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{},\"params\":{},\"aggType\":\"filters\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"filters\",\"schema\":\"segment\",\"params\":{\"filters\":[{\"input\":{\"query\":\"violations.keyword : N/A and request_status : passed\",\"language\":\"kuery\"},\"label\":\"Clean\"},{\"input\":{\"query\":\"request_status : blocked\",\"language\":\"kuery\"},\"label\":\"Blocked\"},{\"input\":{\"query\":\"request_status : alerted\",\"language\":\"kuery\"},\"label\":\"Alerted\"}]}}]}"},"coreMigrationVersion":"7.13.1","id":"7e5c83d0-2056-11ea-bcff-c3c564493235","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"b6896160-1ade-11ea-bb19-634fb23c25ea","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-04-23T09:21:45.628Z","version":"WzIxMDM0LDJd"}
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"title":"Response Codes Rate","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Response Codes Rate\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(split=response_code.keyword:20, index=waf-logs-*).label(\\\"Response Code: $1\\\", \\\"^.*:(.*) >.*\\\")\",\"interval\":\"auto\"},\"aggs\":[]}"},"coreMigrationVersion":"7.13.1","id":"d990f700-3702-11ea-a241-09ab559b62bd","migrationVersion":{"visualization":"7.13.1"},"references":[],"type":"visualization","updated_at":"2021-04-23T09:21:45.628Z","version":"WzIxMDM1LDJd"}
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Response Codes Distribution","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Response Codes Distribution\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"response_code.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"}}]}"},"coreMigrationVersion":"7.13.1","id":"5e376660-3703-11ea-a241-09ab559b62bd","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"b6896160-1ade-11ea-bb19-634fb23c25ea","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-04-23T09:21:45.628Z","version":"WzIxMDM2LDJd"}
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Top Talkers","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Top Talkers\",\"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":true,\"show\":true,\"truncate\":15},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"},\"y\":[{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}]},\"grid\":{\"categoryLines\":false},\"labels\":{\"show\":false},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"drawLinesBetweenPoints\":true,\"mode\":\"stacked\",\"show\":\"true\",\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"thresholdLine\":{\"color\":\"#34130C\",\"show\":false,\"style\":\"full\",\"value\":10,\"width\":1},\"times\":[],\"type\":\"histogram\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Count\"},\"type\":\"value\"}],\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"ip_client.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":20,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Client IPs\"}}]}"},"coreMigrationVersion":"7.13.1","id":"5eee5660-366b-11ea-a241-09ab559b62bd","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"b6896160-1ade-11ea-bb19-634fb23c25ea","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-04-23T09:21:45.628Z","version":"WzIxMDM3LDJd"}
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Top URLs","uiStateJSON":"{}","version":1,"visState":"{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"customLabel\":\"URLs\",\"field\":\"uri.keyword\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":20},\"schema\":\"segment\",\"type\":\"terms\"}],\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"labels\":{\"filter\":true,\"show\":true,\"truncate\":10},\"position\":\"bottom\",\"scale\":{\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{},\"type\":\"category\"}],\"dimensions\":{\"x\":{\"accessor\":0,\"aggType\":\"terms\",\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"missingBucketLabel\":\"Missing\",\"otherBucketLabel\":\"Other\"}},\"params\":{}},\"y\":[{\"accessor\":1,\"aggType\":\"count\",\"format\":{\"id\":\"number\"},\"params\":{}}]},\"grid\":{\"categoryLines\":false},\"labels\":{\"show\":false},\"legendPosition\":\"right\",\"seriesParams\":[{\"data\":{\"id\":\"1\",\"label\":\"Count\"},\"drawLinesBetweenPoints\":true,\"mode\":\"stacked\",\"show\":\"true\",\"showCircles\":true,\"type\":\"histogram\",\"valueAxis\":\"ValueAxis-1\"}],\"thresholdLine\":{\"color\":\"#34130C\",\"show\":false,\"style\":\"full\",\"value\":10,\"width\":1},\"times\":[],\"type\":\"histogram\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"filter\":false,\"rotate\":0,\"show\":true,\"truncate\":100},\"name\":\"LeftAxis-1\",\"position\":\"left\",\"scale\":{\"mode\":\"normal\",\"type\":\"linear\"},\"show\":true,\"style\":{},\"title\":{\"text\":\"Count\"},\"type\":\"value\"}],\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true},\"title\":\"Top URLs\",\"type\":\"histogram\"}"},"coreMigrationVersion":"7.13.1","id":"2b7fd200-3642-11ea-983a-f74b5d6c2f97","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"b6896160-1ade-11ea-bb19-634fb23c25ea","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-04-23T09:21:45.628Z","version":"WzIxMDM4LDJd"}
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Top Violator IPs","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Top Violator IPs\",\"type\":\"histogram\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"filter\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"histogram\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"labels\":{\"show\":false},\"thresholdLine\":{\"show\":false,\"value\":10,\"width\":1,\"style\":\"full\",\"color\":\"#34130C\"},\"dimensions\":{\"x\":{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"},\"y\":[{\"accessor\":2,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"}],\"series\":[{\"accessor\":1,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]},\"palette\":{\"type\":\"palette\",\"name\":\"kibana_palette\"},\"isVislibVis\":true,\"detailedTooltip\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"ip_client.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":20,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"customLabel\":\"Violator IPs\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"violations.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"exclude\":\"N/A\"}}]}"},"coreMigrationVersion":"7.13.1","id":"e97cb520-2053-11ea-bcff-c3c564493235","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"b6896160-1ade-11ea-bb19-634fb23c25ea","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-04-23T09:21:45.628Z","version":"WzIxMDM5LDJd"}
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Signatures Distribution","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Signatures Distribution\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100},\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"sig_ids.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":20,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"exclude\":\"N/A\",\"customLabel\":\"Signature ID\"}}]}"},"coreMigrationVersion":"7.13.1","id":"8ace9ec0-2054-11ea-bcff-c3c564493235","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"b6896160-1ade-11ea-bb19-634fb23c25ea","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-04-23T09:21:45.628Z","version":"WzIxMDQwLDJd"}
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"Violations Distribution","uiStateJSON":"{}","version":1,"visState":"{\"title\":\"Violations Distribution\",\"type\":\"pie\",\"params\":{\"addLegend\":true,\"addTooltip\":true,\"dimensions\":{\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"buckets\":[{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"}]},\"isDonut\":true,\"labels\":{\"last_level\":true,\"show\":false,\"truncate\":100,\"values\":true},\"legendPosition\":\"right\",\"type\":\"pie\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"violations.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":20,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"exclude\":\"N/A\",\"customLabel\":\"Violation\"}}]}"},"coreMigrationVersion":"7.13.1","id":"9b6276f0-2052-11ea-bcff-c3c564493235","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"b6896160-1ade-11ea-bb19-634fb23c25ea","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-04-23T09:21:45.628Z","version":"WzIxMDQxLDJd"}
{"attributes":{"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"title":"GEO","uiStateJSON":"{\"mapZoom\":1,\"mapCenter\":[64.5498936275396,0]}","version":1,"visState":"{\"title\":\"GEO\",\"type\":\"region_map\",\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"params\":{\"customLabel\":\"Request Count\"},\"schema\":\"metric\"},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"params\":{\"field\":\"geoip.country_iso_code.keyword\",\"orderBy\":\"1\",\"order\":\"desc\",\"size\":5,\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\"},\"schema\":\"segment\"}],\"params\":{\"addTooltip\":true,\"bucket\":{\"accessor\":0,\"format\":{\"id\":\"terms\",\"params\":{\"id\":\"string\",\"otherBucketLabel\":\"Other\",\"missingBucketLabel\":\"Missing\"}},\"params\":{},\"aggType\":\"terms\"},\"colorSchema\":\"Green to Red\",\"emsHotLink\":\"https://maps.elastic.co/v7.4?locale=en#file/world_countries\",\"isDisplayWarning\":true,\"legendPosition\":\"bottomright\",\"mapCenter\":[0,0],\"mapZoom\":2,\"metric\":{\"accessor\":1,\"format\":{\"id\":\"number\"},\"params\":{},\"aggType\":\"count\"},\"outlineWeight\":1,\"selectedJoinField\":{\"type\":\"id\",\"name\":\"iso2\",\"description\":\"ISO 3166-1 alpha-2 code\"},\"showAllShapes\":true,\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"selectedTmsLayer\":{\"origin\":\"elastic_maps_service\",\"id\":\"road_map\",\"minZoom\":0,\"maxZoom\":20,\"attribution\":\"OpenStreetMap contributors | OpenMapTiles | MapTiler | Elastic Maps Service
\"}},\"selectedLayer\":{\"name\":\"World Countries\",\"origin\":\"elastic_maps_service\",\"id\":\"world_countries\",\"created_at\":\"2017-04-26T17:12:15.978370\",\"attribution\":\"Made with NaturalEarth | Elastic Maps Service\",\"fields\":[{\"type\":\"id\",\"name\":\"iso2\",\"description\":\"ISO 3166-1 alpha-2 code\"},{\"type\":\"id\",\"name\":\"iso3\",\"description\":\"ISO 3166-1 alpha-3 code\"},{\"type\":\"property\",\"name\":\"name\",\"description\":\"name\"}],\"format\":{\"type\":\"geojson\"},\"layerId\":\"elastic_maps_service.World Countries\",\"isEMS\":true}}}"},"coreMigrationVersion":"7.13.1","id":"d19c31a0-3666-11ea-a241-09ab559b62bd","migrationVersion":{"visualization":"7.13.1"},"references":[{"id":"b6896160-1ade-11ea-bb19-634fb23c25ea","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"visualization","updated_at":"2021-06-09T14:54:02.718Z","version":"WzMyNjgxLDJd"}
{"attributes":{"columns":["method","uri","violations","response_code","request_status","ip_client"],"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"highlightAll\":true,\"version\":true,\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[],\"indexRefName\":\"kibanaSavedObjectMeta.searchSourceJSON.index\"}"},"sort":[["@timestamp","desc"]],"title":"Nginx WAF All Requests","version":1},"coreMigrationVersion":"7.13.1","id":"e3e0a060-343d-11ea-983a-f74b5d6c2f97","migrationVersion":{"search":"7.9.3"},"references":[{"id":"b6896160-1ade-11ea-bb19-634fb23c25ea","name":"kibanaSavedObjectMeta.searchSourceJSON.index","type":"index-pattern"}],"type":"search","updated_at":"2021-06-09T15:04:02.722Z","version":"WzMzODM1LDJd"}
{"attributes":{"description":"","hits":0,"kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"language\":\"kuery\",\"query\":\"\"},\"filter\":[]}"},"optionsJSON":"{\"hidePanelTitles\":false,\"useMargins\":true}","panelsJSON":"[{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"h\":7,\"i\":\"d7699f7c-f08d-49a6-bba4-391818076fc2\",\"w\":36,\"x\":0,\"y\":0},\"panelIndex\":\"d7699f7c-f08d-49a6-bba4-391818076fc2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_d7699f7c-f08d-49a6-bba4-391818076fc2\"},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"h\":7,\"i\":\"be9d107d-a926-4151-b184-cc8ce56a84f4\",\"w\":12,\"x\":36,\"y\":0},\"panelIndex\":\"be9d107d-a926-4151-b184-cc8ce56a84f4\",\"embeddableConfig\":{\"colors\":{\"Alarmed\":\"#EAB839\",\"Blocked\":\"#BF1B00\"},\"legendOpen\":false,\"vis\":{\"colors\":{\"Alarmed\":\"#EAB839\",\"Blocked\":\"#BF1B00\"},\"legendOpen\":true},\"enhancements\":{}},\"panelRefName\":\"panel_be9d107d-a926-4151-b184-cc8ce56a84f4\"},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"h\":7,\"i\":\"52a4031f-1321-4cf8-a649-bb3b87ee24d2\",\"w\":36,\"x\":0,\"y\":7},\"panelIndex\":\"52a4031f-1321-4cf8-a649-bb3b87ee24d2\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_52a4031f-1321-4cf8-a649-bb3b87ee24d2\"},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"h\":7,\"i\":\"b542bf0d-be9e-415d-bb88-5749cff274a3\",\"w\":12,\"x\":36,\"y\":7},\"panelIndex\":\"b542bf0d-be9e-415d-bb88-5749cff274a3\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_b542bf0d-be9e-415d-bb88-5749cff274a3\"},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"h\":11,\"i\":\"cceda060-776b-40cb-b045-5649ace38816\",\"w\":24,\"x\":0,\"y\":14},\"panelIndex\":\"cceda060-776b-40cb-b045-5649ace38816\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_cceda060-776b-40cb-b045-5649ace38816\"},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"h\":11,\"i\":\"37bc87ed-cb35-48fb-84fe-1142f57de563\",\"w\":24,\"x\":24,\"y\":14},\"panelIndex\":\"37bc87ed-cb35-48fb-84fe-1142f57de563\",\"embeddableConfig\":{\"vis\":{\"legendOpen\":false},\"enhancements\":{}},\"panelRefName\":\"panel_37bc87ed-cb35-48fb-84fe-1142f57de563\"},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"h\":10,\"i\":\"494496f1-d1fd-4ea6-abaa-69c8728c5dec\",\"w\":17,\"x\":0,\"y\":25},\"panelIndex\":\"494496f1-d1fd-4ea6-abaa-69c8728c5dec\",\"embeddableConfig\":{\"vis\":{\"legendOpen\":false},\"enhancements\":{}},\"panelRefName\":\"panel_494496f1-d1fd-4ea6-abaa-69c8728c5dec\"},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"h\":10,\"i\":\"8ae28754-12f5-4508-85bc-c99c40f45139\",\"w\":15,\"x\":17,\"y\":25},\"panelIndex\":\"8ae28754-12f5-4508-85bc-c99c40f45139\",\"embeddableConfig\":{\"legendOpen\":false,\"vis\":{\"legendOpen\":true},\"enhancements\":{}},\"panelRefName\":\"panel_8ae28754-12f5-4508-85bc-c99c40f45139\"},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"h\":10,\"i\":\"c8041f88-a91e-4904-9991-6a891a4bbb2e\",\"w\":16,\"x\":32,\"y\":25},\"panelIndex\":\"c8041f88-a91e-4904-9991-6a891a4bbb2e\",\"embeddableConfig\":{\"legendOpen\":false,\"vis\":{\"legendOpen\":true},\"enhancements\":{}},\"panelRefName\":\"panel_c8041f88-a91e-4904-9991-6a891a4bbb2e\"},{\"version\":\"7.13.1\",\"type\":\"visualization\",\"gridData\":{\"h\":14,\"i\":\"93ed98ec-fb4c-4171-a847-85f6a6c38e7d\",\"w\":48,\"x\":0,\"y\":35},\"panelIndex\":\"93ed98ec-fb4c-4171-a847-85f6a6c38e7d\",\"embeddableConfig\":{\"mapCenter\":null,\"mapZoom\":2,\"enhancements\":{}},\"panelRefName\":\"panel_93ed98ec-fb4c-4171-a847-85f6a6c38e7d\"},{\"version\":\"7.13.1\",\"type\":\"search\",\"gridData\":{\"h\":15,\"i\":\"45501e8d-621a-4908-90b8-c2db02b3e82b\",\"w\":48,\"x\":0,\"y\":49},\"panelIndex\":\"45501e8d-621a-4908-90b8-c2db02b3e82b\",\"embeddableConfig\":{\"enhancements\":{}},\"panelRefName\":\"panel_45501e8d-621a-4908-90b8-c2db02b3e82b\"}]","timeRestore":false,"title":"TM NGINX WAF - Overview","version":1},"coreMigrationVersion":"7.13.1","id":"6b701f30-c932-11eb-88d1-55a6c5eb1072","migrationVersion":{"dashboard":"7.13.1"},"references":[{"id":"92a3e950-3438-11ea-983a-f74b5d6c2f97","name":"d7699f7c-f08d-49a6-bba4-391818076fc2:panel_d7699f7c-f08d-49a6-bba4-391818076fc2","type":"visualization"},{"id":"7e5c83d0-2056-11ea-bcff-c3c564493235","name":"be9d107d-a926-4151-b184-cc8ce56a84f4:panel_be9d107d-a926-4151-b184-cc8ce56a84f4","type":"visualization"},{"id":"d990f700-3702-11ea-a241-09ab559b62bd","name":"52a4031f-1321-4cf8-a649-bb3b87ee24d2:panel_52a4031f-1321-4cf8-a649-bb3b87ee24d2","type":"visualization"},{"id":"5e376660-3703-11ea-a241-09ab559b62bd","name":"b542bf0d-be9e-415d-bb88-5749cff274a3:panel_b542bf0d-be9e-415d-bb88-5749cff274a3","type":"visualization"},{"id":"5eee5660-366b-11ea-a241-09ab559b62bd","name":"cceda060-776b-40cb-b045-5649ace38816:panel_cceda060-776b-40cb-b045-5649ace38816","type":"visualization"},{"id":"2b7fd200-3642-11ea-983a-f74b5d6c2f97","name":"37bc87ed-cb35-48fb-84fe-1142f57de563:panel_37bc87ed-cb35-48fb-84fe-1142f57de563","type":"visualization"},{"id":"e97cb520-2053-11ea-bcff-c3c564493235","name":"494496f1-d1fd-4ea6-abaa-69c8728c5dec:panel_494496f1-d1fd-4ea6-abaa-69c8728c5dec","type":"visualization"},{"id":"8ace9ec0-2054-11ea-bcff-c3c564493235","name":"8ae28754-12f5-4508-85bc-c99c40f45139:panel_8ae28754-12f5-4508-85bc-c99c40f45139","type":"visualization"},{"id":"9b6276f0-2052-11ea-bcff-c3c564493235","name":"c8041f88-a91e-4904-9991-6a891a4bbb2e:panel_c8041f88-a91e-4904-9991-6a891a4bbb2e","type":"visualization"},{"id":"d19c31a0-3666-11ea-a241-09ab559b62bd","name":"93ed98ec-fb4c-4171-a847-85f6a6c38e7d:panel_93ed98ec-fb4c-4171-a847-85f6a6c38e7d","type":"visualization"},{"id":"e3e0a060-343d-11ea-983a-f74b5d6c2f97","name":"45501e8d-621a-4908-90b8-c2db02b3e82b:panel_45501e8d-621a-4908-90b8-c2db02b3e82b","type":"search"}],"type":"dashboard","updated_at":"2021-06-09T14:54:50.572Z","version":"WzMyNzM0LDJd"}
{"exportedCount":13,"missingRefCount":0,"missingReferences":[]}
Das Dashboard kann HIER ebenfalls heruntergeladen werden.
Weitere Informationen über die Vor- und Nachteile der Gegenüberstellung von Ingest Pipeline – Logstash findet ihr in folgendem Artikel.