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

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

12.10.2012, aktualisiert 02.01.2015, 18397 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
Router & Routing
PfSense Upgrade Squid startet nicht
Tipp von the-buccaneerRouter & Routing2 Kommentare

Keine Ahnung, wer noch auf der 2.2.x hängt und ein Upgrade auf 2.3.x verzögert hat, aber: Wenn der Squid ...

Utilities

Teamviewer 14 Verbindungsprobleme mit Proxy

Tipp von PeterleBUtilities

Nach dem Umstieg von Version 13 auf 14 wollte sich TV nicht mehr mit dem Netz verbinden, ignorierte offenbar ...

Firewall

IPFire Anleitung (Installation und Einrichtung, Proxy)

Anleitung von matze2090Firewall1 Kommentar

Hallo, ich habe auf YouTube eine Playlist über IPFire hochgeladen. Hier zeige ich die Installation und Konfiguration, Web Proxy, ...

Windows 10

Windows X 1511 auf USB-Stick

Erfahrungsbericht von LochkartenstanzerWindows 107 Kommentare

Hi, habe gerade ein Experiment gemacht: ein momentan ungenutzte Win7-Lizenz aus der Kruschtelkischd ausgegraben. Windows 10 mit dieser Win7-Lizenz ...

Neue Wissensbeiträge
Windows Installation

Windows Install ISO mit übergroßer Install.wim auf FAT32 übertragen

Tipp von Lochkartenstanzer vor 3 TagenWindows Installation9 Kommentare

Moin Kollegen, Viele von euch werden sicher aus praktischen Gründen nicht nur DVDs oder "virtuelle" CD-Laufwerke (Zalman, IODD) zum ...

Datenschutz

Gehe zurück auf Los, ziehe keine 4.000 Mark. E-Privacy (erstmal) gescheitert

Information von certifiedit.net vor 3 TagenDatenschutz

Webbrowser

Firefox 71 verfügbar mit Picture in Picture Funktion

Information von sabines vor 4 TagenWebbrowser2 Kommentare

Die neue Firefox Version 71 unterstützt, zunächst nur für Windows, Picture in Picture. Damit kann ein Video in einem ...

E-Mail
SPF beim Versenden testen
Tipp von StefanKittel vor 5 TagenE-Mail3 Kommentare

Hallo, wenn man einen SPF für einen Exchange, oder anderen Mail-Server, konfigiruert muss man das ja auch testen. Ganz ...

Heiß diskutierte Inhalte
E-Business
Brainstorming: Zeiterfassungs- oder gesamtes Abrechnungssystem
Frage von certifiedit.netE-Business23 Kommentare

Guten Abend, alles neu macht der, naja, schon lange nicht mehr, Mai Zum Ende des Jahres, besser zum Beginn ...

Entwicklung
Powershell-Skript und Organisationseinheiten auskludieren
gelöst Frage von informatikkfmEntwicklung13 Kommentare

Hallo, ich habe ein Powershell-Skript, ähnlich wie das folgende. Ich möchte dabei, dass alle Benutzer unterhalb der OUs in ...

Netzwerkmanagement
Hausverkabelung auf billig für 8
Frage von AmateurverkablerNetzwerkmanagement10 Kommentare

Hallo Community, ich bin in eine Haus-WG eingezogen welche 7 Zimmer hat und eine Einliegerwohnung. Der Vermieter hat in ...

Weiterbildung
Thema Gehaltsverhandlung - Angemessenes Gehalt als (SAP)-Supportmitarbeiter
Frage von DennisWeberWeiterbildung10 Kommentare

Hallo Leute, ich möchte nach ca. 3 Jahre Betriebszugehörigkeit und 4 Jahre Berufserfahrung (Arbeitsjahre/ keine Ausbildungszeit) endlich eine Gehaltsanpassung ...