Posts

Hoofdstuk 12 - Les 1

Authentication = identiteit van de gebruiker vaststellen Authorization = De rechten van een gebruiker verifiëren voor toegang tot een resource. System.Principal.WindowsIdentity representeert een Windows gebruiker. Authenticeert niet, dat heeft Windows al gedaan. Deze class houd de gebruikersnaam, authenticatie type en account token bij. Als een instantie wordt gemaakt wordt van de WindowsIdentity class kan gebruik worden gemaakt van drie static methoden: GetAnonymous – Returnt een WindowsIdentity object die een anonieme ongeauthentiseerde gebruiker representeert. GetCurrent – Returnt een WindowsIdentity object die de huidige ingelogde Windows gebruiker representeert. Impersonate – Returnt een WindowsImpersonationContext die een gespecificeerde gebruiker representeert. WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent(); De System.Security.Principal.WindowsPrincipal class biedt toegang tot een gebruikers zijn groep lidmaatschap. Een object van deze class moet aangemaakt worde...

Hoofdstuk 11 - Les 3

CAS kan op twee manieren worden gebruikt. Declaratief, waarbij de compiler de security checks uitvoert voordat de code uitgevoerd wordt of imperatief, waarbij de code zelf de security checks uitvoert en bepaalt at er gebeurt als de check faalt. Er zijn vier opties voor imperatief en declaratief permissions voor een method: Assert – Instrueert runtime om aanvragers met onvoldoende rechten te negeren. Assemblies moeten de Assert Any Permission That Has Been Granted security permission setting hebben. Demand – Instrueert runtime om een exception te gooien als de aanvrager niet de juiste permissions hebben. Deny – Runtime vermindert de method’s toegang door de gespecificeerde permission te verwijderen. PermitOnly – Intrueert runtime om de method’s toegang te verminderen door alle permissions te verwijderen behalve de gespecificeerde permission. Er zijn twee declaratieve aanvragen die niet van toepassing zijn voor op imperatief: LinkDemand – Veroorzaakt runtime een exception als de directe ...

Hoofdstuk 11 - Les 2

Declarative CAS zorgt ervoor dat de assembly alle benodigde permissions heeft; niet te veel en niet te weinig. Bijkomend voordeel is dat administrators direct weten welke rechten zij moeten toekennen aan de assembly. Drie redenen om CAS declaraties te gebruiken: Om ervoor te zorgen dat runtime de applicatie nooit uitvoert zonder toegang te verkrijgen tot de benodigde bronnen. Om een kleine zandbak te maken van de applicatie om ervoor te zorgen dat een aanvaller de applicatie niet kan manipuleren om toegang te verkrijgen tot onbedoelde bronnen. Om te verifiëren dat applicaties worden uitgevoerd met gelimiteerde CAS permissions en daarom in partially trusted zones worden uitgevoerd. CAS kan van een hoop bronnen de toegang regelen (van bestanden en mappen tot printers en netwerktoegang). Voor elk type bron dat kan worden beschermd, heeft het .NET Framework een class beschikbaar. Elke class heeft unieke members om de permissions te bepalen. Omdat de permission attribuut classes erven van d...

Hoofdstuk 11 - Les 1

CAS (code Access Security) is een beveiligingssysteem die het toestaat administrators en ontwikkelaars controle te nemen over applicatie authorisatie op dezelfde wijze hoe zij altijd gebruikers hebben geauthoriseerd. Met CAS kan je toestaan dat 1 application leest en schrijft naar het register terwijl je lezen en schrijven naar het register van aan andere applicatie verbied. Dezelfde bronnen kunnen worden geauthoriseerd die normaal gesproken ook kunnen worden geauthoriseerd met het systeems role-base security (RBS). Er zijn systeem bronnen die kunnen worden beveiligd die geen RBS hebben. Bijvoorbeeld web verzoeken versturen of DNS verzoeken. Met CAS kunnen dit soort dingen worden geauthoriseerd. CAS kan enkel toegepast worden bij applicaties die in het .NET Framework draaien. Applicaties die zonder CAS draaien zijn gelimiteerd tot de RBS restricties. Als via CAS restricties zijn gekoppeld aan een applicatie dan wordt deze applicatie als partially trusted beschouwd. Sommige assemblies z...

Hoofdstuk 10 - Les 3

Gebruik de statische methode Process.GetProcesses om alle huidige processen van het systeem op te halen. Om een specifiek process op te halen gebruik je het PID (Process ID): Process.GetProcessById. Om een process op te halen op basis van naam gebruik je: Process.GetProcessByName. Om het huidige process op te halen: Process.GetCurrent. Als een process is geladen kan met Process.Modules alle modulen worden geladen, indien je voldoende rechten heb, anders wordt er een Win32Exception gegooid. Als een Process object wordt aangemaakt, worden meteen alle properties geladen en gecached. Om de actuele waarden van de properties op te vragen moet eerst de Refresh methode aangeroepen worden. Gebruik de statische methode Process.Start om een process te starten en geef hierbij mee de naam van de exe die gestart moet worden. Parameters kunnen als tweede parameter worde meegegeven. Windows geeft veel informatie weer over de computer via WMI. Gebruik WMI om de setup van de applicatie te bepalen of wan...

Hoofdstuk 10 - Les 2

In de System.Diagnostics namespace kunnen performance counters worden aangemaakt en kunnen performance counters worden bijgewerkt binnen de applicatie. Vervolgens kunnen de developer en systeembeheerder deze performance counters bekijken via de perormance monitor. Om een performance counter te maken moet een instantie worden gemaakt van de PerformanceCounter class door een performance, een teller en eventueel de instantie mee te geven. Gebruik performanceCounter.NextValue om de counter te resetten. Roep dezelfde methode nog een keer aan om de performance data op te halen. PerformanceCounter pc = new PerformanceCounter("Processor", "% Processor Time", "_Total"); // Reset de teller pc.NextValue(); // Wacht eens seconde Thread.Sleep(1000); // Haal het processor gebruik op van de afgelopen seconde Console.WriteLine(pc.NextValue()); Custom performance counters kunnen niet worden toegevoegd aan een bestaande categorie. Om een custom performance counter aan te ma...

Hoofdstuk 10 - Les 1

Systeembeheerders gebruiken het Windows event log om te monitoren of alle software naar behoren functioneert. Er zijn drie event logs: System – Bevat alle non-security gerelateerde operating system events Security – Bevat wie is in- en uitgelogd. Applicaties kunnen hier niet in schrijven Application – Oorspronkelijk bedoeld om gebeurtenissen van applicaties in op te slaan als deze geen specifieke event log hebben. Events hebben altijd een source, welke de applicatie identificeert die het event heeft veroorzaakt. Voordat events kunnen worden gelogd moet eerst de applicatie geregistreerd worden als een event. Dit kan op twee manieren. Manueel door in het register een key aan te maken In de code Voorbeeld in code (moet wel uitgevoerd worden door administrator): If(!EventLog.SourceExists(“ My application”)) EventLog.CreateEventSource(“My application” , “My application Log”); Events loggen gebeurt door EventLog.Source property te zetten en de method EventLog.WriteEntry aan te roepen met d...