none
Active Directory Benutzter um NUR WMI abfragen zu ermöglichen RRS feed

  • Allgemeine Diskussion

  • Hallo Micröheads,

    ich verwende Icinga (quasi Nagios) um WMI Monitoring zu machen. In bisherigen Tests verwende ich dafür einen benutzter (icinga-test) der in der Gruppe der Domain Admins ist.
    Das funktioniert auch wunderbar und auf allen Server ohne das ich irgendwas konfigurieren muss.
    Nun möchte ich aber aus Sicherheitsgründen, dass der icinga Benutzter in der AD nur WMI abfragen machen kann.
    Es soll nicht die möglichkeit geben sich an einem System mit diesem Account anzumelden.

    Welche Einstellungen muss man den in einem AD Account machen, damit dieser nur WMI-berechtigt ist?

    Vielen Dank schonmal im Vorraus!

    Gruß Duffkess
    Freitag, 23. August 2013 11:59

Alle Antworten

  • Diese Einstellung gibt es AFAIK nicht. Du kannst einen Benutzer erstellen, den packst Du per Gruppenrichtlinien in die Gruppe der lokalen Administratoren. Welche Werte aus dem AD fragst du denn per WMI ab? Oder meinst Du lokale WMI-Abfragen?

    Servus
    Winfried

    GPOs: http://www.gruppenrichtlinien.de/
    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/

    Freitag, 23. August 2013 14:16
  • Hi, es geht dabei um lokale WMI abfragen, ich würde halt gerne einen Benutzer haben, den ich nur eimal anlegen muss und ich nicht alle Windows Server einzeln anfassen muss.

    Es wäre sehr kontraproduktiv wenn sowas nicht möglich ist :/

    Gruß Duffkess


    • Bearbeitet Dufkess Montag, 26. August 2013 06:48
    Montag, 26. August 2013 06:47
  • Merke: Das Active Directory vergibt keine Berechtigungen! Es ist nur ein "dummes" Verzeichnis in dem für ein User-Objekt Name, Passwort, Gruppenzugehörigkeiten (aka "SIDs") und weitere Attribute für Abfragen gespeichert sind. Allein mit diesen SIDs hat ein Benutzer noch keine Berechtigungen etwas zu tun.

    Erst wenn Du diese Gruppen auch Berechtigungen auf Ressourcen (Fileshares, Services, Komponenten usw.) vergibst, sind die Mitglieder dieser Gruppen berechtig etwas zu tun.

    Deswegen gehe wie folgt vor:

    Agentless Monitoring of Windows using WMI
    https://kb.op5.com/display/HOWTOs/Agentless+Monitoring+of+Windows+using+WMI

    --

    Tobias Redelberger
    StarNET Services (HomeOffice)
    Frankfurter Allee 193
    D-10365 Berlin
    Tel: +49 (30) 86 87 02 678
    Mobil: +49 (163) 84 74 421
    Montag, 26. August 2013 07:28
  • Hi, es geht dabei um lokale WMI abfragen, ich würde halt gerne einen Benutzer haben, den ich nur eimal anlegen muss und ich nicht alle Windows Server einzeln anfassen muss.

    Es wäre sehr kontraproduktiv wenn sowas nicht möglich ist :/

    In dem von Tobias geposteten Link findest Du eigentlich alle Infos die Du brauchst. Leg einen Benutzer im AD an und vergib die passenden Berechtigungen mittels GPOs. Wie das geht, steht u.a. in diesen beiden Artikeln. http://www.gruppenrichtlinien.de/artikel/verwaltung-der-lokalen-administratoren/

    http://www.gruppenrichtlinien.de/artikel/zentrale-vergabe-lokaler-berechtigungen/


    Servus
    Winfried

    GPOs: http://www.gruppenrichtlinien.de/
    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/

    Montag, 26. August 2013 08:02
  • Aber es reicht doch nicht wenn ich hier nur die GPOs verteile, ich muss doch trotzdem jeden Server anfassen und dem User/ der Gruppe die Rechte fürs WMI geben? Oder ist das genau das was die im Link angegebenen GPOs machen??
    Montag, 26. August 2013 11:04
  • Aber es reicht doch nicht wenn ich hier nur die GPOs verteile, ich muss doch trotzdem jeden Server anfassen und dem User/ der Gruppe die Rechte fürs WMI geben? Oder ist das genau das was die im Link angegebenen GPOs machen??

    Die GPOs verteilen die Berechtigungen und per GPO kannst Du den betroffenen User auch in die Gruppe der lokalen Admins bringen. Einfach mal eine Testmaschine nehmen und langsam anfangen. Das wird schon. ;)


    Servus
    Winfried

    GPOs: http://www.gruppenrichtlinien.de/
    WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/

    Montag, 26. August 2013 11:27
  • Lies mal hier weiter:

    Set WMI namespace security via GPO (script)
    http://blogs.msdn.com/b/spatdsg/archive/2007/11/21/set-wmi-namespace-security-via-gpo-script.aspx

    --

    Tobias Redelberger
    StarNET Services (HomeOffice)
    Frankfurter Allee 193
    D-10365 Berlin
    Tel: +49 (30) 86 87 02 678
    Mobil: +49 (163) 84 74 421
    Montag, 26. August 2013 12:18
  • so habe nun einige Infos aus den verschiedenen Quellen zusammengetragen und einen für mich scheinbar funktionierenden weg gefunden:

    ' Author: Duffkess
    ' Desc: enables a specific user to use the wmi service remotly
    
    ' creating needed objects for the wmi_gpo
    ' objLocalGroup will store the "Distributed COM Users, they are needed to enable remote wmi querys
    ' objDomainUser will store the user object which will be able to use wmi querys
    ' objNetwork will be used to get the computername
    ' wmiUsername is only the preference to set the specific wmi username.. easy hu?
    ' alreadyInGroup is a simple help flag used to determine if the user is in the group or not
     
    Dim objLocalGroup, objDomainUser, objNetwork, wmiUsername, alreadyInGroup
    
    wmiUsername = "icinga-blabla"
    
    ' getting the computername the script is running on
    Set objNetwork = CreateObject("Wscript.Network")
    strComputer = objNetwork.ComputerName
    
    ' bind to local group object.
    Set objLocalGroup = GetObject("WinNT://" & strComputer & "/Distributed COM Users")
    
    ' bind to domain user object.
    Set objDomainUser = GetObject("WinNT://my.domain/" & wmiUsername)
    
    ' sets the default of the alreadyInGroup flag
    alreadyInGroup = false
    
    ' iterates through each member of the group
    For Each objMember In objLocalGroup.Members
    
    	' check if the user is already in group, if yes sets the alreadyInGroup flag to true
    	if(objMember.Name = wmiUsername) then
    		alreadyInGroup = true
       	End if
    Next
    
    ' checks if the alreadyInGroup flag is still false, then adds the user,
    ' if its not in group it adds the user
    if(alreadyInGroup = false) then
    	objLocalGroup.Add(objDomainUser.ADsPath)
    End if
    
    ' set the security byte array (adding the group distributed com users)
    
    strSD = array(## die security bytes ##)
    
    set namespace = createobject("wbemscripting.swbemlocator").connectserver(,"root")
    
    set security = namespace.get("__systemsecurity=@")
    
    nStatus = security.setsd(strSD)
    

    Das funktioniert aber nur wenn in den DCOM Settings auch die Distributed COM Users eingetragen sind:

    http://msdn.microsoft.com/en-us/library/Aa393266.aspx#setting_dcom_security_to_allow_a_user_to_access_a_computer_remotely

    Habe das Skript nun einmal Lokal getestet und werde es dann bald mal als GPO ausrollen!

    Vielen Dank für die Infos!!

    PS: Ja, ich weiß es gibt auch eine IsMember Methode aber irgendwie hats bei mir nich funktioniert..


    • Bearbeitet Dufkess Mittwoch, 28. August 2013 09:40
    Mittwoch, 28. August 2013 09:38
  • Danke fürs Feedback - kann bestimmt mal wieder jemand gebrauchen.

    Updates und Verbesserungsvorschläge sind bestimmt gern gesehen :)

    --

    Tobias Redelberger
    StarNET Services (HomeOffice)
    Frankfurter Allee 193
    D-10365 Berlin
    Tel: +49 (30) 86 87 02 678
    Mobil: +49 (163) 84 74 421
    Mittwoch, 28. August 2013 11:27
  • eine Frage noch:

    ich habe nun alles konfiguriert, dem User alle Rechte gegeben auf das WMI, alles funktioniert bis auf folgende Abfrage:

    "Select * from Win32_Service"

    Aaaaber wenn ich den User in die lokale Admin Gruppe schiebe, funktioniert auch das wunderbar.

    Gibt es dazu nochmal besondere Einstellungen?

    Oder habt ihr ne Idee woran das noch liegen könnte?

    Donnerstag, 29. August 2013 12:03
  • Das sollte auch als Nicht-Admin funktionieren... Was genau machst Du, und was erhältst Du für einen RC?

    Martin

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    And if IT bothers me - coke bottle design refreshment :))

    Restore the forum design - my user defined Cascading Style Sheet!

    Donnerstag, 29. August 2013 12:11
  • ich sende mit dem linux wmic Kommando den WMI Query "select * from Win32_service", habe es auch schon mit powershell probiert. Es sind definitiv die Berechtigungen.

    Sobald ich den benutzer den lokalen Admins hinzufüge geht es..

    also fehlt doch noch irgendwo eine Berechtigung auf irgendwas, was mit Services und Diensten zusammenhängt?

    Edit: ich kriege von Powershell Zugriff Verweigert zurück

    Edit2: wenn ich von linux oder auch mit powershell "select * from Win32_Bios" mache, funktionierts einwandfrei..

    • Bearbeitet Dufkess Donnerstag, 29. August 2013 13:34
    Donnerstag, 29. August 2013 13:32
  • Dann bin ich ratlos - hier geht das als Nichtadmin mit "wmic service" problemlos?!?

    Martin

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    And if IT bothers me - coke bottle design refreshment :))

    Restore the forum design - my user defined Cascading Style Sheet!

    Donnerstag, 29. August 2013 13:43
  • könnte ich alternativ vielleicht folgenden, unsichereren Workarround machen:

    dem Useraccount lokale Admin Rechte geben aber über die AD ausschließen das dieser Benutzer sich über RDP anmelden darf?

    Kann man das einstellen, wenn ja wo?

    Danke


    • Bearbeitet Dufkess Freitag, 30. August 2013 08:21
    Freitag, 30. August 2013 08:20
  • Ja, geht. GPO für den Zielcomputer, Windows-Einstellungen - Sicherheitseinstellungen - Lokale Einstellungen - Zuweisen von Benutzerrechten. "Interaktive Anmeldung verweigern", "Anmeldung über Remotedesktop verweigern" und "Anmeldung als Dienst zulassen" (alles "sinngemäß", kann auch leicht anders heißen - Du wirst es finden ;-))

    Martin

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    And if IT bothers me - coke bottle design refreshment :))

    Restore the forum design - my user defined Cascading Style Sheet!

    Freitag, 30. August 2013 08:30
  • Alles klar, werd ich probieren, danke!
    Freitag, 30. August 2013 09:01