Neue Security Features in AIX 6.1 Andreas Leibl RSTC Ltd, Bristol, UK andreas.leibl@rstc-ltd.co.uk (c) 2008 IBM Power Systems (System p, AIX und Linux) Aktuell 2008, Wiesbaden Andreas Leibl, RSTC Ltd IBM Power Systems (System p, AIX und Linux) Aktuell 2008, Wiesbaden
Agenda Unix-Security klassisch Rollenspiele mit RBAC (Role Based Access Control) Geheimnisse gut gehütet: Encrypted Filesystem (efs) Vertrauen ist gut, Checksummen sind besser: Trusted Execution Zertifizierte Sicherheit: Trusted AIX Maschinelle Sicherheit: AIXpert
Der klassische Ansatz und seine Probleme Berechtigungen füruser/ Group/World - wenig granular Erweiterung mit ACLs (Access Control Lists) möglich Kein Schutz vor root Verschlüsselung nur explizit durch den Benutzer (PGP o.ä.) Kein Schutz vor modifizierten Programmen Unsichere Dienste öffnen Einbruchstore Privilege Escalation durch Pufferüberläufe und Fehladressierungen bedrohen auch ansonsten sichere Systeme
Verbesserungen in AIX 6.1 Feinere Granularität der Berechtigungen: RBAC Allmachtsende: root-user abschalten Verschlüsselung auf Datei(system)ebene: efs Schutz vor ungewollten Modifikationen: Trusted Execution Vielschichtige Sicherheit: Trusted AIX Systemabsicherung: AIXpert
Role Based Access Control (RBAC) AIX 4.2.1: (Legacy) RBAC Anpassung der Kommandos notwendig SUID-Bit weiter benötigt Unvollständige Trennung AIX 6.1: Enhanced RBAC Feingranulare Rechte und Rollen Keine Codeänderung notwendig LDAP-Support für benutzerdefinierte Autorizations
RBAC Grundbegriffe Autorizations Schlüssel zur Ausführung eines Kommandos Hierarchische Namensräume (bis zu 9 Ebenen/63 Zeichen) Roles Schlüsselbund aus verschiedenen Authorizations Müssen explizit aktiviert werden (Defaultrollen können definiert werden) Kernel Security Tables Kernel Level, die aktive Security Policy Änderungen müssen aktiv in die KST gebracht werden (setkst-kommando)
Vordefinierte Rollen ISSO: Information System Security Officer Definiert Security Policies Kann Passwörter setzen Netzwerk- und Device- Administration, etc. SA: System Administrator z.b. User-Admin (ohne Passwörter) z.b. Filesystem- und SW-Management, etc. SO: System Operator z.b. Shutdown, Backup, etc.
Rollenzuweisung 1/3 # lsattr -El sys0 -a enhanced_rbac enhanced_rbac true Enhanced RBAC Mode True # # which mount /usr/sbin/mount # lssecattr -c -a accessauths /usr/sbin/mount /usr/sbin/mount accessauths=aix.fs.manage.mount # # lsrole ALL grep aix.fs.manage.mount FSAdmin authorizations=aix.fs.manage.change,aix.fs.manage.create,aix.fs. manage.debug,aix.fs.manage.defrag,aix.fs.manage.dump,aix.fs.mana ge.list,aix.fs.manage.mount,aix.fs.manage.quota,aix.fs.manage.re cover,aix.fs.manage.remove,aix.fs.manage.snapshot,aix.fs.manage. unmount,aix.fs.object,aix.lvm rolelist= groups= visibility=1 screens=* dfltmsg=file System Administration msgcat=role_desc.cat msgnum=7 msgset=1 auth_mode=invoker id=7 #
Rollenzuweisung 2/3 # mkuser -a rbac1 # lsuser rbac1 rbac1 pgrp=staff groups=staff... roles= # chuser "roles=fsadmin" rbac1 # lsuser rbac1 rbac1 id=12 pgrp=staff groups=staff... roles=fsadmin # su - rbac1 $ rolelist -a FSAdmin aix.fs.manage.change aix.fs.manage.create aix.fs.manage.debug aix.fs.manage.defrag aix.fs.manage.dump aix.fs.manage.list aix.fs.manage.mount... aix.fs.manage.unmount aix.fs.object aix.lvm
Rollenzuweisung 3/3 $ rolelist -e rolelist: 1420-062 There is no active role set. $ mount /aixupdate mount: 0506-314 Write permission is required to mount over /aixupdate. $ swrole FSAdmin rbac1's Password: $ rolelist -ea FSAdmin $ mount /aixupdate $ aix.fs.manage.change aix.fs.manage.create aix.fs.manage.debug aix.fs.manage.defrag aix.fs.manage.dump aix.fs.manage.list aix.fs.manage.mount...
Praktische Anwendung Delegation von Aufgaben z.b. an weniger qualifiziertes Personal an externe Mitarbeiter / andere Abteilungen mit beschränktem Rechtebedarf, z.b. Datenbank-Admin Implementierung von Sicherheitsrichtlinien, z.b. Separation of Duties Durchsetzung eigener Verfahren/Richtlinien durch Scripte und Rollen, z.b. Überprüfung von Namenskonventionen oder Anfrage an externe Systeme
Eigene Rollen 1/3 # mkauth DoMagic # lsauth DoMagic DoMagic id=10014 # mkrole authorizations=domagic worlddominationinc.emperor.magic # lsrole worlddominationinc.emperor.magic worlddominationinc.emperor.magic authorizations=domagic... # # mkauth DoRule # lsauth DoRule DoRule id=10015 # mkrole authorizations=dorule worlddominationinc.emperor.rule # lsrole worlddominationinc.emperor.rule worlddominationinc.emperor.rule authorizations=dorule... # # mkrole rolelist="worlddominationinc.emperor.magic, worlddominationinc.emperor.rule" worlddominationinc.emperor # lsrole worlddominationinc.emperor worlddominationinc.emperor authorizations= rolelist=worlddominationinc.emperor.magic,worlddominationinc.empe ror.rule...
Eigene Rollen 2/3 # chuser roles=fsadmin,worlddominationinc.emperor rbac1 # lsuser rbac1 rbac1 id=12 pgrp=staff groups=staff home=/home/rbac1... host_last_login=tardis unsuccessful_login_count=0 roles=fsadmin,worlddominationinc.emperor # # lssecattr -c -a accessauths /usr/bin/do_magic 1420-012 "/usr/bin/do_magic" does not exist in the privileged command database. # setsecattr -c accessauths=domagic /usr/bin/do_magic # lssecattr -c -a accessauths /usr/bin/do_magic /usr/bin/do_magic accessauths=domagic # # setkst Successfully updated the Kernel Authorization Table. Successfully updated the Kernel Role Table. Successfully updated the Kernel Command Table. Successfully updated the Kernel Device Table. #
Eigene Rollen 3/3 $ id uid=12(rbac1) gid=1(staff) $ ls -l /usr/bin/do_magic -rwxr--r-- 1 root system 42 Apr 22 09:05 /usr/bin/do_magic $ cat /usr/bin/do_magic echo "Do you believe in magic???" $ $ $ rolelist -e rolelist: 1420-062 There is no active role set. $ /usr/bin/do_magic ksh: /usr/bin/do_magic: 0403-006 Execute permission denied. $ $ $ swrole FSAdmin,worlddominationinc.emperor rbac1's Password: $ /usr/bin/do_magic Do you believe in magic??? $
root ausschalten Mit Enhanced RBAC kann der root-user abgeschaltet werden User-ID 0 hat keine besonderen Rechte mehr Kein Login oder su auf root möglich root bleibt Eigentümer von Dateien Benutzer mit der Rolle isso kann den root-user aus- und wieder einschalten (Reboot notwendig) Genaue Planung notwendig!
Vertraulichkeit: efs efs: Encrypted Filesystem Basiert auf dem Enhanced JFS (jfs2) Benötigt RBAC und CliC (Cropty Library in C, Teil des Expansion Pack) Verschlüsselung von Nutzdaten auf Dateiebene (jede Datei hat ihren eigenen Schlüssel) Kann pro Dateisystem oder Verzeichnis aktiviert werden
Kryptografie im efs Starke Kryptografie Keystores für die Benutzer- und Gruppenschlüssel (Asymmetrische RSA- Schlüssel 1024-4096 Bit) Schnelle symmetrische Verschlüsselung von Dateien (AES 128-256 Bit) Keystores sind passwortgeschützt (Default: Loginpasswort)
efs Keystores Keystores werden beim ersten Login eines Benutzers angelegt Wenn Keystorepasswort gleich dem Loginpasswort ist wird der Keystore automatisch beim Login geöffnet Das passwd-kommando ändert auch das Keystorepasswort Benutzer kann dem Keystore ein eigenes Passwort geben
efs aktivieren Aktivierung System und root Keystore # efsenable -a Enter password to protect your initial keystore: Enter the same password again: # # ls -la /var/efs/* -rw-r--r-- 1 root system 0 Apr 21 11:09 /var/efs/efsenabled /var/efs/efs_admin: -rw------- 1 root system 0 Apr 21 11:08.lock -rw------- 1 root system 1709 Apr 21 11:08 keystore /var/efs/groups: -rw------- 1 root system 0 Apr 21 11:09.lock drwx------ 2 root system 256 Apr 21 11:09 security /var/efs/users: -rw------- 1 root system 0 Apr 21 11:08.lock drwx------ 2 root system 256 Apr 21 11:09 root #
efs-aktivierung im Filesystem Muss pro Filesystem aktiviert werden. Nachträglich mit chfs oder beim Anlegen mit crfs # chfs -a efs=yes /e1 # # mklv -t jfs2 -y e2lv rootvg 1 # crfs -v jfs2 -d e2lv -m /e2 -a efs=yes File system created successfully. 32560 kilobytes total disk space. New File System size is 65536 # # lsfs -q /e2 Name Nodename Mount Pt VFS Size Options Auto Accounting /dev/e2lv -- /e2 jfs2 65536 -- no no (lv size: 65536, fs size: 65536, block size: 4096, sparse files: yes, inline log: no, inline log size: 0, EAformat: v2, Quota: no, DMAPI: no, VIX: yes, EFS: yes, ISNAPSHOT: no)
efs im Einsatz Verschlüsselung von Dateien durch Benutzer Auch root kann ohne explizite Erlaubnis die Datei nicht entschlüssen $ efsmgr -e /e1/efstest1/my.secret $ ls -lu /e1/efstest1/my.secret -rw-r--r--e 1 efstest1 system 880 Apr 21 11:42 /e1/efstest1/my.secret $ # jetzt als root: # cd /e1/efstest1 # ls -lau total 16... -rw-r--r--e 1 efstest1 system 880 Apr 21 11:42 my.secret # cat my.secret cat: 0652-050 Cannot open my.secret. # cp my.secret /tmp cp: my.secret: Cannot find the requested security attribute. #
efs und Backup/Restore 1/2 Das backup-kommando wurde angepasst um verschlüsselte Dateien korrekt zu sichern Backup verschlüsselt und unverschlüsselt möglich Zusätzlich zu den verschlüsselten Dateien/ Filesystemen müssen auch die Keystores von Benutzern und Gruppen gesichert werden Passwörter für Keystores können in der Zukunft ein Problem darstelllen
efs und Backup/Restore 2/2 Keystores halten aktuelle und vorherige Benutzer- und Gruppenschlüssel vor Neue Keystores können damit früher verschlüsselte Dateien öffnen (z.b. aus dem Backup) Alte Schlüssel können gelöscht werden (gefährlich!) Alte Keystores können noch ältere Passwörter haben (z.b. altes Login- Passwort)
Trusted Execution Ersatz für TCB (Trusted Computing Base), die aber weiter verfügbar ist Bietet statische und Laufzeitprüfungen Checksummen garantieren Integrität der Programme und Bibliotheken in der TSB (Trusted Signature Base) Muss nicht zum Installationszeitpunkt gewählt werden Checksummen können signiert werden Für Programme der AIX-Basisinstallation liegen Signaturen der IBM vor Starke kryptographische Methoden, in Stufen wählbar Software von Fremdherstellern kann in die TSB aufgenommen werden
Trusted Execution Überprüfung von: Programmen (Binaries) Shellskripte Shared Libraries Kernel Extensions Einschränkung auf vertrauenswürdige Pfade für: Programme und Skripte (TEP, Trusted Execution Path) Libraries (TLP, Trusted Library Path) Shells (TSH, Trusted Shell)
TE: Statische Überprüfung Statische Prüfung: TE Auditing Mode / System Integrity Check Kann jederzeit (z.b. über cron) mit dem trustchk-kommando ausgeführt werden Differenzen bei Berechtigungen werden behoben Bei entdeckten Änderungen werden alle Rechte entfernt, d.h. das Programm/die Bibliothek/Kernel Extension ist nicht mehr ausführbar
TE: Laufzeitprüfung Laufzeitprüfung: Runtime Integrity Check Programme/Skripte/Shared Libraries/ Kernel Extensions werden vor dem Laden geprüft Bei unerlaubten Änderungen wird die Datei nicht geladen und damit nicht ausgeführt Checksummen werden nur beim Laden von Platte berechnet, d.h. kein Overhead bei nochmaliger Verwendung
Trusted AIX Besonders hohe Sicherheit ab der Installation Setzt zwingend Enhanced RBAC voraus root-user ist deaktiviert, die höchste Autorität sind Benutzer mit der isso-rolle (Information Security Officer) Bietet zusätzliche Sicherheitsmechanismen um Vertraulichkeit und Integrität zu garantieren
Trusted AIX Installation Trusted AIX muss bei der Installation gewählt werden Nur Preservation Installation oder Neuinstallation werden unterstützt, keine Migration Installation
Trusted AIX Multi Level Security Multi Level Security: zusätzliche Berechtigungsschicht, trennt Zugriff auf Daten nach Vertraulichkeit Mandatory Access/ Integrity Control: das System erzwingt Zugang oder Verweigerung von Daten, nicht mehr der Benutzer, mit Dateiberechtigungen Sensitivität von Informationen: bis zu 32k Ebenen (Default 4) Der Eigentümer einer Datei kann die MAC- Einstufung nicht ändern Der Eigentümer einer Datei kann keinen Zugriff außerhalb der Sicherheitseinstufung gewähren
Prozesse mit entsprechender Berechtigung können auf diese Verzeichnisse zugreifen, d.h. den Inhalt sehen Partitionierte Verzeichnisse Verzeichnisse können Sensitivitätsbereiche haben Zugriff auf Dateien oberhalb der eigenen Berechtigung ist aber nicht möglich In einem partitionierten Verzeichnis kann ein Prozess höherpriorisierte Dateien nicht einmal mehr sehen Partitionierte Verzeichnisse werden mit dem pdmkdir- Kommando angelegt
AIXpert: der AIX Sicherheitsexperte Eingeführt in AIX 5.3 TL05. Zweite Generation in AIX 6 Teil des Basis-CD-Satzes ab AIX 6.1 Neue Features
AIXpert: neue Features Secure by Default Installation Verteilte Sicherheitsrichtlinien mit LDAP Benutzerdefinierte Sicherheitsrichtlinien im XML-Format File Permissions Manager (fpm) zur Verwaltung (lies: Entfernung) von setuid/ setgid-bits Checks für Passwortsicherheit und sicheres ftp (FileTransfer Protocol)
AIXpert: Sicherheitsstufen Vordefinierte Sicherheitsstufen: niedrig/mittel/hoch benutzerdefiniert Sox-Cobit Änderungen können rückgängig gemacht werden (Undo-Funktion) Einhaltung der Sicherheitsstufen kann automatisch geprüft werden
Sichere Installation AIX 5.3 Optionen bei der Installation: Trusted Computing Base (TCB) CAPP/EAL4+ Neu in AIX 6.1 (Installation): Trusted AIX LSPP/EAL4+ Secure by Default (SbD)
Secure by Default Standardansatz: Installation vieler Dienste/Software Nachträgliche Absicherung des Systems, z.b. mit AIXpert Secure by Default: Minimale Installation zur Vermeidung von Sicherheitslücken Unsichere Dienste (z.b. rsh) werden nicht installiert
Weiterführende Infos Redbook: AIX V6 Advanced Security Features Introduction and Configuration SG24-7430-00 http://www.redbooks.ibm.com/abstracts/sg247430.html?open AIX Version 6.1 Security SC23-6603-00 AIX 6.1 Security Features Workshop (AUS2D1DE) http://www-05.ibm.com/services/learning/de/ta-iris.nsf/(extcoursenr)/aus2d1de