————————————————————————————————————-
Procescode: A.Servers
Doel: Centraal bijhouden wat de belasting van de servers is.
Wel automatiseren.
Toelichting: Powershell kan systeeminformatie zoals CPU en geheugengebruik goed checken en loggen. Dit bespaart handmatig werk.
————————————————————————————————————-
Procescode: A.Users
Doel: Centraal bijhouden wie wanneer op de systemen werkt.
Wel automatiseren
Toelichting: Gebruikerslogins kunnen eenvoudig worden gelogd via Windows event logs met Powershell. Automatisch is handiger.
————————————————————————————————————-
Procescode: A.Cleandesk
Doel: Centraal bijhouden wie aan het eind van de dag informatie op het bureau achterlaat.
Niet automatiseren.
Toelichting: Dit moet je echt zelf controleren. Een script kan niet even door het kantoor lopen en checken wie z’n bureau netjes houdt.
————————————————————————————————————-
Procescode: A.Logout
Doel: Centraal bijhouden wie er vergeet uit te loggen aan het einde van de werkdag.
Wel automatiseren
Toelichting: Powershell kan uitlogevents bijhouden en zien wie niet uitlogt. Dit is best handig
————————————————————————————————————-
Procescode: A.PaperPassword
Doel: Centraal bijhouden wie wachtwoorden op een toegankelijke plek opschrijft.
Niet automatiseren.
Toelichting: Ook is dit heel dit beter dat jij het gaat controleren. Want een script kan geen post op monitoren spotten.
————————————————————————————————————-
Procescode: A.Mailsize
Doel: Centraal bijhouden hoeveel ruimte elke medewerker gebruikt voor mailopslag.
Wel automatiseren.
Toelichting: Met Powershell kun je makkelijk de mailboxgroottes opvragen en loggen. Dat bespaart veel tijd.
————————————————————————————————————-
Procescode: A.Desktop
Doel: Controle op toelaatbaarheid achtergrondafbeelding werkstation.
Wel automatiseren.
Toelichting: Powershell kan de registerinstellingen checken om te zien welke achtergrondafbeelding is ingesteld.
————————————————————————————————————-
Procescode: A.UserSignal
Doel: Signaleren als er iemand op een account met administratorprivileges inlogt.
Wel automatiseren.
Toelichting: Inlogpogingen met admin rechten kunnen we makkelijk checken en loggen met Powershell.
————————————————————————————————————-
Procescode: A.Monitor
Doel: Controleer servers op ongebruikelijke processen.
Wel automatiseren.
Toelichting: Powershell kan processen op servers checken en afwijkingen signaleren. Zo hoef jij niet steeds handmatig alles te checken.
————————————————————————————————————-
Procescode: A.PrintSignal
Doel: Controle of iemand zijn print outs bij de printer laat liggen.
Niet automatiseren.
Toelichting: Dit moet je ook echt zelf controleren want een script kan niet zien wie zijn printj outs bij de printer laat liggen.
<#
Scriptnaam: ServerProcessChecker totaalscript
Versie: Script voor examenkandidaat
Functie: Check actieve processen op een server t.o.v. ‘whitelist’
Auteur: Ivo van Pluur / ROC van Twente
Versie: 1.1
Datum: Februari 2023
#>
Clear-Host;
# DEFINITIE VARIABELEN #
#——————————————————————————-
### OPDRACHT VOOR DE EXAMENKANDIDAAT ### OPDRACHT VOOR DE EXAMENKANDIDAAT ###
# Vraag de naam van de server op waarvan je de processen wilt checken en wijs deze toe
# aan de variabele: $server
hostname
$server = hostname
#——————————————————————————-
# deze variabele haalt de datum en tijd op
$datum_tijd = Get-Date;
# deze variabele haalt de ‘whitelist’ op
$white_list = “$homeMonToolwhitelist.txt”;
# Deze variabele haalt het bestand met signaleringen op
$signaleringen = “$homeMonToolsignaleringen.txt”;
#——————————————————————————-
### OPDRACHT VOOR DE EXAMENKANDIDAAT ### OPDRACHT VOOR DE EXAMENKANDIDAAT ###
# Neem de ‘whitelist’ in een variabele op met de naam: [string[]]$array_white_list
To be sure: $white_list = “C:UsersmahmoDesktopvfdsgfbdWhiteList.txt”
$array_white_list = Get-Content -Path $white_list
shift rechtermuisknop: copy path voor pad kopieeren
#——————————————————————————-
# de variabele $error wordt leeggemaakt
$Error.Clear();
# weergave startboodschap op het scherm met daarna een wachttijd van 5 seconden
Write-Host “De ServerProcessChecker is gestart op: ‘$datum_tijd'”;
Write-Host “De opgegeven server is: ‘$server'”;
Write-Host “Er wordt gecheckt of server ‘$server’ bestaat.”;
Start-Sleep -Seconds 5;
# als de opgegeven server bestaat, neem je van deze server de actieve processen op in een array
# als de opgegeven server NIET bestaat, stopt het script en geef je een melding/warning weer.
# een en ander wordt via de try/catch techniek vormgegeven.
try{
[string[]]$actieve_processen = Invoke-Command -ComputerName $server -ScriptBlock {Get-Process | `
Select-Object -ExpandProperty name} -ErrorAction Stop;
#——————————————————————————-
### OPDRACHT VOOR DE EXAMENKANDIDAAT ### OPDRACHT VOOR DE EXAMENKANDIDAAT ###
# Maak het signaleringenbestand leeg en vul met de naam van de te monitoren server en datum/tijd.
# Server:
# Datum/Tijd:
$signaleringen = “C:UsersmahmoDesktopvfdsgfbdsignaleringen.txt”;
$datum_tijd = Get-Date;
Set-Content -Path $signaleringen -Value “Server: $server
Date/Tijd: $datum_tijd”
#——————————————————————————-
foreach ($proces_naam in $actieve_processen)
{
# check op actieve processen die niet in de ‘whitelist’ voorkomen
if (-not($proces_naam -in $array_white_list))
{
# wil je het proces toevoegen aan de whitelist?
# Zo nee, neem de procesnaam dan op in het bestand met signaleringen
$antwoord = Read-Host -Prompt “‘$proces_naam’ zit niet in de whitelist. Wil je deze toevoegen aan de whitelist? (j/n)”;
# er is géén afhandeling van foute invoer ingebouwd.
if ($antwoord.toupper() -eq ‘J’) # Indien ‘j’ voeg procesnaam toe aan de whitelist
{
$array_white_list += $proces_naam
}
else
{
#——————————————————————————-
### OPDRACHT VOOR DE EXAMENKANDIDAAT ### OPDRACHT VOOR DE EXAMENKANDIDAAT ###
# Voeg de procesnaam toe aan het signaleringenbestand
Add-Content -Path $signaleringen -Value $proces_naam
#——————————————————————————-
}
}
}
# wil je het bestand met signalering op het scherm tonen?
$antwoord_printen = Read-Host -Prompt (‘Wil je het bestand met signaleringen op het scherm weergeven? (j/n)’)
if ($antwoord_printen.ToUpper() -eq ‘J’)
{
Get-Content -Path $signaleringen
}
}
catch{
# genereer een melding/warning als de opgegeven servernaam onbekend is
Write-Warning ‘De opgegeven servernaam is niet bekend;het script wordt gestopt.’;
break;
}
#——————————————————————————-
### OPDRACHT VOOR DE EXAMENKANDIDAAT ### OPDRACHT VOOR DE EXAMENKANDIDAAT ###
# Genereer het bestand met de whitelist opnieuw (ook al zijn er geen processen aan toegevoegd)
Set-Content -Path $white_list -Value $array_white_list
#——————————————————————————-
# geef een afsluitende melding weer op het scherm
Write-Host “Datum/Tijd: $datum_tijd”
Write-Host “`nHET SCRIPT IS KLAAR MET DE UITVOERING`nTOT DE VOLGENDE KEER”;
# EINDE SCRIPT #
————————————————————————————–
Doel 1: Naam opvragen van de server waarvan je de processen wilt checken en de servernaam toewijzen aan de variabele $server.
Omschrijving 1: In deze stap wordt de servernaam opgehaald met hostname en toegewezen aan $server. Het is belangrijk om zeker te zijn van de juiste servernaam om verdere processen correct te monitoren.
—————————————————————————————
Doel 2: De whitelist variabele opnemen met de naam [string[]]$array_white_list.
Omschrijving 2: Hier wordt de whitelist vanuit de tekstbestand ingelezen en toegewezen aan de variabele $array_white_list. Dit bestand bevat de namen van de processen die als veilig worden beschouwd.
————————————————————————————-
Doel 3: Het signaleringenbestand leegmaken en vullen met de naam van de te monitoren server en datum/tijd.
Omschrijving 3: Het signaleringenbestand wordt leeggemaakt en opnieuw gevuld met de servernaam en de huidige datum/tijd. Dit helpt bij het bijhouden van de monitoring activiteit en de tijdstempel.
————————————————————————————–
Doel 4: Procesnaam toevoegen aan het signaleringsbestand als deze niet in de whitelist voorkomt en de gebruiker ervoor kiest om deze niet toe te voegen aan de whitelist.
Omschrijving 4: Als een proces niet in de whitelist voorkomt, wordt de gebruiker gevraagd of het moet worden toegevoegd. Als de gebruiker ‘nee’ kiest, wordt de procesnaam toegevoegd aan het signaleringenbestand.
—————————————————————————————
Doel 5: Het whitelist bestand opnieuw genereren.
Omschrijving 5: Het whitelist bestand wordt bijgewerkt en opnieuw gegenereerd, zelfs als er geen nieuwe processen aan zijn toegevoegd. Dit zorgt ervoor dat de whitelist altijd up-to-date is met de nieuwste wijzigingen
—————————————————————————————
David Nieuwe script:
“CPU usage:”
(Get-WmiObject -Class Win32_Processor).LoadPercentage $ramObject = Get-WmiObject -Class Win32_OperatingSystem $ramUsageGB = [math]::Round(($ramObject.TotalVisibleMemorySize – $ramObject.FreePhysicalMemory) / 1GB, 2)
Write-Host “Available RAM: ${ramUsageGB}GB”
Doel: De huidige CPU-belasting en het beschikbare RAM-geheugen weergeven.
Omschrijving: Deze code laat de CPU-belasting in percentage zien met (Get-WmiObject -Class Win32_Processor).LoadPercentage en berekent het beschikbare RAM-geheugen in GB. Dit helpt bij het controleren van de systeemprestaties en resourcegebruik, wat belangrijk is voor serverbeheer en -optimalisatie. En dus als eind doel word er dan Centraal bij gehouden wat de belasting van de servers is.
———————————————————————————–
Jamaican Nieuwe script:
Get-WmiObject -Class Win32_UserAccount
Doel: Informatie opvragen over de gebruikersaccounts op het systeem.
Omschrijving: Met “Get-WmiObject -Class Win32_UserAccount” kan je details krijgen over de gebruikers die toegang hebben tot de server. Dit is nuttig voor het beheren en beveiligen van gebruikersaccounts. En daardoor kan je dus als einddoel Centraal bijhouden wie wanneer op de systemen werkt.
Plaats een feedback of bod
U moet ingelogd zijn om een recensie te plaatsen.