Hi!
Ich hoffe hier hat vielleicht jemand ein ähnliches Thema begleitet und hat entsprechende Tipps und Infos.
Ich möchte gerne den standardmäßigen Zugriff via LDAP auf das AD verhindern.
Alle How-To's die ich dazu finde, erwähnen immer nur den List Object Mode und wie man diesen aktiviert.
Da wir jedoch einen Exchange Server einsetzen, ist der List Object Mode bereits aktiviert und es kann an die Berechtigung gehen. Hier schweigt jedoch jedes How-To.
Die beste Anleitung die ich finden konnte ist hier: Hiding Data in AD List Object Mode | IT Pro
Kann mir jemand bestätigen, dass die folgenden Befehle dafür sorgen, dass der LDAP Zugriff verweigert wird?
Die Befehle sind aus dem verlinkten Artikel und nur gering angepasst
Erster Befehl zum setzen der Berechtigung auf erster Ordnungseinheit (alle vorhandenen Rechte von Authentifizierte Benutzer entfernen und benötigte Lese-Rechte -ohne "List Contents"- setzen):
Befehl zum Auslesen der Unter-OUs, welche berechtigt werden müssen
Anschließender Befehl um die Rechte zu setzen (Entfernen der Standardberechtigung "List Object" und "List Contents" für die Unter-OUs):
Die Leseberechtigung für Admingruppen wieder setzen:
Diese Schritte müssten für alle Unter-OUs der Domäne wiederholt werden.
Ist das wirklich der beste und korrekte Weg?
Was ist mit den Unter-unter-OUs?
Via DSQUERY lese ich die Unter-OUs der OU "Benutzergruppe1" aus. Aber was ist mit den OUs, die noch weiter verschachtelt sind? Lasse ich das "-scope onelevel" weg, erhalte ich ALLE Unter-OUs -> sollte also funktionieren?
Nach meinem Verständnis würde das so aussehen:
Domäne wie folgt aufgebaut
Domänenname: FQDN.DER.DOMÄNE
OU's: "Benutzer" "Server" "Beispiel3" und natürlich alle Standard-OUs wie "Users","Computers","Domain Controllers" etc.
Unterhalb von "Benutzer" gibt es "Benutzergruppe1" und "Benutzergruppe2"
Unterhalb von "Benutzergruppe1" noch "Test"
Folgende Befehle werden abgesetzt:
Das selbe wird auch für die Standard-OUs gemacht.
Alternativ müsste auch folgendes gehen (oder?):
Anschließend werden alle Unter-OUs ausgelesen:
Der nächste Befehl ändert die entsprechenden Berechtigungen
LDAP für Admins wieder erlauben
Sollte eine weitere Benutzergruppe z.B. Lesezugriff auf eine einzelne OU erhalten, wird letzter Befehl entsprechend angepasst:
Das ist verdammt viel Text und viel Code.
Ich hoffe es hat sich jemand die Mühe gemacht das durchzulesen und kann mir eine Info geben.
Habe ich einen Denkfehler? Können die Befehle weiter optimiert werden oder z.B. als Script zusammengefasst werden? Gibt es einen Plan für die Disaster-Recovery?
Jede Antwort erhält ein herzliches Dankeschön!
Ich hoffe hier hat vielleicht jemand ein ähnliches Thema begleitet und hat entsprechende Tipps und Infos.
Ich möchte gerne den standardmäßigen Zugriff via LDAP auf das AD verhindern.
Alle How-To's die ich dazu finde, erwähnen immer nur den List Object Mode und wie man diesen aktiviert.
Da wir jedoch einen Exchange Server einsetzen, ist der List Object Mode bereits aktiviert und es kann an die Berechtigung gehen. Hier schweigt jedoch jedes How-To.
Die beste Anleitung die ich finden konnte ist hier: Hiding Data in AD List Object Mode | IT Pro
Kann mir jemand bestätigen, dass die folgenden Befehle dafür sorgen, dass der LDAP Zugriff verweigert wird?
Die Befehle sind aus dem verlinkten Artikel und nur gering angepasst
Erster Befehl zum setzen der Berechtigung auf erster Ordnungseinheit (alle vorhandenen Rechte von Authentifizierte Benutzer entfernen und benötigte Lese-Rechte -ohne "List Contents"- setzen):
Code:
set DN="OU=Benutzer,DC=FQDN,DC=DER,DC=DOMÄNE"&& set SP="Authenticated Users"&& DSACLS %DN% /R %SP%&& DSACLS %DN% /G %SP%:RCRPLO
Befehl zum Auslesen der Unter-OUs, welche berechtigt werden müssen
Code:
DSQUERY ou "OU=Benutzergruppe1,OU=Benutzer,DC=FQDN,DC=DER,DC=DOMÄNE" -scope onelevel > queryresult.txt
Anschließender Befehl um die Rechte zu setzen (Entfernen der Standardberechtigung "List Object" und "List Contents" für die Unter-OUs):
Code:
for /f "delims=" %I in (queryresult.txt) do set SP="Authenticated Users"&& DSACLS "%~I" /R %SP%&& DSACLS "%~I" /G %SP%:RCRP
Die Leseberechtigung für Admingruppen wieder setzen:
Code:
DSACLS "OU=Benutzer,DC=FQDN,DC=DER,DC=DOMÄNE" /G "Domain-Admins":LOLC
Diese Schritte müssten für alle Unter-OUs der Domäne wiederholt werden.
Ist das wirklich der beste und korrekte Weg?
Was ist mit den Unter-unter-OUs?
Via DSQUERY lese ich die Unter-OUs der OU "Benutzergruppe1" aus. Aber was ist mit den OUs, die noch weiter verschachtelt sind? Lasse ich das "-scope onelevel" weg, erhalte ich ALLE Unter-OUs -> sollte also funktionieren?
Nach meinem Verständnis würde das so aussehen:
Domäne wie folgt aufgebaut
Domänenname: FQDN.DER.DOMÄNE
OU's: "Benutzer" "Server" "Beispiel3" und natürlich alle Standard-OUs wie "Users","Computers","Domain Controllers" etc.
Unterhalb von "Benutzer" gibt es "Benutzergruppe1" und "Benutzergruppe2"
Unterhalb von "Benutzergruppe1" noch "Test"
Folgende Befehle werden abgesetzt:
Code:
set DN="OU=Benutzer,DC=FQDN,DC=DER,DC=DOMÄNE"&& set SP="Authenticated Users"&& DSACLS %DN% /R %SP%&& DSACLS %DN% /G %SP%:RCRPLO
set DN="OU=Server,DC=FQDN,DC=DER,DC=DOMÄNE"&& set SP="Authenticated Users"&& DSACLS %DN% /R %SP%&& DSACLS %DN% /G %SP%:RCRPLO
set DN="OU=Beispiel3,DC=FQDN,DC=DER,DC=DOMÄNE"&& set SP="Authenticated Users"&& DSACLS %DN% /R %SP%&& DSACLS %DN% /G %SP%:RCRPLO
Alternativ müsste auch folgendes gehen (oder?):
Code:
DSQUERY ou "DC=FQDN,DC=DER,DC=DOMÄNE" -limit 0 -scope onelevel > queryresult.txt
for /f "delims=" %I in (queryresult.txt) do set DN="OU=%~I"&& set SP="Authenticated Users"&& DSACLS %DN% /R %SP%&& DSACLS %DN% /G %SP%:RCRPLO
Anschließend werden alle Unter-OUs ausgelesen:
Code:
DSQUERY ou "OU=Benutzer,DC=FQDN,DC=DER,DC=DOMÄNE" > queryresult1.txt
DSQUERY ou "OU=Server,DC=FQDN,DC=DER,DC=DOMÄNE" > queryresult2.txt
DSQUERY ou "OU=Beispiel3,DC=FQDN,DC=DER,DC=DOMÄNE" > queryresult3.txt
Der nächste Befehl ändert die entsprechenden Berechtigungen
Code:
for /f "delims=" %I in (queryresult1.txt) do set SP="Authenticated Users"&& DSACLS "%~I" /R %SP%&& DSACLS "%~I" /G %SP%:RCRP
for /f "delims=" %I in (queryresult2.txt) do set SP="Authenticated Users"&& DSACLS "%~I" /R %SP%&& DSACLS "%~I" /G %SP%:RCRP
for /f "delims=" %I in (queryresult3.txt) do set SP="Authenticated Users"&& DSACLS "%~I" /R %SP%&& DSACLS "%~I" /G %SP%:RCRP
LDAP für Admins wieder erlauben
Code:
DSQUERY ou "DC=rdl-ts,DC=farm,DC=rcom" -limit 0 > queryresult.txt
for /f "delims=" %I in (queryresult.txt) do DSACLS "OU=%~I" /G "Domain-Admins":LOLC
Sollte eine weitere Benutzergruppe z.B. Lesezugriff auf eine einzelne OU erhalten, wird letzter Befehl entsprechend angepasst:
Code:
DSACLS "OU=Test,OU=Benutzergruppe1,OU=Benutzer,DC=FQDN,DC=DER,DC=DOMÄNE" /G "LDAP-Zugriff":LOLC
Das ist verdammt viel Text und viel Code.
Ich hoffe es hat sich jemand die Mühe gemacht das durchzulesen und kann mir eine Info geben.
Habe ich einen Denkfehler? Können die Befehle weiter optimiert werden oder z.B. als Script zusammengefasst werden? Gibt es einen Plan für die Disaster-Recovery?
Jede Antwort erhält ein herzliches Dankeschön!
Zuletzt bearbeitet: