Class: Suricata::Surilizer

Inherits:
Object
  • Object
show all
Defined in:
lib/suricata/surilizer.rb

Overview

src-ip][counter
src-ip][dst
src-ip][counter
src-ip][desc][counter

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file = nil) ⇒ Surilizer


33
34
35
36
37
38
39
# File 'lib/suricata/surilizer.rb', line 33

def initialize(file = nil)

  @logfile = Suricata::Logfile.new(file) if not file.nil?
  @src = Hash.new
  @dst = Hash.new
  @lines = Counter.new
end

Instance Attribute Details

#linesObject (readonly)

Returns the value of attribute lines


31
32
33
# File 'lib/suricata/surilizer.rb', line 31

def lines
  @lines
end

#logfileObject

Returns the value of attribute logfile


30
31
32
# File 'lib/suricata/surilizer.rb', line 30

def logfile
  @logfile
end

#srcObject (readonly)

Returns the value of attribute src


31
32
33
# File 'lib/suricata/surilizer.rb', line 31

def src
  @src
end

Instance Method Details

#analyzeObject


43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/suricata/surilizer.rb', line 43

def analyze()
  @logfile.readline_parse do |entry|
    @lines.increase
    addCounter(@src,entry.conn.src)
    addEntry(@src[entry.conn.src],'dst',Hash)
    addCounter(@src[entry.conn.src]['dst'],entry.conn.dst)
    addEntry(@src[entry.conn.src]['dst'][entry.conn.dst],'desc',Hash)
    addCounter(@src[entry.conn.src]['dst'][entry.conn.dst]['desc'],entry.description)
    @src[entry.conn.src]['dst'][entry.conn.dst]['desc'][entry.description]['prio'] = entry.priority
    @src[entry.conn.src]['dst'][entry.conn.dst]['desc'][entry.description]['class'] = entry.classification
  end


end

#getUniqEventsObject


58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/suricata/surilizer.rb', line 58

def getUniqEvents
  a = Array.new
  @src.each do |key,val|
    val['dst'].each do  |keya,vala|
    val['dst'][keya]['desc'].each do  |keyb,valb|
      a.push([keyb,val['dst'][keya]['desc'][keyb]['prio']])
    end

    end
  end

  return a.uniq
end

#resultObject


72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/suricata/surilizer.rb', line 72

def result
  events = getUniqEvents
  puts "======== Suricata Log Analysis ========"
  puts "Events: #{@lines}"
  puts "Unique Sources: #{@src.length}"
  puts "Unique Events: #{events.length}"
  puts "\n"
  puts "======== Unique Events ========="
  puts "\n"
  puts "PRIORITY\t| DESCRIPTION "
  events.sort{ |x,y| x[1] <=> y[1]}.each do |e|
    puts "#{e[1]}\t\t| #{e[0]}"
  end
  puts "\n"

  puts "======== Eventy by source ========"
  @src.each do |key,val|
    puts "Source: #{key}"
    val['dst'].each do  |keya,vala|
    puts "\t-> #{keya}\n"
    val['dst'][keya]['desc'].each do  |keyb,valb|
      puts "\t\t#{valb['counter'].count} x #{keyb} Prio: #{valb['prio']}\n"
    end

    end
    puts ""
  end

end