denyhosts

denyhosts ist ein Programm zur Überwachung der Loginversuche per SSH. Dazu analysiert es das File /var/log/auth.log, in welchem alle Loginvorgänge geloggt werden. Wenn denyhosts Einträge in /var/log/auth.log findet, die entsprechend der Konfiguration auffällig sind (z.B. mehrmalig fehlgeschlagen), werden die IP-Adressen dieser Einträge in die Datei /etc/hosts.deny geschrieben, woraufhin von dieser IP-Adresse kein Login mehr möglich ist. Nach 30 Minuten (Konfigurationsabhängig) werden diese Einträge wieder entfernt.

Zudem werden die gesammelten IP-Adressen auf einen zentralen Server geladen und von dort auch ein Abgleich durchgeführt. So hat man auch potentielle Attacker (meinst Botnetze) im Vorfeld abgewehrt.

Installation

      # apt-get install denyhosts

Konfiguration

die Konfiguration wird in dem File /etc/denyhosts.conf vorgenommen.

      SECURE_LOG = /var/log/auth.log
      HOSTS_DENY = /etc/hosts.deny
      PURGE_DENY = 30m
      BLOCK_SERVICE = ALL
      DENY_THRESHOLD_INVALID = 3
      DENY_THRESHOLD_VALID = 5
      DENY_THRESHOLD_ROOT = 1
      DAEMON_SLEEP = 20s
      DAEMON_PURGE = 30m
      SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
      SYNC_INTERVAL = 1h
      SYNC_UPLOAD = yes
      SYNC_DOWNLOAD = yes
      SYNC_DOWNLOAD_THRESHOLD = 3
      SYNC_DOWNLOAD_RESILIENCY = 2h

Eigene IP ausnehmen

Sollte die eigene IP einmal in der /etc/hosts.deny landen ist kein Login mehr möglich. Daher stelle ich ein Script zur Verfügung, welches dies weitestgehend verhindert.

Das folgende Script aktualisiert /etc/hosts.allow mit der eigenen IP.

  • Voraussetzungen

DynDNS Account. Eigene IP Adresse muss per DynDNS abgefragt werden können.

  • Vorbereitung

Aktuelle IP in der Form 1.2.3.4 in lastip.log und in der Form ALL: 1.2.3.4 in die /etc/hosts.allow schreiben.

Folgenden Code in die Datei „mkhostsallow.sh“ schreiben, $ACCOUNTNAME anpassen.

      #!/bin/bash
      IP=`host $ACCOUNTNAME.dyndns.org | awk '{ print($NF) }'`
      LASTIP=$(</home/user/lastip.log)
      if [ "$IP" != "$LASTIP" ]; then
              cat /etc/hosts.allow | sed -e s/$LASTIP/$IP/g > /tmp/hosts.allow && mv /tmp/hosts.allow /etc/hosts.allow
              echo $IP > /home/user/lastip.log
              echo "`date`: /etc/hosts.allow upgedated. Alte IP $LASTIP durch neue IP $IP ersetzt." >> /home/user/mkhostsallow.log
      fi

Berechtigungen für mkhostsallow.sh anpassen.

      chown root:root mkhostsallow.sh
      chmod 700 mkhostsallow.sh

Cronjob einstellen der das Script alle 5 Minuten aufruft:

      crontab -e
      */5 * * * * /home/user/mkhostsallow.sh
 
denyhosts.txt · Zuletzt geändert: 2010/02/22 21:46 von joe
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:Public Domain
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Run by Debian Driven by DokuWiki