Get-Federationdomain

Bei Get-Federationdomain handelt es sich nicht um ein Lync Commandlet sondern ein PowerShell Script, welches eine Liste von DNS-Domänen erwartet und mit den seit PowerShell 4 vorhandenen Commandlets per DNS prüft, ob diese Domänen vielleicht einen SIP-Federation-Eintrag oder einen SIP-Eintrag haben. Alles was sie nun noch brauchen ist eine Liste von "interessanten Domains" und mit etwas Glück finden sie einige Firmen, die per DNS sogar veröffentlichen, dass Sie per Lync Federation erreichbar sind.

Domains ermitteln

Fast alle Firmen nutzen heute E-Mail und alle Mailserver führen in der Regel ein paar Protokolle mit, wer mit wem per Mail kommuniziert. Das ist eine sehr interessante Datenbasis, um eine Liste von Partnerdomains zu erhalten und diese auf etwaige Lync-Installationen zu überprüfen.

Aus dem Exchange Message Tracking Log lässt sich so eine Liste der Domäne z.B. Anhand des Absender einer Mail sehr einfach generieren:

get-messagetrackinglog `
   -eventid receive `
| select sender `
| %{($_.sender).split("@")[1].tolower()} `
| group `
| select -ExpandProperty name

Das Ergebnis ist eine Liste von Domänen, die Sie per Pipeline natürlich direkt an das Skript weiter reichen können oder mit einem "Out-File" auch temporär spoichern.

Domainauswertung

Genau genommen könnte das Skript auch noch als "Oneliner" an die Ermittlung per Exchange Message Tracking angehängt werden. Aber ich wollte dann doch zum einen ein lesbares Skript, welches zum anderen ein nettes Ausgabeobjekt für eine weitere Verarbeitung liefert. Zudem kann man so das Skript einfacher "debuggen" oder auch um eigene weitere Namen erweitern.

Technisch fragt es folgende DNS-Adressen für jede per Pipeline übergebene Domäne ab

Name Typ Beschreibung

_sipfederationtls._tcp

SRV

Ein sehr deutlicher Indikator, dass der Betreiber einen Lync Server bereitgestellt hat. Das bedeutet nicht automatisch, dass Federation sofort funktioniert, denn das kann auch pro Domäne gesteuert werden. Nicht jeder hat "Open Federation"

_sip._tls

SRV

Ein sehr deutlicher Indikator, dass die Domain vermutlich Lync einsetzt. Zumindest könnte dieser Eintrag auf RemoteUser hinweisen

sip

A

Ein etwas schwächerer Indikator für Lync, da auch andere Dienste den Hostname "sip" verwenden.

autodiscover

A

Ein deutlicher Hinweis auf das Vorhandensein von Exchange

lyncdiscover

A

Ein klarer Hinweis auf das Vorhandensein von Lync Services für Clients.

Die Tatsache, dass ein oder mehrere Einträge vorhanden sind ist keine Zusicherung, dass ihr direkter Kommunikationspartner auch Lync nutzen kann, für Federation freigeschaltet ist oder Federation für ihre Domäne oder global möglich ist. Aber es kann sich je nach Anwendungsfall lohnen, den Kontakt zu suchen und vielleicht diese "Erlaubnis" auf Gegenseitigkeit einzurichten.

get-federationdomain.1.0.ps1.txt

Laden Sie sich das Skript einfach herunter und speichern Sie dies in einem geeigneten Verzeichnis ab. Vergessen Sie nicht die Extension von .TXT auf .PS1 zu ändern. Hängen Sie dann das Skript einfach an den obigen Aufruf an oder senden Sie eine Domainliste an das Skript.

Manuelle Abfrage von Domänen. Hier als Liste erstellt und zugestellt:

PS C:\> "denic.de","netatwork.de","microsoft.com" | .\get-federationdomain.1.0.ps1  | ft -AutoSize

sipentry lyncdiscover domain        lyncclient autodiscover federation
-------- ------------ ------        ---------- ------------ ----------
   False        False denic.de           False        False      False
   False        False netatwork.de       False        False      False
   False        False microsoft.com      False        False      False

Abfragen einer Domänenliste, die in einer Textdatei hinterlegt ist:

PS C:\> Get-Content .\domain.txt | .\get-federationdomain.1.0.ps1 | ft -AutoSize

sipentry lyncdiscover domain        lyncclient autodiscover federation
-------- ------------ ------        ---------- ------------ ----------
   False        False denic.de           False        False      False
   False        False netatwork.de       False        False      False
   False        False microsoft.com      False        False      False

Ausgabe

Die vom Skript ermittelten Daten werden einfach als PowerShell-Objekt ausgegeben und können per Pipeline an nachgeschaltete Commandlets gegeben werden. Ein einfaches " | format-table" liefert die Daten als Tabelle auf den Bildschirm. Interessanter ist sicher ein "| export-csv", um die Liste als CSV-Datei für weitere Analysen auszugeben.

Erweiterungen

Das ist Version 1.0 des Skripts und sicher kann man sich umfangreiche Weiterentwicklungen vorstellen. z.B.

  • Zertifikat abfragen
    Die Qualität der Daten könnte besser werden, wenn das Skript eine TCP-Connection mit TLS-Handshake aufbaut und so z.B. prüft, ob wirklich ein SIP-Server reagiert und ob das Zertifikat kompatibel ist.
  • Wildcard DNS
    Telekom und anderen Provider haben die für Endkunden nützliche Funktion bei DNS Abfragen auf nicht existente Namen dennoch eine Antwort zu liefern, nämlich die einer Suchseite. Privatanwender können so beim "vertippen" auf eine Portalseite mit Suchfunktion (und Werbung) umgelenkt werden. So eine Funktion stört natürlich diese Art der Auswertung. Denkbar wäre, dass das Skript einen anderen DNS-Server fragt oder durch einen Verbindungstest ermittelt, ob hinter dem Namen auf dem Port auch ein Server lauscht.
  • Mail an User
    Denkbar wäre auch, dass das Skript z.B. eine Liste der Domänen und der Absender und Empfänger als Cache führt und per Mail die internen Personen über mögliche Federationpartner informiert. Wenn die Federation quasi gesichert ist, kann der Mitarbeiter per Mail dann immer noch den Gegenüber nach der SIP-Adresse fragen. Nicht bei allen Firmen sind die SIP-Adresse und die Mailadresse identisch.

Sicher fallen ihnen noch andere Dinge ein. Die Quelldaten liegen vor. Viel Spaß beim Anpassen.

Weitere Links