Benutzer-Werkzeuge

Webseiten-Werkzeuge


know-how:windows

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
know-how:windows [2024/02/01 15:01] – [Spam in Junk-Mail] ccknow-how:windows [2024/02/26 10:30] (aktuell) – [reportMalwareDevices.php] cc
Zeile 1: Zeile 1:
 +~~ODT~~
 ====== reportMalwareDevices.php ====== ====== reportMalwareDevices.php ======
   * Analog zu **reportUpdateStates.php** Permissions von deviceManagement read reicht aus   * Analog zu **reportUpdateStates.php** Permissions von deviceManagement read reicht aus
Zeile 694: Zeile 695:
 ... ...
 </code> </code>
 +====== reportMissingNotebooksOwnerBased.php ======
 +  * Analog zu **reportMissingNotebooks.php** nur um die Schüler der 3. und 4. Klasse ergänzt
 +  * **Achtung** - Da die API bei 500 Devices deckelt muss ab 500 eine andere Lösung gefunden werden / Ermittle alle betroffenen User über LDAP im AD und ermittle für jeden einzelnen User die Zugehörigkeit zu einem registrierten Gerät 
 +  * **Update** - es ist doch möglich mehr als 500 Devices zu erhalten mit pagination kann zum nächsten **Link** geblättert werden - danke an Herrn Christoph Pachler 
 +
 +<code>
 +<?php
 +
 +$server = "ldaps://FQDN:636";
 +//domain user to connect to LDAP
 +$user = "USERNAME";
 +//user password
 +$passwd = "PASSWORD";
 +
 +$dn = array(0=>"OU_PATH_ALL_PUPILS");
 +
 +$classesRegex="/^(1|2|3|4).*$/";
 +
 +$search="(objectClass=user)";
 +
 +
 +$errUser=0;
 +$countAll=0;
 +$okUser=0;
 +
 +
 +
 +echo "All Users that haven't enrolled a device: "."\n";
 +
 +for ($j=0; $j<count($dn); $j++)
 +{
 +        $ds=ldap_connect($server);
 +       $r=ldap_bind($ds, $user , $passwd);
 +
 + $sr=ldap_search($ds, $dn[$j], $search, array(0=>"UserPrincipalName",1=>"distinguishedName",2=>"department",3=>"description"));
 +
 + $data = ldap_get_entries($ds, $sr);    
 +       
 +
 +        // $countAll+=$data["count"];
 +
 + for ($i=0; $i<$data["count"]; $i++) 
 + {
 +
 + //echo ($data[$i]["distinguishedname"][0])."\n";
 + //echo ($data[$i]["userprincipalname"][0])."\n";
 + //echo ($data[$i]["department"][0])."\n";
 +
 + $distinguishedName=strtolower($data[$i]["distinguishedname"][0]);
 + $userPrincipalName=strtolower($data[$i]["userprincipalname"][0]);
 + $department=strtolower(@$data[$i]["department"][0]);
 +
 +
 + $regMatch=preg_match($classesRegex,$department);
 +
 + if($regMatch !== 0)
 + {
 +
 +     if(!isset($data[$i]["department"][0]))
 +                    {
 +                        echo "FAIL - User: ".$distinguishedName." has no Department"."\n";
 +                        $errUser++;
 +                    }
 +
 +
 + $countAll++;
 + //Debugging is phun
 + //echo $distinguishedName."\n";
 + //echo $department."\n";
 +
 + $notFound=true;
 +
 + $intuneDevices=getIntuneDevices($userPrincipalName);
 +
 + #Don't hammer microsofts api
 + sleep(rand(3,15));
 +
 + for ($k=0; $k<count($intuneDevices) && $notFound; $k++)
 + {
 +
 +                                 /*
 +     [deviceOwnership] => Personal
 +            [deviceVersion] => 2
 +            [displayName] => LAPTOP
 +            [domainName] => 
 +            [enrollmentProfileName] => 
 +            [enrollmentType] => UserEnrollment
 +            [externalSourceName] => 
 +            [isCompliant] => 1
 +            [isManaged] => 1
 +            [isRooted] => 
 +            [managementType] => MDM
 +            [manufacturer] => LENOVO
 +
 +
 +   */
 +
 + if($intuneDevices[$k]["enrollmentType"]=="UserEnrollment" && $intuneDevices[$k]["manufacturer"]=="LENOVO" &&$intuneDevices[$k]["deviceOwnership"]== "Personal"  )
 + {
 + $notFound=false;
 +
 + }
 +
 +
 +
 +                       
 + }
 +
 +
 + if($notFound)
 + {
 +
 + echo "FAIL - User: ".$distinguishedName." has no enrolled device"."\n";
 + $errUser++;
 +
 + }
 + else
 + {
 + $okUser++;
 + }
 +
 + // Device Details: print_r($intuneDevices[--$k]);
 + }
 +               
 +
 + }
 + // close connection
 + ldap_close($ds);
 +}
 +
 +echo "Summary:\n";
 +echo "All user objects found: ".$countAll."\n";
 +echo "All user objects ok: ".$okUser."\n";
 +echo "Consistency integrity: ";
 +printf("%.2f \n",(($okUser/$countAll)*100));
 +echo "Errors User count: ".$errUser."\n";
 +echo "Regex Classroom check: ".$classesRegex."\n";
 +echo "OU's that i looked for :\n";
 +print_r($dn);
 +
 +echo "\n";
 +
 +
 +
 +
 +function getIntuneDevices($userUPN)
 +{
 +
 +$curl_token= curl_init();
 +//Azure AD Administration: Tenant properties / Tenant ID: 123-123-123-123
 +//
 +// Details: https://docs.microsoft.com/en-us/graph/auth-v2-service
 +curl_setopt($curl_token,CURLOPT_URL, "https://login.microsoftonline.com/123-123-123-123/oauth2/v2.0/token");
 +curl_setopt($curl_token,CURLOPT_HEADER,0);
 +curl_setopt($curl_token,CURLOPT_POST,1);
 +curl_setopt($curl_token,CURLOPT_POSTFIELDS,"client_id=CLIENT_ID_APP&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=SHARED_SECRET&grant_type=client_credentials");
 +curl_setopt($curl_token,CURLOPT_RETURNTRANSFER,1);
 +
 +
 +
 +$json_response=curl_exec($curl_token) or die("Cannot exec url request");
 +
 +curl_close($curl_token);
 +
 +
 +$access_array=json_decode($json_response,true) or die("Cannot decode json");
 +
 +//print_r($access_array);
 +
 +
 +if(!isset($access_array["access_token"]))
 +{
 + die("Cannot receive access_token");
 +}
 +
 +
 +
 +$curl_token= curl_init();
 +
 +
 +curl_setopt($curl_token,CURLOPT_URL, "https://graph.microsoft.com/v1.0/users/".$userUPN."/ownedDevices");
 +curl_setopt($curl_token,CURLOPT_HEADER,0);
 +curl_setopt($curl_token,CURLOPT_POST,0);
 +curl_setopt($curl_token,CURLOPT_HTTPHEADER,array("Authorization: Bearer ".$access_array["access_token"]));
 +curl_setopt($curl_token,CURLOPT_RETURNTRANSFER,1);
 +
 +$json_response=curl_exec($curl_token) or die("Cannot exec url request");
 +
 +curl_close($curl_token);
 +
 +//print_r($json_response);
 +
 +$intune_array=json_decode($json_response,true) or die("Cannot decode json");
 +
 +$intune_array=$intune_array["value"];
 +
 +
 +return $intune_array;
 +
 +
 +
 +}
 +
 +
 +?>
 +
 +</code>
 +
 ====== reportMissingNotebooks.php ====== ====== reportMissingNotebooks.php ======
   * Analog zu **reportRiskUsers.php**   * Analog zu **reportRiskUsers.php**
   * Finde alle Schüler der 1. und 2. Klasse die kein Notebook enrolled haben / zB: als Cron Job    * Finde alle Schüler der 1. und 2. Klasse die kein Notebook enrolled haben / zB: als Cron Job 
   * Im LDAP Attribut **Department** befindet sich die Klassenbzeichnung zB: 2E   * Im LDAP Attribut **Department** befindet sich die Klassenbzeichnung zB: 2E
 +  * **Achtung** Graph API deckelt bei 500 Devices d.h. ab 500 Notebooks muss eine andere Lösung gefunden werden
 +  * **Update** Es ist doch möglich mehr als 500 Devices zu erhalten - es muss in den Results geblättert werden über den nächsten **Link** ->  ** if(isset($intune_array["@odata.nextLink"])) ** , Vielen Dank an Herrn Christoph Pachler
 +              
  
 <code> <code>
Zeile 891: Zeile 1103:
   * Analog zu **reportRiskUsers.php**   * Analog zu **reportRiskUsers.php**
   * Auszug aus dem relevanten Code für https://docs.microsoft.com/en-us/graph/api/intune-devices-manageddevice-list?view=graph-rest-1.0    * Auszug aus dem relevanten Code für https://docs.microsoft.com/en-us/graph/api/intune-devices-manageddevice-list?view=graph-rest-1.0 
 +  * **Update** bei mehr als 500 Geräten muss geblättert werden **nextLink**
   * Es sollen alle im Intune registrierten Geräte gezogen werden   * Es sollen alle im Intune registrierten Geräte gezogen werden
 <code> <code>
Zeile 900: Zeile 1113:
 ... ...
  
 +$devicesLink="https://graph.microsoft.com/v1.0/deviceManagement/managedDevices";
 +      $intune_all=array();
  
 + while(strlen($devicesLink))
 + {
  
-$curl_token= curl_init();+ $curl_token= curl_init();
  
  
-// https://docs.microsoft.com/en-us/graph/api/intune-devices-manageddevice-list?view=graph-rest-1.0 + // https://docs.microsoft.com/en-us/graph/api/intune-devices-manageddevice-list?view=graph-rest-1.0 
-// + // 
-curl_setopt($curl_token,CURLOPT_URL, "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices"); + curl_setopt($curl_token,CURLOPT_URL, $devicesLink); 
-curl_setopt($curl_token,CURLOPT_HEADER,0); + curl_setopt($curl_token,CURLOPT_HEADER,0); 
-curl_setopt($curl_token,CURLOPT_POST,0); + curl_setopt($curl_token,CURLOPT_POST,0); 
-curl_setopt($curl_token,CURLOPT_HTTPHEADER,array("Authorization: Bearer ".$access_array["access_token"])); + curl_setopt($curl_token,CURLOPT_HTTPHEADER,array("Authorization: Bearer ".$access_array["access_token"])); 
-curl_setopt($curl_token,CURLOPT_RETURNTRANSFER,1);+ curl_setopt($curl_token,CURLOPT_RETURNTRANSFER,1);
  
-$json_response=curl_exec($curl_token) or die("Cannot exec url request");+ $json_response=curl_exec($curl_token) or die("Cannot exec url request");
  
-curl_close($curl_token);+ curl_close($curl_token);
  
-//print_r($json_response);+ //print_r($json_response);
  
-$intune_array=json_decode($json_response,true) or die("Cannot decode json");+ $intune_array=json_decode($json_response,true) or die("Cannot decode json")
 +   
 +                if(!isset($intune_array["@odata.nextLink"])) 
 +                { 
 +                        $devicesLink="";
  
-$intune_array=$intune_array["value"];+                } 
 +                else 
 +                { 
 +                        $devicesLink=$intune_array["@odata.nextLink"]; 
 +                }
  
-print_r($intune_array); 
  
 + $intune_array=$intune_array["value"];
 +
 + $intune_all=array_merge($intune_all,$intune_array);
 +
 +
 + }
 +
 +
 +
 +return $intune_all;
 +
 +}
  
 /* /*
Zeile 4792: Zeile 5028:
 ===== Whitelist Absender ===== ===== Whitelist Absender =====
   * **Achtung** Befindet sich aktuell (2024) unter: https://security.microsoft.com/antispam , keine Exchange Regel mehr   * **Achtung** Befindet sich aktuell (2024) unter: https://security.microsoft.com/antispam , keine Exchange Regel mehr
 +  * **Antispam-Eingangsrichtlinie** -> dort lassen sich Absendeadressen hinzufügen
  
 {{:know-how:0-antispam-whitelist-sender-address.png?400|}} {{:know-how:0-antispam-whitelist-sender-address.png?400|}}
know-how/windows.1706796110.txt.gz · Zuletzt geändert: 2024/02/01 15:01 von cc