Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Sicherheit oder Praxis? Michael Willers

Ähnliche Präsentationen


Präsentation zum Thema: "1 Sicherheit oder Praxis? Michael Willers"—  Präsentation transkript:

1 1 Sicherheit oder Praxis? Michael Willers

2 2 In diesem Abschnitt… Stand der Dinge ACL vs. Privileg Secure Deployment SQL Server Security Debuggen mit Visual Studio.NET

3 3 Stand der Dinge Die meisten Anwendungen laufen mit Administratorrechten –Eine offene Einladung für Angreifer Nur: Anwender haben keine Wahl –Installation setzt meistens Administatorrechte voraus –Anwendungen laufen nicht ohne Administratorrechte –Oder schlimmer: Wichtige Funktionen gehen nicht OS bietet keine Hilfestellung –Beispielsweise per Wizard

4 4 Ohne Admin gehts auch... Erstellen Sie einen eigenen Account, der lediglich der Gruppe Users angehört Legen Sie Verknüpfungen für administrative Tasks auf dem Desktop an –runas.exe –Rechtsklick auf die Anwendung fragt automatisch Für das Development mit Visual Studio. NET brauchen Sie zusätzliche Einstellungen –Dazu später mehr Ein Wizard wäre schön...

5 5...aber eben nicht immer ;-) Möglicherweise schreibt die Anwendung in die Registry –HKEY_LOCAL_MACHINE anstelle von HKEY_CURRENT_USER Möglicherweise schreibt die Anwendung wild ins Dateisystem –Windows- oder Systemverzeichnis (System32) –Programmverzeichnis –Oder der GAU: Ins Root Interop-Szenarien mit COM-Komponenten –Zugriff auf HKEY_CLASSES_ROOT notwendig

6 6 Wo gehört was in die Registry? In.NET eigentlich nichts mehr ;-) Bei vorhandenen Anwendungen Code so ändern das er grundsätzlich nur auf HKEY_CURRENT_USER schreibt!

7 7 Wo gehört was ins Dateisystem?.config Dateien sind –Anwendungsbezogen und by Design Read-Only –Werden vom Hersteller mitgeliefert Benutzerbezogene Daten zur Anwendung (Fenstereinstellungen, Fonts, etc) –Environment.SpecialFolders.ApplicationData Allgemeine benutzerbezogene Daten gehören in –My Documents –Environment.SpecialFolders.Personal Weitere Hinweise in der MSDN Dokumentation –Environment.SpecialFolders

8 8 Und was nun? Rausfinden was da los ist –Wer schreibt wann mit welchen Rechten wohin? –Regmon, Filemon, Process Explorer und Konsorten Eigener Code –Fix this! Fremde Anwendungen –ggf. Installer bauen, der Rechte gezielt freischaltet –Testen und dann per Group Policy verteilen –Natürlich das alte Problem: Sicherheit ist unbequem Wenn die Rechte da sind aber trotzdem nix geht fehlt vielleicht ein Privileg

9 9 ACL vs. Privileg Eine Access Control List (ACL) erlaubt oder verbietet den Zugriff auf eine Ressource –Datei, Registy,... Ein Privileg erlaubt oder verweigert die Durchführung einer Aufgabe –Backup, Debugging,...

10 10 Wie finde ich gute ACLs? Wie sieht der Use Case aus? Ein Beispiel: –Alle User müssen Daten lesen können Interactive Users = Read –Administratoren müssen in der Lage sein sämtliche Aktionen auf den Daten ausführen zu können Administrators = Full Control –Die Marketing-Abteilung darf keinen Zugriff auf die Daten haben ggf. Benutzergruppe Marketing anlegen Marketing = Deny All Access

11 11 Wie finde ich gute ACLs? Achtung: Manchmal sind Privilegien die bessere Lösung Beispiel: –Ein einzelner User muss immer Zugriff auf sämtliche Dateien haben –SeBackupPrivilege Lesezugriff auf sämtliche Dateien –SeRestorePrivilege Schreibzugriff auf sämtliche Dateien

12 12 Security Identifier (SID) identifiziert Benutzer oder Gruppe eindeutig in Raum und Zeit (vgl. GUID) variable Länge Aufbau: S Revison NT-Trustee maschinen- spezifischer Wert eindeutig innerhalb Maschine relative Identifier 21 für nicht vordefinierte Trustees

13 13 ACLs und ACEs Die Access-Control List ist ein Container für Access-Control Entries (ACEs) ACLACE ACCESS_MASK SID 1n ACCESS_ALLOWEDACCESS_DENIED

14 14 OS-Systemressourcen Permanent –Dateien, Verzeichnisse –Registry Keys –Netzwerkfreigaben, Drucker –Active Directory Objekte Temporär –Prozesse und Threads –Events, Mutexe, Semaphore –Pipes, File Mappings

15 15 Security Descriptor Speichert Informationen für den Zugriff auf OS- Systemressourcen –Owner (SID) –Primary Group (SID) –Discretionary Access-Control List (DACL) –System Access-Control-List (SACL, für Auditing) –Flags

16 16 Security Attributes Wird direkt auf eine OS-Ressource angewendet Hat neben dem Descriptor noch ein Flag ob dieser explizit gesetzt oder vom dazugehörigen Prozess übernommen werden soll –Später mehr dazu

17 17 ACL, Attributes, Descriptor Security Attributes Security Descriptor Access Control List Ressource wird zugeordnet

18 18 Prüfen von ACLs

19 19 Was ist eine NULL-DACL? NULL DACL == Keinerlei Sicherheit Eine solche DACL erlaubt jedem Benutzer vollen Zugriff auf eine Ressource Niemals den Parameter NULL für eine DACL verwenden! –Win32-API-Funktionen SetSecurityDescriptorDacl und Konsorten

20 20 Kein Happy Coding Ohne.NET entweder mit C++ –Win32-API –ab VC 7.1 einfacher über ATL-Klassen Oder per WMI –Allerdings kein Hinzufügen von Privilegen, die ein Benutzer nicht hat Mit.NET –Version 1.1 keine Unterstützung –Version 2.0 hat eingebaute Unterstützung, zumindest für ACLs Nur: Viele Klassen, viele Methoden aber kein lösungsgetriebener Ansatz

21 21 ACLs und Privilegien

22 22 Service Accounts Local System ist Default-Account –Mögliches Risiko wegen vieler OS-Privilegen –Sollte nur vergeben werden, wenn der Service das OS- Privileg SeTcbPrivilege zwingend braucht Win32-API-Funktionen wie LogonUser und Konsorten –Unter Windows Server 2003 nicht mehr zwingend notwendig

23 23 Service Accounts Windows XP ohne SP2 –Eigenen Account mit möglichst wenig Rechten und Privilegien anlegen Windows Server 2003, Windows XP SP2 –Nach Möglichkeit Local Service oder Network Service als Account benutzen

24 24 SQL Server – Standardsetup Standardmäßig läuft der SQL Server mit dem lokalen Systemaccount –Eigenen Account anlegen –Gastaccount ist oft ausreichend Standardmäßig sind alle lokalen Administratoren in der Serverrolle sysadmin eingetragen –Lokale Benutzerguppe anlegen und hinzufügen –Lokale Administratoren entfernen Ein Wizard wäre schön...

25 25 SQL Server – Authentication Login Request Integrated Security: SSPI ansonsten : Lookup in master.sysxlogin Kontextwechsel zur Datenbank Zugriffe auf Datenbankobjekte (Tabellen, Stored Procedures,..) Authorization innerhalb der Datenbank

26 26 SQL Server – Login Loginrechte für den Server explizit per eingebauter Stored Procedure vergeben –exec sp_grantlogin ['mydomain\myuser'] –exec sp_denylogin ['mydomain\myuser'] –exec sp_revokelogin ['mydomain\myuser'] Auch global für Windows-Benutzergruppen Bei Problemen in Tabelle sysxlogins nachsehen –sp_helplogins ['username']

27 27 SQL Server – Datenbanklogin Loginrechte für die Datenbank explizit per eingebauter Stored Procedure vergeben –exec sp_grantdbaccess ['mydomain\myusergroup'] –exec sp_denydbaccess ['mydomain\myusergroup'] –exec sp_revokedbaccess ['mydomain\myusergroup'] Auch global für Windows-Benutzergruppen

28 28 SQL Server – DBUser dbo –Ist der Datenbankowner und exisitiert grundsätzlich in jeder Datenbank –Kann auch nicht entfernt werden Guest –Dieser User wird nicht gebraucht –In eigenen Datenbanken löschen!

29 29 SQL Server – Zugriffsrechte Rechte für Datenbankobjekte sollten explizit vergeben werden, insbesonde Tabellen und Stored Procedures –GRANT, DENY,REVOKE –Automatisierbar per Script

30 30 SQL Server – Die Rolle public Vergleichbar mit der Benutzergruppe Everyone unter Windows Ihr gehören automatisch alle Benutzer einer Datenbank an Vermeiden Sie das Vergeben von Rechten für diese Gruppe –Insbesondere Deny ist keine gute Idee ;-)

31 31 SQL Server – Hinweise SQL-Server sollte grundsätzlich nur mit Integrated Security arbeiten –sa nur als Notanker mit strong password Beim Erstellen einer Datenbank sollten grundsätzlich Berechtigungen eingerichtet werden Serverseitiges Installationsprogramm wäre schön...

32 32 SQL Server – DB per MSI aufsetzen

33 33 VS.NET ohne Adminrechte Setup legt eigene Gruppen an –Debugger Users Nur Mitglieder dieser Gruppe können mit Visual Studio.NET debuggen KEINE Zuordnung von OS-Privilegien! Hängt mit dem Machine Debug Manager zusammen –VS Developers User haben Lese- und Schreibzugriff im Root des lokalen IIS-Webserver und können dort WebAnwendungen anlegen Ein Wizard wäre schön...

34 34 Non-Admin Debugging Benutzer können Prozesse, die Ihnen gehören ohne Einschränkung entwanzen Um fremde Prozesse zu debuggen, wird das OS-Privileg SeDebugPrivilege benötigt

35 35 Non-Admin Debugging Problem: Unter.NET kann ein Benutzer nur die Prozesse debuggen, die Ihm gehören. –ASP.NET –Windows Services –Enterprise Services Gilt selbst dann, wenn der Benutzer das OS-Privileg SeDebugPrivilege besitzt! Ausnahme: Admin-Account Ein generelles CLR-Problem, das so nicht umgangen werden kann

36 36 Security Attributes […]Passing NULL as SECURITY_ATTRIBUTES indicates that the OS should select default security setting for the object. The default security settings are set in the process/thread token. If the default settings in the token is not modified by explicit calls to security API functions, only the Administrators group and the user account under which the application is running, have full access to any new kernel object.[…] Auszug aus der aktuellen MSDN-Dokumentation

37 37 Non-Admin Debugging

38 38 Zusammenfassung Standardmäßig keine Administratorrechte für Anwendungen –LUA – Limited User Account Least privileged user access –Annahme full trust vermeiden wo immer es geht Sorgen Sie für saubere Installer –Install, Uninstall, Commit und Rollback implementieren

39 39 Fragen!? Uff...

40 40 Danke für Ihre Aufmerksamkeit

41 41 Über den Referenten Michael Willers ist Senior Architect bei der newtelligence AG. Er berät Projektverantwortliche, Software-Architekten und Entwickler beim Design und der Implementierung von Lösungen für die Microsoft.NET Plattform. Er war zuvor mehrere Jahre technischer Berater bei Microsoft und ist Initiator und Gründer des msdn TechTalk Sie erreichen Ihn per Weblog unter oder über seine Website


Herunterladen ppt "1 Sicherheit oder Praxis? Michael Willers"

Ähnliche Präsentationen


Google-Anzeigen