IT-MÜCKE

logwatch für fail2ban einrichten

Beitragsdatum 20.02.2019
Letzte Aktualisierung -
Betrifft logwatch, fail2ban, Linux/Ubuntu, diverse Versionen

Einführung

  • Logwatch
    • Logwatch ist ein Tool, das logfiles ausliest und zusammenfasst
    • Der so generierte Report kann zB per E-Mail versand werden
    • Dadurch kann man die Aktivitäten auf einem Server durch Überfliegen des Reports bewerten und Probleme ggf. frühzeitig erkennen
    • Mehr Infos dazu im blog: logwatch
  • Fail2ban
    • fail2ban ist ein Tool, um wiederholte scheiternde Loginversuche automatisch zu erkennen und danach die Quell-IP-Adresse für einen bestimmten Zeitraum zu sperren
    • Wird eine IP-Adresse gesperrt, nennt sich das Ban (to ban - engl. für sperren)
    • Wird eine IP-Adresse nach der Sperrfrist wieder entsperrt, so nennt sich das Unban
    • Damit können zB brute force Attacken nach wenigen Versuchen unterbunden werden

Vorgehensweise

Ziele

  • Die fail2ban Logfiles können von logwatch bereits von Haus aus ausgewertet werden
  • Allerdings entspricht der Report nicht meinen Wünschen, denn man erhält eine Liste aller erkannten Login-Versuche und der Bans und Unbans - und das können recht viele sein
  • Mein Wunsch: ich will nur Bans und Unbans sehen und eine Summe der Bans und Unbans

Einrichtung von logwatch

  • Logfile-Gruppe definieren
    • Dazu folgende Datei anlegen/bearbeiten: /etc/logwatch/conf/logfiles/fail2ban.conf
      # /etc/logwatch/conf/logfiles/fail2ban.conf
      
      # The LogFile path is relative to /var/log by default.
      # You can change the default by setting LogDir.
      LogFile = fail2ban.log
      
      # This enables searching through zipped archives as well.
      Archive = fail2ban.log.*.gz
      
      # Expand the repeats (actually just removes them now).
      *ExpandRepeats
  • Service definieren
    • Dazu folgende Datei anlegen/bearbeiten: /etc/logwatch/conf/services/fail2ban.conf
      # /etc/logwatch//services/fail2ban.conf
       
      # title shown in the report
      Title = fail2ban-messages
      
      # logfile group
      LogFile = fail2ban
  • Parse-File
    • Skript zum Auslesen und Zusammenfassen der Logfiles im gewünschten Umfang
    • Dazu folgende Datei anlegen/bearbeiten: /etc/logwatch/scripts/services/fail2ban
      #!/usr/bin/env bash
      # /etc/logwatch/scripts/services/fail2ban
      
      # Change the line separator to split by new lines.
      OLD_IFS=$IFS
      IFS=$'\n'
      
      # set vars to 0
      BANS=0
      UNBANS=0
      
      # The contents of the log file are given in stdin.
      for LINE in $( cat /dev/stdin ); do
          # Only lines matching this regexp will be included.
          if echo $LINE|egrep 'NOTICE' &> /dev/null; then
              # Every line we echo here will be included in the logwatch report.
              echo $LINE
          fi
      
          if echo $LINE|egrep 'NOTICE.*Ban' &> /dev/null; then
            BAN=$[$BAN + 1]
          fi
          if echo $LINE|egrep 'NOTICE.*Unban' &> /dev/null; then
            UNBAN=$[$UNBAN + 1]
          fi
      done
      
      echo "$BAN Bans, $UNBAN Unbans"
    • Hinweise:
      • Bei fail2ban werden die Bans und Unbans mit dem Tag NOTICE markiert
      • Daher gibt dieses Skript nur Zeilen aus, die „NOTICE“ enthalten
      • Für die Berechnung der Anzahl von Bans und Unbans prüft es die Zeilen mit „NOTICE“ ferner auf „Ban“ oder „Unban“ und zählt entsprechend die Variablen hoch

Test

  • Ein Test kann mit folgendem Kommando durchgeführt werden
    logwatch --detail high --service fail2ban
    
    # Ausgabe: IP-Adressen wurden anonymisiert, Ausgabe gekürzt
    
     ################### Logwatch 7.4.0 (05/29/13) ####################
            Processing Initiated: Wed Feb 20 08:54:32 2019
            Date Range Processed: yesterday
                                  ( 2019-Feb-19 )
                                  Period is day.
            Detail Level of Output: 10
            Type of Output/Format: stdout / text
            Logfiles for Host: host.host.tld
     ##################################################################
    
     --------------------- fail2ban-messages Begin (detail=1) ------------------------
    
     2019-02-19 00:03:59,539 fail2ban.actions        [5355]: NOTICE  [plesk-saslauth] Unban 190.220.147.x
     2019-02-19 00:44:26,540 fail2ban.actions        [5355]: NOTICE  [plesk-postfix] Ban 190.220.147.x
    [...]
     2019-02-19 23:37:27,514 fail2ban.actions        [5355]: NOTICE  [plesk-saslauth] Unban 119.28.66.x
     20 Bans, 24 Unbans

Quellen:


Ähnliche Themen im blog:
logwatch, fail2ban


zurück