8.2. Verbesserte CGI-Sicherheit und Authentifizierung
Zurück | Kapitel 8. Sicherheit und Leistungsoptimierung | Weiter

## 8.2. Verbesserte CGI-Sicherheit und Authentifizierung

### 8.2.1. Einführung

Dies ist als eine Einführung für die Implementierung stärkerer Authentifizierung und Server-Sicherheit bezogen auf das CGI-Web-Interface gedacht.

Es gibt viele Wege, die Sicherheit Ihres Überwachungs-Servers und des Icinga-Umfeldes zu verbessern. Dies sollte nicht als das Ende aller Bemühungen angesehen werden. Nehmen Sie es statt dessen als eine Einführung für einige der Techniken, die Sie nutzen können, um die Sicherheit Ihres System zu verstärken. Wie immer sollten Sie forschen und die besten Techniken nutzen, die verfügbar sind. Behandeln Sie Ihren Überwachungs-Server, als wäre es der wichtigste Server in Ihrem Netzwerk und Sie werden belohnt werden.

### 8.2.2. Zusätzliche Techniken

- Stärkere Authentifizierung durch Digest Authentication. Wenn Sie den Schnellstartanleitungen gefolgt sind, werden Sie wahrscheinlich Apaches Basic Authentication nutzen. "Basic Authentication" wird Benutzer und Password bei jedem HTTP-Request im Klartext übertragen. Ziehen Sie eine sicherere Authentifierungsmethode wie z.B. Digest Authentication in Betracht, die aus Ihrem Benutzernamen und Passwort einen MD5-Hash erzeugt, der bei jeder Anfrage gesendet wird.

- Erzwingen von TLS/SSL für jede Web-Kommunikation. Apache bietet TLS/SSL durch das mod_ssl-Modul. TLS/SSL bietet einen sicheren Tunnel zwischen Client und Server, der Abhören und Verfälschung durch starke publickey/privatekey-Kryptographie verhindert.

- Beschränken Sie Apache mit Hilfe von Zugangskontrollen. Überlegen Sie, ob Sie den Zugang zur Icinga-Box auf Ihre IP-Adresse, IP-Adressbereich oder IP-Subnetz beschränken. Wenn Sie Zugang von außen auf Ihr Netzwerk benötigen, können Sie VPN und SSH-Tunnel nutzen. Es ist einfach, den Zugang zu Ihrem System auf HTTP/HTTPS zu begrenzen.

### 8.2.3. Implementieren der Digest Authentication

Die Implementierung der Digest Authentication ist einfach. Dazu müssen Sie den neuen Typ der Passwort-Datei mit dem 'htdigest'-Tool anlegen, dann die Apache-Konfiguration für Icinga anpassen (typischerweise /etc/httpd/conf.d/icinga.conf).

Legen Sie eine neue Passwort-Datei mit dem 'htdigest'-Tool an. Den Unterschied, den Sie feststellen werden, wenn Sie mit dem 'htpasswd'-Tool vertraut sind, ist die Anforderung, ein 'Realm'-Parameter anzugeben. In diesem Fall bezieht sich 'realm' auf den Wert der 'AuthName'-Direktive in der Apache-Konfiguration.

     htdigest -c /usr/local/icinga/etc/.digest_pw "Icinga Access" icingaadmin

Als nächstes editieren Sie die Apache-Konfigurationsdatei für Icinga (typischerweise /etc/httpd/conf.d/icinga.conf) mit Hilfe des folgenden Beispiels:

     ## BEGIN APACHE CONFIG SNIPPET - Icinga.CONF
     ScriptAlias /icinga/cgi-bin "/usr/local/icinga/sbin"
     <Directory "/usr/local/icinga/sbin">
        Options ExecCGI
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthType Digest
        AuthName "Icinga Access"
        AuthDigestFile /usr/local/icinga/etc/.digest_pw
        Require valid-user
     </Directory>
     Alias /icinga "/usr/local/icinga/share"
     <Directory "/usr/local/icinga/share">
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthType Digest
        AuthName "Icinga Access"
        AuthDigestFile /usr/local/icinga/etc/.digest_pw
        Require valid-user
     </Directory>
     ## END APACHE CONFIG SNIPPETS

Danach starten Sie den Apache-Service, damit die neuen Einstellungen aktiv werden können.

     /etc/init.d/httpd restart

### 8.2.4. Implementieren erzwungener TLS/SSL-Kommunikation

Stellen Sie sicher, dass Sie Apache und OpenSSL installiert haben. Normalerweise sollten Sie mod_ssl-Unterstützung haben. Falls Sie trotzdem Schwierigkeiten haben, finden Sie ggf. Hilfe durch das Lesen von Apaches TLS/SSL Encryption Documentation.

Als nächstes prüfen Sie durch den Aufruf des Icinga-Web-Interfaces über HTTPS (https://your.domain/Icinga), dass die TLS/SSL-Unterstützung funktioniert. Wenn es funktioniert, können Sie mit den nächsten Schritten fortfahren, die die Nutzung von HTTPS erzwingen und alle HTTP-Anfragen an das Icinga-Web-Interface blockiert. Wenn Sie Schwierigkeiten haben, lesen Sie bitte Apaches TLS/SSL Encryption Documentation und nutzen Sie Google für die Suche nach Lösungen zu Ihrer Apache-Installation.

Danach editieren Sie die Apache-Konfigurationsdatei für Icinga (typischerweise /etc/httpd/conf.d/icinga.conf) und fügen Sie den 'sbin'- und 'share'-Verzeichnissen die 'SSLRequireSSL'-Direktive hinzu.

     ## BEGIN APACHE CONFIG SNIPPET - Icinga.CONF
     ScriptAlias /icinga/cgi-bin "/usr/local/icinga/sbin"
     <Directory "/usr/local/icinga/sbin">
        ...
        SSLRequireSSL
        ...
     </Directory>
     Alias /icinga "/usr/local/icinga/share"
     <Directory "/usr/local/icinga/share">
        ...
        SSLRequireSSL
        ...
     </Directory>
     ## END APACHE CONFIG SNIPPETS

Danach starten Sie den Apache-Service, damit die neuen Einstellungen aktiv werden können.

     /etc/init.d/httpd restart

### 8.2.5. Implementieren von IP-Subnetz-Beschränkung

Das folgende Beispiel zeigt, wie Sie den Zugang auf die Icinga-CGIs auf eine bestimmte IP-Adresse, einen IP-Adressbereich oder ein IP-Subnetz mit Hilfe von Apaches Access Controls beschränken.

Danach editieren Sie die Apache-Konfigurationsdatei für Icinga (typischerweise /etc/httpd/conf.d/icinga.conf) und fügen Sie die 'Allow'-, 'Deny'- und 'Order'-Direktiven hinzu. Dazu folgendes Beispiel:

     ## BEGIN APACHE CONFIG SNIPPET - Icinga.CONF
     ScriptAlias /icinga/cgi-bin "/usr/local/icinga/sbin"
     <Directory "/usr/local/icinga/sbin">
        ...
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1 10.0.0.25               # Allow single IP addresses
        Allow from 10.0.0.0/255.255.255.0            # Allow network/netmask pair
        Allow from 10.0.0.0/24                       # Allow network/nnn CIDR spec
        ...
     </Directory>
     Alias /icinga "/usr/local/icinga/share"
     <Directory "/usr/local/icinga/share">
        ...
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1 10.0.0.25               # Allow single IP addresses
        Allow from 10.0.0.0/255.255.255.0            # Allow network/netmask pair
        Allow from 10.0.0.0/24                       # Allow network/nnn CIDR spec
        ...
     </Directory>
     ## END APACHE CONFIG SNIPPET

### 8.2.6. Wichtige Anmerkungen

- Digest Authentication sendet Daten im Klartext, aber nicht Ihren Benutzernamen und Passwort .

- Digest Authentication ist nicht ganz so gut unterstützt wie Basic Authentication .

- TLS/SSL hat das Potential für einen "Man-in-the-middle-Angriff". MITM-Angriffe machen verletzbar, wenn ein Angreifer in der Lage ist, sich zwischen Server und Client zu schieben wie bei einem Phishing-Angriff, ISP-Monitoring oder Resignierung von Unternehmens-LAN Firewall-Zertifikaten. Bitte machen Sie sich kundig zu Zertifikats-Verifikation!

- Apache Access Controls schützen nur die HTTP/HTTPS-Protokolle . Sehen Sie sich IPtables für eine starke systemweite Firewall-Kontrolle an.

- Am wichtigsten: Sicherheit ist ein bewegliches Ziel, also bleiben Sie informiert und forschen Sie ! Vielleicht durch das Anhören eines Podcasts wie z.B. "Security Now!".

Zurück | Nach oben | Weiter
8.1. Sicherheitsüberlegungen | Zum Anfang | 8.3. Icinga für maximale Leistung optimieren

© 2009-2013 Icinga Development Team, http://www.icinga.org