Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Biztonság.NET-ben Krizsán Zoltán iit1.0. Krizsán Zoltán iit Biztonság.NET-ben 2 Alapfogalmak  Azonosítás (authentication) –Hitelesítés – Ki az aki a.

Hasonló előadás


Az előadások a következő témára: "Biztonság.NET-ben Krizsán Zoltán iit1.0. Krizsán Zoltán iit Biztonság.NET-ben 2 Alapfogalmak  Azonosítás (authentication) –Hitelesítés – Ki az aki a."— Előadás másolata:

1 Biztonság.NET-ben Krizsán Zoltán iit1.0

2 Krizsán Zoltán iit Biztonság.NET-ben 2 Alapfogalmak  Azonosítás (authentication) –Hitelesítés – Ki az aki a kérést küldi ?  Engedélyezés (authorization) –Hozzáférés szabályozás – Milyen erőforrásokat érhet el, használhat ez a személy ?  Integritás ellenőrzés (integrity check) –Hogyan biztosítható, hogy az adatokat útközben ne manipulálhassák ?

3 Krizsán Zoltán iit Biztonság.NET-ben 3 Windows biztonság  Felhasználó hitelesítésen –Kerberos –NTLM –Publikus kulcs  Objektum alapú hozzáférés szabályozás

4 Krizsán Zoltán iit Biztonság.NET-ben 4 +.NET biztonság  Nem lehet kikerülni vagy lecserélni az op. rendszer vagy hálózat biztonságát  Csak fokozni vagy kiterjeszteni lehet

5 Krizsán Zoltán iit Biztonság.NET-ben 5 Biztonsági modell filozófiája Segédalkalmazásokkal állítható! Ellenőrizhető:  felhasználó kilétét - szerep alapú és vagy  kód eredetét és vagy  hívási láncot

6 Krizsán Zoltán iit Biztonság.NET-ben 6 Szerep alapú biztonság  Tradicionális, elterjedt biztonsági ellenőrzés.  A felhasználókat csoportokba rendezik, ezek a szerepek. A jogokat a szerepek kapják, nem a felhasználók.  A.NET szál szinten kezeli a szerep alapú biztonságot.

7 Krizsán Zoltán iit Biztonság.NET-ben 7 Ellenőrzés helye  Az operációs rendszer a kernelben vagy modulban.  A.NET alaposztály-könyvtárában, az osztályok fv.-eiben.  Az alkalmazás komponenseiben, osztályiban.

8 Krizsán Zoltán iit Biztonság.NET-ben 8 Biztonságot fenyegető szereplők  Jóindulatú (ártatlan) hitelesített – óvatlan, figyelmetlen  Rosszindulatú (támadó) –hitelesített felh. adatait megszerezni, használni. –Megváltoztatni a rendszer komponenseit észrevétlenül (buffer túlcsordulás)

9 Krizsán Zoltán iit Biztonság.NET-ben 9 Biztonsági fenyegetések  Titoksértés Kód, illetéktelen személy - kényes bizalmas információ  Ellenőrzés hamisítás Logok módosítása, zagyválása  Azonosító megszerzése Jogosult felhasználó nevében …  Jogosultság megszerzése jogosult felhasználó -> admin  Szerviz elfojtás Sok felesleges, érvényes művelet -> szükséges funkciók lassulnak  Mobil kód Letöltött kódok gyakran admin jog!

10 Krizsán Zoltán iit Biztonság.NET-ben 10 Megvalósítás  Minden esetben Demand() fv. Hívás. (IPermission interface, PermissionSet osztály)  SecurityException kivétel dobódik, ha nincs megfelelő jogosultság.

11 Krizsán Zoltán iit Biztonság.NET-ben 11 Osztálykönyvtár eszközei  System.Security.Principal névtér  Interface-ek (általánosak): Iidentity felhasználók adatai Iprincipal csoporttagság

12 Krizsán Zoltán iit Biztonság.NET-ben 12 IIdentity public interface IIdentity{ String Name{get;} String AuthenticationType{get;} bool IsAutenticated{get;} }

13 Krizsán Zoltán iit Biztonság.NET-ben 13 IPrincipal  Minden szálhoz egy principal objektum  Tread.CurrentPrincipal (olvasható - írható) public interface IPrincipal{ Iidentity Identity{get;} bool IsInRole(String Role); }

14 Krizsán Zoltán iit Biztonság.NET-ben 14 Általános osztályok  Előre definiált, az alaposztály könyvtár eleme.  Csak az interface-t implementálja.  GenericIdentity  GenericPrincipal

15 Krizsán Zoltán iit Biztonság.NET-ben 15 Windows specifikus osztályok  WindowsIdentity Egy windows-os felhasználót kezel.  WindowsPrincipal Windows-os csoporttagság nyilvántartása.

16 Krizsán Zoltán iit Biztonság.NET-ben 16 WindowsIdentity  Az Iidentity fv.-ei +: –IsAnonymous –IsGuest –IsSystem –static GetAnonymous() –static GetCurrent() - win32 szál lehet, hogy más, mint a.NET Identity –Impersonate() - win32 szál felh. változtatása (erőforrás hozzáférés).

17 Krizsán Zoltán iit Biztonság.NET-ben 17 WindowsPrincipal  Hasonló, mint a GenericPrincipal, de IsInRole() két fajta paraméterrel: –string  BUILTIN\szerep  GÉPNÉV\Felhasználó  TARTOMÁNY\Felhasználó –felsosorolt (WindowsBuiltInRole) AcountOperator, Administrator, PowerUser BackupOperator, Guest, User, Replicator,...

18 Krizsán Zoltán iit Biztonság.NET-ben 18 Példa I Thread.CurrentPrincipal = new GenericPrincipal( new GenericIdentity(”Hát én”), null); Console.WriteLine( string.Format(”Az aktuális Identity: {0}\n \tTípusa: {1}”, Thread.CurrentPrincipal.Identity.Name, Thread.CurrentPrincipal.Identity.Name, Thread.CurrentPrincipal.Identity.GetType().FullName Thread.CurrentPrincipal.Identity.GetType().FullName));Console.WriteLine( string.Format(”Az aktuális Identity: {0}\n \tTípusa: {1}”, WindowsIdentity.GetCurrent().Name, WindowsIdentity.GetCurrent().Name, WindowsIdentity.GetCurrent().GetType().FullName WindowsIdentity.GetCurrent().GetType().FullName));

19 Krizsán Zoltán iit Biztonság.NET-ben 19 Példa II - MyIdentity public class MyIdentity : GenericIdentity{ private string m_fullName; public string FullName{ get{ return m_fullName;} } public MyIdentity (string userName, string fullName) : base(userName) { m_fullName = fullName;} public static MyIdentity Current{ get{ return (MyPrincipal.Current == null) ? return (MyPrincipal.Current == null) ? null : MyPrincipal.Current.Identity as MyIdentity; null : MyPrincipal.Current.Identity as MyIdentity;}}}

20 Krizsán Zoltán iit Biztonság.NET-ben 20 Példa II - MyPrincipal public class MyPrincipal : GenericPrincipal{ public MyPrincipal(MyIdentity ident, string[] roles) public MyPrincipal(MyIdentity ident, string[] roles) : base(ident,roles){} public override bool IsInRole(string role){ public override bool IsInRole(string role){ if (Identity != null && Identity.Name == ”Admin”) return true; if (Identity != null && Identity.Name == ”Admin”) return true; else return base.IsInRole(role); else return base.IsInRole(role); } public new MyIdentity Identity{ public new MyIdentity Identity{ get{return base.Identity as MyIdentity;} get{return base.Identity as MyIdentity;} } public static MyPrincipal Current{ public static MyPrincipal Current{ get{ return Thread.CurrentPrincipal as MyPrincipal;} get{ return Thread.CurrentPrincipal as MyPrincipal;} }}

21 Krizsán Zoltán iit Biztonság.NET-ben 21 Példa II - teszt kód static void Main(string[] args){ Thread.CurrentPrincipal = new GenericPrincipal(new MyIdentity("Admin", "Rendszer gizda"), null); Thread.CurrentPrincipal = new GenericPrincipal(new MyIdentity("Admin", "Rendszer gizda"), null); try{ try{ DoIt(); DoIt(); Thread.CurrentPrincipal = new GenericPrincipal(new MyIdentity("Krz", "Hát én ki más"), null); Thread.CurrentPrincipal = new GenericPrincipal(new MyIdentity("Krz", "Hát én ki más"), null); DoIt(); DoIt(); } catch(Exception e){Console.WriteLine("Kivétel: " + e.ToString ());} catch(Exception e){Console.WriteLine("Kivétel: " + e.ToString ());}} [PrincipalPermission(SecurityAction.Demand, Name="Admin") ] static void DoIt(){ MyIdentity MyI= Thread.CurrentPrincipal.Identity as MyIdentity; MyIdentity MyI= Thread.CurrentPrincipal.Identity as MyIdentity; Console.WriteLine("DoIt hívás: Név:{0} ({1})", Console.WriteLine("DoIt hívás: Név:{0} ({1})", MyI.Name, MyI.FullName); }

22 Krizsán Zoltán iit Biztonság.NET-ben 22 Biztonsági környezet öröklése Új szál esetén öröklődik a Pirncipal? –new Thread() -> igen –new Timer -> nem –.NET Remoting-> általában nem –Web Service-> általában nem

23 Krizsán Zoltán iit Biztonság.NET-ben 23 Alkalmazástartomány  Szálak biztonsági környezetét egységesen szabályozhatjuk.  AppDomain.SetPrincipalPolicy()  Paraméterek lehetnek (PrincipalPolicy felsorolt típus): –NoPrincipal (null) –UnauthenticatedPrincipal (alapért., üres) –WindowsPrincipal

24 Krizsán Zoltán iit Biztonság.NET-ben 24 Nem szerep alapú biztonság Nem Mindet, vagy semmit, hanem –az adott program –adott erőforráson –milyen műveletet hajthat végre  Kóderedet-alapú (evidence based security)  Kódhozzáférési jogosultság (Code Access Security CAS)

25 Krizsán Zoltán iit Biztonság.NET-ben 25 Biztonsági házirend  A programok jogait nem minden esetben a rendszergazda állítja és nem futásidőben.  Előre elkészített szabályrendszer, amely kódról származó információk alapján meghatározza: –hogy mely erőforrásokon –milyen művelet(ek)et hajthat végre

26 Krizsán Zoltán iit Biztonság.NET-ben 26 Eredetigazolás, erdetinformáció kódról származó információ (bizonyíték - evidence)  Beépített információk: –Információk szerelvényről:  Hash  Kiadó (kiadó digitális aláírása)  Erős név –Információk indítás helyéről:  Alkalmazásmappa  Webhely  URL  Zóna  Lehet saját is!

27 Krizsán Zoltán iit Biztonság.NET-ben 27 Kódhoz rendelhető jogok  CodeAccessPermission osztály leszármazottjai  Léteznek beépített jogok: –EnvironmentPermission –EventLogPermission –PrintingPermission –RegitryPermission –FileIO Permission –...  Bővíthető saját jogokkal!

28 Krizsán Zoltán iit Biztonság.NET-ben 28 Jog csoportok, engedély halmazok  Jogok csoportba rendezhetőek, nevesíthetőek (Named Permission Set)!  Léteznek beépített engedélyhalmazok: –Nothing –Execution (nem használhat védett erőforrást) –Internet –LocalInternet –Everything (kivéve kód ellenőrzés kihagyása) –FullTrust (GAC-ban levők alapból)  Saját definiálható!

29 Krizsán Zoltán iit Biztonság.NET-ben 29 Házirend felépítése, működése  Fastruktúra  Csomópontjaiban: feltétel (Kód eredetére) - engedélyhalmaz  Ha a feltétel igaz, akkor –a program megkapja a jogokat –folytatódik a kiértékelés s gyermekkel  Végigmegy a fán és összegzi azokat (UNIÓ).  A fa egy szintjén csak egy levélre illeszkedhet!  A rendszer többszintű, 4 fából áll.

30 Krizsán Zoltán iit Biztonság.NET-ben 30 Támogatott házirendek  1. szint Vállalati (Enterprise) : –Active Directory telepítheti –Tartományra érvényes  2. szint Számítógép (Machine)  3. szint Felhasználói (User)  4. szint Alkalmazástartományi (Application Domain) –Futtató hoszt által létrehozott

31 Krizsán Zoltán iit Biztonság.NET-ben 31 Házirendek végső jogosultsága  A rendszer sorra kiértékeli az összes fát!  Az 1. szinttől kezdődően a 4. szintig  A végső jogosultság az egyes jogosultságok metszete.

32 Krizsán Zoltán iit Biztonság.NET-ben 32 Kiértékelést befolyásolása  Kizárólagosság (Exclusive): Ha a fát bejárva elér egy ilyen csomópontot, nem megy tovább a gyerekre! Megy a következő fára. (Nem kaphat több jogot)  Végső szint (Level Final): Az aktuális fánál abbahagyja a kiértékelést nem folytatja az alacsonyabb szintűvel! (Nem kaphat kevesebb jogot)

33 Krizsán Zoltán iit Biztonság.NET-ben 33 Házirend vizuálisan Vállalati Számítógép Felhasználó Alkalmazástartomány Kiértékelés Kibocsátó: MS Ms.Office Minden kód

34 Krizsán Zoltán iit Biztonság.NET-ben 34 Szerelvények - biztonság  Szerelvényekhez is rendelhetőek biztonsági előírások: –Required –Optional –Refused  Attribútummal valósítják meg!

35 Krizsán Zoltán iit Biztonság.NET-ben 35 Futó program végső jogosultsága ((MIN  OPT)  ALLOWED) \ REFUSED MIN, OPT : szerelvény által kért jogok ALLOWED : házirendból eredő jogok Szerelvény által visszautasított jogok Ha a MIN jog nem áll rendelkezésre, akkor kivétel keletkezik!

36 Krizsán Zoltán iit Biztonság.NET-ben 36 Jog, jogcsoport Legkisebb egység, erőforrásokon végezhető műveletek halmazak. public interface IPermission{ IPermission Union(IPermission rhs); IPermission Union(IPermission rhs); IPermission Intercect(IPermission rhs); IPermission Copy(); Void Demand(); } PermissionSet osztály (ICollection)

37 Krizsán Zoltán iit Biztonság.NET-ben 37 Ellenőrzés fajtái  Op. rendszer: erőforrást  Alkalmazás: Feladatot, funkciót  Keretrendszer: személy, jog, stack módja: –Deklaratív –Imperatív

38 Krizsán Zoltán iit Biztonság.NET-ben 38 Deklaratív ellenőrzés  Attribútum segítségével (beépül metaadatba)  Az engedély paramétereit már fordítási időben tudni kell!  Gyors  Könnyen felderíthető, dokumentálható  Szerelvényre, tfv.-re érvényes.

39 Krizsán Zoltán iit Biztonság.NET-ben 39 Imperatív ellenőrzés  Permission vagy PermissionSet osztály egy példányának létrehozása.  Majd Demand fv.-ével is.  Futásidejű  Kivétel elkapása.  Kódszintű

40 Krizsán Zoltán iit Biztonság.NET-ben 40 Stack ellenőrzés  Minden metódus híváshoz veremkeret.  Biztonsági ell. (Demand) esetén bejárja a hívási vermet, és megvizsgálja a fv.-ek veremkereteit.  Minden Win32API hívás előtt Demand()!

41 Krizsán Zoltán iit Biztonság.NET-ben 41 Ellenőrzés módosítói A hagyományos ell. módosítják!  Assert: nem vizsgál tovább, engedélyez  Deny: nem vizsgál tovább, tilt  Permit Only: Aktuálisra assert, többire Deny

42 Krizsán Zoltán iit Biztonság.NET-ben 42 Stack ellenőrzés szabályai  Engedélyen, vagy engedélyhalmazon hívható módosító.  Csak egy módosító lehet aktív.  Művelet elvégzése után szokás visszavonni (RevetAll, RevertAssert, …).  Konstruktorban tilos a veremvizsgálat!  Demand() helyett lehet LinkDemand() – nem jár végig a vermen, csak az aktuálisat vizsgálja!  Reflexiónál LinkDeman() -> Demand()

43 Krizsán Zoltán iit Biztonság.NET-ben 43 Biztonság beállítása  Jogok –Caspol.exe -házirend –művelet pl.: -addfullTrust –.NET Configurartor  Engedély –Configurator (beépített) –XML fájlból (beépített, saját)


Letölteni ppt "Biztonság.NET-ben Krizsán Zoltán iit1.0. Krizsán Zoltán iit Biztonság.NET-ben 2 Alapfogalmak  Azonosítás (authentication) –Hitelesítés – Ki az aki a."
Google Hirdetések