Elastix - Aktuelle Openfire Version (9.3.x) installieren oder aktualisieren

Bekanntermaßen hat die Telefonlösung Elastix neben der eigentlichen Telefonsoftware Asterisk, auch noch Module wie Hylafax oder Openfire mit an Bord. Bei letzterem handelt es sich um den OpenSource Nachfolger des Instant Messenger Servers "Wildfire". 

Elastix

Der XMPP Server wird fest mit Elastix ausgeliefert und weist nach einer Standard Installation leider nicht die aktuellste Version auf (3.7.x).

Um den vollen Funktionsumfang neuerer Versionen nutzen zu können, ist es sinnvoll Openfire zu aktualisieren.

Mit Hilfe weniger Befehler kann dies im Beispielsystem (CentOS) berwerkstelligt werden.

Überprüfen, welche Version aktuell installiert ist

rpm -qa |grep openfire

Openfire Dienst stoppen

service openfire stop

Sicherung - Bei Bedarf kann nun das Openfire Verzeichnis gesichert werden "opt/openfire", da nach einer erneuten Paketinstallation die Konfiguration verloren geht. Gleiches gilt für die Datenbank

sudo mkdir -p /opt/openfirebackup

sudo cp /opt/openfire /opt/openfire.backup

sudo mysqldump –u benutzer -p openfire > /tmp/openfire.backup.sql

Herunterladen und Installation der aktuellen Openfire Version

sudo wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire-3.9.3-1.i386.rpm

sudo rpm -Uvf openfire-3.9.3-1.i386.rpm

Danach könnt ihr das aktuelle Openfire Setup über den Browser aufrufen

http://127.0.0.1:9090/login.jsp?url=%2Findex.jsp

Nginx auf Ubuntu Server 14.04 - In 5min installieren und härten

Die schnelle Apache Server Alternative Nginx ist auf dem Vormarsch und hat jüngst den guten alten Apache Webserver als Referenzsystem bei den Top 1000 Webseiten weltweit überholt.

Mit ein Grund sich mit diesem System etwas näher auseinanderzusetzen.

Zunächst sollte das System jedoch installiert und im Optimalfall gehärtet werden, um von Anfang an einen sicheren und schnellen Webserver zu haben.

nginx

Nginx auf Ubuntu Server 14.04 installieren

Die Installation geht recht schnell von statten, um die aktuelle stabile Version zu erhalten muss zunächst das richtig Repository hinzugefügt werden

sudo add-apt-repository ppa:nginx/stable

sudo apt-get update

sudo apt-get install nginx

Da der Server nach der Installation automatisch startet, könnt ihr sofort danach unter http://localhost die Standardwebseite des Serversystems aufrufen

nginx-ssl

Nginx SSL aktivieren und härten

Damit der Server unter https://localhost aufgerufen werden kann, muss zunächst ein Zertifikat erstellt werden, um es danach in Nginx einzubinden. In diesem Fall wird das Zertifikat selbst signiert.

cd /etc/nginx/

sudo mkdir ssl

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/srv.key -out /etc/nginx/ssl/srv.crt

Nun kann mit der Konfiguration begonnen werden, diese ist unter /etc/nginx/sites-available/default zu finden.

Innerhalb der Konfig-Datei einfach nach unten scrollen und die Kommentarzeichen im HTTPS Bereich entfernen.

sudo nano /etc/nginx/sites-available/default

server {

        listen 443;

        server_name localhost;

        root html;

        index index.html index.htm;

        ssl on;

        ssl_certificate /etc/nginx/ssl/srv.crt;

        ssl_certificate_key /etc/nginx/ssl/srv.key;

        ssl_session_timeout 5m;

        ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        #ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

        #ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";

        ssl_prefer_server_ciphers on;

        ssl_session_cache  builtin:1000  shared:SSL:10m;0m;

        add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"

        add_header X-Frame-Options DENY;

        location / {

                try_files $uri $uri/ =404;

        }

}

Wie oben zu sehen ist, habe ich für einen sicheren Serverbetrieb, die Bereiche ssl_protocols und ssl_ciphers angepasst.

Zusätzlich wurde HSTS mit dem Befehl add_header Strict-Transport-.... aktiviert.

Zum Schutz for Clickjacking ist die Variable add_header X-Frame-Options DENY gesetzt worden.

Auch wurde der zuvor erzeugte SSL Schlüssel mit dem richtigen Pfad eingebunden.

Abschließend wurde noch die Variable ssl_session_cache gesetzt.

Wer den Webserver weiter absichern möchte, der kann zusätzlich Variablen wie ssl_stapling on und ssl_stapling_verify on setzen, um OCSP zu aktivieren.

Nginx Konfiguration prüfen und neustarten 

Unabhängig sollte vor einem Neustart die Installation überprüft werden. Wurde alles korrekt konfiguriert, ist die Standardseite unter https://localhost erreichbar. 

sudo service nginx configtest

sudo service nginx restart

Linux: IPcalc und SipCalc - Netzwerke oder Subnetze (CIDR) in der Konsole berechnen

Netzwerkadressen berechnen, manche beherrschen es, für andere sind es böhmische Dörfer. Wie bei so vielen Problemen gibt es auch hier Abhilfe. Dieses Mal in Form des kleinen Programms IPcalc

Das Tool greift euch bei der Berechnung von Netzwerken, Subnetzwerken oder Netzwerkmasken unter die Arme. via

IPCalc installieren

sudo apt-get install ipcalc

IPCalc verwenden

Die Anwendung bzw. Berechnung ist nicht schwer, es muss lediglich eine IP und oder eine IP und das gewünschte Subnet angeben werden.

z.B.

ipcalc 192.168.10.1

ipcalc 192.169.1.0/30 

cidr-berechnen

ipcalc

IPCalc ist nicht das einzige Linux Kommandozeilentool, welches euch im laufenden Serverbetrieb ein paar Subnetze berechnet.

Alternativ kann auch auf SipCalc zurückgeriffen werden.

SipCalc 

sudo apt-get install sipcalc

Die Funktionen sind unter SipCalc vielfältiger, es können IPv6 Adressen verarbeitet oder einfach die lokale Netzwerkschnittstelle weiterverwendet werden. Hier zwei Beispiele:

sipcalc ff02::1/24

sipcalc eth0

Elastix/Asterisk - CDR Report ist leer - Logging disabled

Für eine Auswertung der ein- und ausgehenden Anrufe einer Telefonanlage ist es unerlässlich, dass eine Logfunktion aktiv und auswertbar ist. Bei einer Elastix Installation oder einem Update derselbigen kann es durchaus passieren, dass der sogenannte CDR Report leer bleibt.

cdr-report

Wie so oft ist ein Ursache dieses Problems nicht gleich zu finden, da solche Installationen oft komplex sind und jedes System anders konfiguriert ist. Dennoch hilft ein Blick in die Konfiguration, um dieses Problem zu lösen.

Am einfachsten erkennbar ist die Problematik durch die Konsole, welche über "asterisk -rvv" aufgerufen werden kann. (Je mehr v  (verbose) angegeben wird, desto mehr Logs seht ihr in der Konsole).  

Hat das System Probleme mit dem Logging wird wahrscheinlich folgende Ausgabe vorliegen:

cdr show status  

  Call Detail Record (CDR) settings

  ---------------------------------

  Logging:                    Disabled

  Mode:                       Simple

cdr mysql status

Connected to asteriskcdrdb on socket file default using table cdr for 3 minutes, 56 seconds.  Wrote 0 records since last restart.

Somit ist klar das etwas im Argen liegt, das Logging ist nicht aktiviert und es werden keine neuen Einträge in der Datenbank hinterlegt. Der nächste Schritt sollte somit den Konfigurationsdateien gelten.

Folgende Einträge (und nur diese) müssen in den einzelnen Dateien für einen korrekten Betrieb hinterlegt sein:

/etc/asterisk/cdr.conf

[csv]

usegmtime=yes    ; log date/time in GMT.  Default is "no"

loguniqueid=yes  ; log uniqueid.  Default is "no"

loguserfield=yes ; log user field.  Default is "no"

accountlogs=yes  ; create separate log file for each account code. Default is "yes"

/etc/asterisk/cdr_manager.conf

[general]

enabled = no

/etc/asterisk/cdr_mysql.conf

[global]

hostname = localhost

dbname=asteriskcdrdb

password = xxxxxx

user = asteriskuser

userfield=1

Wurden alle Werte richtig gesetzt, sollten noch die zuständigen Module neu gestartet werden. Dazu muss wieder in die Asterisk Konsole via "asterisk -r" gewechselt werden.

reload module cdr

reload module cdr_mysql.so

Sind nun alle Konfigurationen korrigiert und wurden die Module richtig geladen, sollte nach einem erneuten Test folgende Ausgabe erscheinen:

cdr show status  

  Call Detail Record (CDR) settings

  ---------------------------------

  Logging:                    Enable

Danach sollte sich der CDR Report (/var/log/asterisk/cdr-csv/Master.csv) nach und nach mit Einträgen füllen

9 praktische Keytool Befehle - Zertifikatsmanagement unter Java

Das leidige Thema Zertifikate hatte ich auf dem Blog nun schon öfters, vielleicht erinnert ihr euch ja noch an das selbstsignierte Tomcat Zertifikat.

Damals wurde anders als bei der klassischen Variante mit Apache/OpenSSL auf Keytool zurückgegriffen. Sozusagen das Pendant unter Java.

Heut möchte ich euch ein paar weitere praktische Befehle dazu zeigen. Zunächst muss das Keytool aber gefunden werden.

Unter Windows befindet es sich meist im Bin-Ordner der Java Installation, beispielsweise "C:\Program Files\Java\jre7\bin"

Unter Linux genügt ein einfaches "whereis keytool", um den gewünschten Pfad, beispielsweise "/usr/bin/keytool" zu finden.

9 praktische Keytool Befehle

Einen Keystore und ein Schlüsselpaar erzeugen

keytool -genkey -alias domain -keyalg RSA -keystore keystore -keysize 2048

Eine Zertifikatsanfrage erstellen

keytool -certreq -alias domain -keystore keystore -file anfrage.csr

Ein signiertes Zertifikat in den Keystore importieren

keytool -import -trustcacerts -alias domain -file domain.crt -keystore keystorefile

Ein vorhandenes Zertifikat exportieren

keytool -export -alias meincert -file meinexportiertescert.crt -keystore keystorefile

Ein selbstsigniertes Zertifikat erstellen

keytool -genkey -keyalg RSA -alias selfsigned -validity 3600 -keysize 2048

Ein Vorhandenes Zertifikat auslesen 

keytool -printcert -v -file meincert.crt

Welche Zertifikate befinden sich im Keystore?

keytool -list -v -keystore keystore

Liste die vertraulichen CAs auf

keytool -list -keystore /opt/data/cacerts

Lösche ein Zertifikat aus dem Keystore

keytool -delete -alias domain -keystore keystore