Office 365 Netzwerkziele

Damit Anwender mit Office 365 arbeiten können, müssen sie natürlich die Dienste in der Cloud auch nutzen können. Auch wenn "Internet-Zugriff" mittlerweile zum Standard gehört, gilt für Firmen oft noch dass "ungefilterter Internetzugriff" nicht üblich ist. Da gibt es zum einen das Jugendschutzgesetz, welches Firma dazu zwingt, junge Auszubildende zu schützen, obwohl diese heute per Smartphone ungefiltert das Internet nutzen können. Zum anderen versprechen sich Firmen aber natürlich einen besseren Schutz, wenn auch von Innen nach Außen nicht alles erlaubt wird.

Erste Hürde ist daher meist ein HTTP-Proxy, der eine Authentifizierung erfordert. Das ist zwar mittlerweile auch per "integrierter Anmeldung" möglich, aber das funktioniert nicht im jedem Falle. für den Zugriff auf Office 365 Ziele wäre eine Umgehung der Authentifizierung wünschenswert. Wenn eine Firma die Dienste von Office 365 nutzt, dann werden Sie die Office 365 Server schon als "Trusted" ansehen. Schließlich vertrauen sie diesen Servern ja schon ihre Daten an.

Office 365 IP-Adressen per HTML

Microsoft veröffentlicht die Ports und IP-Adressen für Office 365 auf einer Webseite

Mit ein bisschen Powershell kann aber auch aus dieser HTML-Datei zumindest eine Liste der IP-Adressen extrahiert werden.

# Quellwebseite
$ipsourceuri = "https://support.office.com/de-de/article/URLs-und-IP-Adressbereiche-von-Office-365-8548a211-3fe7-47cb-abb1-355ea5aa88a2"

# HTML-Seite abrufen
$htmlpage =Invoke-WebRequest `
   -Uri $ipsourceuri `
   -UseBasicParsing

# Per RegEx alle IP-Adressen ggfls mit Subnet einsammlen
$iplist = ($htmlpage.content | Select-String "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" -AllMatches).matches.value

# Ausgeben
$iplist

Dies ist ein schneller und ganz einfacher Ansatz, der alle Ziffern in der Form xxx.xxx.xxx.xxx erwischt. Das müssen nicht sicher IP-Adressen sein, da auch 999.999.999.999 getroffen wird. Zudem enthält die HTML-Seite verschiedene Gruppierungen. Wer also nur die IP-Adressen für einen Dienst benötigt, müsste noch diese Abschnitte selektieren. Zudem habe ich so natürlich erst mal keine IPv6-Adressen. Es kann aber schon reichen um z.B. Änderungen an der Liste zu erkennen und einen Firewall Administrator zu informieren.

Es geht aber noch viel einfacher. Wer genau die Seite "Office 365 URLs and IP address ranges " (https://support.office.com/en-us/article/Office-365-URLs-and-IP-address-ranges-8548a211-3fe7-47cb-abb1-355ea5aa88a2) liest, finden im Fließtext einen Link auf eine XML-Datei:

XML-Datei mit den Office 365 Endpunkten
http://go.microsoft.com/fwlink/?LinkId=533185
https://support.content.office.net/en-us/static/O365IPAddresses.xml

Diese Information kann natürlich noch viel einfacher per PowerShell o.ä. heruntergeladen und weiter verarbeitet werden. Da fehlt mir nun nur noch für die verwendeten Proxy-Server und Firewalls eine Kommandozeile um die Zielsätze automatisch zu pflegen.

BGP-AS, ASN und Whois

Während der Arbeit an der Seite Express Route musste ich mich auch etwas über "BGP" informieren und habe auch hier gesehen, dass Netzwerkbereiche als "Autonomous System (AS)" zusammengefasst und mit Leitwegen versehene werden. BGP im Internet und OSPF im LAN haben schon lange RIP als Routingprotokoll abgelöst. Ein Router muss aber zu einer IP-Adresse nun erst mal das passende AS finden, um dann über den Leitweg den "Next Hop" zu bestimmen. anhand der BGP-Daten bilden sich also Gruppen von IP-Subnetzen.

Leider kann ich nichts zuverlässig sagen, dass es genau ein passendes AS für Office 365 gibt. Aber es gibt anscheinend das ASN= 8075, welches bei einer Stichprobe scheinbar alle Subnetze umfasst, die in der Office 365 IP-Liste gelistet werden. Aber sind wohl auch noch ein paar Adressen mehr drin. Dennoch ist BGP eine gute Quelle um die Zugehörigkeit von IP-Adressen zu einem Netzwerkverbund zu ermitteln. Meist sind dies Provider, oft aber eben auch große Firmen wie Microsoft, Google, Amazon etc.

Die BGP-Routen kann man sicher auch von einem BGP-Router abfragen. Dazu muss man aber so ein System im Zugriff haben und bezweifle, dass die meisten Firmen einen BGP-Router des Providers überhaupt auf dem Management-Level erreichen können. Aber es gibt ja die benannten Auskunftsdienste und diese lassen sich doch recht einfach anzapfen. So liefert RIPE.NET eine JSON-Antwort

https://stat.ripe.net/data/as-routing-consistency/data.json?resource=AS8075

Das Powershell-Skript dazu ist schnell gebaut:

# URL zur Abfrage der RIPE-Datenbank
$url = "https://stat.ripe.net/data/as-routing-consistency/data.json?resource=AS8075"

# Anfordern der Daten per REST
$json = Invoke-RestMethod -Method get -Uri $url

# Ausgabe 
$json.data.prefixes.prefix

So einfach bekommt man eine Liste der IP-Adressen zu einem Autonomous System (AS).

Konfiguration der Firewalls und Proxies

Allein die Daten zu haben ist natürlich nur die halbe Miete. Mit den Adressen muss nun natürlich auch gearbeitet werden. Hier sehe ich drei AnsatzMöglichkeiten.

  • Firewall
    Der erste Ansatz ist natürlich die Steuerung der Firewall. Wenn die IP-Subnetze der Office 365 Ziele bekannt sind, könnte ein Administrator damit vielleicht sogar automatisch Regel zu diesen Zielen konfigurieren.

Aktuell ist mir keine Firewall bekannt, die BGP-Informationen oder RIPE-Daten auswertet um über das Autonomous System (ASN) eine Filterung nach Zielen und Quellen durchzuführen.

Per Zufall habe ich aber z.B. bei einer Firma gesehen, dass ein McAfee Proxy entsprechende "predefined Sets" hat, die von McAfee wohl gepflegt und dem Kunden bereitgestellt werden.

  • Router
    Eine weitere Stelle zur Verwendung dieser Regeln kann natürlich der Router sein. Wenn Sie mehrere Wege zum Internet haben, dann können sie natürlich auch hier diese IP-Liste als Quelle nutzen, um statische Leitwege über ein anderes Interface zu routen.

Beachten Sie dabei aber, dass die Umsetzung auf offizielle IP-Adressen (NAT) erst nach dem Routing passiert, damit die Pakete dann auch mit der richtigen offiziellen Adresse ihr Netzwerk verlassen und die Rückpakete damit auch den gleichen Weg wieder ankommen.

  • Proxy Server
    Über eine WPad-Datei können Sie den Clients abhängig von den Zielen alternative Proxy Server mitgeben. So könnten sie schon auf dem Client ein Routing nach Zielen zu einem anderen Proxy eintragen, der vielleicht auch eine andere externe Internetanbindung nutzt. Allerdings ist dieser Ansatz nur bedingt tauglich, da verschiedene Dienste nicht auf IP-Adressen sondern auch FQDNs nutzen. Das kann eine Proxyerkennung zwar auch, aber nur wenn das Protokoll auch HTTP-Proxy nutzt. Einige Dienste, z.B. Audio/Video nutzen bevorzugt andere Dienste. (3478/UDP)

Wie Sie ihr Wissen um die aktuellen Office 365-IP-Adressen nun intern einsetzen, ist letztlich spezifisch für ihre Umgebung. Allgemein einsetzbare Skripte oder Tools gibt es aktuell nicht.

Vielleicht implementieren Sie ja eine Lösung, die Sie entsprechend veröffentlicht haben. Über einen Hinweis darauf freue ich mich.

Weitere Links