Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Wie gestalte ich eine Prüfung unter Verwendung eines AD so, dass Zusammenarbeit der Prüflinge möglichst verhindert wird?

Mitglied: Edi.Pfisterer

Edi.Pfisterer (Level 2) - Jetzt verbinden

05.03.2010, aktualisiert 09.02.2011, 15055 Aufrufe, 10 Kommentare

Da sich in diesem Forum doch einige Lehrer tummeln, hier ein Ansatz, wie ich es versuche zu verhindern, dass SchülerInnen während schriftlicher Prüfungen am PC schummeln...

Hallo!

Das Problem:
Es sollen vermehrt Prüfungen am PC abgewickelt werden. Schummeln könnte eingeschränkt werden, wenn folgende Rahmenbedingungen erfüllt wären:

a) kein Datenaustausch übers Internet
b) nicht auf die eigenen Daten zugreifen
c) keine Daten per USB-Stick mitbringen
d) Daten nicht schon vor der Prüfung irgendwo am PC deponieren

Ein Lösungsansatz:
für jeden Prüfung eigene Accounts mit hochkomplexen Passwörtern per Script anlegen
Diese Accounts in eine Gruppe legen, der der Internetzugang verwehrt wird
alle Laufwerksbuchstaben (mit Ausnahme des Netzwerkshares für die Lösung) verstecken

Voraussetzungen :
ein funktionierendes Active Directory
ein Proxyserver, der mit AD kommuniziert (zB: ISA)

meine Lösung:

1.) Script, um n User in Active Directory mit hochkomplexem 10-stelligem Passwort zu erstellen (und dieses in eine csv speichern)
(Das folgende Script ist eine zusammengebastelte Lösung aus Webfunden und eigenen Ideen. Da ich es schon lange im Einsatz habe, kann ich nicht mehr mit Sicherheit sagen, woher ich die Schnipsel habe, was ich selbst gebastelt habe... Falls jemand sich als Urheber einzelner Teile erkennt. Bitte PM oder hier vermerken. Ich persönlich lege bei meinen Schnipseln keinen Wert auf das Urheberrecht...)

Ich verwende folgende Datei, die ich in ein Verzeichnis auf einem Domänencontroller lege:

user_anlegen.vbs (Auf einem Domänencontroller an beliebiger Stelle erstellen, durch Doppelklick starten)

01.
'#################################################################################################################
02.
'### Script, um die Anzahl von N Usern per Skript im AD mit 10-stelligen, komplexem Passwort anlegen           ###
03.
'### getestet auf Windows Server 2003 SP2, Server2003 R2 u 2008 R2 (jeweils Deutsch)                           ###
04.
'### Ver 10/3/2010_23:53                                                                                        ###
05.
'#################################################################################################################
06.

07.

08.
'_______________________________________________________________________________________________________________
09.
' Der folgende Teil dient lediglich dazu, den Urheber zu finden, wenn das Skript nicht (nicht mehr) funktioniert
10.
' und ihr Kontakt aufnehmen wollt
11.
' Script zusammengebastelt aus Webfunden (Urheber sind mir nicht bekannt) und eigenen Schnipseln von
12.
' User urobe73(Edi Pfisterer) --> www.administrator.de
13.
' Anregungen / Codeteile von Bastla --> www.administrator.de
14.
' bei Fragen: einfach eine PM an mich oder eine Mail an den Admin der Handelsakadmie Neusiedl am See
15.
' Ich übernehme keine Haftung und lege auf jegliche Urheberrechte an Skripts, die ich erstellt habe, keinen Wert!
16.
' Kopiert, verändert und/oder gebt es als Euer Skript aus: mir ist alles recht!!!
17.
'_______________________________________________________________________________________________________________
18.
'Set objComputer = CreateObject("Shell.LocalMachine")         ' nicht verändern!
19.
Set objComputer = CreateObject("Wscript.Network")
20.

21.

22.

23.
'### folgende Variablen können (müssen abern nicht) verändert werden: ##
24.

25.
  ServerName = objComputer.Computername                          'Server, auf dem die Shares erstellt wurden; falls nicht anders
26.
                                                                'angegeben, der DC auf dem das Script gestartet wird
27.

28.
  LoesungsPfad = "C:\TestAbgabe"                                         'In diesem Pfad des Servers werden die Freigaben erstellt
29.
  AngabePfad = "C:\TestAngaben"                                          'In diesem Pfad des Servers werden die Freigaben erstellt
30.

31.
  LoesungsShare = "TestAbgaben"                                   'Name der Freigabe, auf der die Lösungen gespeichert werden.
32.
  LoesungsDrive = "v:"
33.
  AngabeShare = "TestAngabe"                                        'Name der Freigabe für Angaben!
34.
  AngabeDrive = "u:"
35.
  PruefungsOU = "TestsMeinerDomaene"                                     'Organisationseinheit, die im AD per Skript angelegt wird
36.
  GroupString = "TestGruppe"                                'Sicherheitsgruppe, in der die User automatisch Mitglieder werden
37.
  Lehrer = "lehrer"                                             'Sicherheitsgruppe, in der die Lehrer Mitglieder sind
38.

39.
'### hier beginnt der Teil, der eher nur noch von Auskennern angefasst werden sollte ;-)  ##
40.

41.

42.
Anzahl = InputBox("Wie viele User?")
43.
Bezeichnung = InputBox("Wie sollen die Benutzer heissen?")
44.
ZielOU = InputBox("In welcher OU sollen die User angelegt werden?")
45.

46.
Set objFS = CreateObject("scripting.filesystemobject")
47.
Set WshShell = WScript.CreateObject("WScript.Shell")
48.
Set rootDSE = GetObject("LDAP://RootDSE")
49.
DomainName = rootDSE.Get("defaultnamingcontext")
50.

51.
' aus DC=hak-neusiedl,DC=local wird hak-neusiedl.local
52.
DomainString = Replace(DomainName, "DC=", "")
53.
DomainString = Replace(DomainString, ",", ".")
54.

55.
'erstellt eine neue OU für die Prüfungen
56.
If Not OUExists(PruefungsOU, "LDAP://" & DomainName) Then
57.
    Set PrfOU = GetObject("LDAP://" & DomainName).Create("organizationalUnit", "ou=" & PruefungsOU)
58.
    PrfOU.SetInfo
59.
Else
60.
    Set PrfOU = GetObject("LDAP://" & "ou=" & PruefungsOU& "," & DomainName)
61.
End If
62.

63.
' erstellt, falls noch nicht vorhanden, eine neue Gruppe, in der die User Mitglied werden
64.
If Not ObjectExists(GroupString, "group", "WinNT://" & DomainString) Then
65.
    Set objGroup = PrfOU.Create("Group", "CN=" & GroupString)
66.
    objGroup.Put "sAMAccountName", GroupString
67.
    objGroup.SetInfo
68.
End If
69.
' Die Gruppe wird gesucht und als Ziel definiert.
70.
Set GroupObj = GetObject("WinNT://" & DomainString & "/" & GroupString)
71.

72.
' ZielOU nach Prüfung auf Vorhandensein erstellen
73.
Abbruch = False
74.
Do While OUExists(ZielOU, PrfOU.ADSPath) And Not Abbruch
75.
    Do
76.
        ZielOU = InputBox(_ 
77.
            "Die OU " & ZielOU & " wurde bereits verwendet!" & vbCrLf & _
78.
            "Bitte geben Sie eine andere OU oder ""exit"" für Abbruch ein!")
79.
    Loop Until ZielOU <> ""
80.
    If LCase(ZielOU) = "exit" Then Abbruch = True
81.
Loop
82.
If Abbruch Then WScript.Quit
83.

84.
' Prüfung, ob Benutzer angelegt
85.
Do While ObjectExists(Bezeichnung & "01", "user", "WinNT://" & DomainString) And Not Abbruch
86.
    Do
87.
        Bezeichnung = InputBox(_ 
88.
            "Die Bezeichnung " & Bezeichnung & " wurde bereits verwendet!" & vbCrLf & _
89.
            "Bitte geben Sie eine andere Bezeichnung oder ""exit"" für Abbruch ein!")
90.
    Loop Until Bezeichnung <> ""
91.
    If LCase(Bezeichnung) = "exit" Then Abbruch = True
92.
Loop
93.

94.
WScript.Echo "Die Verarbeitung kann einige Zeit dauern. Bitte um Geduld..."
95.

96.
If Abbruch Then WScript.Quit
97.

98.
' erstellt in der Prüfungs-OU nun eine neue OU lt Eingabe
99.
Set ThisOU = GetObject(PrfOU.ADSPath).Create("organizationalUnit", "ou=" & ZielOU)
100.
ThisOU.SetInfo
101.

102.
' erstellt den Pfad für die Freigaben
103.
CreatePath LoesungsPfad
104.
CreatePath AngabePfad & "\" & ZielOU
105.

106.
' es werden die Freigaben erzeugt
107.
CreateShare LoesungsShare, LoesungsPfad
108.
CreateShare AngabeShare, AngabePfad
109.

110.
' Grundlegende Rechte für Angabe- und Pruefungsordner setzen
111.
WshShell.Run "cmd /c echo j|cacls " & LoesungsPfad & " /G Administratoren:F " & Lehrer & ":C " & GroupString & ":R", 0, 1			 
112.
WshShell.Run "cmd /c echo j|cacls " & LoesungsPfad & " /E /G " & GroupString & ":W", 0, 1			 
113.
WshShell.Run "cmd /c echo j|cacls " & AngabePfad & " /G Administratoren:F " & Lehrer & ":C " & GroupString & ":R", 0, 1			 
114.
WshShell.Run "cmd /c echo j|cacls " & AngabePfad & "\" & ZielOU & " /G Administratoren:F " & Lehrer & ":C ", 0, 1			 
115.

116.

117.
' loginscript schreiben
118.
LoginScriptName = ZielOU & ".bat"
119.
LoginScriptPfad = "sysvol\" & DomainString & "\Scripts\Abschluss\Login"
120.
LoginScript = "\\" & DomainString & "\" & LoginScriptPfad & "\" & LoginScriptName
121.
LoginScriptPfadLokal = "C:\WINDOWS\SYSVOL" & "\" & LoginScriptPfad
122.
LoginScriptDatei = LoginScriptPfadLokal & "\" & LoginScriptName
123.
CreatePath LoginScriptPfadLokal
124.

125.
Set objTextStream = objFS.CreateTextfile(LoginScriptDatei)
126.
objTextStream.write "net use " & AngabeDrive & " \\" & ServerName & "\" & AngabeShare & "\" & ZielOU
127.
objTextStream.Close
128.

129.
Informationen = "Benutzername;Passwort" & vbCrLf
130.
Randomize
131.

132.
For g = 1 To Anzahl
133.
    ' die Verzeichnisse für die Lösungen werden erstellt;
134.
    ' alle User haben eine zweistellige Bezeichnung, dh 01 bis 09, 10 usw
135.
    Zahl = Right("0" & g, 2)
136.
    MUsername = Bezeichnung & Zahl
137.

138.
    CreatePath "\\" & ServerName & "\" & LoesungsShare & "\" & ZielOU & "\" & MUsername
139.

140.
    ' die User werden nun im AD angelegt
141.

142.
    'Passwort = "Passwort" & i & "-" & Int(10000 * rnd + 1)
143.
    Passwort = Kennwort(10)
144.

145.
    Set usr = ThisOU.Create("user", "CN=" & MUsername)
146.
    usr.Put "samAccountName", MUsername
147.
    usr.Put "userPrincipalName", MUsername & "@" & DomainString
148.
    usr.Put "homeDirectory", "\\" & ServerName & "\" & LoesungsShare & "\" & ZielOU & "\" & MUsername
149.
    usr.Put "homeDrive", LoesungsDrive
150.
    usr.Put "scriptPath", LoginScript
151.
    usr.SetInfo
152.
    usr.SetPassword Passwort
153.
    usr.AccountDisabled = False
154.
    usr.SetInfo
155.
    WScript.Sleep (1000)
156.

157.
    Informationen = Informationen & vbCrLf & MUsername & ";" & Passwort
158.
    i = i + 1
159.

160.
    GroupObj.Add ("WinNT://"& DomainString & "/" & MUsername)
161.
    WScript.Sleep (1000)
162.

163.
    ' die Berechtigungen werden in den Verzeichnissen der User gesetzt
164.
    PermL1 = "Administratoren:F " & Lehrer & ":C " & MUsername & ":R "
165.
    PermL2 = MUsername & ":W "
166.
    PermA = "Administratoren:F " & Lehrer & ":C " & MUsername & ":R "
167.

168.

169.

170.
WshShell.Run "cmd /c echo j|cacls \\" & ServerName & "\" & LoesungsShare & "\" & ZielOU & "\" & MUsername & " /G " & PermL1 , 0, 1
171.
WshShell.Run "cmd /c echo j|cacls \\" & ServerName & "\" & LoesungsShare & "\" & ZielOU & "\" & MUsername & " /E /G " & PermL2 , 0, 1
172.
WshShell.Run "cmd /c echo j|cacls \\" & ServerName & "\" & AngabeShare & "\" & ZielOU & " /E /G " & PermA , 0, 1
173.
			 
174.

175.
    WScript.Sleep (1000)
176.

177.
Next
178.

179.
' die csv mit den Usern und Passwörtern wird erstellt
180.
strDateiname = ZielOU & ".csv"
181.
Set objTextStream = objFS.CreateTextFile(strDateiname, True)
182.
objTextStream.write Informationen
183.
objTextStream.Close
184.

185.
If i > 0 Then
186.
    Erfolg = "Fertig: " & i & " Benutzer angelegt"
187.
Else
188.
    Erfolg = "Keine User angelegt."
189.
End If
190.

191.
WScript.Echo Erfolg
192.

193.

194.
Function Zeichen(Anfang, Ende)
195.
    Zufall = Int((Ende - Anfang + 1) * Rnd + Anfang)
196.
    Zeichen = Chr(Zufall)
197.
End Function
198.

199.
Function Verschiebe(VWort)
200.
    WLaenge = Len(VWort)
201.
    NeuWort = ""
202.
    ReDim WFeld(WLaenge)
203.
    For t = 1 To WLaenge
204.
        WFeld(t) = Mid(VWort, t, 1)
205.
    Next
206.
    Zahl = 0
207.
    Do Until Len(NeuWort) = WLaenge
208.
        j = Int((WLaenge) * Rnd + 1)
209.
        If WFeld(j) <> "" Then
210.
            NeuWort = NeuWort & WFeld(j)
211.
            WFeld(j) = ""
212.
        End If
213.
        Zahl = Zahl + 1
214.
        If Zahl > 1000 Then Exit Do ' Zur Sicherheit
215.
    Loop
216.
    Verschiebe = NeuWort
217.
End Function
218.

219.
Function Kennwort(KennwortLaenge)
220.
If KennwortLaenge > 128 Then KennwortLaenge = 128
221.
Wort = ""
222.
Wort = Zeichen(48, 57) ' Ziffern
223.
Wort = Wort & Zeichen(65, 90) ' Großbuchstaben
224.
Wort = Wort & Zeichen(97, 122) ' Kleinbuchstaben
225.
Wort = Wort & Zeichen(33, 47) ' Satzzeichen
226.
If KennwortLaenge > 4 Then
227.
    For t = 5 To KennwortLaenge
228.
        Wort = Wort & Zeichen(33, 122)  'sonstige Zeichen
229.
    Next
230.
End If
231.
Wort = Verschiebe(Wort) ' Zeichenfolge zufällig ändern
232.
Kennwort = Wort
233.
Kennwort = Replace(Kennwort, " ", "_")
234.
Kennwort = Replace(Kennwort, ";", "_")
235.
Kennwort = Replace(Kennwort, """", "_")
236.
End Function
237.

238.
Sub CreatePath(FullPath) 'Rekursive Erstellung eines Pfades
239.
If Not objFS.FolderExists(FullPath) Then
240.
    Folder = objfs.GetFileName(FullPath)
241.
    ParentPath = objfs.GetParentFolderName(FullPath)
242.
    If Right(ParentPath, 1) <> "\" Then ParentPath = ParentPath & "\"
243.
    CreatePath(ParentPath)
244.
    objFS.CreateFolder(ParentPath & Folder)
245.
End If
246.
End Sub
247.

248.
Sub CreateShare(ShareName, SharePath)
249.
Set Freigaben = GetObject("WinNT://" & ServerName & "/LanmanServer,FileService")
250.
Angelegt = False
251.
For Each Freigabe In Freigaben
252.
    If LCase(Freigabe.Name) = LCase(ShareName) Then
253.
        Angelegt = True
254.
        Exit For
255.
    End If
256.
Next
257.
If Not Angelegt Then
258.
    Set fs = Freigaben.Create("FileShare", ShareName)
259.
    fs.Path = SharePath
260.
    fs.MaxUserCount = -1
261.
    fs.SetInfo
262.
End If
263.
Set Freigaben = Nothing
264.
Set fs = Nothing
265.
End Sub
266.

267.
Function OUExists(OUName, ParentOU)
268.
Set Container = GetObject(ParentOU)
269.
Container.Filter = Array("organizationalUnit")
270.
OUExists = False
271.
For Each OU In Container
272.
    If LCase(OU.ou) = LCase(OUName) Then
273.
        OUExists = True
274.
        Exit For
275.
    End If
276.
Next
277.
End Function
278.

279.
Function ObjectExists(ObjectName, ObjectType, DomainRoot)
280.
Set Dom = GetObject(DomainRoot)
281.
Dom.Filter = Array(ObjectType)
282.
ObjectExists = False
283.
For Each Obj In Dom
284.
    If LCase(Obj.Name) = LCase(ObjectName) Then
285.
        ObjectExists = True
286.
        Exit For
287.
    End If 
288.
Next
289.
End Function

Verwendung und Erklärung:

Durch doppelklicken der Datei useranlegen.vbs werden Euch 3 Fragen gestellt:
Wieviele User sollen angelegt werden?
Wie sollen die User heissen?
Wie soll die OU heissen, in der die User angelegt werden?

Ein Beispiel:
5
Deutschschularbeit_
Deutschklausur

ergibt:
es werden 5 User mit einem 10-stelligen hochkomplexen Passwort angelegt. Alle User befinden sich in der OU "Deutschklausur" und heissen
Deutschschularbeit_01
Deutschschularbeit_02
...
Deutschschularbeit_05
abschliessend wird eine Deutschklausur.csv erstellt, die alle Usernamen und Passwörter enthält.

Wie benutzt ihr das Skript?

Folgende Variablen können geändert werden

groupstring = "pruefungsgruppe" --> Gruppe, der die User beitreten
servername = "halvar" --> Server, auf dem die Freigaben sind
loesungsshare = "\home\abschluss" --> Freigabe, auf der die Lösungsabgaben sind (Achte auf den Backslash am Beginn!!!)
angabeshare = "\abschluss\angabe" --> Freigabe, auf der die Angaben sind (Achte auf den Backslash am Beginn!!!)
PruefungsOU = "Pruefungen" --> Organisationseinheit, in der die User in einer UnterOU angelegt werden...


Die Abarbeitung des Scripts kann sich über einige wenige Minuten hinziehen... Durch die eingebauten Pausen ist das so erwünscht und vorgesehen (weil einige meiner DC noch PIII verbaut haben...)
Den Abschluss des Scripts erkennt ihr durch eine abschliessende Meldung.
Ihr findet nun im Ordner des Skripts eine .csv-Datei mit den Usernamen und Passwörtern

2. lokale Datenträger sollen nicht aufscheinen
Ihr braucht dazu eine Gruppenrichtlinie, die Ihr in der Organisationseinheit Matura eintragt.
Da die User beim Login die Laufwerke U: und V: gemappt bekommen, müssen wir ihnen alle Laufwerke ausser diesen beiden ausblenden. Dies geschieht auf folgende Weise:

Navigiert in der gpmc zu folgendem Pfad:
Benutzerkonfigration - Administrative Vorlagen
Rechte Maustaste darauf --> Vorlagen hinzufügen und entfernen
... hinzufügen
es öffnet sich der Ordner C:\Windows\Inf
hier gibt es bereits die Vorlage system.adm
kopiert diese an einen sicheren Ort (falls ihr etwas kaputtisiert...)
öffnet die system.adm mit notepad und verändert sie wie folgt:
im Abschnitt
POLICY !!NoDrives
tragt nach "NAME !!ABCDOnly VALUE NUMERIC 15" folgende Zeile ein:
01.
NAME "Alle Laufwerke ausser U: und V:" VALUE NUMERIC 63963135
wiederholt diesen Vorgang im Abschnitt "POLICY !!NoViewOnDrive"

speichert die system.adm

gmpc schliessen und wieder öffnen
--> Benutzerkonfigration - Administrative Vorlagen - Explorer
öffnet den Eintrag "Diese angegebenen Datenträger im Fenster "Arbeitsplatz" ausblenden.
Ihr findet hier nun den Eintrag
"Alle Laufwerke ausser U: und V:"
diesen wählt ihr aus.

[auf die Anregung von n.o.b.o.d.y s hin:]
Verwendung der cmd.exe verweigern
Navigiert in der soeben erstellten Richtlinie zu folgendem Pfad:
Benutzerkonfiguration / Windowseinstellungen / Sicherheitseinstellungen / Softwarebeschränkungsrichtlinien / Richtlinien für Softwareeinschränkungen
Rechte Maustaste --> neue Hashregel
navigiert zu eurer cmd.exe --> das System errechnet den Hash-Wert dieser Datei -->
im Bedarfsfall mit anderer Software wiederholen


[letzte Anmerkung:
bei mir pfeift die Anmeldung manchmal auf das loginscript der User... daher habe ich noch eine zusätzliche Gruppenrichtlinie erstellt, die das laufwerk V: mit der Angabe mappt...]



3.) Internetzugang am ISA-Server sperren

1.) Ich verwende hier die Gruppe, die im Skript in der Variable "groupstring" benannt wurde...
2.) an oberster Stelle (dh, die Firewallregel, die als letzte angelegt wird) erstelle ich eine Regel, die der Gruppe Matura
den gesamten Verkehr von Netzwerk Intern nach Netzwerk Extern verweigert
falls Zugang zu einzelnen Seiten (zb Online-Dictionaries, etc) erwünscht :
3.) an oberster Stelle (dh, noch vor der soeben erstellten Regel) erstelle ich eine Regel, die der Gruppe Matura http und https erlaubt von Netzwerk Intern nach URL-Satz Matura (den muss ich natürlcih erst erstellen und anschliessend zb http://dict.tu-chemnitz.de etc. einfügen)

[edit: hier wird auch noch ein Skript eingestellt, das dieses für Euch erledigt...]]


Diese Vorgangsweise ist sicher nicht der letzten Weisheit Schluss, aber für meine Bedürfnisse reichts.
Ich hoffe, ich habe die Benutzung einigermassen nachvollziehbar verfasst! Würde mich freuen, wenn ich euch zumindest einige Ideen liefern konnte...

Freue mich über Anregungen oder Rückmeldungen

lg
Edi
Mitglied: n.o.b.o.d.y
07.03.2010 um 09:12 Uhr
Hallo,

nur weil die lokalen LW nicht im Explorer angezeigt werden, heißt das aber noch lange nicht, dass man nicht darauf zugreifen kann. In der CMD der dem Explorer kurz die LW gecheckt und dann ist der weg zum USB-Stick nicht mehr weit. Da würde ich auf jeden Fall USB über das AD sperren, oder besser gleich im BIOS deaktivieren.
Bitte warten ..
Mitglied: Edi.Pfisterer
07.03.2010 um 18:33 Uhr
Danke für die Anregung!
im BIOS sperren wäre ja wohl nur dann sinnvoll, wenn auf den Clients ausschließlich Prüfungen stattfinden...
Falls das nicht der Fall ist, fällt das schon mal flach...
USB über GPO sperren ist aber eine gute Idee...
nachdem das aber eine Gruppenrichtlinie auf Ebene Machine ist (wie zb hier beschrieben), fällt das für einfache Klausuren auch flach...
(in der Unterrichtsstunde danach wird der USB-Stick ja wieder benötigt...).

Zielführend wäre es allerdings, die Verwendung der CMD für die entsprechende Gruppe per Gruppenrichtlinie mit ihrem HASH zu sperren. Werde das in der nachfolgenden Anleitung (mir sind sonst auch noch einige Verbesserungen während des Schreibens eingefallen) einarbeiten...

Danke
lg
Edi
Bitte warten ..
Mitglied: bastla
07.03.2010 um 23:30 Uhr
Hallo urobe73!

Habe vorhin das Script kurz angetestet (noch in der Erstversion) und ein wenig daran herumgebastelt ...

Da Du gerade dabei bist, Anpassungen vorzunehmen, warte ich mit meinen Vorschlägen (die zB auch in Richtung "zentrale Verwaltung der Anpassungen" gegangen wären) noch etwas ab ...

Einen Tipp hätte ich allerdings gleich: Die Functions aus den Zeilen 1 bis (derzeit) 45 würde ich an das Ende des Scripts stellen - damit beginnt das Script tatsächlich mit dem "Hauptprogramm", und die anzupassenden Werte sind auch "prominenter" platziert. [Edit] hast Du inzwischen ohnehin schon ... [/Edit]

Doch noch einer mehr : Die Batchdatei zum Erstellen der Verzeichnisse könntest Du durch das folgende Unterprogramm (kann ganz am Ende des Scripts angefügt werden) ersetzen:
01.
Sub CreatePath(FullPath) 'Rekursive Erstellung eines Pfades
02.
Set objfs = CreateObject("Scripting.FileSystemObject") 
03.
If Not objfs.FolderExists(FullPath) Then
04.
    Folder = objfs.GetFileName(FullPath)
05.
    ParentPath = objfs.GetParentFolderName(FullPath)
06.
    If Right(ParentPath, 1) <> "\" Then ParentPath = ParentPath & "\"
07.
    CreatePath(ParentPath)
08.
    objfs.CreateFolder(ParentPath & Folder)
09.
    Set objfs = Nothing
10.
End If
11.
End Sub
Dieses Sub prüft das Vorhandensein des übergebenen Pfades - falls er nicht (vollständig) vorhanden ist, wird er erstellt. Aufzurufen ist es zB mit
CreatePath "\\" & servername & loesungsshare & "\" & ZielOU & "\" & MUsername
Das "FileSystemObject" erstelle ich in diesem Sub nur zur Sicherheit - sinnvoll wäre es, dies bereits am Anfang des Scripts (ist dadurch dann im gesamten Script verfügbar) vorzunehmen.

Grüße
bastla
Bitte warten ..
Mitglied: Edi.Pfisterer
07.03.2010 um 23:42 Uhr
Hola!
Jack Sparrow ist von der Riesenkrake aufgejausnet (hab mir gerade die Freetvpremiere mit einem Viertelauge angesehen...) und ich hau mich jetzt auch auf die Ohren...
Ich hab jetzt mal die augenscheinlichsten Anpassungen vorgenommen und getestet...
Überlasse das Skript jetzt mal Dir für den Feinschliff

Wie Du schon erwähnt hast, sollte eigenltich auch die oberste OU (wenn sie nicht existiert) erstellt werden, sowie das Share per Skript eingerichtet werden...
Wenn wir dann noch den Namen des DC auslesen, dann braucht der Admin gar keine Variablen mehr bekanntgeben...

ich schau mir morgen mal das Script für den ISA an, wobei wir hier die Gruppe, die eigentlich auch das Skript erstellen sollte, irgendwie hinschieben müssten...
vielleicht fällt mir da etwas ein... (oder Dir, eh klar).
Falls Dir die Kopfzeilen des Skripts auf den Wecker gehen: ich hau sie schneller raus (oder verändere sie), als Du mips sagen kannst
mir ist nur aufgefallen, dass ich manchmal skripts finde, die ich vor vielen Monden irgendwo gefunden habe und manchmal wärs praktisch zu wissen, woher die gekommen sind...

Freut mich, dass Du mitbastlst

btw. wäre es klug, wir machen einen eigenen Beitrag auf, damits hier nicht zu unübersichtlich wird? Du bist hier schon länger im Forum und bist mit den Gepflogenheiten besser vertraut...

lg
Edi
Bitte warten ..
Mitglied: bastla
07.03.2010 um 23:52 Uhr
Hallo urobe73!

Eigener Beitrag muss wohl nicht sein - das jeweilige "vorläufige Endergebnis" kannst Du ja immer oben nachziehen ...

Mit den Kopfzeilen habe ich kein wie auch immer geartetes Problem .

Vermutlich komme ich ohnehin erst morgen am Abend oder übermorgen dazu, an einigen Details herumzudoktern - bis dahin hast Du hoffentlich das ISA-Script schon hinbekommen (ISA ist leider nicht so meine Baustelle) ...

Grüße
bastla
Bitte warten ..
Mitglied: Edi.Pfisterer
08.03.2010 um 01:05 Uhr
Hallo!
Danke für diese Anregung, ist in der Aktuellen Version (8/3/2010_0:47) bereits eingearbeitet...

Weiters werden alle OUs und die Gruppe per Skript angelegt...

weitere Vorhaben:
anstatt des "on error..." sollte die OU zuerst überprüft werden und nur ifnotexist angelegt werden
die Shares per Script am jeweiligen DC anlegen. Damit sollte dann der gesamte Variablenblock nur noch optional sein...
falls es die OU schon gibt sollten der .csv die User angefügt werden (dzt wird sie einfach neu erstellt...)
sonst noch Ideen?

lg
Bitte warten ..
Mitglied: megacarsIT
08.03.2010 um 13:11 Uhr
Hallo!

Also zu meiner schulzeit.... ;)

Gab es feste Benutzernamen in der AD die nur an dem Rechner/Raum gebunden waren.

zum beispiel "pruef1" usw. .. mit nicht sehr komplexen Passwort.

In den Pausen wurden die Schülerzugaenge der jeweiligen Klasse gesperrt und nach Telefonanruf der Lehrkraft der Raum mit den festen Benutzernamen entsperrt.
Es gab zu den pruef-Zugaengen einen für alle Prüflingen Zugänglichen Netzlaufwerk für Aufgabenstellung und ähnliches...

Ein Home-Laufwerk für die Lösungen...

Über einen Squid-Proxy wurde der Weg ins INTERNET gesperrt, jedoch keine INtranet-Seiten da man teilweise Ebooks nutzte.

Bei Abmeldung musste ein Protokoll gegenzeichnet werden.
Mit Inhalten des Home-Laufwerkes u.a. für die Lösungen.

NACHTEILE:
- Es gab eine kleine Webhosting-Ecke incl. PHP-Interpreter..diese konnte von Intranet sowie Internet angesurft werden.
Dadurch konnte man über eine nicht deaktivierte PHP-Funktion eine Zeitlang über einen PHP-Proxy den Squid-Proxy umgehen.

- Temp-Ordner wurden genutzt um mögl. Lösungen abzulegen.

- USB-Geräte waren in dem Konzept garnich bedacht

- Theoretisch ständiges Drucken an alle Netzwerkdrucker währe möglich gewesen


/ / /
=> "Toilette gehen" -> Surfen auf einem UMTS-Handy





Gruss,
megacarsIT
Bitte warten ..
Mitglied: Edi.Pfisterer
08.03.2010 um 16:11 Uhr
Hallo!
lass Dir noch etwas Zeit, ich bin gerade mit letzten Verallgemeinerungen beschäftigt..
ab morgen sollten dann Deine Anregungen folgen
lg und Danke fürs Angebot
Bitte warten ..
Mitglied: bastla
08.03.2010 um 16:21 Uhr
Hallo urobe73!

Passt mir ganz gut ...

Zwischendurch aber trotzdem mal wieder ein Häppchen: Das Setzen der Berechtigungen sollte sich auch ohne Umweg über eine Batch-Datei (aber dennoch mit CMD-Mitteln) direkt aus der Schleife heraus erreichen lassen (nur oberflächlich getestet):
01.
PermL = "Administratoren:F Lehrer:C " & MUsername & ":R " & MUsername & ":W "
02.
PermA = "Administratoren:F Lehrer:C " & MUsername & ":R "
03.

04.
CMD = "cmd /c echo j|cacls \\" & ServerName & LoesungsShare & "\" & MUsername & " /G " & PermL & " && " & _
05.
             "echo j|cacls \\" & ServerName & AngabeShare & "\" & ZielOU & " /G " & PermA
06.

07.
WshShell.Run CMD, 0, 1			 
Damit sollten die Berechtigungen neu gesetzt (und damit die Vererbung unterbrochen) werden ...

[Edit] Beim "neu Setzen" der Rechte (also ohne "/E") lässt sich die Kombination "R + W" (für MUsername) nicht in einem Befehl verwenden - daher entweder (nur) "Ändern"-Rechte geben oder:
01.
PermL1 = "Administratoren:F Lehrer:C " & MUsername & ":R"
02.
PermL2 = MUsername & ":W"
03.
PermA = "Administratoren:F Lehrer:C " & MUsername & ":R"
04.

05.
CMD = "cmd /c echo j|cacls \\" & ServerName & LoesungsShare & "\" & MUsername & " /G " & PermL1 & " && " & _
06.
             "echo j|cacls \\" & ServerName & LoesungsShare & "\" & MUsername & " /E /G " & PermL2 & " && " & _
07.
             "echo j|cacls \\" & ServerName & AngabeShare & "\" & ZielOU & " /G " & PermA
08.

09.
WshShell.Run CMD, 0, 1			 
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: Edi.Pfisterer
09.03.2010 um 09:02 Uhr
Hola bastla!
so, skript läuft nun ohne jede Vorbereitung!
problem aktuell: die Freigaben am Share werden vererbt...
dadurch haben alle benutzer Lesezugriff... Nicht schön!


was ein Leerzeichen für einen Unterschied machen kann
vgl:
01.
echo J | cacls
mit
01.
echo J| cacls
muss jetzt in den Unterricht, daher wärs nett, wenn Du deinen Schnipsel gleich selbst einbastln könntest...
ich lasse es mal so , wie es ist und freue mich über jede Veränderung Deinerseits...
lg

lg
Edi
Bitte warten ..
Ähnliche Inhalte
Windows 10

Windows 10 "Schnellstart" verhindert die Funktion von Windows Update

Tipp von ManaWindows 103 Kommentare

Hallo zusammen, das soll hauptsächlich als Doku für mich sein, aber vielleicht hilft es ja einem anderen Verzweifelten auch ...

Windows Server

Exchange 2010 auf Windows Server 2016 und AD

Tipp von Herbrich19Windows Server2 Kommentare

Hallo, Ich habe jetzt seit einigen Wochen Exchange 2010 auf Windows Server 2016 am laufen. Nach rekonfiguration der Bindungen ...

Windows Netzwerk

Securing Privileged Access for the AD Admin - Part 1

Information von 133883Windows Netzwerk1 Kommentar

Sollte jeder AD Admin in seinem Repertoire haben. Separate Admin-Accounts für exakt definierte Aufgaben und Administrations-Bereiche. Folgende Artikelserie nimmt ...

Tipps & Tricks

Windows Netzwerkumgebung über AD-Optionen gegen Ransomware wie NotPetya härten

Information von kgbornTipps & Tricks4 Kommentare

Keine Ahnung, möglicherweise ist das ein 'alter Hund' oder Admins in Domains sichern das Netzwerk anders ab. Im Nachgang ...

Neue Wissensbeiträge
Windows 7
Updategängelung auf Windows 10, die zweite
Information von Penny.Cilin vor 13 StundenWindows 7

Hallo, da Windows 7 im kommenden Jahr nicht mehr supportet wird, werden Nutzer von Window 7 home premium wieder ...

Internet
EU-Urheberrechtsreform: Zusammenfassung
Information von Frank vor 2 TagenInternet1 Kommentar

Auf golem.de gibt es eine Analyse von Friedhelm Greis, der das Thema EU-Urheberrechtsreform gut und strukturiert zusammenfasst. Zwar haben ...

Microsoft Office

Office365 Schwachstellen bei Sicherheit und Datenschutz

Information von Penny.Cilin vor 3 TagenMicrosoft Office7 Kommentare

Auf Heise+ gibt es einen Artikel bzgl. Office365 Schwachstellen. Das ist noch ein Grund mehr seine Daten nicht in ...

Sicherheit
Schwachstellen in VPN Clients
Tipp von transocean vor 5 TagenSicherheit2 Kommentare

Moin, es gibt Sicherheitslücken bei VPN Clients namhafter Hersteller, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
Vmware
ESXI hebt Registrierung von Masschinen auf
Frage von SpitzbubeVmware12 Kommentare

Hallo, nutze seit einiger Zeit für meine IT Projekte einen alten HP G7 Server mit ESXi 6.5 und einem ...

Entwicklung
Programmieren lernen - Vorkenntnisse bisher nur in PowerShell
gelöst Frage von SomebodyToLoveEntwicklung10 Kommentare

Hallo zusammen, ich würde gerne tiefer in das Programmieren einsteigen, der Wunsch hängt mir schon im Kopf seid ich ...

Hyper-V
Chaosbeseitigung in Domainlandschaft
Frage von Rolf935Hyper-V10 Kommentare

Hallo zusammen, ich hätte gerne mal ein paar praktische Tipps oder Hinweise. Derzeit haben wir einen NAS als Fileserver ...

Outlook & Mail
Automatische Anrede mit Name in Outlook beim Antworten auf Mails
gelöst Frage von Marco8383Outlook & Mail9 Kommentare

Hallo zusammen, ich bin auf der Suche nach einer Lösung für folgendes Problem. Ich nutze Office 365 und Outlook ...