Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Squid 2.x als Reverse Proxy für Exchange 2010

Anleitung Sicherheit Firewall

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

12.10.2012, aktualisiert 02.01.2015, 15773 Aufrufe, 10 Kommentare, 11 Danke

Hallo zusammen,
nachdem Microsoft Forefront TMG und weitere Produkte abgekündigt hat, stellt sich die Frage welche Programme in Zukunft für OWA, ActiveSync und/oder Outlook Anywhere (RPC over HTTPS) in Frage kommen. Für die beiden ersten Anwendungen gibt es meiner Ansicht nach genügend Alternativen. Bei Outlook Anywhere wirds schon sehr sehr schwer. Zwar bleibt Forefront UAG bis auf Weiteres erhalten, aber man muss trotzdem migrieren. Absehen von den Lizenzkosten...

Da wir einen größeren TMG Cluster betreiben, haben wir uns nach Alternativen umgesehen und haben Squid als Reverse Proxy für WebApp (OWA), ActiveSync und Outlook Anywhere (RPC over Https) in unserem TestLab installiert. Bisher waren alle Test erfolgreich. Da in letzter Zeit auch hier vermehrt Fragen aufkamen, habe ich mich entschlossen eine kleine Anleitung zu schreiben.

Wir setzen bei uns produktiv für diesen Service in Zukunft Debian 6.0.6, 64Bit ein. Meiner Ansicht nach ist Debian für Server einfach stabil, auch wenn es in der Aktualität der Programme hinterherhinkt.


Standardmäßig wird über die Paketverwaltung (apt-get) Squid ohne OpenSSL Unterstützung installier. Da aber die Exchange-Dienste nicht unverschlüsselt übertragen werden sollten, muss zu erst das Squid DEB-Paket angepasst werden. Warum kompliere ich nicht einfach den Source-Code? Ganz einfach, weil wir Squid nicht auf 1-2 Servern ausrollen sondern auf ein paar mehr.

DEB-Pakete modifizieren

Am Besten Debian in einem Virtualisierungsprogramm (ich nutze VMWare Workstation) minimal installieren. Darauf gehe ich nicht weiter ein. Somit kann man vor Beginn einen Snapshot erzeugen und sollte was schief gehen, etc... einfach wieder auf die Musterinstallation zurückgehen - ohne großen Aufwand. Los geht's...

Nachinstallation von OpenSSH und vim, falls noch nicht geschehen beim Setup.
01.
apt-get install openssh-server vim
Schön finde ich auch immer das Syntax highlighting. Macht eine Konfigratuion einfach übersichtlicher. Eingeschaltet werden kann es in der Datei "/etc/vim/vimrc", Zeile 20. Dort am Zeilenanfang das Anführungszeichen entfernen. Genau das macht der untenstehende Befehl. Davor wird noch ein Backup der Datei angelegt.
01.
cp /etc/vim/vimrc /etc/vim/vimrc.orginal 
02.
sed -i 's/"syntax on/syntax on/g' /etc/vim/vimrc
Nun wechseln wir in das Verzeichnis /tmp. Achtung: Dieses Verzeichnis wird bei einem Neustart von Debian geleert!
01.
cd /tmp
Zu aller erst wird das Squid-Source-Paket heruntergeladen:
01.
apt-get install dpkg-dev 
02.
apt-get source squid
Danach werden die Abhängigkeiten von Squid heruntergeladen:
01.
apt-get build-dep squid
Das Gleiche machen wir nun für den OpenSSH-Server:
01.
apt-get build-dep openssh
Damit die SSL-Untestützung implementiert werden kann, ist das Paket OpenSSL erforderlich:
01.
apt-get build-dep openssl libcurl4-openSSL-dev
Zum Schluss benötigen wir noch diveres Tools für das Erzeugen des DEB-Paktes:
01.
apt-get install devscripts build-essential fakeroot gawk
Es folgt der eigentliche Prozess. Als nächstes wechseln wir in das Squid Source-Verzeichnis:
01.
cd squid-2.7.STABLE9
Falls du dir nicht sicher bist, einfach mit "ls -lsa" nochmal nachschauen.

So aktivieren wir die SSL-Modul im Squid. Dazu editieren wir die Datei "debian/rules".
01.
vim debian/rules
.

Dort findet einen diesen Abschnitt:
01.
# Configure the package. 
02.
config.status: 
03.
 
04.
        rm cfgaux/config.sub cfgaux/config.guess 
05.
        ln -s /usr/share/misc/config.sub cfgaux/ 
06.
        ln -s /usr/share/misc/config.guess cfgaux/ 
07.
 
08.
        $(opt_ac_cv_func_setresuid) \ 
09.
        ./configure \ 
10.
        --prefix=/usr \ 
11.
        --exec_prefix=/usr \ 
12.
        --bindir=/usr/sbin --sbindir=/usr/sbin \ 
13.
        --libexecdir=/usr/lib/squid \ 
14.
        --sysconfdir=$(sysconfdir) \ 
15.
        --localstatedir=/var/spool/squid \ 
16.
        --datadir=/usr/share/squid \ 
17.
        $(with_pthreads) \ 
18.
        $(with_netfilter) \ 
19.
        $(with_arp_acl) \ 
20.
        $(with_epoll) \ 
21.
        --enable-removal-policies=lru,heap \ 
22.
        --enable-snmp \ 
23.
        --enable-delay-pools \ 
24.
        --enable-htcp \ 
25.
        --enable-cache-digests \ 
26.
        --enable-underscores \ 
27.
        --enable-referer-log \ 
28.
        --enable-useragent-log \ 
29.
        --enable-auth="basic,digest,ntlm,negotiate" \ 
30.
        --enable-negotiate-auth-helpers=squid_kerb_auth \ 
31.
        --enable-carp \ 
32.
        --enable-follow-x-forwarded-for \ 
33.
        --with-large-files \ 
34.
        --with-maxfd=65536 \ 
35.
        $(DEB_HOST_ARCH_CPU)-debian-$(DEB_HOST_ARCH_OS)
Diesen ergänzen wir einfach um die Zeile "-–enable-ssl". So sieht dieser Anschnitt aus:
01.
# Configure the package. 
02.
config.status: 
03.
 
04.
        rm cfgaux/config.sub cfgaux/config.guess 
05.
        ln -s /usr/share/misc/config.sub cfgaux/ 
06.
        ln -s /usr/share/misc/config.guess cfgaux/ 
07.
 
08.
        $(opt_ac_cv_func_setresuid) \ 
09.
        ./configure \ 
10.
        --prefix=/usr \ 
11.
        --exec_prefix=/usr \ 
12.
        --bindir=/usr/sbin --sbindir=/usr/sbin \ 
13.
        --libexecdir=/usr/lib/squid \ 
14.
        --sysconfdir=$(sysconfdir) \ 
15.
        --localstatedir=/var/spool/squid \ 
16.
        --datadir=/usr/share/squid \ 
17.
        $(with_pthreads) \ 
18.
        $(with_netfilter) \ 
19.
        $(with_arp_acl) \ 
20.
        $(with_epoll) \ 
21.
        --enable-removal-policies=lru,heap \ 
22.
        --enable-snmp \ 
23.
        --enable-delay-pools \ 
24.
        --enable-htcp \ 
25.
        --enable-cache-digests \ 
26.
        --enable-underscores \ 
27.
        --enable-referer-log \ 
28.
        --enable-useragent-log \ 
29.
        --enable-auth="basic,digest,ntlm,negotiate" \ 
30.
        --enable-negotiate-auth-helpers=squid_kerb_auth \ 
31.
        --enable-carp \ 
32.
        --enable-follow-x-forwarded-for \ 
33.
        --with-large-files \ 
34.
        --with-maxfd=65536 \ 
35.
        --enable-ssl \ 
36.
        $(DEB_HOST_ARCH_CPU)-debian-$(DEB_HOST_ARCH_OS) 
37.
 
Die Datei wirde mit dem Befehl ":wq" gespeichert und geschlossen.

Damit die Änderung auch wirksam werden führen wir im Verzeichnis selber folgenden Befehl aus:
01.
./configure
Zum Schluss wird die Paketdatei erzeugt:
01.
debuild -us -uc -b
Dies kann je nach Systemleistung bis zu 5 Minuten gehen. Nicht in Panik ausbrechen...

Die Paketdateien (squid_2.7.STABLE9-2.1_amd64.deb, squid-common_2.7.STABLE9-2.1_all.deb)befinden sich direkt unter "/tmp" und können via WinSCP heruntergeladen werden.
01.
cd /tmp

Squid installieren


Entweder setzt ihr von euerer VM den Snapshot zurück oder wechselt auf eine andere Maschine (z.B. Produktivsystem). Dort installieren wir erstmal den Editor, Task-Manager und Squid nach.
01.
apt-get install vim htop squid
Nach erfolgreicher Installation aktivieren wir wieder das Syntax highlighting (siehe oben).
Squid wird bereits laufen. Das ist aber nicht weiters schlimm.

Die beiden DEB-Pakete einfach wieder mit Hilfe von WinSCP auf den Server im Verzeichnis "/tmp" hochladen.

Damit der modifizierte Squid aktiv wird, muss einfach folgender Befehl abgesetzt werden:
01.
dpkg -i squid_2.7.STABLE9-2.1_amd64.deb squid-common_2.7.STABLE9-2.1_all.deb
Die Ausgabe sieht so aus:
01.
root@debian6X64:/tmp# dpkg -i squid_2.7.STABLE9-2.1_amd64.deb squid-common_2.7.STABLE9-2.1_all.deb 
02.
(Reading database ... 37829 files and directories currently installed.) 
03.
Preparing to replace squid 2.7.STABLE9-2.1 (using squid_2.7.STABLE9-2.1_amd64.deb) ... 
04.
Unpacking replacement squid ... 
05.
Preparing to replace squid-common 2.7.STABLE9-2.1 (using squid-common_2.7.STABLE9-2.1_all.deb) ... 
06.
Unpacking replacement squid-common ... 
07.
Setting up squid-common (2.7.STABLE9-2.1) ... 
08.
Setting up squid (2.7.STABLE9-2.1) ... 
09.
Restarting Squid HTTP proxy: squid. 
10.
Processing triggers for man-db ...
Fertisch ist der Squid mit SSL-Unterstützung.

Squid-Konfiguration für Exchange 2010


Zuallererst lege ich immer von der Default-Konfigurationdatei eine Kopie an:
01.
cd /etc/squid/ 
02.
mv squid.conf squid.conf.bak
Ich benenne die Datei extra um, da die neue Konfigurationsdatei keinerlei Ähnlichkeit mehr haben wird.
Mit "vi squid.conf" öffnet sich eine leere Datei. Dort fügen wir folgende Konfiguration ein:
01.
visible_hostname extern.fqdn.de 
02.
 
03.
# Fuer ActiveSync notwendig, behebt Fehler auf https://www.testexchangeconnectivity.com 
04.
ignore_expect_100 on 
05.
 
06.
extension_methods RPC_IN_DATA RPC_OUT_DATA 
07.
https_port 443 cert=/etc/squid/ssl/EXTERN_SERVERZERTIFIKAT.crt key=/etc/squid/ssl/EXTERN_SERVERZERTIFIKAT.key  defaultsite=extern.fqdn.de 
08.
 
09.
cache_peer EXCHANGESERVERIP parent 443 0 no-query originserver login=PASS ssl sslflags=DONT_VERIFY_PEER sslcert=/etc/squid/ssl/INTERN_SERVERZERTIFIKAT.crt sslkey=/etc/squid/ssl/INTERN_SERVERZERTIFIKAT.key name=ExchangeServer 
10.
 
11.
 
12.
# Zugriff auf folgende Adressen ist erlaubt 
13.
acl EXCH url_regex -i ^https://extern.fqdn.de/owa.*$ 
14.
acl EXCH url_regex -i ^https://extern.fqdn.de/Microsoft-Server-ActiveSync.*$ 
15.
acl EXCH url_regex -i ^https://extern.fqdn.de/ews.*$ 
16.
acl EXCH url_regex -i ^https://extern.fqdn.de/autodiscover.*$ 
17.
acl EXCH url_regex -i ^https://extern.fqdn.de/rpc/.*$ 
18.
 
19.
 
20.
acl all src all 
21.
cache_peer_access ExchangeServer allow EXCH 
22.
never_direct allow EXCH 
23.
http_access allow EXCH 
24.
http_access deny all 
25.
miss_access allow EXCH 
26.
miss_access deny all 
27.
 
28.
access_log /var/log/squid/access.log squid 
29.
 
extern.fqdn.de = Servername der nach Außen sichtbar ist.

EXTERN_SERVERZERTIFIKAT.crt = Öffentlich gültiges Zertifikat für den Server
EXTERN_SERVERZERTIFIKAT.key = Privater Schlüssel zum Serverzertifikat

EXCHANGESERVERIP = IP-Adresse des Exchange-Servers im LAN (z.B. 10.10.10.10)

INTERN_SERVERZERTIFIKAT.crt = Gültiges Serverzertifkat des Exchanges
INTERN_SERVERZERTIFIKAT.key = Privater Schlüssel zum Serverzertifikat

EXCH = Name der Zugriffsliste
Durch das Auskommentieren von verschiedenen ACL's (Zeile 9-16) können verschiedene Dienste deaktivieren werden, so dass ein Zugriff vom Internet nicht möglich ist. Die Variablen habe ich extra groß geschrieben!

Zu guter Letzt den Squid neustarten:
01.
/etc/init.d/squid stop 
02.
/etc/init.d/squid start

Einrichtung von Outlook Anywhere und Outlook 2010

Hier könnt ihr nachelesen, wie Outlook Anywhere (RPCoverHTTPS) und Outlook 2010 eingerichtet werden müssen.

Testen der Exchangeverbindung

Um die Verbindung zum Exchange zu testen, empfehle ich diese Seite.

Grüße,
Dani
Mitglied: C.R.S.
13.10.2012 um 05:48 Uhr
Danke, das ist sehr nützlich. Wenngleich ich den schon begrabenen Gedanken an Exchange in der eigenen Firma mit dem Wegfall von TMG noch ein wenig tiefer gelegt habe.

Richard
Bitte warten ..
Mitglied: tikayevent
23.11.2012 um 23:14 Uhr
Hallo Dani,

auch von mir Danke für die Lösung. Mit einer leichten Modifikation und mit zwei kaskadierten Squids hat man sogar die Möglichkeit über eine Windows-Sicherheitsgruppe zu steuern, wer von außerhalb zugreifen darf.

Gruß Thomas
Bitte warten ..
Mitglied: thommymail
26.11.2012 um 17:42 Uhr
Könntest du mal kurz beschreiben wie die Änderung aussieht?
Ist es eigentlich möglich das man für OWA ein öffentliches Zertifikat verwendet und für die anderen Dienste wie z.B. Active-Sync eines von der eigenen CA?

Gruß
Thomas
Bitte warten ..
Mitglied: Dani
26.11.2012, aktualisiert um 17:52 Uhr
Moin,
Ist es eigentlich möglich das man für OWA ein öffentliches Zertifikat verwendet und für die anderen Dienste wie z.B. Active-Sync eines von der eigenen CA?
Jein, du kannst mehrere cache_peer anlegen, mit verschiedenen SSL-Zertifikaten. Solange aber OWA / ActiveSync auf dem selben Exchange-Server laufen wird es nicht gehen, da es immer die gleiche IP-Adresse ist.
Aber wenn du für OWA schon ein öff. Zertifikat nutzt, kannst du dieses ebenfalls für AS nutzen!


Grüße,
Dani
Bitte warten ..
Mitglied: Nuern83
25.02.2013 um 10:39 Uhr
Moin,

erst einmal vielen Dank für diese sehr gute Anleitung. Das habe ich soweit (auch als "nicht Debian User") alles hinbekommen.

Eine Frage ergibt sich für mich, die aber mit dem Proxy nur wenig zu tun hat:
Ich weiß nicht genau, woher ich die cert-files und die key-files bekomme (oder wie ich sie erstelle). Da hört mein Fachwissen dann leider auf. Um jeden hilfreichen Link wäre ich dankbar.

Gruß
Nuern83
Bitte warten ..
Mitglied: Dani
25.02.2013 um 11:22 Uhr
Moin,
Das sind im Normalfall die Dateien deines öffentlichem Zertifikats.


Grüße,
Dani
Bitte warten ..
Mitglied: Nuern83
25.02.2013 um 11:37 Uhr
Zitat von Dani:
Moin,
Das sind im Normalfall die Dateien deines öffentlichem Zertifikats.


Grüße,
Dani

Hallöchen,

danke für die schnelle Rückmeldung. Mit Zertifikaten habe ich nur im Ausnahmefall zu tun. Deshalb fehlt mir ein wenig Wissen darüber. Aber ich versuche es mal zu erfragen =)

Mir ist nicht klar, ob wir ein öffentliches Zertifikat besitzen, da wir bisher keinen Zugriff von Außen haben.

Wir haben intern (unter anderem) einen DC (2008) und einen Exch (2010). Der DC hat als Rolle eine Zertifizierungsstelle (eine CA, richtig?). Damit müssen wir alle 2 Jahre oder so das Zertifikat auf dem Exch erneuern. Das hat damit vermutlich nichts zu tun.

Auf welchem System erstelle ich die benötigten Zertifikate und Keys für die interne und die externe Kommunikation?

Gruß
Nuern83
Bitte warten ..
Mitglied: Dani
03.03.2013 um 14:55 Uhr
Moin,
Der DC hat als Rolle eine Zertifizierungsstelle (eine CA, richtig?). Damit müssen wir alle 2 Jahre oder so das Zertifikat auf dem Exch erneuern. Das hat damit vermutlich nichts zu tun.
Doch hat es! Das Zertifikat kannst du auf dem Exchangeserver beantragen bzw. ausstellen lassen mit Hilfe des mmc.exe. Falls du nicht weiterkommst, erstell im Forum einen neue Frage.


Grüße,
Dani
Bitte warten ..
Mitglied: shikka
02.10.2013 um 16:45 Uhr
Hi Thomas,

könntest du die Lösung mit den 2 kaskadierenden Squids vieleicht etwas genauer beschreiben ?

Danke im Voraus.

Grüße shikka
Bitte warten ..
Mitglied: Dani
06.01.2014 um 13:54 Uhr
Hi Thomas,
seit ein paar Tagen hat Kollege @tikayevent eine Anleitung dazu geschrieben.


Grüße,
Dani
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Exchange Server
gelöst Nginx Reverse Proxy Exchange () Outlook Verbindung bricht immer ab (4)

Frage von ThePcSwagTogether zum Thema Exchange Server ...

Exchange Server
NGINX Reverse Proxy mit Exchange 2016 und Outlook 2016 (16)

Frage von Dkuehlborn zum Thema Exchange Server ...

Exchange Server
Exchange 2010 Akzeptierte Domäne löschen (4)

Frage von Rob1982 zum Thema Exchange Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (21)

Frage von semperf1delis zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...