Monitoring / Reporting

Die Überwachung wird mit Hilfe von Checkmk durchgeführt. Parallel dazu werden die Syslogs pro Instanz mittels syslog-ng erfasst.

Die anfallenden Syslogs von postfix und amavis können in Echtzeit zu Syslog-Servern in Ihrer Einrichtung gesendet werden. Die Mail-Administratoren können so das Verhalten der DFN-Gateways genauestens beobachten und alle Vorgänge nachvollziehen. Weiterhin werden hierdurch auch eigene Logauswertungen, Statistiken etc. ermöglicht. Für Mail-Logs gibt es eine ganze Reihe von Tools, die aus den Rohdaten Reports erstellen. Auf der postfix-Addon-Seite finden Sie eine Zusammenstellung und auch auf dieser SpamAssassin-Wikiseite.

Zum Empfang muss Ihre Firewall für syslog (UDP 514, bzw. TCP 10514) und für folgende Netze freigeschaltet werden. In ihnen befinden sich ausschließlich Rechner des DFN-Mailsupport-Dienstes:

194.95.232.0/27         2001:638:d:c301::/123
194.95.234.0/27         2001:638:d:c302::/123
194.95.238.0/27         2001:638:d:c303::/123

Es wird für die Übertragung des syslogs auch Verschlüsselung mit TLS angeboten. Bitte kontaktieren Sie uns, wenn Ihre Einrichtung dies nutzen möchte. Für die Zertifikatserstellung im Rahmen der DFN-PKI wählen Sie bitte den Typ "Webserver". Wenn Sie syslog empfangen und weiterleiten möchten, bitte "Shibboleth IdP SP".

Im folgenden finden Sie Konfigurationstipps für die zwei gebräuchlichsten UNIX-Syslog-Implementationen. Haben Sie noch keinen Syslog-Server im Einsatz empfehlen wir Ihnen einen der beiden. Wenn Sie ausschließlich Windows-Server einsetzen, so finden Sie z.B. hier eine Liste von freien Windows-Implementierungen.

1. rsyslog

            #
# Einschalten des Empfangs
#
$ModLoad imudp
$UDPServerRun 514        # frei wählbar
#
# Schreiben des DFN syslogs
#
:programname, isequal, "amavis" -/var/log/dfn.log
:syslogtag, startswith, "postfix/" -/var/log/dfn.log
        

Variante: Filterung anhand der Absender-IPs

Bei einigen Einrichtungen funktioniert diese Vorgehensweise beim Filtern des syslog besser:

            if $fromhost-ip startswith '194.95.232.' then /var/log/dfn.log
if $fromhost-ip startswith '194.95.234.' then /var/log/dfn.log
if $fromhost-ip startswith '194.95.238.' then /var/log/dfn.log
        

Ergänzungen für TLS

Für die Nutzung von TLS installieren Sie bitte auch das Paket rsyslog_gnutls, evtl. auch rsyslog-gssapi.

            $DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile   /etc/ssl/chains/dfn.global.pem   # Root- und Zwischen-CA-Zertifikate
$DefaultNetstreamDriverCertFile /etc/ssl/localcerts/syslog.uni-beispiel.de.crt.pem
$DefaultNetstreamDriverKeyFile  /etc/ssl/private/syslog.uni-beispiel.de.key.pem

$ModLoad imtcp

$InputTCPServerStreamDriverMode          1                # run driver in TLS-only mode
$InputTCPServerStreamDriverAuthMode      anon
$InputTCPServerRun                       6514             # frei wählbar

        

2. syslog-ng

            #
# Einschalten des unverschlüsselten Empfangs:
#
source s_remote { udp(use_fqdn(yes)); };

#
# Alternativ der Empfang TLS-verschlüsselter Syslog-Streams 
# am Beispiel Debian:
#
source s_remote {
    tcp (
        ip("syslog.uni-beispiel.de")
        port(6514)
        tls (
            ca_dir("/etc/ssl/certs")
            key_file("/etc/ssl/private/syslog.uni-beispiel.de.key.pem")
            cert_file("/etc/ssl/localcerts/syslog.uni-beispiel.de.crt.pem")
            peer_verify("optional-untrusted")
        )
        use_fqdn(yes)
    );
};

#
# Schreiben des DFN Syslogs
#
filter      f_dfn { netmask("194.95.232.0/27") or netmask("194.95.234.0/27") or netmask("194.95.238.0/27"); };
destination d_dfn { file("/var/log/dfn.log" owner("root") group("adm") perm (0640)); };
log               { source(s_remote); filter(f_dfn); destination(d_dfn); };

# Filter mit IPv6 (ab syslog-ng 3.7)
filter      f_dfn { netmask("194.95.232.0/27") or netmask("194.95.234.0/27") or netmask("194.95.238.0/27") or
                    netmask6("2001:638:d:c301::/123") or netmask6("2001:638:d:c302::/123") or netmask6("2001:638:d:c303::/123"); };

# Filter mit aktiviertem DNS
options           { use_dns(yes); dns_cache(4000); dns_cache_expire(87600); };
filter      f_dfn { host("^mgw[0-9]+-(erl|han|tub)"); };