Icinga 2 auf dem Raspberry Pi 2 (Raspbian “wheezy”) installieren & konfigurieren

icinga_raspberry_half

Voraussetzungen: Installiertes Raspbian, Raspberry Pi 2.
Getestet mit: Raspbian (Debian Wheezy) Kernel version: 3.18, Raspberry Pi 2

Achtung: Ich verwende den Raspberry Pi 2 ausschließlich als Icinga2 Server. Für euer Raspbian kommt unter Umständen eine andere Konfiguration in Frage. Los geht’s!

Alle Schritte werden als ‘root’ durchgeführt:

sudo -s

Icinga2 Core installation:
Fügt folgenden Eintrag in die Datei /etc/apt/sources.list hinzu

deb http://debmon.org/debmon debmon-wheezy main

und aktualisiert den Repo Key

wget -O - http://debmon.org/debmon/repo.key 2>/dev/null | apt-key add -

Danach müssen die Paketlisten neu eingelesen werden

apt-get update

Jetzt kann Icinga2 installiert werden

apt-get install icinga2

War die Installation fehlerfrei, kann man prüfen, welche Features aktiviert/deaktiviert sind

icinga2 feature list

icinga2_feature_list_example
Mit der Installation der Kernkomponenten sind wir jetzt tatsächlich schon fertig!

Icinga2 Webinterface installation:
Folgt der minimalen grafischen Oberfläche und gebt Daten wie MySQL Passwörter etc. an

apt-get install mysql-server icinga2-ido-mysql apache2 libapache2-mod-php5

danach muss noch das Icinga2 Feature “ido-mysql” (Web und Reporting) aktiviert werden

icinga2 feature enable ido-mysql

Als nächste muss wieder die Datei /etc/apt/sources.list bearbeitet werden und folgender zusätzlicher Eintrag gesetzt werden

deb http://http.debian.net/debian wheezy-backports main

Sollte eine Fehlermeldung wie diese erscheinen
Fehlermeldung: W: GPG-Fehler: http://http.debian.net wheezy-backports Release: Die folgenden Signaturen konnten nicht überprüft werden, weil ihr öffentlicher Schlüssel nicht verfügbar ist: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
dann ist das völlig ok, siehe hier
Allerdings kann die Fehlermeldung unterdrückt werden, indem man die Public Keys einfach hinzufügt.

gpg --keyserver pgpkeys.mit.edu --recv-key 8B48AD6246925553
gpg -a --export 8B48AD6246925553 | sudo apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key 7638D0442B90D010
gpg -a --export 7638D0442B90D010 | sudo apt-key add -

apt-get update

Sollte bei diesem Versuch eine Fehlermeldung wie z.b.
#?: pgp.mit.edu: Connection refused
gpgkeys: HTTP fetch error 7: couldn't connect: Connection refused
gpg: Keine gültigen OpenPGP-Daten gefunden.
gpg: Anzahl insgesamt bearbeiteter Schlüssel: 0

auftreten, liegt das mit sehr hoher Wahrscheinlichkeit daran, dass ausgehend Ports durch eine Firewall geblockt werden.

Jetzt kann das eigentliche Paket installiert werden

apt-get install icingaweb2

Webinterface konfigurieren:

Jetzt ist die Installation abgeschlossen und wir können mit der Konfiguration beginnen.

Ein

icingacli setup token create

generiert uns einen Setup Token, welchen wir für die Webinterface Intialisierung benötigen. Den generierten Token kann man sich auch wieder anzeigen lassen mit folgendem Befehl

icingacli setup token show

Jetzt kann man das Webinterface aufrufen

http://<yourIp>/icingaweb2/setup

und die restlichen Konfigurationsschritte per Assistent durchführen.

Bei mir hat noch die Zeitzone in der /etc/php5/apache2/php.ini gefehlt
Der Eintrag

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =

wurde zu

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Berlin"

Nach der php.ini Änderung sollte der Webserver neu gestartet werden

service apache2 restart

Wollt ihr aufgrund einer falschen Eingabe eures Datenbank Namen diesen ändern, könnt ihr die folgende Datei editieren

/etc/icingaweb2/resources.ini

Danach muss Icinga2 neu gestartet werden

service icinga2 restart

Hinweis: Datenbanknamen herausfinden

mysql -u root -p
mysql> show databases;

Jetzt wäre auch das Webinterface eingerichtet. Allerdings gefällt mir nicht, dass die Webseite unverschlüsselt ist.

Icinga2 SSL für Webinterface aktivieren:

Schlüssel erzeugen

openssl genrsa -out /etc/ssl/private/apache.key 2048

Zertifikat erzeugen

openssl req -new -x509 -key /etc/ssl/private/apache.key -days 3650 -sha256 -out /etc/ssl/certs/apache.crt

CSR erzeugen

openssl req -new -key /etc/ssl/private/apache.key -out ~/apache.csr

Prüfen, ob in der Datei /etc/apache2/ports.conf der apache2 auf dem Port 443 lauscht. Die Datei sollte so aussehen:
mod_ssl.c

SSL Modul aktivieren

a2enmod ssl

Neue Datei /etc/apache2/sites-available/ssl mit folgendem Inhalt erstellen:

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/apache.crt
    SSLCertificateKeyFile /etc/ssl/private/apache.key
    
    # Pfad zu den Webinhalten
    DocumentRoot /var/www/
</VirtualHost>

Virtual Host aktivieren

a2ensite ssl
service apache2 force-reload

Jetzt ist zwar SSL für die Webseite aktiviert, aber ich möchte auch noch verhindern, dass man per http:// zugreifen kann.

Icinga2 Force SSL Webinterface:
mod_headers Modul aktivieren

a2enmod headers 

Jetzt muss in der Datei /etc/apache2/sites-available/ssl die Zeile “Header always set …” hinzugefügt werden

<VirtualHost *:443>
    Header always set Strict-Transport-Security "max-age=315569260; includeSubDomains"
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/apache.crt
    SSLCertificateKeyFile /etc/ssl/private/apache.key

    # Pfad zu den Webinhalten
    DocumentRoot /var/www/
</VirtualHost>

In der Datei /etc/apache2/sites-available/default fügt ihr die Zeile “Redirect permanent / https://…” hinzu.

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        Redirect permanent / https://urlToIcingaSrv

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Diese SSL Konfiguration sollte nur intern verwendet werden. Für einen externen Zugriff empfiehlt sich ein Zertifikat, dass von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde. Zudem sollten Sicherheitsfeatures wie PFS genutzt werden.

Auch sollte der Benutzer unter dem der icinga2 Server läuft, nur wenige Rechte besitzen.

Jetzt noch ein Reboot

reboot

und die Grundkonfiguration ist abgeschlossen!
icinga2_firstRun

Dieser Beitrag wurde unter IT abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>