Aktionen

Apache2 als Reverse Proxy für Exchange 2010 2013 2016 2019 inklusive Outlook Anywhere RPC over http

Aus znilwiki

(Weitergeleitet von Apache2 als Reverse Proxy für Exchange 2010 2013 inklusive Outlook Anywhere RPC over http)
Important.png
Hinweis: Diese Anleitung habe ich zuletzt mit Ubuntu 20.04 und Exchange 2019 selbst getestet!


Nachfolgend beschreibe ich wie

  • ein Webserver mit
  • mehreren Servern dahinter
  • sich eine externe IP teilen und
  • je nach DNS-Name / Subdomain die Anfragen zu den einzelnen Servern weiter geleitet werden
  • inklusive eines Exchange-Server mit OWA, ActiveSync und(!) Outlook Anywhere (RPC over http)


ChangeLog:

  • 20.11.2014: Eintrag in Konfigurationsdatei hinzugefügt damit AutoDiscover funktioniert - hatte Probleme bei der Authentifizierung
  • 20.11.2014: Expectation Failed Apache 417 - Fehler behoben! Der Remote Connectivity Analyzer meldet keine Fehler bei AutoDiscover und ActiveSync mehr!!!
  • 20.11.2014: Und noch den letzten Fehler gefunden - der Zugriff auf den /ews Teil scheiterte an der Authentifizierungsmethode NTLM - geht durch den Apache nicht Fehlerfrei durch, Workaoround gebaut
  • 21.11.2014: Text zu den notwendigen Subdomains und den Zertifikaten noch etwas weiter ausgeführt
  • 18.12.2014: a2enmod headers hinzugefügt, ist nicht unbedingt ab Werk aktiv
  • 17.12.2015: Ergänzungen zum OAB Modul (Offline Address Book) - Dank an T. Andreas
  • 21.04.2016: Ergänzung zum Anhang versenden per Active Sync - Danke an RWambacher
  • 24.03.2019: Anpassung des Artikels an Ubuntu 18.04 und Exchange 2016
  • 24.04.2019: Neue Version mit Exchange 2016
  • 08.05.2019: aktive Konfiguration wie ich diese zur Zeit im Live-Betrieb habe
  • 10.12.2020: Lösung die ohne Änderung an der IIS Security auskommt von Marco Maus ( marco.maus@mit-system.eu ) übernommen
  • 02.04.2021: Sicherheitsproblem im Zusammenhang mit dem mpm_prefork - Modul und nicht Outlook-Clients behoben



1 Ausgangslage

Ich habe einen ESXi-Server im Internet stehen. Auf diesem laufen

  • pfSense als zentrale Firewall
  • ein WEBSERVER mit dieser und anderen Webseiten (Ubuntu 18.04.x LTS / Apache2 / MySQL) mit ISPConfig zur Verwaltung
  • ein ZABBIX Server (Zabbix 5.0.x auf Ubuntu 20.04.x LTS / Apache2 / MariaDB)
  • ein SEAFILE Server (Seafile 7.2.1 auf Ubuntu 20.04.x LTS / Apache2 / MySQL)
  • zwei EXCHANGE Server (Exchange 2016 auf Windows Server 2016)


Diesen Server habe ich bei Kimsufi SoYouStart OVH gemietet - die sind sehr günstig - aber bieten auch nur eine einzige externe IP-Adresse.
Die IPv4 liegt an der pfSense Firewall extern an. Nun wollte ich das je nach Subdomain die entsprechende Webseite bzw. der entsprechende Server angesprochen wird.
Exchange-Apache-Proxy-001.png

Die Schwierigkeit lag nun darin das ich diverse Domänen haben - und hinter diesen verschieden Subdomains, teils mit http, teils mit https
Trotzdem sollte sich alles eine gemeinsame externe IP-Adresse teilen. Ich hätte ja auch nur den Port 443 an den Exchange weiterleiten (NAT) können - aber dann hätte ich keine anderen
Webseiten mit https absichern können ... und das in der heutigen Zeit
Bei Webseiten ist dies nicht weiter schwierig - je nachdem mit welchem DNS-Namen man von extern kommt serviert Apache die entsprechende Webseite.
Dies habe ich mit einer Apache-VirtualHost (vhost) Konfiguration gelöst: http://httpd.apache.org/docs/2.4/vhosts/examples.html
Da es einfacher zu verwalten ist nutze ich ISPConfig ( http://www.ispconfig.de/ ) zur Konfiguration.
Im Verzeichnis

/etc/apache2/sites-available

liegt dazu für jede Webseite / Subdomain eine passende Datei mit der Konfiguration eben dieser Domain / Subdomain.

# ls -l /etc/apache2/sites-available
drwxr-xr-x 2 root root 4096 Okt 31 19:34 ./
drwxr-xr-x 8 root root 4096 Okt 14 23:35 ../
-rw-r--r-- 1 root root 6437 Jan  7  2014 default-ssl.conf
-rw-r--r-- 1 root root 1622 Okt 31 08:44 ispconfig.conf
-rw-r--r-- 1 root root 2023 Okt 31 08:44 ispconfig.vhost
-rw-r--r-- 1 root root 3601 Nov  2 12:09 mail.linz.email.vhost
-rw-r--r-- 1 root root  922 Okt 31 19:57 seafile.znil.net.vhost
-rw-r--r-- 1 root root 3357 Okt 25 20:57 support.znil.net.vhost
-rw-r--r-- 1 root root  945 Okt 25 22:57 zabbix.znil.net.vhost
-rw-r--r-- 1 root root 3361 Okt 24 23:58 znil.de.vhost
-rw-r--r-- 1 root root 2923 Okt 25 00:01 znil.net.vhost

usw.
Jede Datei besitzt einen symbolischen link in das Verzeichnis

/etc/apache2/sites-enabled

es ist also beides die jeweils gleiche Datei.
Durch direktes Bearbeiten dieser Dateien kann man nun steuern wo etwas landen soll. Habt Ihr keine vhost Konfiguration und gibt es nur eine Datei in diesen Verzeichnissen so müsst Ihr einfach eine neue Datei anlegen. In diesem Fall aktiviert Ihr die Datei mit

a2ensite [name_der_datei]

Die Datei wird dann nach

/etc/apache2/sites-enabled

verlinkt (und was Apache sonst noch machen muss).



2 Apache Module nachinstallieren / aktiviern

Um den Apache auch als Reverse Proxy nutzen zu können brauch es ein paar Module die erst noch aktiviert werden müssen:

a2enmod headers
a2enmod rewrite
a2enmod proxy_http
a2enmod ssl

Im Anschluss ein

systemctl restart apache2.service

und es kann losgehen.



3 Domänen / Subdomains anlegen

Ihr müsst bei eurem Provider / Hoster der Domänen die folgenden Subdomains anlegen:

  • wenn eure Domäne linz.email heisst dann die Subdomains
    • mail.znil.org <- da lassen wir den MX-Record drauf zeigen
    • autodiscover.mail.znil.org <- brauchen wir damit Autodiscover funktioniert

Beide Einträge sollten dann auf die externe IP-Adresse eures Apache-Servers zeigen.

Diese Domänen brauchen wir dann auch auf eurem Server mit Apache. Falls ihr ISPConfig nutzt legt bitte nur die mail.domäne.suffix dort an - die andere Subdomain autodiscover.domäne.suffix schreiben wir direkt in die Konfigurationsdatei.

Wenn Ihr das von Hand machen wollt legt eine Datei im Verzeichnis /etc/apache2/sites-available, das kann auch gleich die weiter unten aufgeführte Datei sein.


4 Port Weiterleitung / Port Forwarding / NAT

Egal ob wie hier eine pfSense-Maschine oder eine Fritzbox - leitet die externen Ports

80
443

an euren internen Webserver weiter (also den Server auf dem der Apache Reverse Proxy läuft).
Brauchen eure anderen Server noch weitere Ports wie bei mir (siehe Zeichnung oben) so leitet die entsprechenden Ports dann direkt an die jeweiligen Server weiter,
bei mir z.B. den Port 25 für SMTP an den Exchange Server oder den Port 10051 an den Zabbix-Server.



5 Apache Reverse Proxy

Nachdem wir die Domänen angelegt haben und es für jede dieser Domänen eine eigene .vhost Datei unter

/etc/apache2/sites-available

und deren Verlinkung unter

/etc/apache2/sites-enabled

gibt bearbeiten wir diese für die verschiedenen Subdomains.
Bearbeitet immer die Version unter sites-available.



6 Zabbix-Server (zum Aufwärmen)

Bevor wir mit der "dicken" Konfigurationsdatei für Exchange anfangen eine kleinere, leichtere zum Einstieg und zum Verständnis.
Mein Zabbix-Server soll extern über die Subdomain

zabbix.znil.net

erreichbar sein.
In ISPConfig habe ich diese Subdomäne als Host angelegt und habe somit auch eine Datei

/etc/apache2/sites-available/zabbix.znil.net.vhost

Intern hat der Zabbix-Server die IP-Adresse

192.168.200.20

Wir bearbeiten nun also die Datei:

nano /etc/apache2/sites-available/zabbix.znil.net.vhost

Löschen den gesamten Inhalt (bei nano mal F9 probieren!) und ersetzen diesen durch den folgenden:

<VirtualHost 192.168.200.10:80>
               ServerName zabbix.znil.net
               ServerAdmin webmaster@znil.net
               ProxyPass / http://192.168.200.20/
               ProxyPassReverse / http://192.168.200.20/
</VirtualHost>

<VirtualHost 192.168.200.10:443>
               ServerName zabbix.znil.net
               ServerAdmin webmaster@znil.net
               SSLEngine on
               SSLCertificateFile /var/www/zabbix.znil.net/ssl/zabbix.znil.net.crt
               SSLCertificateKeyFile /var/www/zabbix.znil.net/ssl/zabbix.znil.net.key
               ProxyPass / http://192.168.200.20/
               ProxyPassReverse / http://192.168.200.20/
</VirtualHost>

Wie Ihr seht gibt es jeweils eine http (Port 80) und https (Port 443) Konfiguration. Braucht ihr eines von beiden nicht so lasst es weg.

Erklärungen:

<VirtualHost 192.168.200.10:80>             : Die 192.168.200.10 ist die interne IP-Adresse unseres Webservers.
                                              Auf diese IP werden per NAT von extern die Ports 80 und 443 weiter geleitet.
                                              Steht euer Webserver direkt im Internet wäre dies die öffentliche IP des Servers
                                              Der Port ist hier 80 (hhtp) oder 443 (https)

ServerName zabbix.znil.net                  : Die Subdomäne / Domäne für welche die Einstellungen gelten sollen

ServerAdmin webmaster@znil.net              : Email-Adresse an die sich bei Problemen gewandt werden soll

ProxyPass / http://192.168.200.20/          : leitet alle Anfragen an die Subdomain an diese (interne) IP-Adresse weiter.
                                              Man könnte auch einen DNS-Namen nehmen

ProxyPassReverse / http://192.168.200.20/   : Der Rückweg zur vorherigen Regel

Bei der SSL Konfiguration steht zusätzlich noch

SSLEngine on
SSLCertificateFile /var/www/zabbix.znil.net/ssl/zabbix.znil.net.crt
SSLCertificateKeyFile /var/www/zabbix.znil.net/ssl/zabbix.znil.net.key

Hier wird also ein SSL Zertifikat verwendet - die Kommunikation nach extern(!) findet also verschlüsselt statt! Intern ist die Weiterleitung aber per http:, intern wird also unverschlüsselt Kommuniziert.
Soll/Muss intern der Datenverkehr auch verschlüsselt stattfinden so gebt einfach die https-Adressen an.
Man kann auch noch "Rewrite" Regeln angeben - das ist eine Text-Ersetzung die stattfindet.
Wenn Ihr im Teil für Port 80 so ändert:

 <VirtualHost 192.168.200.10:80>
               ServerName zabbix.znil.net
               ServerAdmin webmaster@znil.net
               RewriteEngine On
               RewriteCond %{HTTPS} off
               RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </VirtualHost>
</VirtualHost>

Würde ein http: Aufruf auf https: umgeleitet.
Von den Rewrites macht gleich die Exchange-Lösung massiv gebrauch.



7 Exchange-Server

Die Exchange-Version ist etwas umfangreicher ...


7.1 Outlook Anywhere Unterstützung nachinstallieren

Seit Ubuntu 14.04 geht das einfach mit

apt install libapache2-mod-proxy-msrpc

Nach der Installation funktioniert der Eintrag

OutlookAnywherePassthrough On

ohne Installation wird Apache meckern und nicht starten.


7.2 KeepAlive Einstellung des Apache prüfen

Unter Ubuntu 20.04 / 18.04 ist diese Einstellung normalerweise schon ab Werk aktiv, wir prüfen das zur Sicherheit aber einmal:

nano /etc/apache2/apache2.conf

und dort die Zeile

KeepAlive On

suchen - diese sollte nicht aus kommentiert sein und auf On stehen.
Dieser Hinweis stammt von Marco Maus und ist wichtig damit die Authentifizierung per NTLM funktioniert.


7.3 Apache2 Module prüfen

Auch diese Einstellungen sind unter Ubuntu 20.04 bereits ab Werk deaktiviert und aktiviert (war bei mir zumindest so), aber es schadet nicht sicher zu gehen

a2dismod mpm_event
a2enmod mpm_prefork
systemctl apache2.service restart

Dieser Hinweis stammt von Marco Maus und ist wichtig damit die Authentifizierung per NTLM funktioniert.


7.4 Zertifikate

Im Moment nutze ich für den Apache2 ein Lets Encrypt Zertifikat welches immer automatisch erneuert wird.
In der nachfolgenden Konfiguration wird ein Zertifikat für

mail.znil.org
autodiscover.znil.org

benötigt. Das könnt Ihr auf dem Linux-Server wie folgt anfordern:

systemctl stop apache2
certbot certonly --standalone --preferred-challenges http --rsa-key-size 4096 -d mail.znil.org -d autodiscover.znil.org
systemctl start apache2

Damit wird der Apache-Webserver gestoppt, das Zertifikat angefordert und der Apache wieder gestartet.
Werden weitere DNS-Namen benötigt so fügt einfach weitere -d Einträge hinzu - und unten in der Konfiguration weitere ServerAlias-Einträge

So ein Lets Encrypt Zertifikat läuft nach 3 Monaten ab und muss dann erneuert werden.
Die Erneuerung funktioniert nach dieser Methode:

Lets Encrypt Zertifikate erneuern mit Apache Reverse Proxy

Dabei halte ich den Apache Dienst im Falle einer Erneuerung immer kurz an. Da dieses nur selten vorkommt (bei meinen 30 Subdomänen so alle 3 Tage mal für eine Minute) kann ich damit gut leben.
Auf dem Exchange 2016 nutze ich eine selbstsigniertes Zertifikat welches ich einfach über das Management erstellt habe

Server => Zertifikate => +
ClipCapIt-190424-115141.PNG

Dieses ist 5 Jahre gültig bei mir - sollte erst einmal ausreichen. Auch in diesem Zertifikat sollten aber alle DNS-Namen vorhandenen sein die genutzt werden (und das Lets Encrypt Zertifikat hat)
In der Apache2 Konfiguration oben sind alle Prüfungen ausgeschaltet - solange also nur über den Apache-Proxy zugegriffen wird gibt es keine Probleme.

Zusammengefasst:

  • nach extern wird ein kostenloses "Lets Encrypt" Zertifikat genutzt und automatisch erneuert
  • intern nutzt der Exchange-Server ein selbst signiertes Zertifikat welches länger gültig ist und deshalb nicht erneuert werden muss.



7.5 Konfigurationsdatei

Die nachfolgende Version funktioniert bei mir Einwandfrei mit Exchange 2019 auf Windows Server 2019.

# Tipp von Bernd Krumböck wegen Sicherheitsproblemen mit dem MPM Modul und NTLM Authentifizierung
# Clients welche EWS verwenden (z.B. AquaMail) bekommen E-Mails anderer Sitzungen synchronisiert
# ServerLimit und MaxRequestWorkers ggf. an die Anzahl der vorhandenen Clients anpassen
#ServerLimit 300
#MaxRequestWorkers 300
MaxConnectionsPerChild 1

<VirtualHost 10.100.12.10:80>
        ServerName mail.znil.org
        ServerAlias autodiscover.znil.org
        ServerAdmin webmaster@znil.org

        ErrorLog /var/log/apache2/error.log
        # Nachfolgende Zeile loggt jeden Zugriff, alternativ den Zeile darunter verwenden, dann werden die Logs verworfen
        CustomLog /var/log/apache2/access.log combined
        #CustomLog /dev/null common

        Header always set X-Frame-Options SAMEORIGIN
        Header set Server Apache
        RequestHeader unset Expect early
        Header unset X-AspNet-Version
        Header unset X-OWA-Version
        Header unset X-Powered-By

        ProxyRequests Off
        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule ^/owa(.*) https://mail.znil.org/owa$1 [R,L]
        RewriteRule ^/ecp(.*) https://mail.znil.org/ecp$1 [R,L]
        RewriteRule ^/Microsoft-Server-ActiveSync(.*) https://mail.znil.org/Microsoft-Server-ActiveSync$1 [R,L]

        DocumentRoot /var/www/mail.znil.org/web

        <Directory />
            Order deny,allow
            Deny from all
        </Directory>

        <Directory /var/www/mail.znil.org/web>
            DirectoryIndex index.php index.html
            Options -Indexes +FollowSymLinks
            Order allow,deny
            Allow from all
        </Directory>

        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
</VirtualHost>

<VirtualHost 10.100.12.10:443>
        DocumentRoot /var/www/mail.znil.org/web

        ServerName mail.znil.org
        ServerAlias autodiscover.znil.org
        ServerAdmin webmaster@znil.org

        ErrorLog /var/log/apache2/error.log
        # Nachfolgende Zeile loggt jeden Zugriff, alternativ den Zeile darunter verwenden, dann werden die Logs verworfen
        CustomLog /var/log/apache2/access.log combined
        #CustomLog /dev/null common

        Header always set X-Frame-Options SAMEORIGIN
        Header set Server Apache
        Header unset X-AspNet-Version
        Header unset X-OWA-Version
        Header unset X-Powered-By

        RequestHeader unset Expect early

        SetEnvIf User-Agent ".*MSIE.*" value BrowserMSIE
        # 10.12.2020: Nachfolgende Zeilen würden eine Standardauthentifizierung erzwingen, ist nun nicht mehr Notwendig
        # Tipp von Marco Maus, Fragen an marco.maus@mit-system.eu
        # Header unset WWW-Authenticate
        # Header add WWW-Authenticate "Basic realm=mail.znil.org"
        ProxyRequests Off
        ProxyPreserveHost On

        #abgeschaut von https://github.com/phr0gz/Apache-reverse-proxy-for-Exchange-2010-2013-2016/blob/master/webmail.conf
        ProxyVia Full
        RequestHeader edit Transfer-Encoding Chunked chunked early
        RequestHeader unset Accept-Encoding
        TimeOut 1800
        # Ende abgeschaut

        SSLProxyEngine On
        # Problemen mit Kommunikation zwischen Apache-Proxy und Exchange-Server aus dem Wege gehen
        # Alle SSL Prüfungen werden damit ausgeschaltet. So kann z.B. auch intern ein Selbstsigniertes Zertifikat verwendet werden
        SSLProxyVerify none
        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerName off
        SSLProxyCheckPeerExpire off

        #Nachfolgende Zeile bewirkt das ein Aufruf von nur https://sub.name.suffix auf https://sub.name.suffix/owa weiter geleitet wird.
        Redirect / /owa/

        # owa
        ProxyPass /owa https://10.100.12.81/owa
        ProxyPassReverse /owa https://10.100.12.81/owa
        ProxyPass /OWA https://10.100.12.81/OWA
        ProxyPassReverse /OWA https://10.100.12.81/OWA
        ProxyPass /Owa https://10.100.12.81/Owa
        ProxyPassReverse /Owa https://10.100.12.81/Owa

        # ecp = Adminoberfläche - falls Zugriff nicht gewünscht einfach auskommentieren!
        ProxyPass /ecp https://10.100.12.81/ecp
        ProxyPassReverse /ecp https://10.100.12.81/ecp
        ProxyPass /ECP https://10.100.12.81/ECP
        ProxyPassReverse /ECP https://10.100.12.81/ECP
        ProxyPass /Ecp https://10.100.12.81/Ecp
        ProxyPassReverse /Ecp https://10.100.12.81/Ecp

        # mapi
        ProxyPass /mapi https://10.100.12.81/mapi
        ProxyPassReverse /mapi https://10.100.12.81/mapi

        # ews -> Exchange Web Services
        ProxyPass /ews https://10.100.12.81/ews
        ProxyPassReverse /ews https://10.100.12.81/ews
        ProxyPass /EWS https://10.100.12.81/EWS
        ProxyPassReverse /EWS https://10.100.12.81/EWS
        ProxyPass /Ews https://10.100.12.81/Ews
        ProxyPassReverse /Ews https://10.100.12.81/Ews
        ProxyPass /exchange https://10.100.12.81/exchange
        ProxyPassReverse /exchange https://10.100.12.81/exchange
        ProxyPass /Exchange https://10.100.12.81/Exchange
        ProxyPassReverse /Exchange https://10.100.12.81/Exchange
        ProxyPass /exchweb https://10.100.12.81/exchweb
        ProxyPassReverse /exchweb https://10.100.12.81/exchweb
        ProxyPass /public https://10.100.12.81/public
        ProxyPassReverse /public https://10.100.12.81/public

        # oab (Offline Address Book)
        ProxyPass /oab https://10.100.12.81/oab
        ProxyPassReverse /oab https://10.100.12.81/oab
        ProxyPass /OAB https://10.100.12.81/OAB
        ProxyPassReverse /OAB https://10.100.12.81/OAB

        # RPC over http(s) / Outlook Anywhere
        OutlookAnywherePassthrough On
        ProxyPass /rpc https://10.100.12.81/rpc
        ProxyPassReverse /rpc https://10.100.12.81/rpc
        ProxyPass /Rpc https://10.100.12.81/Rpc
        ProxyPassReverse /Rpc https://10.100.12.81/Rpc

        # Microsoft-Server-ActiveSync
        ProxyPass /Microsoft-Server-ActiveSync https://10.100.12.81/Microsoft-Server-ActiveSync connectiontimeout=900
        ProxyPassReverse /Microsoft-Server-ActiveSync https://10.100.12.81/Microsoft-Server-ActiveSync

        # Problem mit dem Versenden von Dateianhängen > 128KByte per ActiceSync umgehen (neuer Wert 30MByte)
        <Directory /Microsoft-Server-ActiveSync>
                SSLRenegBufferSize 31457280
        </Directory>

        # AutoDiscover  -> Autodiscover for non-AD integrated Clients (Mac, eg.)
        ProxyPass /autodiscover https://10.100.12.81/autodiscover
        ProxyPassReverse /autodiscover https://10.100.12.81/autodiscover
        ProxyPass /Autodiscover https://10.100.12.81/Autodiscover
        ProxyPassReverse /Autodiscover https://10.100.12.81/Autodiscover
        ProxyPass /AutoDiscover https://10.100.12.81/AutoDiscover
        ProxyPassReverse /AutoDiscover https://10.100.12.81/AutoDiscover

        # Zeichensatz spezifieren fuer Umlaute
        AddDefaultCharset ISO-8859-1

        <Directory />
                Order deny,allow
                Deny from all
        </Directory>

        <Directory /var/www/mail.znil.org/web>
                DirectoryIndex index.php index.html
                 Options -Indexes +FollowSymLinks
                Order allow,deny
                Allow from all
        </Directory>

        <Proxy *>
                # 10.12.2020: Nachfolgende 2 Zeilen sind nicht mehr Notwendig
                # Tipp von Marco Maus, Fragen an marco.maus@mit-system.eu
                # SetEnv proxy-nokeepalive 1
                # SetEnv force-proxy-request-1.0 1
                Order deny,allow
                Allow from all
        </Proxy>

        # Nach extern ein Lets Encrypt Zertifikat nutzen:
        SSLEngine on
        SSLProtocol All -SSLv2 -SSLv3
        SSLHonorCipherOrder     on
        SSLCertificateFile /etc/letsencrypt/live/mail.znil.org/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/mail.znil.org/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/mail.znil.org/chain.pem

        BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
        # MSIE 7 and newer should be able to use keepalive
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>



Der Port 80 Teil ist nicht viel mehr als eine http zu https Umleitung.
Ihr müsst alle folgenden Einträge mindestens anpassen

  • IP-Adresse 10.100.12.10 an eure IP-Adresse des Webservers
  • IP-Adresse 10.100.12.81 an eure IP-Adresse des Exchange-Server
  • mail.znil.org ändern zu eurem externen DNS-Namen
  • autodiscover.znil.org ändern zu eurem externen DNS-Namen.


Ausserdem müsst Ihr ein externes Zertifikat erstellen und angeben - das kann das vom Exchange-Server exportierte sein - oder aber ein anderes, selbst erstelltes.
Wie man das vom Exchange-Server verwendet steht im nächsten Abschnitt.

Vergesst nicht den Apache neu zu starten nach Änderungen in der Datei!

systemctl restart apache2.service




7.6 Basic Auth / Standardauthentifizierung für Exchange aktivieren

Diesen Abschnitt hier bräuchtet Ihr nur wenn Ihr in der Apache2 Konfiguration die Standard-Authentifizierung erzwingt. Dazu müsstet Ihr die 4 Zeilen die mit Kommentaren

# 10.12.2020: xxxxxxxxx
# Tipp von Marco Maus, Fragen an marco.maus@mit-system.eu

gekennzeichnet sind wieder aktivieren. Stand heute ist es nicht mehr notwendig!

Hier klicken (Toggle) um die Aktivierung der Standard-Authentifizierung trotzdem zu sehen

Damit auch das Programm Outlook funktioniert müsst Ihr für Outlook Anywhere die Standardauthentifizierung aktivieren:

ClipCapIt-190508-133613.PNG


Wenn Ihr bis hierhin gekommen seit läuft schon mal vieles scheinbar schön schnucklig.
Das Autodiscover funktioniert - sofern es die Subdomain "autodiscover.euredomain.suffix" gibt und ihr diese brav als Alias mit in der Apache-Konfig Datei habt.

Wenn Ihr wie ich Outlook Anywhere nutzt wird euch aber nach einer Weile auffallen das der Abwesenheitsassistent z.B. nicht funktioniert.
Und bei jeder neuen Email steht oben eine Hinweis:

Exchange-Apache-Reverse-Proxy-004.png


Nach einigen Stunden(!) Tests - in denen ich mich langsam an das Problem herangetastet habe - fand ich endlich den Grund des Übels:
Die Verbindung dafür geht über

https://externe-adresse-exchange/ews

und an dieser Stelle scheitert die Authentifizierung - weil hier nur NTLM zugelassen ist.
NTLM geht aber durch den Apache nicht sauber durch.
Deshalb gibt es in der Konfig oben die Zeilen:

Header unset WWW-Authenticate
Header add WWW-Authenticate "Basic realm=mail.znil.org"

Welche auf die Basic Auth umschalten - dadurch funktioniert dann nämlich Autodiscover.
Nun akptzeptiert aber der /ews Pfad Basic Auth bzw. Standardauthentifizierung nicht.

Das müssen wir auf dem Exchange-Server ändern das er dies auch dafür zulässt:

Öffnet auf dem Exchange-Server den

Internetinformationsdienste (IIS)-Manager

den Ihr in der Verwaltung findet.
Navigiert euch durch bis Ihr links EWS markiert habt und klickt dann rechts auf Authentifizierung:

Exchange-Apache-Reverse-Proxy-001.png


Markiert in der neuen Auswahl den Eintrag Standardauthentifizierung und dann oben rechts auf Aktivieren:

Exchange-Apache-Reverse-Proxy-002.png


Exchange-Apache-Reverse-Proxy-003.png



Und schon klappt es auch mit dem Abwesenheitsassistenten etc. und es gibt keine Warnungen mehr beim Email-Schreiben.

Bleibt noch das Offline Address Buch, hier gibt es das gleiche Problem, also noch mal das gleiche:

Exchange-Apache-Reverse-Proxy-011.png


Exchange-Apache-Reverse-Proxy-012.png




8 Ergebnisse des "Microsoft Remote Connectivity Analyzer"

Findet Ihr unter: https://testconnectivity.microsoft.com/

Ergebnisse gemäß den vorstehenden Konfigurationsschritte bei mir: (Bilder anklicken zum vergrößern)

Exchange-Webdienste: Synchronisierung, Benachrichtigung, Verfügbarkeit und automatische Antworten:

Exchange-Apache-Reverse-Proxy-005.png


Exchange ActiveSync-AutoErmittlung:

Exchange-Apache-Reverse-Proxy-006.png


Exchange ActiveSync:

Exchange-Apache-Reverse-Proxy-007.png




9 Kommentare

kay.urbach@gmx.de

79 Monaten zuvor
Punktzahl 0 Du

Killer. Das Tutorial ist einfach nur der Killer. Hab mich vor langer, langer Zeit mal damit rumgeschlagen, aber jetzt wird's wieder mal aktuell. Werd dich gern auf dem laufenden halten. Geplantes Setup: FW mit SSL-VPN, Reverse-Proxy, Exchange 2013, OWA, RPC, ActiveSync - bin noch am überlegen aber ich denke, der RP steht wie der "normale" Proxy und das Mail GW in der DMZ - alles andere wird dann ins LAN geroutet. Ich plane mit Brocade Vyatta (die Router und ggf. Radius+L2TP-GW), PfSense/clearOS/endian (noch unklar - als FW/SSL-VPN Endpoint) Squid als Proxy, Apache als Reverse Proxy, postfix als Mail-GW.

Greetz

cyprian@urbaniaks.de

79 Monaten zuvor
Punktzahl 0 Du

Super Anleitung, bräuchte jedoch ein wenig hilfe... Welche Debian/Ubuntu version wurde hier verwendet und welche apache2 Version aus welchem repository wurde verwendet? Habe schon zig VMs am Laufen und dieses RPC over https bringt mich um den Verstand :-( Danke im Voraus!

cyprian

BLinz

79 Monaten zuvor
Punktzahl 0++

Das ganez läuft bei mir auf Ubuntu 14.04. LTS. Ich habe keine extra Apache Version etc, es ist die aus dem Standard Repository (Version 2.4.7 zur Zeit). Ein Kollege hatte zunächst auch probleme und es lag an den "Basics"

Schritt 1: Subdomain anlegen und testen ob die Standardseite von Apache kommt

Schritt 2: Umbau auf SSL und wieder testen on es geht (Zertifikat vom Exchange)

Schritt 3: JETZT erst veruschen wir den Reverse Proxy einzurichten!

Bernhard

BLinz

79 Monaten zuvor
Punktzahl 0++
Man, ich brauche eine neue Tastatur ... wie die alte die Buchstaben durcheinander würfelt ....

BLinz

79 Monaten zuvor
Punktzahl 0++
Nachtrag: Und die Musterdatei genau durchschauen - ob die Pfade passen!

Timo

79 Monaten zuvor
Punktzahl 0 Du

Bei dem Kollegen läuft es jetzt auch ;-) Also wenn man sich genau an die Anleitung hält klappt es. Habe bei mir mal das libapache2-mod-proxy-msrpc ausprobiert, was es fertig kompiliert in den Repos gibt. Funktioniert auch 1A.

Gruß

Timo

Michael

74 Monaten zuvor
Punktzahl 0 Du

Hallo zusammen hab da mal ne Frage: Soweit läuft alles super aber wenn ich meinen server testen will bei ssl labs dann bekomme ich folgende Meldung: (No secure protocols supported)

Obwohl er ja SSL macht ... weiss jmd wieso =???

Anonymer Benutzer #37

11 Monaten zuvor
Punktzahl 0 Du

hello for exchange 2010 you need to change Cipher_string=@SECLEVEL=1

in /etc/ssl/openssl.cnf

stefan@skittel.de

73 Monaten zuvor
Punktzahl 0 Du

Hallo, Gibt es eine Möglichkeit Fail2Ban einzubinden? Viele Grüße

Stefan Kittel

nnithaz@gmail.com

70 Monaten zuvor
Punktzahl 0 Du

Hallo,

kann mir einer sagen, wie es aussieht, wenn ich mehrere Exchange server habe. Kann ich den Apache dann als LoadBalaner konfigurieren?

Boyz

BLinz

70 Monaten zuvor
Punktzahl 0++
Also mehrere CAS-HUB? Da alles nur über 443 geht sollte das prinzipiell gehen. Müsste ich aber auch erst erforschen.

Mr. White

69 Monaten zuvor
Punktzahl 0 Du

Funzt bestens. Mein erster Reverse Proxy und alles klappt inkl. Outlook Anyhwere, der Hammer!!! Habe auch libapache2-mod-proxy-msrpc verwendet.

Daumen hoch

Manule

68 Monaten zuvor
Punktzahl 0 Du

Hallo zusammen, habe die Anleitung vor einiger Zeit gefunden und einen Reverse Proxy aufgesetzt der für OwnCloud und Exchange 2010 vermittelt. Hat alles auf anhieb Problemlos funktioniert. Aber mit einer Besonderheit kämpfe ich nun schon eine Weile ohne Erfolg. Der Exchange 2010 läuft auf einem SBS2011, dieser Wiederrum bringt eine Remote Webseite (Web Workplace) mit die leider auch 443 nutzt. Der Aufruf erfolgt wie bei OWA TLD/owa über TLD/remote. Die Einrichtung einer Subdomain remote.TLD und Umleitung über den Proxy hat leider nicht funktioniert, an den Authentifizierungen habe ich im IIS auch schon mein möglichstes Probiert... Leider ohne Erfolg.

Vllt. liest dies hier jemand und hat einen Tipp für mich?

Michael

65 Monaten zuvor
Punktzahl 0 Du

Hallo zusammen funktioniert alles soweit bei mir allerding bekomme ich im Error Log vom Apache folgende Meldungen:

[proxy_http:error] [pid 1084] (70007)The timeout specified has expired: [client XX.XX.XX.XX:53195] AH01102: error reading status line from remote server XX.XX.XX.XX:443

[Sun Jan 24 11:54:39.659453 2016] [proxy:error] [pid 1084] [client XX.XX.XX:XX:53195] AH00898: Error reading from remote server returned by /Microsoft-Server-ActiveSync

Kann das noch jmd beobachten?

Micha

61 Monaten zuvor
Punktzahl 0 Du
Hat keiner eine Idee dazu hab das Prob nach wie vor

BLinz

61 Monaten zuvor
Punktzahl 0++

Solange alles funktioniert ist das eben kein Problem.

Warscheinlich liegt das am "Push" Trick von Exchange. Push ist ja die Einstellung zum Beispiel auf dem Smartfone das neue Emails unmittelbar ankommen. Der Trick ist das vom Smartfone eine Anfrage an den Exchange geöffnet wird ... und diese wird 10 Minuten oder länger offen gehalten. Sprich es kann sein das der Exchange erst nach 9 Minuten auf die Anfrage antwortet mit "Mail da".

Wenn aber in der Zeit einer der beiden schon Aufgeben hat - der Exchange nicht mehr auf die offene Anfrage antwortet oder das Smartfone nicht mehr horcht gibt es halt einen Fehler. Nicht schlimm, die nächste Anfrage kommt bestimmt.

Betrifft nicht nur Smartfone sondern alles was ActiveSync oder Outlook Anywhere macht.

Micha

61 Monaten zuvor
Punktzahl 0 Du

Okay danke schonmal für die Erklärung na ja soweit funzt alles aber meine Outlook clients trennen sich sporadisch und verbinden sich direkt wieder neu .

Ich weiss nicht ob es mit disem Error zu tun hat aber sonst finde ich keine Unregelmäßigkeiten.

olebole@t-link.de

63 Monaten zuvor
Punktzahl 0 Du

Ich bekomme leider SSL-Fehler. Ein wget https://dns.…exchange/owa geht, aber der Apache sagt: [Wed Mar 23 13:16:00.619733 2016] [proxy:error] [pid 4990:tid 140640265840384] (502)Unknown error 502: [client 192.168.xx.xx:57828] AH01084: pass request body failed to 192.168.yy.yy:443 (dns.des.internen.exchange) [Wed Mar 23 13:16:00.619839 2016] [proxy:error] [pid 4990:tid 140640265840384] [client 192.168.xx.xx:57828] AH00898: Error during SSL Handshake with remote server returned by /owa/ [Wed Mar 23 13:16:00.619848 2016] [proxy_http:error] [pid 4990:tid 140640265840384] [client 192.168.xx.xx:57828] AH01097: pass request body failed to 192.168.yy.yy:443 (dns.des.internen.exchange) from 192.168.xx.xx ()


Was kann ich tun?

BLinz

63 Monaten zuvor
Punktzahl 0++

kannst du denn von intern über die externe Seite nach intern zugreifen? und wennes ein selbstsigniertes Zertifikat ist wäre ein Fehler nicht ungewöhnlich. Nimm doch mal den Browser statt wget In der Konfigurationsdatei nutze ich nur IP Adressen.

im schlimsten Fall noch mal nach Anleitung von vorne, ich konnte es mehrfach nach meiner eigenen Anleitung erfolgreich einrichten

olebole@t-link.de

63 Monaten zuvor
Punktzahl 0 Du

Es funktioniert nun, nachdem ich folgendes der config hinzugefügt habe:

SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off

SSLProxyCheckPeerExpire off

BLinz

63 Monaten zuvor
Punktzahl 0++
Gute Idee, ich habe es nun oben mit eingebaut - obwohl es bisher bei mir immer ohne diese Zeilen ging. Ich habe das aber schon an anderer Stelle genutzt um extern ein anderes Zertifikat als intern zu nutzen.

RWambacher

62 Monaten zuvor
Punktzahl 0 Du

Danke für die tolle Anleitung.

Ich hatte noch ein Problem auf mobilen Endgeräten beim Versenden von Emails mit Attachments größer als ca. 128 KB über ActiveSync.

Es stellt sich raus, dass der SSL Puffer des Apache Proxy mit 128KB Default Wert schuld war. Nachdem ich die Konfiguration auf folgendes geändert hatte funktionierte es problemlos:

ProxyPass https://192.…r-ActiveSync connectiontimeout=600 ProxyPassReverse https://192.…r-ActiveSync

  1. Puffer auf 30 MB setzen

SSLRenegBufferSize 31457280


Dies könnte auch für andere Pfade relevant sein (/rpc, /OAB ?)

BLinz

62 Monaten zuvor
Punktzahl 0++
Danke für den Hinweis, ich habe es oben eingebaut

BLinz

54 Monaten zuvor
Punktzahl 0++

Bei Exchange 2010 muss ggf. der Wert in Exchange selbst auch noch angepasst werden:

https://www.…ngen-werden/

RWambacher

62 Monaten zuvor
Punktzahl 0 Du
Sorry, das XML Fragment hat wohl im Kommentar nicht wie gewünscht funktioniert

Flo

62 Monaten zuvor
Punktzahl 0 Du
Kennst jemand das Phänomen, dass gewisse Funktionen (Regeln, Gelöschte Mails wiederherstellen) bei MAPI OVER HTTP in einem Outlook 2016 Client nicht funktionieren? Er meldet dann "Netzwerkprobleme" oder stürzt ab. Zudem geht der Fehlercounter im Outlook Verbindungsstatus um 1 nach oben - bei allen Verbindungenen..... Irgendwelche Ideen? Konfiguriert ist das ganze wie auf die dieser Seite beschrieben.

Jimmy

62 Monaten zuvor
Punktzahl 0 Du

Hallo @ll, super Howto, hat alles funktioniert und nun endlich nach vielen Howto's auch mein Outlook Client. Ich habe nur eine Frage, gibt es die Möglichkeit einer automatischen Weiterleitung von http Anfragen auf https?

Vielen Dank für eure Antworten.

BLinz

62 Monaten zuvor
Punktzahl 0++
Wenn du es nach dieser Ableitung gemacht hast ist das schon drin. Musst mail.linz.email an deine Domäne anpassen

Jimmy

62 Monaten zuvor
Punktzahl 0 Du

Hi, Danke für die schnelle Antwort. Leider klappt das so nicht bei http outlook.kress.me kommt eine 403 bei https nicht sieht aber so aus als ob die 403

von dem IIS kommt. hmm komisch.

Jimmy

62 Monaten zuvor
Punktzahl 0 Du

Hi, Danke nochmal für deine Hilfe und die geniale Howto :-). Alles funzt nun super, hätte nochmal die Firewall prüfen sollen die hat den Port 80 direkt durchgeschleift.

Kaum macht man es richtig, geht es auch ;-)

tks@ttb-it.de

61 Monaten zuvor
Punktzahl 0 Du

Hi,

danke für die Anleitung.... Ich hatte bis jetzt immer das Problem mit dem RPCoverHTTPs. Jetzt klappts. *freu*

ich habe bei mir zur Absicherung noch das Apache2 GeoIP Modul aktiviert und lass nur Verbindungen von Deutschland zu. Kommt selten vor, dass ich ausserhalb bin, und so werden alle Robots und Passwortversuche von "unsicheren Herkunftsländern" (*g*) direkt auf meine Webseite mit "HTTP 301 redirect" umgeleitet. Wenn du willst, schreib mir ne Mail, dann schicke ich dir die Konfigurationsschritte, ist n bisschen viel für das Kommentar.

Danke nochmal.

Gruß

Til

Markus

61 Monaten zuvor
Punktzahl 0 Du

Hallo! Sehr prima deine Tut´s - hat mir schon oft geholfen - - DANKE!

Was ich nicht ganz verstehe - in deiner Grafik ganz oben hast du den Exchange mit 192.168.1.40 aber in der conf leitest du die Exchange dienste auf 192.168.1.80

ist das ein Tippfehler - oder hab ich was nicht ganz gerafft?

Mfg.

Markus

61 Monaten zuvor
Punktzahl 0 Du
Sorry jetzt mein Fehler - natürlich 192.168.200.40 und 192.168.200.80

Miekesch

54 Monaten zuvor
Punktzahl 0 Du
Ja, glaube das ist ein Tippfehler, denn ich habe es geändert auf die Addresse meines EX2010!

Mario

58 Monaten zuvor
Punktzahl 0 Du

Hallo

super Anleitung. Bin nicht der Linux Experte, benötige allerdings genau dieses Setup. Gibt es eine vor konfigurierte VM irgendwo, damit man nicht von vorne beginnen muss?

Viele Grüße

Mario

Michael

55 Monaten zuvor
Punktzahl 0 Du
Hallo zusammen läuft das ganze auch mit Exchange 2016 hat das schon jmd am laufen?

Torsten

53 Monaten zuvor
Punktzahl 0 Du
Hi, läuft auch mit Exchange 2016 CU4 einwandfrei ...

Miekesch

54 Monaten zuvor
Punktzahl 0 Du

Coole Anleitung@BLinz!

Ich habe da dennoch eine Frage!

Ich habe deine Anleitung etwas modifiziert, damit es mit meiner Dyndns Lösung Funzt! Der Exchange Funktionierte sofort, überraschend ;) aber meine Cloud auf dem anderen Server wird nicht angezeigt. Port 80 Funktioniert, aber 443 nicht, dort erhalte ich einen Internal Server Error.

Auf der Cloud ist ein SelfSign Zertifikat installiert, welches ich auch auf dem ReverseProxy hinterlegt habe (wie in deinem Beispiel vom ZABBIX Server) oder habe ich das missinterpretiert?

Ich komme bei den Https Anfragen bis zum ReverseProxy, der mir im Browser auch das Zertifikat der Cloud zurück gibt, welches auf dem ReverseProxy hinterlegt ist, aber er läd nicht das vom eigentlichen Server (Cloud).

Wo ist mein Denkfehler?

Ich danke dir für eine Antwort.

P.S: Frohes neues Jahr 2017

Miekesch

54 Monaten zuvor
Punktzahl 0 Du

Ich habe den Fehler gefunden. Trotzdem danke für die Großartige Anleitung!

Fehler: ich hatte im ProxyPass https eingeschrieben! Zusätzlich habe ich auf dem Webserver ein neues Zertifikat generiert!

Danke Funzt!

Torsten

53 Monaten zuvor
Punktzahl 0 Du
Superklasse Anleitung, genau was ich noch brauchte ...

BLinz

53 Monaten zuvor
Punktzahl 0++

Bis auf folgendes Problem - was ich aber nur temporär lösen konnte - läuft das: Über ActiveSync lassen sich keine (größeren) Dateianhänge versenden. Und für Exchange 2016 und Outlook ab 2010 fehlt eigentlich noch das neue "mapi" Verzeichnis. Aber Outlook Anywhere geht.

"Leider" hat mein Exchange inzwischen eine eigene, feste IP-Adresse (kosten bei SoYouStart nur einmalig 2,40 Euro) ... so das ich das gar nicht mehr selbst einsetze.

Martin

53 Monaten zuvor
Punktzahl 0 Du

Starkes Turorial, vielen Dank dafür!

Wir sind jetzt auf Exchange 2013 umgestiegen und hatten über den externen Zugriff Verbindungsprobleme in Outlook (ständig getrennt). Um diese zu lösen habe ich die Authentifizierungseinstellungen im IIS für MAPI angepasst (wie bei ews und oab) und Proxypass Regeln für /mapi im virtual host des Proxy eingetragen (wie bspw. bei /owa). Jetzt scheint es zu funktionieren. Allerdings gab es im IIS den Hinweis, dass für die Mapi Standard-Authentifizierung kein SSL benötigt wird und Daten daher unverschlüsselt gesendet werden. Bedenklich?

Micha

48 Monaten zuvor
Punktzahl 0 Du

Hi muss ich für Exchange 2016 irgendwas beachten? Über Android meckert er das die Authentifizierung fehl schlägt und Outlook verbindet sich auch nicht. Mit Exch2013 lief alles bestens.

Grüße

BLinz

48 Monaten zuvor
Punktzahl 0++
Öhm mal schauen was der IIS vom Exchange für Seiten hat. Die müssten alle rein. Ich habe inzwischen eine separate IP für den Exchange weshalb ich diesen Ansatz hier nicht weiter verfolge

BLinz

48 Monaten zuvor
Punktzahl 0++
Wobei oben vor 168 Tagen jemand geschrieben hat das es mit 2016 einwandfrei läuft ...

Micha

47 Monaten zuvor
Punktzahl 0 Du

Also ich bekomm es leider nicht zum laufen mit Exchange 2016

Falls es jemand hin bekommen hat wäre ich über evtl. Tips dankbar

Felix

44 Monaten zuvor
Punktzahl 0 Du
Hast du Outlook 2016? Der unterstützt kein EAS mehr. vielleicht hat da ja jemand ne lösung.

BLinz

44 Monaten zuvor
Punktzahl 0++

Also, so wie ich das sehe nutzt Outlook 2016 dann ActiveSync.

Und das funktioniert mit der beschriebenen Konfiguration. Outlook 2016 ist aber zickig, das Autodiscover muss funktionieren. Was hauptsächlich auf gültige Zertifikate hinausläuft.

tomascrespogarcia@gmail.com

32 Monaten zuvor
Punktzahl 0 Du

What a great article!!!

I was fighting with Exchange and Apache Reverse Proxy and I finally though it was imposible.

Lot of thanks

Thomas /INITSOL

20 Monaten zuvor
Punktzahl 0 Du

Hi, vielen Dank für diese überaus hilfreiche Dokumentation! Es hat uns auch viel geholfen, aber seit Exchange 2016 neueste CU und auch Server 2019 haben wir ein Problem: Das neue Anbinden von Outlook Clients 2016/2019 scheint nicht zu funktionieren. Der Outlook Connectivity tester scheitert an dieser RPC-over-HTTP Prüfung:

Attempting to ping the MAPI Mail Store endpoint with identity: c69603e4-5cef-4152-8a56-ee7eda21627f@munich2022.com:6001. The attempt to ping the endpoint failed. Tell me more about this issue and how to resolve it

Additional Details

The RPC_S_SERVER_UNAVAILABLE error (0x6ba) was thrown by the RPC Runtime process. Elapsed Time: 12650 ms.

Mobile Endgeräte /ActiveSync und Clients die bereits intern verbunden wurden, gehen einwandfrei - nur die erste Verbindung über den Proxy scheitert.

billyboy20

13 Monaten zuvor
Punktzahl 0 Du

Hallo Linz,

super Tutorial. Kannst du bitte auch noch verraten bzw. Tipps geben, weshalb die Fehlermeldung:

An HTTP 401 Unauthorized response was received from the remote Unknown server. This is usually the result of an incorrect username or password. If you are attempting to log onto an Office 365 service, ensure you are using your full User Principal Name (UPN). Headers received: Content-Type: text/html Server: Microsoft-IIS/7.5 WWW-Authenticate: Negotiate,NTLM X-Powered-By: ASP.NET Date: Tue, 21 Jan 2014 09:55:41 GMT Content-Length: 58

Elapsed Time: 1063 ms.


kommt und ich ständig nach im Outlook nach Password abgefragt werde.

claw@triple6.org

8 Monaten zuvor
Punktzahl 0 Du

Ganz schlechte Idee: SSLCertificateKeyFile /var/www/zabbix.znil.net/ssl/zabbix.znil.net.key

Gehört nach /etc/ssl o.ä. ( /etc/ssl/private für keys, /etc/ssl/certs für certs )

Das Problem ist hier, dass /var/www/ theoretisch erreichbar ist und damit hängt der TLS Key mit nacktem Arsch im Internet.

BLinz

8 Monaten zuvor
Punktzahl 0++

Ja du hast Recht.

Aber - ich nutze ISPConfig. Das ist nun mal der Pfad für die Subdomain. Ist eine Symbolische Verknüpfung auf den Pfad unter /etc/

reflux.ray@gmail.com

7 Monaten zuvor
Punktzahl 0 Du

mir hat einfach nur noch das blöde php modul libapache2-mod-proxy-msrpc gefehlt gehabt, meine seiten config ist echt kurz geworden :) nur 40 Zeilen und funktioniert mit Exchange 2019 aus Core Server 2019 Datacenter! Danke für deinen Beitrag!!!

Gruß

Alex

Salva

6 Monaten zuvor
Punktzahl 0 Du

Hi, thanks for your post! I wanted to use it for migrating Exchange 2003 to Office 365 because now Office 365 does not support TLS 1.0 or SSL3. I tried to use it but when do the test connection i get this error

The underlying connection was closed: The connection was closed unexpectedly.

Tipo: System.Net.WebException

Seguimiento de la pila:

at System.Net.HttpWebRequest.GetResponse()

at Microsoft.M365.RCA.Services.RcaHttpRequest.GetResponse() in d:\dbs\sh\nibr\1102_065131_0\cmd\19\sources\dev\m365rca\src\services\HTTP\RcaHttpRequest.cs:line 186

Do you have any idea? Also, when I try to connect to my server's /exchange directory I get this

Proxy Error The proxy server could not handle the request

Reason: Error during SSL Handshake with remote server

Thanks for your help

BLinz

6 Monaten zuvor
Punktzahl 0++

You have to Migrate from Exchange 2003 to Exchange 2010, then to Exchange 2013, then i would then migrate to Exchange 2019.

And then you can migrate to Office 365!

Or: Export all to .pst Files, create the Office 365 Accounts and Switch the Mail-Routing - an then import the .pst Files

Linux-ITler

3 Monaten zuvor
Punktzahl 0 Du
Die Idee ist super! Leider nutzt das auskommentieren von ECP nicht viel, da ECP nach wie vor über eine get-variable geöffnet werden kann. Hier bietet sich ein Apache-rewrite an um die Variable in der Titelzeile umzuschreiben/zu löschen dann ist ecp wirklich nicht von extern erreichbar

BLinz

2 Monaten zuvor
Punktzahl 0++
Ich habe mittels der von Microsoft bereit gestellten Tools den Exchange auch soweit abgesichert wie diese es empfehlen. Es findet also z.B. auch noch ein ReWrite innerhalb des IIS des Exchange-Servers statt

m****@w****.dk

2 Monaten zuvor
Punktzahl 0 Du

Hallo Geniale Anleitung, danke. Allerdings stehe ich mit Ubuntu 20.10 bei folgendem Befehl an: apt install libapache2-mod-proxy-msrpc Da erhalte ich den Fehler: E: Unable to locate package libapache2-mod-proxy-msrpc Wenn ich die Zeile "OutlookAnywherePassthrough On" drin lasse, startet Apache nicht. Auskommentiert klappt es.

Hat jemand eine Idee?

BLinz

2 Monaten zuvor
Punktzahl 0++
Also in Ubuntu 20.04 ist das Paket enthalten, laut der Ubuntu Webseite in 20.10 nicht. Falsche Ubuntu-Version :-)

Martin

2 Monaten zuvor
Punktzahl 0 Du

@BLinz: Cool, danke; ja mit 20.04 scheint das ganze einwandfrei zu funktionieren :)

PS: kannst du meine Mailadresse da oben raus löschen? Ging nicht davon aus, dass diese im Klartext angezeigt wird... DANKE!

BLinz

2 Monaten zuvor
Punktzahl 0++
erledigt

Martin

2 Monaten zuvor
Punktzahl 0 Du
Cool, danke!

Stoney

2 Monaten zuvor
Punktzahl 0 Du

Hi,

funktioniert das Ganze mit Exchange 2019 CU9 ? Und auch ggf. mit Ubuntu 20.10 bzw. Centos 7/8 ?

VG

Stoney

BLinz

2 Monaten zuvor
Punktzahl 0++

Bei Ubuntu 20.10 fehlt zumindest der MSRPC Proxy (siehe Kommentare weiter oben), zudem würde ich immer eine LTS Version einsetzen. Ubuntu 20.10 ist ab Juli 2021 End of Life

Centos ... warum nicht, nur die Verzeichnisse und Dienstnamen sind anders, ob es MSRPC dafür gibt weis ich nicht.

Ich bin ein Debian/Ubuntu Mensch, mit CentOS, RedHat und SuSe habe ich zwar beruflich durchaus zu tun aber privat stecke ich da keine Energie rein.

Frank

einem Monat zuvor
Punktzahl 0 Du

Hi,

bitte verzeiht mir meine "laienhafte" Frage. Kann man damit eine Exchange (2019) Installation so absichern, dass man von public zwar aufs OWA aber nicht aufs ECP etc. kommt und trotzdem auch externe Clients (iphones, outlook etc.) über ActiveSync auf die Postfächer über das normale Internet zugreifen können?

Nach Hafnium würde ich gerne einfach nur sichergehen, dass mein ECP nicht mehr public im Netz hängt. Und idealerweise hätte ich gerne sowas wie eine vorgeschaltete .htaccess (Passwortabfrage) für eingehende Verbindungen auf den öffentlichen /owa Link.

Ginge das damit ?

Frank

BLinz

einem Monat zuvor
Punktzahl 0++

Ja kann man. Man könnte die ECP-Weiterleitung einfach weglassen. Zusätzlich sollte man trotzdem auf dem Exchange-Server einstellen das die ECP-Seite nur von Intern erreichbar ist,

Man kann das auch toll mit Geo-Blocking kombinieren: Apache2 Ubuntu 20.04 GeoIP Blocking einrichten

So ist die OWA/Active Sync Seite dann z.B. nur aus Deutschland zu erreichen

Leon

24 Tage zuvor
Punktzahl 0 Du

Hallo, erstmal danke für die sehr ausführliche Anleitung. Allerdings ist vor kurzem ein Problem aufgetreten, bei welchem ich hoffe, dass hier jemand die Lösung kennt. Wir haben den Reverse Proxy 1:1 nach Anleitung aufgebaut (nur den OWA-Teil), aber er zeigt uns ein Fehler beim verbinden mit dem OWA an "Error during SSL Handshake with remote server". Wir haben die Config überprüft, das Zertifikat erneuert, sowie die jeweiligen Ports ferigegeben. Aber nichts von dem hilft.

MfG

Leon

BLinz

24 Tage zuvor
Punktzahl 0++

SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off SSLProxyCheckPeerExpire off

Sollten das eigentlich verhindern

Leon

23 Tage zuvor
Punktzahl 0 Du
Das wurde schon eingetragen. Jedoch besteht das Problem weiterhin sowohl intern, als auch extern. Das Linux ist ein aktueller Ubuntu Server 20.4 LTS. Die Probleme treten sowohl bei Exchange 2012 und 2016 auf. Bei 2019 scheint alles zu funktionieren.
Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen. Bei einem Kommentar wird deine IP-Adresse zusammen mit dem Text, den angegebenen Namen bzw. der Email-Adresse in der Datenbank für die Kommentare dauerhaft gespeichert. Genaueres kannst du hier nachlesen: Datenschutzerklärung

______________________________________________________

Bitte beachte das der eingetragene Name oder die Email-Adresse für jeden sichtbar ist!