Advertisement
D0cEvil

Logstash - pihole dns parcer

Sep 23rd, 2022 (edited)
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 2.80 KB | Cybersecurity | 0 0
  1. ################# INPUT #################
  2.  
  3. input {
  4.     file {
  5.         path => [ "/tmp/pihole/pihole.*" ]
  6.         sincedb_path => "/dev/null"
  7.         start_position => "beginning"
  8.     }
  9. }
  10.  
  11. ################# FILTER #################
  12.  
  13. filter {
  14.  
  15.     if "query" in [message] {
  16.         grok {
  17.             match => {
  18.                 "message" => "%{MONTH:month}  %{MONTHDAY:day} %{TIME:time} %{SYSLOGPROG} ?\[%{WORD:pid}?]: %{WORD:pihole.dns.message.type}?\[%{WORD:pihole.dns.record.type}?] %{GREEDYDATA:pihole.dns.request} %{WORD} %{IP:pihole.dns.client.ip}"
  19.             }
  20.         }      
  21.         if "_grokparsefailure" in [tags] {
  22.             drop { }
  23.         }
  24.     }
  25.  
  26.     else if "forwarded" in [message] {
  27.         grok {
  28.             match => {
  29.                 "message" => "%{MONTH:month}  %{MONTHDAY:day} %{TIME:time} %{SYSLOGPROG} ?\[%{WORD:pid}?]: %{WORD:pihole.dns.message.type} %{GREEDYDATA:pihole.dns.request} %{WORD} %{IP:pihole.dns.server.ip}"
  30.             }
  31.         }
  32.         if "_grokparsefailure" in [tags] {
  33.             drop { }
  34.         }
  35.     }
  36.  
  37.     else if "reply" in [message] and "<CNAME>" in [message] {
  38.         grok {
  39.             match => {
  40.                 "message" => "%{MONTH:month}  %{MONTHDAY:day} %{TIME:time} %{SYSLOGPROG} ?\[%{WORD:pid}?]: %{WORD:pihole.dns.message.type} %{GREEDYDATA:pihole.dns.request} %{WORD} ?\<%{WORD:pihole.dns.record.type}?\>"
  41.             }
  42.         }
  43.         if "_grokparsefailure" in [tags] {
  44.             drop { }
  45.         }
  46.     }
  47.  
  48.     else if "reply" in [message] and "<CNAME>" not in [message]{
  49.         grok {
  50.             match => {
  51.                 "message" => "%{MONTH:month}  %{MONTHDAY:day} %{TIME:time} %{SYSLOGPROG} ?\[%{WORD:pid}?]: %{WORD:pihole.dns.message.type} %{GREEDYDATA:pihole.dns.request} %{WORD} %{IP:pihole.dns.reply.ip}"
  52.             }
  53.         }
  54.         geoip {
  55.             source => "pihole.dns.reply.ip"
  56.         }
  57.         if "_grokparsefailure" in [tags] {
  58.             drop { }
  59.         }
  60.     }
  61.  
  62.     else if "cached" in [message] and "<CNAME>" in [message] {
  63.         grok {
  64.             match => {
  65.                 "message" => "%{MONTH:month}  %{MONTHDAY:day} %{TIME:time} %{SYSLOGPROG} ?\[%{WORD:pid}?]: %{WORD:pihole.dns.message.type} %{GREEDYDATA:pihole.dns.request} %{WORD} ?\<%{WORD:pihole.dns.record.type}?\>"
  66.             }
  67.         }
  68.         if "_grokparsefailure" in [tags] {
  69.             drop { }
  70.         }
  71.     }
  72.    
  73.     else if "cached" in [message] and "NXDOMAIN" not in [message] {
  74.    
  75.         grok {
  76.             match => {
  77.                 "message" => "%{MONTH:month}  %{MONTHDAY:day} %{TIME:time} %{SYSLOGPROG} ?\[%{WORD:pid}?]: %{WORD:pihole.dns.message.type} %{GREEDYDATA:pihole.dns.request} %{WORD} %{IP:pihole.dns.reply.ip}"
  78.             }
  79.         }
  80.        
  81.         if "_grokparsefailure" in [tags] {
  82.             grok {
  83.                 match => {
  84.                     "message" => "%{MONTH:month}  %{MONTHDAY:day} %{TIME:time} %{SYSLOGPROG} ?\[%{WORD:pid}?]: %{WORD:pihole.dns.message.type} %{IP:pihole.dns.reply.ip} %{WORD} %{GREEDYDATA:pihole.dns.request}"
  85.                 }
  86.             }
  87.         }
  88.        
  89.         else "_grokparsefailure" in [tags] {
  90.             drop { }
  91.         }
  92.     }
  93.  
  94.     else {
  95.         drop { }
  96.     }
  97. }
  98.  
  99. ################# OUTPUT #################
  100.  
  101. output {
  102.     elasticsearch {
  103.         hosts => ['192.168.15.77:9200']
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement