Top-Themen

Aktuelle Themen (A bis Z)

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, 16375 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 ..
Ähnliche Inhalte
Webbrowser
GZip Support für Squid als Reverse Proxy
Tipp von wiesi200Webbrowser4 Kommentare

Hallo, vor kurzen habe ich bei uns dank einer Anleitung von Dani Squid als Reverse Proxy eingeführt um unseren ...

Outlook & Mail
Outlook 2007 zu 2010 und zurück unter Exchange 2010
Anleitung von TechnoXOutlook & Mail4 Kommentare

Wir haben hier ein immer mal wieder auftretendes Szenario. Wir haben mehrere Outlook Versionen im Einsatz. Vorwiegend 2007 & ...

Outlook & Mail
Outlook 2016 - Exchange 2010 Verbindungsprobleme
Tipp von 0l1v3rOutlook & Mail1 Kommentar

Ab Outllook 2016 funktionierte die Kommunikation zwischen den Windows Fat-Clients und dem Exchange 2010 nicht mehr. Beim Einrichten von ...

Exchange Server
Nach Umzug der Postfächer von Exchange 2010 nach Exchange 2016 keine Verbindung zum Postfach mit Outlook 2010 und 2013 möglich
Tipp von diemilzExchange Server1 Kommentar

Hallo zusammen, ich bin gestern bei unserer Exchange-Umstellung über einen nervigen Fehler gestolpert, der mich einen Teil meiner Nerven ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 11 StundenWindows 101 Kommentar

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 13 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Netzwerkgrundlagen
Laufwerkszuordnung mit zwei IPs
Frage von Alex29Netzwerkgrundlagen12 Kommentare

Hallo in die Runde, Ich als Hobbyadmin hätte mal wieder eine Frage an die Profis. Ich habe ein Netzwerk ...