Fail2ban gegen Brute-Force Attacken

Brute-Force Attacken blockieren mit Fail2ban

Fail2ban scannt Log-Dateien (zB. /var/log/apache/error_log) und verbietet IPs, die verwundbare anfragen enthalten und verhindert die suche nach Exploits, um die Systeme zu infizieren und zu kompromittieren versuchen. Im Allgemeinen wird das „Fehlschlag zu Bann“ Framework verwendet, um Firewall-Regeln zu aktualisieren, als Intrusion Prevention System (Framework zur Vorbeugung gegen Einbrüche). Um die Herkunft der IP-Adressen für eine bestimmte Zeit abzulehnen, wobei andere Dienste ihre Funktion wie zB. der Mail Transport Agent weiterhin Emails verarbeiten werden.

Fail2Ban ist freie Software unter GNU General Public License Version 2 und kommt Out-of-the-Box, der Filter ist für verschiedene Dienste wie Apache, Bind, Postfix, SSH etc. einsetzbar. Fail2ban ist in der Lage, die Rate der falsch-Authentifizierungen, die Brute-Force Attacken zu reduzieren, versucht aber nicht das Risiko schwacher Authentifizierung zu beseitigen.

Installation

Als erstes wird das Packet aus dem Fedora repo installiert und gleich gestartet, hier auf einem Fedora Linux.

$ wget https://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
$ rpm -ivh epel-release-5-4.noarch.rpm
$ yum repolist
$ yum install fail2ban
$ systemctl start fail2ban

Falls nicht schon vorhanden die Log-Datei erstellen:

$ mkdir /var/named/chroot/var/log/named
$ touch /var/named/chroot/var/log/named/security.log
$ chown named /var/named/chroot/var/log/named

Fail2ban Konfiguration

Nun editieren wir die Konfiguration:

$ vi /etc/fail2ban/jail.conf

Hier in diesem Beispiel der Bind Daemon:

bantime = 1440

enabled = true logpath = /var/named/chroot/var/log/named/security.log

enabled = true logpath = /var/named/chroot/var/log/named/security.log

$ vi /etc/named.conf

Den folgenden Inhalt einfügen.

logging {
 channel security_file { 
 file "/var/log/named/security.log" versions 3 size 30m;
  severity dynamic;
  print-time yes;
  };
  category security {
   security_file;
 };
};

Bind named erneut starten.

$ systemctl restart named

Im security-Log von named werden abgelehnte anfragen protokolliert.

$ tail -f /var/named/chroot/var/log/named/security.log
23-Jan-2010 07:19:56.534 client 10.1.162.1#28320: query (cache) './NS/IN' denied

Die letzten fail2ban Einträge anzeigen.

$ tail /var/log/messages
Sep  6 14:21:35 ns2 fail2ban.actions: WARNING [named-refused-tcp] Ban 10.1.162

Die durch fail2ban eingefügten iptables ketten ausgeben.

$ iptables -L -n |grep fail2ban

Server Memory cache buffers reset

Welcher Linux Admin kennt das nicht, nach einer Gewissen uptime ist fast das gesamte Memory für cache und buffers des Servers verbraucht, eigentlich ist es nicht nötig in das Memory Management des Systems einzugreifen, ist das System jedoch knapp an Arbeitsspeicher, lässt sich mit einem einfachen Script Abhilfe schaffen.

Als root wird folgendes Script editiert:

$ vi /usr/sbin/clearcache.sh

#!/bin/bash
# freeing cache buffers

echo $(date) >> /var/log/clearcache.log

freemem_before=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_before=$(echo "$freemem_before/1024.0" | bc)

cachedmem_before=$(cat /proc/meminfo | grep "^Cached" | tr -s ' ' | cut -d ' ' -f2) && cachedmem_before=$(echo "$cachedmem_before/1024.0" | bc)

sync; echo 3 > /proc/sys/vm/drop_caches

freemem_after=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_after=$(echo "$freemem_after/1024.0" | bc)

echo -e "This freed $(echo "$freemem_after - $freemem_before" | bc) MiB, so now you have $freemem_after MiB of free RAM." >> /var/log/clearcache.log

Nun das Script ausführbar machen.

$ u+x /usr/sbin/clearcache.sh

und als crontask um 5, 13 und 21 Uhr ausführen lassen.

echo "0 5,13,21 * * * root /usr/sbin/clearcache.sh" >> /etc/crontab

Mit free -m lässt sich vor und nach dem reset das freie Memory beobachten, auch wird der Task unter /var/log/clearcache.log protokolliert und kann mit tail /var/log/clearcache.log auf stdout ausgegeben.

clear cache
clear cache
Die mobile Version verlassen