Logwatch/fail2ban: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Einführung ==
'''Logwatch/fail2ban''' - Kurzbeschreibung
; Logwatch
 
* [https://sourceforge.net/projects/logwatch/ Logwatch] ist ein Tool, das logfiles ausliest und zusammenfasst
== Beschreibung ==
* Der so generierte Report kann zB per E-Mail versand werden
; [[Logwatch]] fasst Logfiles zusammen
* Dadurch kann man die Aktivitäten auf einem Server durch Überfliegen des Reports bewerten und Probleme ggf. frühzeitig erkennen
* Ein solcher Report kann per E-Mail versandt werden
* Mehr Infos dazu im blog: [https://it-muecke.de/start?do=search&id=logwatch logwatch]
* Dadurch können Aktivitäten auf einem Server schnell bewertet und Probleme frühzeitig erkannt werden
; Fail2ban
 
* [https://de.wikipedia.org/wiki/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
; [[fail2ban]] sperrt IP-Adressen mit fehlerhaften Login-Versuchen
* Wird eine IP-Adresse gesperrt, nennt sich das Ban (to ban - engl. für 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
* Wird eine IP-Adresse nach der Sperrfrist wieder entsperrt, so nennt sich das Unban
* Damit können zB [https://de.wikipedia.org/wiki/Brute-Force-Methode brute force] Attacken nach wenigen Versuchen unterbunden werden
* Damit können [[brute force]]-Attacken nach wenigen Versuchen unterbunden werden


== Vorgehensweise ==
== Vorgehensweise ==
=== Ziele ===
=== Ziele ===
* Die fail2ban Logfiles können von logwatch bereits von Haus aus ausgewertet werden
* 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
* 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
* Nur Bans und Unbans und eine Summe ausgeben


=== Einrichtung von logwatch ===
=== Einrichtung von logwatch ===
; Logfile-Gruppe definieren
==== Logfile-Gruppe definieren ====
* Dazu folgende Datei anlegen/bearbeiten: <tt>/etc/logwatch/conf/logfiles/fail2ban.conf</tt><br/><nowiki># /etc/logwatch/conf/logfiles/fail2ban.conf</nowiki><br/>
<tt>/etc/logwatch/conf/logfiles/fail2ban.conf</tt>
<nowiki># The LogFile path is relative to /var/log by default.</nowiki><br/><nowiki># You can change the default by setting LogDir.</nowiki><br/>LogFile = fail2ban.log<br/>
 
<nowiki># This enables searching through zipped archives as well.</nowiki><br/>Archive = fail2ban.log.*.gz<br/>
<syntaxhighlight lang="bash" line>
<nowiki># Expand the repeats (actually just removes them now).</nowiki><br/><nowiki>*ExpandRepeats</nowiki>
# /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
</syntaxhighlight>
 
==== Service definieren ====
<tt>/etc/logwatch/conf/services/fail2ban.conf</tt>
<syntaxhighlight lang="bash" line>
# /etc/logwatch//services/fail2ban.conf
 
# title shown in the report
Title = fail2ban-messages
 
# logfile group
LogFile = fail2ban
</syntaxhighlight>
 
==== Parse-File ====
; Skript zum Auslesen und Zusammenfassen der Logfiles im gewünschten Umfang
<tt>/etc/logwatch/scripts/services/fail2ban</tt>
 
<syntaxhighlight lang="bash" line>
#!/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


; Service definieren
if echo $LINE|egrep 'NOTICE.*Ban' &> /dev/null; then
* Dazu folgende Datei anlegen/bearbeiten: <tt>/etc/logwatch/conf/services/fail2ban.conf</tt><br/><nowiki># /etc/logwatch//services/fail2ban.conf</nowiki><br/>
BAN=$[$BAN + 1]
<nowiki># title shown in the report</nowiki><br/>Title = fail2ban-messages<br/>
fi
<nowiki># logfile group</nowiki><br/>LogFile = fail2ban
if echo $LINE|egrep 'NOTICE.*Unban' &> /dev/null; then
UNBAN=$[$UNBAN + 1]
fi
done


; Parse-File
* Skript zum Auslesen und Zusammenfassen der Logfiles im gewünschten Umfang
* Dazu folgende Datei anlegen/bearbeiten: <tt>/etc/logwatch/scripts/services/fail2ban</tt><br/><nowiki>#!/usr/bin/env bash</nowiki><br/><nowiki># /etc/logwatch/scripts/services/fail2ban</nowiki><br/>
<nowiki># Change the line separator to split by new lines.</nowiki><br/>OLD_IFS=$IFS<br/>IFS=$'\n'<br/>
<nowiki># set vars to 0</nowiki><br/>BANS=0<br/>UNBANS=0<br/>
<nowiki># The contents of the log file are given in stdin.</nowiki><br/>for LINE in $( cat /dev/stdin ); do<br/> <nowiki># Only lines matching this regexp will be included.</nowiki><br/> if echo $LINE|egrep 'NOTICE' &> /dev/null; then<br/> <nowiki># Every line we echo here will be included in the logwatch report.</nowiki><br/> echo $LINE<br/> fi<br/>
if echo $LINE|egrep 'NOTICE.*Ban' &> /dev/null; then<br/> BAN=$[$BAN + 1]<br/> fi<br/> if echo $LINE|egrep 'NOTICE.*Unban' &> /dev/null; then<br/> UNBAN=$[$UNBAN + 1]<br/> fi<br/>done<br/>
echo "$BAN Bans, $UNBAN Unbans"
echo "$BAN Bans, $UNBAN Unbans"
</syntaxhighlight>


; Hinweise
; Hinweise
Zeile 44: Zeile 89:


=== Test ===
=== Test ===
* Ein Test kann mit folgendem Kommando durchgeführt werden<br/>logwatch --detail high --service fail2ban<br/>
<syntaxhighlight lang="bash" highlight="1" line>
<nowiki># Ausgabe: IP-Adressen wurden anonymisiert, Ausgabe gekürzt</nowiki><br/>
logwatch --detail high --service fail2ban
<nowiki>################### Logwatch 7.4.0 (05/29/13) ####################</nowiki><br/> Processing Initiated: Wed Feb 20 08:54:32 2019<br/> Date Range Processed: yesterday<br/> ( 2019-Feb-19 )<br/> Period is day.<br/> Detail Level of Output: 10<br/> Type of Output/Format: stdout / text<br/> Logfiles for Host: host.host.tld<br/> <nowiki>##################################################################</nowiki><br/>
 
<nowiki>--------------------- fail2ban-messages Begin (detail=1) ------------------------</nowiki><br/>
# Ausgabe: IP-Adressen wurden anonymisiert, Ausgabe gekürzt
  2019-02-19 00:03:59,539 fail2ban.actions [5355]: NOTICE [plesk-saslauth] Unban 190.220.147.x<br/> 2019-02-19 00:44:26,540 fail2ban.actions [5355]: NOTICE [plesk-postfix] Ban 190.220.147.x<br/>[...]<br/> 2019-02-19 23:37:27,514 fail2ban.actions [5355]: NOTICE [plesk-saslauth] Unban 119.28.66.x<br/> 20 Bans, 24 Unbans
 
################### 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
</syntaxhighlight>
 
<noinclude>
 
== Anhang ==
=== Siehe auch ===
{{Special:PrefixIndex/Logwatch}}
==== Links ====
===== Weblinks =====
 
[[Kategorie:Linux/Logging]]


== Quellen ==
</noinclude>
* [http://www.alphahydrae.com/2012/08/logwatch-how-to-add-a-service/ alphahydrae.com]
* [https://it-muecke.de/start?do=search&id=logwatch logwatch]
* [https://it-muecke.de/start?do=search&id=fail2ban fail2ban]

Aktuelle Version vom 15. Oktober 2024, 08:59 Uhr

Logwatch/fail2ban - Kurzbeschreibung

Beschreibung

Logwatch fasst Logfiles zusammen
  • Ein solcher Report kann per E-Mail versandt werden
  • Dadurch können Aktivitäten auf einem Server schnell bewertet und Probleme frühzeitig erkannt werden
fail2ban sperrt IP-Adressen mit fehlerhaften Login-Versuchen
  • 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 brute force-Attacken nach wenigen Versuchen unterbunden werden

Vorgehensweise

Ziele

  • 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
  • Nur Bans und Unbans und eine Summe ausgeben

Einrichtung von logwatch

Logfile-Gruppe definieren

/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

/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

/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

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


Anhang

Siehe auch

Links

Weblinks