27
1 Sicherheit oder Praxis? Michael Willers http://staff.newtelligence.net/michaelw/

1 Sicherheit oder Praxis? Michael Willers

Embed Size (px)

Citation preview

Page 1: 1 Sicherheit oder Praxis? Michael Willers

1

Sicherheit oder Praxis?

Michael Willershttp://staff.newtelligence.net/michaelw/

Page 2: 1 Sicherheit oder Praxis? Michael Willers

2

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

Page 3: 1 Sicherheit oder Praxis? Michael Willers

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

Page 4: 1 Sicherheit oder Praxis? Michael Willers

4

Ohne Admin geht‘s 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...

Page 5: 1 Sicherheit oder Praxis? Michael Willers

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

Page 6: 1 Sicherheit oder Praxis? Michael Willers

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!

Page 7: 1 Sicherheit oder Praxis? Michael Willers

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

Page 8: 1 Sicherheit oder Praxis? Michael Willers

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

Page 9: 1 Sicherheit oder Praxis? Michael Willers

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, ...

Page 10: 1 Sicherheit oder Praxis? Michael Willers

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

Page 11: 1 Sicherheit oder Praxis? Michael Willers

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

Page 12: 1 Sicherheit oder Praxis? Michael Willers

12

Security Identifier (SID)• identifiziert Benutzer oder Gruppe• eindeutig in Raum und Zeit (vgl. GUID)• variable Länge

Aufbau: S-1-5-21-....-....-....-....

Revison

NT-Trustee

maschinen-spezifischer Wert

eindeutig innerhalb Maschine

relative Identifier

21 für nicht vordefinierte Trustees

Page 13: 1 Sicherheit oder Praxis? Michael Willers

13

ACLs und ACEsDie Access-Control List ist ein Container für Access-Control Entries (ACEs)

ACL ACEACCESS_MASKSID

1 n

ACCESS_ALLOWED ACCESS_DENIED

Page 14: 1 Sicherheit oder Praxis? Michael Willers

17

ACL, Attributes, Descriptor

Security Attributes

Security Descriptor

Access Control List

Ressourcewird zugeordnet

Page 15: 1 Sicherheit oder Praxis? Michael Willers

18

Prüfen von ACLs

Page 16: 1 Sicherheit oder Praxis? Michael Willers

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

Page 17: 1 Sicherheit oder Praxis? Michael Willers

21

ACLs und Privilegien

Page 18: 1 Sicherheit oder Praxis? Michael Willers

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...

Page 19: 1 Sicherheit oder Praxis? Michael Willers

25

SQL Server – AuthenticationLogin Request

Integrated Security: SSPIansonsten : Lookup in master.sysxlogin

Kontextwechsel zur Datenbank

Zugriffe auf Datenbankobjekte(Tabellen, Stored Procedures,..)

Authorization innerhalb der Datenbank

Page 20: 1 Sicherheit oder Praxis? Michael Willers

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...

Page 21: 1 Sicherheit oder Praxis? Michael Willers

32

SQL Server – DB per MSI aufsetzen

Page 22: 1 Sicherheit oder Praxis? Michael Willers

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...

Page 23: 1 Sicherheit oder Praxis? Michael Willers

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

Page 24: 1 Sicherheit oder Praxis? Michael Willers

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 dasOS-Privileg SeDebugPrivilege besitzt!

• Ausnahme: Admin-Account• Ein generelles CLR-Problem, das so nicht umgangen

werden kann

Page 25: 1 Sicherheit oder Praxis? Michael Willers

37

Non-Admin Debugging

Page 26: 1 Sicherheit oder Praxis? Michael Willers

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

Page 27: 1 Sicherheit oder Praxis? Michael Willers

40

http://staff.newtelligence.net/michaelw

Danke für Ihre Aufmerksamkeit