Fail2SQL, eine fail2ban-Erweiterung

Vorwort

Ich nutze seit geraumer Zeit fail2ban zum Blocken von IP-Adressen, von welchen aus mittels Brute-Force massive Login-Versuche entdeckt werden. Beim Stöbern bin ich dann auf fail2sql gestoßen. Damit lassen sich die geblockten IP-Adressen mit nützlichen Zusatzinformationen in einer MySQL-Datenbank ablegen.

Installation

Download von fail2ban, anschließend entpacken:

wget http://fail2sql.sourceforge.net/fail2sql-1.0.tar.gz
tar xvf fail2sql-1.0.tar.gz
mkdir -p /usr/local/fail2sql/
cp fail2sql/* /usr/local/fail2sql/
cd /usr/local/fail2sql/

Datenbank

Es wird eine Datenbank fail2ban mit gleichnamigem Benutzer und entsprechenden Berechtigungen erstellt:

CREATE USER fail2ban@localhost IDENTIFIED BY 'passwort';
GRANT USAGE ON *.* TO fail2ban@localhost IDENTIFIED BY 'passwort';
CREATE DATABASE IF NOT EXISTS fail2ban;
GRANT ALL PRIVILEGES ON fail2ban.* TO fail2ban@localhost;

Anschließend wird das mitgelieferte Skript eingespielt:

mysql -u fail2ban -p fail2ban< fail2ban.sql

Datenbank-Verbindung ist anzupassen (Host/User/Passwort):

vi fail2sql

Update der GeoIP-Datenbank

./fail2sql -u

Fail2Ban

Schließlich ist noch „actionban“ anzupassen:

vi /etc/fail2ban/action.d/iptables-multiport.conf
vi /etc/fail2ban/action.d/iptables.conf
vi ...
actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP
        /usr/local/fail2sql/fail2sql <name> <protocol> <port> <ip>

Somit sind die Vorbereitungen abgeschlossen.

Links

http://sourceforge.net/projects/fail2sql/
http://www.dbsysnet.com/howto-geolocation-for-fail2ban/

Karte

ejabberd (freier XMPP-Server) Installation

Vorwort

ejabberd steht für Erlang Jabber Daemon und ist ein freier XMPP-Server. Erlang ist die Programmiersprache, in der ejabberd entwickelt wurde, XMPP steht für Extensible Messaging and Presence Protocol, ein Nachrichten- und Anwesenheitsprotokoll, welches 1999 unter dem Namen Jabber veröffentlich  wurde. Zur Benutzeridentifikation wird die Jabber ID (JID) genutzt, welche in der Form benutzer@server.tld aufgebaut ist.

Installation

Unter Debian kann ejabberd mit Apt installiert werden:

apt-get install ejabberd

Serverseitige Konfiguration

Die Konfiguration findet in folgender Konfigurationsdatei statt:

/etc/ejabberd/ejabberd.cfg

Das Prozentzeichen (%) am Zeilenbeginn leitet Kommentare ein.

Folgender Bereich muss für den Admin-Benutzer angepasst werden:

%% Options which are set by Debconf and managed by ucf

%% Admin user
{acl, admin, {user, "adm", "krausix.de"}}.

%% Hostname
{hosts, ["krausix.de"]}.

Nach Änderungen muss ejabberd neugestartet werden.

Benutzer registrieren

Benutzer, so auch der Admin-Benutzer, werden auf der Kommandozeile verwaltet. Wir fügen einen neuen Benutzer hinzu:

ejabberdctl register <benutzer> <server> <passwort>
ejabberdctl register adm krausix.de mysecret

Wie die Konfiguration aussehen muss, damit sich Benutzer selbst registrieren können, wird weiter unten beschrieben.

 Weboberfläche

In der Standardinstallation bringt ejabberd eine Weboberfläche (http://<server>:5280/admin/) mit.

Registrierung

Sollen neue Benutzer sich nicht selbst registrieren können, muss die Konfigurationsdatei entsprechend angepasst werden:

{access, register, [{deny, all}]}.

Möchte man stattdessen, dass eine Registrierung für Benutzer möglich ist, ist stattdessen folgender Eintrag notwendig.

%{access, register, [{deny, all}]}.
{access, register, [{allow, all}]}.

Neustart nicht vergessen!

Backup / Restore

Zum Sichern bzw. Wiederherstellen gibt es verschiedene Möglichkeiten:

# Backup erstellen
ejabberdctl backup <dateiname>

# Backup wiederherstellen
ejabberdctl restore <dateiname>

# Backup erstellen (menschenlesebares Datei-Format)
ejabberdctl dump <dateiname>

# Backup wiederherstellen(menschenlesebares Datei-Format)
ejabberdctl load <dateiname>

Ein Backup könnte z.B. per Cron zeitgesteuert erstellt und auf einer entfernten Maschine gesichert werden.

Nutzungsinformationen

# Anzahl der angemeldeten Benutzer
ejabberdctl connected-users-number

# angemeldete Benutzer
ejabberdctl connected-users

# Registrierte Benutzer
ejabberdctl registered-users <servername>

 Munin

Es existiert ein Munin-Wildcard-Plugin ejabberd_ unter /usr/share/munin/plugins/. Die Konfiguration ist wie folgt anzupassen:

vi /etc/munin/plugin-conf.d/ejabberd
[ejabberd_*]
env.vhosts krausix.de

Anschließend die Plugins in das Plugin-Verzeichnis linken:

ln -s /usr/share/munin/plugins/ejabberd_ /etc/munin/plugins/ejabberd_connections
ln -s /usr/share/munin/plugins/ejabberd_ /etc/munin/plugins/ejabberd_memory
ln -s /usr/share/munin/plugins/ejabberd_ /etc/munin/plugins/ejabberd_registrations
ln -s /usr/share/munin/plugins/ejabberd_ /etc/munin/plugins/ejabberd_statuses
ln -s /usr/share/munin/plugins/ejabberd_ /etc/munin/plugins/ejabberd_threads
ln -s /usr/share/munin/plugins/ejabberd_ /etc/munin/plugins/ejabberd_uptime
ln -s /usr/share/munin/plugins/ejabberd_ /etc/munin/plugins/ejabberd_users
ln -s /usr/share/munin/plugins/ejabberd_ /etc/munin/plugins/ejabberd_usersindays

Neustart von munin-node erforderlich!

Postfix-Graylisting mit postgrey

Einleitung

Beim Graylisting werden Anfragen von unbekannten Absendern zunächst abgewiesen. Herkömmlich konfigurierte Mailserver versuchen in den meisten Fällen nach einer gewissen Zeit erneut zuzustellen. Erfolgt der Zustellversuch erneut, so wird dieser verarbeitet. Viele Mailserver, die Spam-Mails versenden, versuchen jedoch nicht erneut zuzustellen, somit kann mit dieser Methode Spam verringert werden. Es muss jedoch hingenommen werden, dass Mails z.T. mit Verzögerung zugestellt werden.

Installation

apt-get install postgrey

Konfiguration

Die Datei /etc/postfix/main.cf ist unter smtpd_recipient_restrictions wie folgt zu erweitern:

smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    check_policy_service inet:127.0.0.1:10023,
    reject_unauth_destination,
    reject_unknown_sender_domain,
    check_relay_domains

Der Port gilt für Debian und kann abweichen. Soll er angepasst werden, erfolgt dies in /etc/default/postgrey. Nun sollte Postfix noch neugestartet werden.

Kontrolle

Nach dem Neustart können die Logs geprüft werden (tail -F /var/log/mail.log):

Jan 10 20:57:45 krausix postgrey[3041]: action=greylist, reason=new, client_name=XXXXXXXX.de, client_address=111.111.111.111, sender=XXX@SENDER.de, recipient=ZZZ@EMPFAENGER.de

Jan 10 21:00:23 krausix postgrey[3041]: action=pass, reason=triplet found, delay=300, client_name=XXXXXXXX.de, client_address=111.111.111.111, sender=XXX@SENDER.de, recipient=YYY@EMPFAENGER.de

Have fun!

Postfix- und Sendmailstatistiken mit SendmailAnalyzer

Einleitung

Seit einiger Zeit betreibe ich auf krausix.de einen Mailserver, den ich gelegentlich ein wenig erweitern. Neben dem Betrieb ist natürlich auch die Nutzung interessant, lästiges durchforsten der Logfiles jedoch wenig zielführen. Hier nun ein interessanter Ansatz, die Logs automatisiert auszuwerten und aufzubereiten mit SendmailAnalyzer.

Debian Package erstellen

Zunächst die aktuelle Version herunterladen und entpacken, hier ist es Version 8.7, diese muss ggf. in den nachfolgenden Anweisungen angepasst werden.

cd /tmp/

wget -O sendmailanalyzer-8.7.tar.gz http://sourceforge.net/projects/sa-report/files/sa-report/8.7/sendmailanalyzer-8.7.tar.gz/download

tar xzvf sendmailanalyzer-8.7.tar.gz

 cd /tmp/sendmailanalyzer-8.7packaging/debian/

Anschließend Package-Tree erstellen und das Paket bauen.

 cd /tmp/sendmailanalyzer-8.7packaging/debian/
chmod +x create-deb-tree.sh
./create-deb-tree.sh
dpkg -b sendmailanalyzer sendmailanalyzer.deb

Installation

Zunächst die Abhängigkeiten erfüllen.

apt-get install libgd2-noxpm libgd-gd2-noxpm-perl \
libgd-text-perl libgd-graph-perl libgd-graph3d-perl

Das zuvor erstellte Paket wird installiert.

dpkg -i sendmailanalyzer.deb

Vorbereitung

Sendmailanalyzer testweise starten.

/usr/bin/sendmailanalyzer -f
cp -ar /usr/share/apache2/sendmailanalyzer /usr/local/

Apache konfigurieren

Bearbeite /etc/apache2/sites-available/sendmailanalyzer:

Alias /sareport /usr/local/sendmailanalyzer/

<Directory /usr/local/sendmailanalyzer/>

        AuthName "only for registered users"
        AuthType Basic
        AuthUserFile "/etc/apache2/passwd.httpd"
        <Limit GET>
                require valid-user
        </Limit>

        Options ExecCGI
        AddHandler cgi-script .cgi
        DirectoryIndex sa_report.cgi
        Order deny,allow
        Deny from all
        Allow from all
        # Allow from .example.com
</Directory>

Die zugehörigen Skripte kopieren:

cp -r /usr/share/apache2/sendmailanalyzer /usr/local/

Initskript erstellen

#! /bin/sh
### BEGIN INIT INFO
# Provides:          Init-Skript fuer SendmailAnalyzer
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO
# Author: Kraus, Stefan <skraus@krausix.de>

SALYZER=/usr/bin/sendmailanalyzer

case "$1" in
        start)
                $SALYZER -f
        ;;
        stop)
                killall -s 9 sendmailanalyzer
        ;;
        restart)
        killall -s 9 sendmailanalyzer && $SALYZER -f
        ;;
esac

exit 0

Danach:

update-rc.d sendmailanalyzer defaults

Cron-Job einrichten

crontab -e:

# SendmailAnalyzer log reporting daily cache
0 1 * * * /usr/bin/sa_cache > /dev/null 2>&1
# On huge MTA you may want to have five minutes caching
#*/5 * * * * /usr/bin/sa_cache -a > /dev/null 2>&1

Konfiguration

Die Konfiguration kann in /etc/sendmailanalyzer.conf bearbeitet werden.

Low-Key-Portraits

Einführung

Bei der Low-Key-Fotografie beherrschen dunkle, teilweise schwarze Bildbereiche den Bildaufbau. Lichtquellen werden bewusst platziert und setzen das Motiv in den Mittelpunkt. Die folgenden Aufnahmen sind im Rahmen dieses Tutorials als „Selbststudie“ entstanden und bieten dem Leser einen Eindruck über den Autors.

Aufbau

Die Aufnahmen sind vor einer schwarzen Leinwand entstanden. Als Lichtquelle diente ein ext. Blitz, der das Motiv seitlich in einem Winkel von etwa 80 ° ausleuchtet. Ggf. kann z. B. eine weiter Lichtquelle von hinten eingesetzt werden, um die Konturen des Kopfs / der Haare von der Leinwand hervorzuheben. Da wie oben bereits erwähnt nur die hellen Bildpartien interessant sind, sollte bei der Belichtungsmessung mit der Spotmessung gearbeitet werden. Fotografiert habe ich bei ISO 100, meist mit Blende f/14 und einer Belichtungszeit von 1/60 s.

 Bearbeitung

Die Fotos habe ich in Farbe aufgenommen und nachträglich mit GIMP bearbeitet. Hierbei wurden die Fotos entsättigt, teilweise wurde der Kontrast angehoben und die Aufnahme geschärft.

Ergebnisse

Hier wieder einige der Ergebnisse.