Exchange Sicherheitszertifikat stimmt nicht mit Namen der Webseite überein

Möchte man Outlook 2010/2013 mit der AutoErmittlung (Outlook Anywhere) automatisch konfigurieren, und das Postfach auf einem Exchange 2010/2013 liegt, wird man nach der Installation folgenden Sicherheitshinweis erhalten. exchange_logo

sicherheitshinweis

Dies liegt oft daran das kein Zertifikat vorliegt, welches von Microsoft Active Directory Certificate Services (AD CS) ausgestellt wurde.

Problembeschreibung
Nachdem ein neues Zertifikat von einer root CA Zertifizierungsstelle beim Exchange-Server importiert wurde, kann es zu Fehlermeldungen beim Start bei den Outlook Clients kommen.

Im Sicherheitshinweis Fenster sehen wir in der ersten Zeile, dass sich unser Exchange-Server mit seinem internen FQDN “exchsrv.domain.local” meldet. Ebenfalls gibt uns die Meldung die Information, dass das Zertifikat ungültig ist oder die Namen nicht übereinstimmen.

Symptome
Outlook oder das Mobiltelefon können nicht konfiguriert werden.

Outlook hat die Suche nach den URLs für die Autodiscover-Informationen Hardcodet und wird in folgender abfolge durchlaufen:

Autodiscover Lookup Reihenfolge
Autodiscover Lookup Reihenfolge

Wenn nun die nötigen DNS-Records fehlen oder keine der definierten URLs aus dem Internet erreichbar sind, kann Autodiscover nicht abgefragt werden.

zertifikatsinformation1

Der Name “autodiscover.domain.com” ist auch im Zertifikat vorhanden, aber die Warnung tritt stattdessen für den Namen “exchsrv.domain.local” auf.

Zertifikat Details
Zertifikat Details

Nicht wie die Vorgänger, verwendet Outlook 2013 intern nicht nur den SCP (Service Connection Point) zur Suche nach Autodiscover, sondern macht gleichzeitig eine DNS-Auflösung gemäss oben dargestellten Reihenfolge. Wenn jetzt die DNS-Auflösung von exchsrv.domain.com auf einen Webserver mit HTTPS Binding zeigt, erscheint der oben gezeigte Sicherheitshinweis.

Lösung
Neues Exchange-Zertifikat erstellen

Exchange Zertifikat erstellen
Neues Zertifikat erstellen

Der EMC-2010 Assistent erstellt abschliessend die Anforderung welche in einer Datei(.req) gespeichert wird, dieser private Schlüssel wird benötigt um bei der CA Zertifizierung (z.B. CAcert.org) mittels Copy & Paste dann über das Formular den Public Key zu erzeugen. Anschliessend wird der ausgestellte Schlüssel mit “Anstehende Anforderung abschliessen” der wiederum mit Copy & Paste von der Zertifizierungsstelle eingefügte Schlüssel erzeugt. Zuletzt noch dem Zertifikat die Dienste zuordnen.

Die von CA Cert Signing Authority ausgestellten X.509-Zertifikate enthalten nur im Internet auflösbare FQDN, daher müssen die Internen URLs per Exchange Management Shell angepasst werden.

Mit folgendem cmdlet wird die aktuelle URI abgefragt.

Exchange Management Shell
Exchange Management Shell

Die AutoDiscoverServiceInternalUri wird nun auf den Externen FQDN geändert, damit es dem ausgestellten Zertifikat entspricht.

Set-ClientAccessServer -Identity exchsrv.domain.local -AutoDiscoverServiceInternalUri "https://exchsrv.domain.com/Autodiscover/Autodiscover.xml"

und die folgenden VirtualDirectory noch ändern.

Set-AutoDiscoverVirtualDirectory -Identity "exchsrv.domain.local\Autodiscover (Default Web Site)" -InternalUrl "https://exchsrv.domain.com/Autodiscover/Autodiscover.xml" -ExternalUrl "https://exchsrv.domain.com/Autodiscover/Autodiscover.xml"
Set-WebServicesVirtualDirectory -Identity "exchsrv.domain.local\EWS (Default Web Site)" -InternalUrl "https://exchsrv.domain.com/EWS/Exchange.asmx" -ExternalUrl "https://exchsrv.domain.com/EWS/Exchange.asmx"

noch kontrollieren ob alles stimmt..

Get-AutoDiscoverVirtualDirectory | ft InternalUrl, ExternalUrl
Get-WebServicesVirtualDirectory | ft InternalUrl, ExternalUrl
Get-ClientAccessServer -Identity exchsrv.domain.local | ft AutoDiscoverServiceInternalUri

Ohne DNS geht nichts, deshalb erstellen wir eine neue Forward-Lookupzone, wir öffnen dnsmgmt und erstellen eine neue Zone für unser exchsrv.domain.com

dnsmgmt Forward-Lookupzone
dnsmgmt Neue Forward-Lookupzone

Rechts im Fenster wieder mit Rechtsklick ein neuen Host als Type A erstellen, das Name Feld leer lassen und die IP Adresse von exchsrv.domain.com eintragen.

Neuer Host A
Neuer Host A

Nun sollten die Exchange-Dienste neu gestartet werden, den IIS mit iisreset /noforce aktualisieren. Falls der Nameserver ein Linux/Unix Host ist, steht folgende Zone für unsere Mail Domain.

DNS Zone
DNS Zone

Zu guter letzt soll unser Zertifikat auf die Clients ausgerollt werden, hierzu bieten sich die Gruppenrichtlinien an.

Gruppenrichtlinien Editor
Gruppenrichtlinien Editor

Computerkonfiguration-Windows-Einstellungen-Sicherheitseinstellungen-Richtlinien öffentlicher Schlüssel-Vertrauenswürdige Stammzertifizierungsstellen.

Mit Rechtsklick auf Importieren gehen, mittels des Assistenten die zuvor exportierte Zertifikatsdatei (.cer) importieren.
Beim Client wird mit gpupdate /force die Policy aktualisiert.

Alternativ kann das Zertifikat auf den Clients auch mittels des cmd-Tool certutil importiert werden, beispielsweise aus einer Batch Datei.

certutil -v -f -addstore -user "TrustedPublisher" "%cert%"

Troubleshooting
Am einfachsten geht’s mit dem Browser um herauszufinden wohin die URL https://exchsrv.domain.com zeigt. Alternativ kann auch nslookup oder host aufgerufen werden.

Browser SSL Zertifikat
Browser SSL Zertifikat

Ebenso bietet sich hier das cmd-Tool certutil zur Überprüfung an.

certutil -f –urlfetch -verify exchsrv.crt

Ob das Zertifikat an der richtigen stelle im Zertifikatsspeicher ist, lässt sich anhand der mmc-Konsole überprüfen.

mmc-Konsole
mmc-Konsole

Snap-In hinzufügen –  Zertifikate Hinzufügen – Computerkonto – Lokalen Computer.

Hinweis!
Das hier verwendete Zertifikat wird mit dem öffentlichen Schlüssel der kostenfreien Zertifizierungsstelle CAcert (cacert.org) ausgestellt, dies erfordert dass das Stammzertifikat von CAcert als Klasse 1 PKI Schlüssel im PEM oder DER Format zum Zertifikatsspeicher “Vertrauenswürdige Stammzertifizierungsstellen” importiert werden muss.

Das Zertifikat ist für die dauer von einem Jahr gültig, danach muss es erneuert werden, wer dies mit “Exchange Zertifikat erneuern” versucht, wird feststellen das dies nicht geht, Exchange 2010 möchte nur neue Zertifikate erstellen, deshalb die Methode mittels certutil.

Certutil -repairstore my <Seriennummer>

Die Seriennummer findet man in den Zertifikat Details, danach das Exchange-Zertifikat importieren.

CAcert Zertifizierungsstelle

CAcert.org ist eine von einer Gemeinschaft betriebene Zertifizierungsstelle, die kostenfreie Zertifikate für jedermann ausstellt.cacert

Ziel von CAcert ist es, das Bewusstsein und die Unterrichtung über Computersicherheit durch die Benutzung von Verschlüsselung zu fördern, insbesondere durch die Herausgabe von Zertifikaten zur Verschlüsselung. Diese Zertifikate können benutzt werden, um E-Mails digital zu unterschreiben und zu verschlüsseln, einen Anwender beim Zugang zu Webseiten zu beglaubigen und zu berechtigen und eine gesicherte Datenübertragung über das Internet zu ermöglichen. Jede Anwendung, die das gesicherte Übertragungsprotokoll mit SSL oder TLS unterstützt, kann von Zertifikaten Gebrauch machen, die von CAcert signiert wurden, ebenso jede Anwendung, die X.509-Zertifikate benutzt, z.B. für Verschlüsselung oder Signierung von Code oder Dokumenten.

Kostenfreie Zertifikate ausstellen cacert.org

VM sicherung mit ghettoVCB für ESXi

ghettoVCB von William Lam (@lamw) ist eine freie alternative zur Sicherung von virtuellen Maschinen. Das Skript erstellt Backups von virtuellen Maschinen auf ESX(i)3.5/4.x/5.x-Server mithilfe einer Methode ähnlich wie des VMware VCB-Tool.

vSphere

Es werden Snapshots von laufenden virtuellen Maschinen gemacht und sichert diese danach, nach Fertigstellung werden die Snapshots wieder gelöscht bis zur nächsten Sicherung. Der einzige unterschied zu VMware VCB ist dass der Prozess auf dem ESXi-Host selbst ausgeführt wird, dabei werden wenig Ressourcen belegt. Die Backups werden über die Service-Konsole (Busybox Console) des ESX-Server gefahren, im Gegensatz zu der traditionellen Methode bei der die Backups eine virtuelle Maschine als VCB-Proxy nutzt.

Download Quelle: ghettoVCB

Die ESXi Shell muss aktiviert werden, das geschieht über die ESXi direkt Console oder aus dem vSphere Client.

ESXi-Shell

Nach dem download und entpacken, die Dateien mit WinSCP oder aus dem vSphere Client auf den ESXi-Host in ein Verzeichnis hochladen, hier der Pfad /vmfs/volumes/datastore1/ghettoVCB/

ghettoVCB-ESXi-WinSCP

Als Backup Speicher wird ein Synology NAS genutzt, dazu wird ein NFS Datenspeicher gemountet dieser auf dem NAS als NFS Freigabe erstellt wurde.

NFS Berechtigungen
DSM NFS Berechtigungen
vSphereClient
vSphere NFS Datenspeicher

Nun den crontask anhalten mit

# /bin/kill $(cat /var/run/crond.pid)

Eine Datei anlegen mit den VMs die gesichert werden sollen, und die VM Konfiguration (homer) wo die Backup Rotation definiert wird.

# vi /vmfs/volumes/datastore1/ghettoVCB/vms.cfg
homer
barth
marge

# vi /vmfs/volumes/datastore1/ghettoVCB/homer
VM_BACKUP_VOLUME=/vmfs/volumes/NAS
DISK_BACKUP_FORMAT=thin
VM_BACKUP_ROTATION_COUNT=3
POWER_VM_DOWN_BEFORE_BACKUP=0
ENABLE_HARD_POWER_OFF=0
ITER_TO_WAIT_SHUTDOWN=4
POWER_DOWN_TIMEOUT=5
SNAPSHOT_TIMEOUT=15
ENABLE_COMPRESSION=0
VM_SNAPSHOT_MEMORY=0
VM_SNAPSHOT_QUIESCE=0
VMDK_FILES_TO_BACKUP="all"

crontab beschreibbar machen und Backup um 22:01 Täglich ausführen.

# chmod +w /var/spool/cron/crontabs/root
# /bin/echo "01   22   *   *   *   /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh -f /vmfs/volumes/datastore1/ghettoVCB/vms.cfg > /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB-backup-$(date +\%s).log" >> /var/spool/cron/crontabs/root

crontab wieder starten

# crond 
!! bei ESXi5.0 /bin/busybox crond

Testen ob der Script tut was er soll.

# cd /vmfs/volumes/datastore1/ghettoVCB/
# ./ghettoVCB.sh -f vms.cfg -d dryrun

cronjob persistent machen, damit nach dem nächsten Reboot wieder alles läuft.

# chmod +w /etc/rc.local
# vi/etc/rc.local
... (unten anhängen)
/bin/kill $(cat /var/run/crond.pid)
/bin/echo "01   22   *   *   *   /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh -f /vmfs/volumes/datastore1/ghettoVCB/vms.cfg > /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB-backup-$(date +\%s).log" >> /var/spool/cron/crontabs/root crond 
/sbin/auto-backup.sh

Die Sicherung der konfigurierten VMs wird nun zur definierten Zeit starten, berücksichtigt wird nicht die Zeit der Konsole, sondern die die im vSphere Client angezeigt wird.

ASG Remote Desktop

ASG Remote Desktop (vRD) ist ein Tool für die Administration und Verwaltung von Server und Workstations über die Sitzungsprotokolle RDP, ICA, VNC, SSH etc.cicada3

ASG Remote Desktop
ASG Remote Desktop

(vRD): visionapp Remote Desktop speichert die Einstellungen und Verbindungsinformationen von Remote-Desktop-Sitzungen unter Windows, Citrix, Unix/Linux oder Mac OS X und stellt sie in einer Ordnerstruktur dar. Die Vollversion sichert Einstellungen in eine Datenbank, auf die auch andere Benutzer zugreifen können. Die vielseitige Integrierbarkeit von ASG Remote Desktop 2012 ermöglicht die Einbindung externer Programme wie PuTTY,  WinSCP, vSphere, oder VNC und weitere mehr.

Installation fail2ban

fail2ban
fail2ban

fail2ban scannt Log-Dateien (zB. /var/log/apache/error_log) und verbietet IPs, die bösartige anfragen enthalten, verhindert die suche nach Exploits, etc. um Systeme zu infizieren und zu kompromittieren versuchen. Im Allgemeinen wird fail2ban verwendet um Firewall-Regeln zu aktualisieren, um die Herkunfts IP-Adressen für eine bestimmte Zeitdauer abzulehnen, wobei andere Dienste ihre Aktion wie zB. der Mail Transport Agent weiter Emails verarbeiten können.

Fail2Ban ist freie Software unter GNU General Public License Version 2 und kommt Out-of-the-Box, der Filter ist für verschiedene Dienste wie Apache, Bind, Postfix, SSH etc. einsetzbar. fail2ban ist in der Lage, die Rate der falsch-Authentifizierungen zu reduzieren, versucht aber nicht das Risiko schwacher Authentifizierung zu beseitigen.

Als erstes wird das Packet aus dem Fedora repo installiert und gleich gestartet, hier auf einem CentOS 5.

wgets http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm
yum repolist
yum install fail2ban
chkconfig --add fail2ban
chkconfig fail2ban on
service fail2ban start

Falls nicht schon vorhanden die Log-Datei erstellen:

mkdir /var/named/chroot/var/log/named
touch /var/named/chroot/var/log/named/security.log
chown named /var/named/chroot/var/log/named

Nun editieren wir die fail2ban Konfiguration:

# vi /etc/fail2ban/jail.conf

Hier in diesem Beispiel der Bind Daemon:

bantime = 1440
[named-refused-udp]
enabled = true
logpath = /var/named/chroot/var/log/named/security.log
[named-refused-tcp]
enabled = true
logpath = /var/named/chroot/var/log/named/security.log
# vi /etc/named.conf
logging {
 channel security_file { 
 file "/var/log/named/security.log" versions 3 size 30m;
  severity dynamic;
  print-time yes;
  };
  category security {
   security_file;
 };
};

service named restart

Im  security-Log von named werden nun ggf. abgelehnte anfragen protokolliert.

# tail -f /var/named/chroot/var/log/named/security.log
23-Jan-2010 07:19:56.534 client 10.1.162.1#28320: query (cache) './NS/IN' denied
# tail /var/log/messages
Sep  6 14:21:35 ns2 fail2ban.actions: WARNING [named-refused-tcp] Ban 10.1.162

Die durch fail2ban eingefügten iptables ketten ausgeben.

# iptables -L -n |grep fail2ban

Server Memory cache buffers reset

Welcher Linux Admin kennt das nicht, nach einer Gewissen uptime ist fast das gesamte Memory für cache und buffers des Servers verbraucht, eigentlich ist es nicht nötig in das Memory Management des Systems einzugreifen, ist das System jedoch knapp an Arbeitsspeicher, lässt sich mit einem einfachen Script Abhilfe schaffen.

Nach root Login wird folgendes Script editiert:free_mem

[root@homer ~]# vi /usr/sbin/clearcache.sh

#!/bin/bash
# freeing cache buffers

echo $(date) >> /var/log/clearcache.log

freemem_before=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_before=$(echo "$freemem_before/1024.0" | bc)

cachedmem_before=$(cat /proc/meminfo | grep "^Cached" | tr -s ' ' | cut -d ' ' -f2) && cachedmem_before=$(echo "$cachedmem_before/1024.0" | bc)

sync; echo 3 > /proc/sys/vm/drop_caches

freemem_after=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_after=$(echo "$freemem_after/1024.0" | bc)

echo -e "This freed $(echo "$freemem_after - $freemem_before" | bc) MiB, so now you have $freemem_after MiB of free RAM." >> /var/log/clearcache.log

Nun das Script ausführbar machen.

chmod u+x /usr/sbin/clearcache.sh

und als crontask um 5, 13 und 21 Uhr ausführen lassen.

echo "0 5,13,21 * * * root /usr/sbin/clearcache.sh" >> /etc/crontab

Mit free -m lässt sich vor und nach dem reset das freie Memory beobachten, auch wird der Task unter /var/log/clearcache.log protokolliert und kann mit “tail /var/log/clearcache.log” auf stdout ausgegeben.

clear cache
clear cache

MySQL Server Backup auf Synology DS

Synology
Synology

Im folgenden wird in wenigen schritten beschrieben wie man seine MySQL-DB per Cron-Task vom Linux host sichert und auf ein Synology NAS mit dem Befehl scp automatisch überträgt.

Auf deiner DS muss der SSH Daemon und SFTP aktiviert werden.

SSH Aktivieren
SSH Aktivieren
SFTP Aktivieren
SFTP Aktivieren
SFTP Port
SFTP Port

Du meldest dich als root mit “su -” oder “sudo su -” auf deinem Linux host an um aus dem bash shell die folgenden Dateien zu erzeugen.

[root@homer ~]# echo "mysqldump --single-transaction -u\$1 -p\$2 wordpress > /tmp/wordpress.dump" > /usr/sbin/backup.sh
[root@homer ~]# chmod u+x /usr/sbin/backup.sh
echo "0 0 * * * root /usr/sbin/backup.sh root PASSWORD 2>&1 /var/log/mysqldump.log; scp /tmp/wordpress.dump root@10.1.1.2:/volume1/backup/wordpress/" >> /etc/crontab

Wobei PASSWORD dein MySQL Passwort ist, 10.1.1.2 ist hier die IP der Synology DS, “volume1″ ist in der regel die erste Partition und “backup” ist unser angelegtes Backup Verzeichnis.

Nun auf dem Linux host ein RSA Schlüsselpaar erzeugen, damit wird beim kopieren mit scp auf die DS kein Passwort gefragt.

[root@homer ~]# ssh-keygen -t rsa

Im Verzeichnis /root/.ssh/ wurde nun ein Privater und ein Öffentlicher Schlüssel erzeugt:

-rw------- 1 root root 1675 1. Sep 11:17 id_rsa
-rw-r--r-- 1 root root 408 1. Sep 11:17 id_rsa.pub

Der Öffentliche Schlüsssel id_rsa.pub wird nun auf unsere DS kopiert und im Pfad /root/.ssh/ in die Datei authorized_keys zu liegen kommen, hierbei wird das root Passwort gepromptet.

[root@homer ~]# scp /root/.ssh/id_rsa.pub root@10.1.1.2:/root/.ssh/authorized_keys

Fertig! nun wird wenn alles klappt um 00:00 Uhr dein Backup erstellt und automatisch (ohne Passwort Prompt) auf die Diskstation transferiert.

Dieses Howto wurde auf CentOS GNU/Linux gemacht, mit Debian sollten ebenfalls keine Anpassungen nötig sein, sonst ist dein Kommentar mit deiner disto jederzeit willkommen.

Der System crontab liegt in /etc/crontab, Du kannst auch den Befehl crontab -e verwenden oder das durch run-parts angelegte cron.daily Verzeichnis als Batch Folder nehmen.

Wake On LAN via PHP (wolviaphp) auf Synology DS Installieren

Um Wake On LAN von der Synology DiskStation ausführen zu können wird das PHP-Script (wolviaphp GPLv2) eingesetzt, dieses Script erfordert keine Packet Installation, lediglich die PHP-Funktion fsockopen wird ein Wake On LAN Magic Packet an ein WOL fähiges Gerät senden.

Zunächst wird die Web Station aus der Synology DSM Systemsteuerung aktiviert.

DSM_Systemsteuerung
DSM Systemsteuerung
Web Station aktivieren
Web Station aktivieren
Synology DSM
Synology DSM

Wake On LAN Download Quelle: http://sourceforge.net/projects/wolviaphp/
Nach dem Download und entpacken die Files auf den Share der Web Station hochladen.Windows Explorer Beispiel: \\192.168.1.110\web

a_explorer_web

Falls der Zugriff aus dem Internet durch die Firewall erlaubt wird, sollte das Wake On LAN aus dem Internet mit einem Login abgesichert werden, hierzu ein .htaccess und .htpasswd File unter /volume1/web mit vi anlegen und folgende Einträge vornehmen.

PuTTY_DiskStation
PuTTY_DiskStation

Bei “Allow from” die Intranet Host IP eintragen von welchem kein Passwort Prompt aus dem Intranet LAN erwünscht wird.

AuthName “LOGIN”
AuthType “Basic”
AuthUserFile “/volume1/web//.htpasswd”
require valid-user
Order deny,allow
Deny from all
Allow from 192.168.1.5
Satisfy Any

TIP! Für das erzeugen eines hash der mit dem User in die .htpasswd kommt kann eine der vielen Webtoolkit Seiten im Internet gefunden werden.

Der Inhalt der .htpasswd sieht dann etwa so aus:
Max_Muster:abcdef123456lmop

Wake-On-LAN
Wake-On-LAN

TIP! Mit Bookmark or click this URL to repeat this WOL-request. lässt sich die MAC Adresse des Host den man das Wake Up Magic sendet als Link speichern.

Wake-On-LAN_Bockmark
Wake-On-LAN_Bockmark

Problemlösungen:

Vergewissere dich das im Bios Setup deines Rechners die Wake On LAN Funktion aktiviert ist.
Die MAC (Hardware) Adresse der NIC lässt sich unter Windows mit dem Befehl “ipconfig /all” ermitteln, oder aus der Systemsteuerung\Netzwerk und Internet\Netzwerk- und Freigabecenter – Adaptereinstellungen ändern, Status des entsprechenden Adapters – Details – Physikalische Adresse. Bei Mac und Linux ein Terminal öffnen und den Befehl “ifconfig” eingeben.

Office mit Bing suche durch Google ersetzen

Öffne den Registrierungs-Editor: Windows-Taste + R und rgedit eingeben.

Navigiere zu
HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Common\General

Erstelle die Zeichenfolge SearchProviderName und dem Wert Google
und noch eine Zeichenfolge mit SearchProviderURI mit dem Wert

https://www.google.ch/search?q=

Schliesse den Registrierungs-Editor und starte alle Office Applikationen neu.

Mit Google suchen
Mit Google suchen

progressive IT management

Visit Us On TwitterVisit Us On Linkedin