Solaris 10 Security - c0t0d0s0.org · Solaris 10 11/06 ist evaluiert nach ... 14. 15 EAL 4+ ... Ein...

Preview:

Citation preview

Solaris 10 Security

Jörg MöllenkampSenior Systems Engineer

Sun Microsystems

2

Was ist Sicherheit?

3

Die Sicherheit einer Installation hängt vonvielen Faktoren ab, und nur einer ist

das Betriebsystem ...

4

Sicherheit ist ein Kompromiss ... ein Balanceakt ...

5

Ein gutes und sicheres Betriebsystemstellt Tools und Mechanismen bereit

mit denen ein Administatorsein System schnell und einfach absichern kann

ohne den normalen Nutzer mehr als nötig einzuschränken.

6

Was nutzt das tollste Tool,wenn man damit kaum umgehen kann?

7

<sarkasmus>Oder warum steht bei vielen Anleitungen gleich am Anfang der SElinux-Anleitung,

wie man es wieder ausschaltet ?</sarkasmus>

8

Okay ... zurück zu Solaris ...

9

Aus Marketingsicht würde man mit der Common Criteria Evaluierung anfangen

10

Okay ...

11

Common Criteria

12

Ja ... haben wir auch ...

13

EAL 4+Role Based Access Control Protection Profile

Conditional Access Protection Profile

Solaris 10 11/06 ist evaluiert nach ...

14

15

EAL 4+

Solaris 10 + Trusted Extensions ist in Kürze evaluiert nach ...

Label Security Protection Profile

Role Based Access Control Protection ProfileConditional Access Protection Profile

16

17

Interessanterweise wissen nurwenige was es wirklich mit einerCommon Criteria Evaluierung

auf sich hat ....

18

Im Rahmen der CC-Evaluierungwird nicht das Produkt zertifziziert.

19

Wofür steht nun die CC-Evaluierung?

20

Sehr böse Zungen behaupten:Die Zahl nach EAL steht für die Anzahl der Nullen,

die man an 100 anfügen muss, umdie Zertifizierung zu bekommen ... ;)

21

Missverständnis Nummer 1

22

Im Rahmen der CC-Evaluierungwird nicht das Produkt zertifziziert.

23

Es wird die Evaluierung einer bestimmten Konfiguration eines bestimmten Produkts unter

bestimmten Umständen hinsichtlich der Einhaltung eines bestimmten Regelwerks zertifiziert. Die

Evaluierung erfolgt durch eine bestimmte Vorgehensweise!

24

Evaluierende Stelle und zertifizierende Stelle müssen nicht identisch sein - bei Solaris 11/06:

Evaluierende StelleCommon Criteria Evaluation FacilityCGI Information Systems & Management Consultants Inc.

Zertifizierende StelleCommunications Security EstablishmentCertification Body

25

26

Missverständnis Nummer 2

27

„Es reicht, denEvaluation Assurance Levelin den Raum zu werfen ...“

28

Die Nennung des Evaulation Assurance Levels (EAL)

sagt nichts über die Sicherheit des Systems aus.

29

Was ist also wichtig?

30

Okay .... eine Einführung in die Begrifflichkeiten

von Common Criteria ...

31

Am Anfang war der Evaluierungsgegenstand ...

32

Securityspeak für das was evaluiert werden soll

33

Also bei der Common Criteria Evaluierung von Solaris + TX

Solaris 10 11/06*

Sternchenschrift:A Common Criteria Certificate was awarded to Sun Microsystems on June 11, 2008 by the Canadian Common Criteria Evaluation and Certification Scheme.

Solaris 10 11/06 with Trusted Extensions is an extension to the proven Solaris 10 security model. It utilizes User and Process Rights Management, Solaris Containers, file systems, and networking and doesn't require a new or separate kernel. Best of all, it doesn't require ISVs to requalify their applications to run them with sensitivity labels. Because it's an extension to the Solaris 10 OS's security policy, Solaris 10 11/06 with Trusted Extensions technology is flexible and quick to deploy: You can add new applications, new users, and more, very quickly, without extensive analysis of each application — and without the need to write complex, error-prone security policies that require a system reboot.

Security Features in the Evaluated Configuration include:

* MAC and DAC - including ACLs; * Least privilege with fine-grained privileges for all policies; * Trusted networking and trusted NFS; * Identification and authentication - including password generation; * Roles for separating user and administration capabilities; * Rights profiles for grouping commands, applications, and authorizations and assigning to users or roles; * Centralized administration with easy-to-use graphical tools; * Auditing which records the actions of users and roles as well as non-attributable events; * Sun's Common Desktop Environment (CDE) and Sun Java Desktop System Multilevel windowing environment with trusted path for invoking trusted commands and applications.

Solaris 10 11/06 with Trusted Extensions has being been certified on:

* Workstations and servers using an UltraSPARC III, UltraSPARC IIIi, UltraSPARC II, UltraSPARC IIe, UltraSPARC IIi, or UltraSPARC T1 processor in single or multiple configuration. * The Netra 1280 and Sun Fire mid-frame and high-end family offering Dynamic Reconfiguration and Multiple Domaining using an UltraSPARC III, UltraSPARC III Cu (copper based) or UltraSPARC IV processor. * AMD based processor systems: AMD Opteron 800, 1200, and 8000 series; AMD-64 100, 200, and 2000 series; AMD dual-core 1200 and 2000 series; AMD Opteron 285; and, Intel Xeon.

The Solaris 10 11/06 with Trusted Extensions Certified software consists of the Operating Environment and a subset of patches which have been reviewed to ensure that their application introduces no new security vulnerabilities.

34

Man muss wissen,welche gegen welche Protection Profiles überprüft wurden !

35

Ein Protection Profile ist eine Menge von vordefinierten Anforderungen,

gegen die ein Evaluierungsgegenstandgeprüft wird.

36

Das Protection Profile

ist sozusagen ein Anforderungstemplate.

37

Man kann ein Protection Profile verwenden ...... man muss es aber nicht.

38

... für manches existiert gar kein Protection Profile.

39

Für Virtualisierung existieren keine beispielsweise Protection Profiles ...

40

Dann muss man das Security Target selber beschreiben.

41

EAL 4+ für VMware ESX basiert auf einem selbstgeschriebenen

Security Target.

42

Security Target ???

43

http://www.sun.com/software/security/securitycert/

44

Das Security Target beschreibt, was mit einem Evaluierungsgegenstand gemacht wird

um die Anforderungen des Protection Profiles zu erfüllen.

45

Und nur fuer das im Security Target beschriebene System gilt auch die Zertifizierung.

nur auf der evaluierten Hardwarenur mit den evaluierten Dienstennur mit den evaluierten Patches

nur in der evaluierten Konfiguration

46

Den nur was evaluiert wird, ist auch Bestandteil der Zertifizierung!

47

Ja, aber was sagt also nun EAL 4+ aus ?

48

EAL

Evaluation Assurance Level

49

Der Evaluation Assurance Level sagt mit welchen Methoden

ein Evaluierungsgegenstand geprüft wird.

50

EAL1: Functionally Tested EAL2: Structurally Tested EAL3: Methodically Tested and Checked EAL4: Methodically Designed, Tested and Reviewed EAL5: Semiformally Designed and Tested EAL6: Semiformally Verified Design and Tested EAL7: Formally Verified Design and Tested

Hersteller kommt zum Meeting ...

Evaluierung durch einenmathematischen Beweis ...

51

In der Praxis heisst das ...

52

Überprüft man all das, kann herauskommen,das eine EAL Evaluierung nicht ganz so toll ist,zunächst gedacht ...

53

Schönes „schlechtes“ Beispiel:

Die EAL4+ Zertifizierung eines Markbegleiters im Bereichder unixoiden Betriebsysteme ...

54

Es wurde unter anderem auch die Clientvariante getestet ...

55

Aus der Security Target Definition der Evaluierung:

Aus dem Evaluation Report der Evaluierung:

56

Ein Client ohne graphischen Desktop ?

57

Meine Empfehlung daher:

Sehr genau die Evaluierungunterlagen lesen!

58

Schönes „sehr schlechtes“ Beispiel:

Die Evaluierung für Windows NTvor vielen Jahren ... die nur galt, wenndas System nicht an Netzwerkeangeschlossen war.

59

„The CAPP provides for a level of protection which is appropriate for an assumed non-hostile and well-managed user community requiring protection against threats of inadvertent or casual attempts to breach the system security. The profile is not intended to be applicable to circumstances in which protection is required against determined attempts by hostile and well funded attackers to breach system security. The CAPP does not fully address the threats posed by malicious system development or administrative personnel.“

Im Security Target fuer Windows NT stand ...

Häng das System nicht ans Internet, lass keine Email drauf laufen, und wenn du dem Softwareentwickler nicht 100% vertraust, installiere nicht dessen Programme. Und wenn einer deiner Mitarbeiter was gegen dich hat, bist Du eh im Eimer. Gegen einen ausreichend zielgesteuerten Angreifer hast Du eh keine Chance ...

Bedeutet in Echtsprache ...

60

Bei Solaris beinhaltet das Security Target von den ACLs ueber RBAC bis hin zu Userdatenbanken im LDAP inclusive eingeschalteten Desktop eine Vielzahl von Features.

61

Bei den Trusted Solaris bzw. den Trusted Extension berücksichtigt die Evaluierung sogar die Berücksichtigung von Geheimhaltungsstufen beim Drucken, bei Übertragung von Daten via NFS....

... sogar beim Cut n´ Paste zwischen Fenstern mit Daten unterschiedlicher Geheimhaltung.

62

64

Und mal ganz ehrlich ....

65

Eine erhalteneCertification sagt an sich auch noch wenig ueber

die Sicherheit eines Systems aus ...

66

Viele Sicherheitsprobleme habenihren Ursprung vor der Tastatur.

67

Securityfeaturesin Solaris

68

Daher werde ich in meinem Vortragmich jetzt eher auf praktische Dinge verlagern ...

69

Features, die es erleichtern ein Systemsicherer zu machen...

70

Ich kann in 60 Minuten nur eine kleine Auswahl streifen ...

71

Secure by default

72

Solaris hat den Ruf, in der StandardKonfiguration zuviele Dienste im Netz zur Verfügung zu stellen ...

73

„Portscan“ wurde gestartet …

Port Scanning host: 10.211.55.3

Open TCP Port: 21 ftp Open TCP Port: 22 ssh Open TCP Port: 23 telnet Open TCP Port: 25 smtp Open TCP Port: 79 finger Open TCP Port: 111 sunrpc Open TCP Port: 513 login Open TCP Port: 514 shell Open TCP Port: 587 submission Open TCP Port: 898

„Portscan“ wurde beendet …

74

Das dem so ist, hängt mit der Binärkompatibilitätsgarantie

von Solaris zusammen ...

75

Ein Programm könnte daraufangewiesen sein, das der Dienst

genauso wie in alten Versionen offen verfügbar ist.

76

Secure by Default bedeutet:Vom Netz aus ist nur der

SSH-Port erreichbar.

77

# netservices open

Will man den Zustand vor „Secure by default“

78

# netservices limited

Und so macht man das System wieder zu ...

79

Secure by Default ist heutevoreingestellt bei der Installation.

80

„Portscan“ wurde gestartet …

Port Scanning host: 10.211.55.3

Open TCP Port: 22 ssh Open TCP Port: 111 sunrpc „Portscan“ wurde beendet …

Der Auslieferungszustand sieht heute so aus ...

81

Die meisten Dienste sind weiterhin aktiv ...

82

Sie horchen nur nicht mehr auf externe

Netzwerkinterfaces...

83

(aus Glen Brunettes Solaris Security Deep Dive)

84

RBAC

85

Das herkömmliche Rechtemodellist zweigeteilt ...

86

$kann wenig

87

#kann alles

88

Das ist nicht immer wirklich optimal ....

89

Herausforderung: Manche Dinge in einem Unix-Rechner erfordern

root-rechte

90

Problem:Will man jedem Admin wirklich das Password

für den Root-Account geben ?

91

Ein Admin, der eigentlich nur für das Hinzufügen von Druckernverantwortlich ist, kann auch das

Auditing ausschaltenam Cluster rumspielen

Netzwerkinterfaces umkonfigurieren

92

Dieses Problem ist so alt wie Unix selbst.

93

1980 wurde daher sudo erfunden.

94

sudo steht übrigens nicht für

super user do

95

sudo steht für

substitute user do

96

Solaris löst das Problem etwas anders ...

97

RBAC=

Role based access control

98

Als Admin hat man immer eine Rolle.

99

Man ist normaler User, aber auch:Printer Admin

OperatorUser Admin

Filesystem Admin

100

Ein Rolle hat immer ein Rollenprofil ...

101

Das Rollenprofil legt fest:

- welche Programme die Rolle ausführen kann- welche Authorisations eine Rolle hat

102

Eine oder mehrere Rollenprofilewerden einer Rolle zugewiesen.

103

Eine Rolle ist technisch eine Nutzeraccountin den man sich nicht direkt einloggen kann.

104

Man loggt sich als normaler Nutzer ein ...

105

... und nimmt eine Rolle an.

106

Nur so lange man diese Rolle angenommen hat,hat man die Sonderrechte dieser Rolle.

107

Hat man seine Arbeit erledigt, dann verlässt man die Rolle und

ist wieder normaler User.

108

Beispiel:

$ /usr/sbin/share /export/home/jmoekampCould not share: /export/home/jmoekamp: no permission$ grep "share" /etc/security/exec_attr File System Management:suser:cmd:::/usr/sbin/dfshares:euid=0File System Management:suser:cmd:::/usr/sbin/share:uid=0;gid=rootFile System Management:suser:cmd:::/usr/sbin/shareall:uid=0;gid=rootFile System Management:suser:cmd:::/usr/sbin/sharemgr:uid=0;gid=rootFile System Management:suser:cmd:::/usr/sbin/unshare:uid=0;gid=rootFile System Management:suser:cmd:::/usr/sbin/unshareall:uid=0;gid=root[...]$ su rootPassword: # usermod -P'File System Management' jmoekampUX: usermod: jmoekamp is currently logged in, some changes may not take effect until next login.# exit$ pfexec /usr/sbin/share /export/home/jmoekamp$ /usr/sbin/share- /export/home/jmoekamp rw ""

109

Bisher klingt das ganze nach einem etwas erweiterten

sudo.

110

Sun RBAC kennt zusätzlichdas Konzept

der Authorizations.

111

Authorisations löst folgende Frage:Wie kann man einem Nutzer

nur erlauben nur bestimmte Funktionen eines Programms auszuführen?

112

Wichtig: Der Kernel erzwingt hier nichts ...

113

Das Beachten von Authorisations ist Sache der Applikation.

114

Allerdings unterstützen viele Programmedes Solaris Operating Environments

Authorisations.

115

Der Kernel stellt nur Funktionen bereit,um einer Applikation mitzuteilen,

welche Authorisations eine Rolle hat.

116

Auch in einem frisch installierten Solariswerden Authorisations genutzt.

117

Jeder Nutzer hat die Authorisation:solaris.device.cdrw.*

Dadurch kann jeder Nutzer CD lesen und beschreiben ...

118

Stellen Sie sich das wie ein Werkzeugschrank mit einer Bohrschraubmaschine vor.

119

Die Rolle ist der Schlüssel zum Werkzeugschrank

120

Mit der Authorisation überprüft der Bohrschrauberob der Handwerker authorisiert ist:

- ein Loch zu bohren- Schrauben aus der Wand zu drehen- den Bohrer oder das Bit zu wechseln

121

Wozu man das braucht ?

Wenn Sie verhindern wollen, das jemand wieder die Stromleitung anbohrt, aber sie der Person schon erlauben wollen, Schraubenaus der Wand zu holen ...

122

Um auf Solaris zurück zu kommen ...

Sie wollen möglicherweise nicht jedem Adminjede Funktion eines Tools zugänglich machen.

123

Least Privileges

124

There is no root!

125

Okay, es gibt nocheinen User root mit der UserID 0 der alle Rechte eines root hat ...

126

Ja .... hängt auch wieder mit derBinärkompatibilitätsgarantie

zusammen ...

127

Sie können auch jedem anderen Nutzerroot-gleiche Rechte geben ...

128

Aber das muss so nicht mehr sein ...

129

Es ist nur noch aus Kompatibilitätsgründen so!

130

Solaris 10 arbeitet mit Priviliegien

131

contract_event contract_observer cpc_cpu dtrace_kernel dtrace_proc dtrace_user f i le_chown f i le_chown_self file_dac_execute file_dac_read file_dac_search file_dac_write file_downgrade_sl file_flag_set file_link_any file_owner file_setid file_upgrade_sl graphics_access graphics_map ipc_dac_read ipc_dac_write ipc_owner net_bindmlp net_icmpaccess net_mac_aware net_privaddr net_rawaccess proc_audit proc_chroot proc_clock_highres proc_exec proc_fork proc_info proc_lock_memory proc_owner proc_priocntl proc_session proc_setid proc_taskid proc_zone sys_acct sys_admin sys_audit sys_config sys_devices sys_ip_config sys_ipc_config sys_linkdir sys_mount sys_net_config sys_nfs sys_res_config sys_resource sys_smb sys_suser_compat sys_time sys_trans_label win_colormap win_config win_dac_read win_dac_write win_devices win_dga win_downgrade_sl win_fontpath win_mac_read win_mac_write win_selection win_upgrade_sl

Es gibt mittlerweile eine Vielzahl von Privileges

132

Mit Solaris Privileges kann man auf zwei

Arten umgehen.

133

Man startet mit dem Service Management Framework

einen Service mit einem

eingeschränkten oder erweiterten SatzPrivilegien

134

Oder die Applikation macht das selber ...

usr/src/lib/print/libpapi-lpd/common/lpd-port.c:

135

Oder die Applikation macht das selber ...

usr/src/lib/print/libpapi-lpd/common/lpd-port.c:

136

Nehmen wir als Beispiel den Apache ...

137

Frage in die Runde:Warum muss Apache mit root-rechten gestartet werden?

# ps -ef | grep "apache" | grep -v "grep"webservd 1123 1122 0 19:11:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k startwebservd 1125 1122 0 19:11:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k startroot 1122 1 1 19:11:50 ? 0:00 /usr/apache2/2.2/bin/httpd -k startwebservd 1128 1122 0 19:11:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k startwebservd 1127 1122 0 19:11:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k startwebservd 1126 1122 0 19:11:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k startwebservd 1124 1122 0 19:11:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k start

138

Richtig:Port 80 ist ein privilegierter Port ...

139

Man brauchte bisher root-Rechte, um diesesPrivileg zu erlangen...

140

Ich kann unter Solaris 10das Privileg an User vergeben,sich an priviligierte Ports zu binden!

141

contract_event contract_observer cpc_cpu dtrace_kernel dtrace_proc dtrace_user f i le_chown f i le_chown_self file_dac_execute file_dac_read file_dac_search file_dac_write file_downgrade_sl file_flag_set file_link_any file_owner file_setid file_upgrade_sl graphics_access graphics_map ipc_dac_read ipc_dac_write ipc_owner net_bindmlp net_icmpaccess net_mac_aware net_privaddr net_rawaccess proc_audit proc_chroot proc_clock_highres proc_exec proc_fork proc_info proc_lock_memory proc_owner proc_priocntl proc_session proc_setid proc_taskid proc_zone sys_acct sys_admin sys_audit sys_config sys_devices sys_ip_config sys_ipc_config sys_linkdir sys_mount sys_net_config sys_nfs sys_res_config sys_resource sys_smb sys_suser_compat sys_time sys_trans_label win_colormap win_config win_dac_read win_dac_write win_devices win_dga win_downgrade_sl win_fontpath win_mac_read win_mac_write win_selection win_upgrade_sl

Die Priviliegien eines Root-Users

142

contract_event contract_observer cpc_cpu dtrace_kernel dtrace_proc dtrace_user f i le_chown f i le_chown_self file_dac_execute file_dac_read file_dac_search file_dac_write file_downgrade_sl file_flag_set file_link_any file_owner file_setid file_upgrade_sl graphics_access graphics_map ipc_dac_read ipc_dac_write ipc_owner net_bindmlp net_icmpaccess net_mac_aware net_privaddr net_rawaccess proc_audit proc_chroot proc_clock_highres proc_exec proc_fork proc_info proc_lock_memory proc_owner proc_priocntl proc_session proc_setid proc_taskid proc_zone sys_acct sys_admin sys_audit sys_config sys_devices sys_ip_config sys_ipc_config sys_linkdir sys_mount sys_net_config sys_nfs sys_res_config sys_resource sys_smb sys_suser_compat sys_time sys_trans_label win_colormap win_config win_dac_read win_dac_write win_devices win_dga win_downgrade_sl win_fontpath win_mac_read win_mac_write win_selection win_upgrade_sl

Rechte eines normalen Users ...

Das ist der sogenannte basic-Set von Privilegien.

143

Um noch mal auf das Beispieldes Apache-Servers zurueck zu kommen ...

144

contract_event contract_observer cpc_cpu dtrace_kernel dtrace_proc dtrace_user f i le_chown f i le_chown_self file_dac_execute file_dac_read file_dac_search file_dac_write file_downgrade_sl file_flag_set file_link_any file_owner file_setid file_upgrade_sl graphics_access graphics_map ipc_dac_read ipc_dac_write ipc_owner net_bindmlp net_icmpaccess net_mac_aware net_privaddr net_rawaccess proc_audit proc_chroot proc_clock_highres proc_exec proc_fork proc_info proc_lock_memory proc_owner proc_priocntl proc_session proc_setid proc_taskid proc_zone sys_acct sys_admin sys_audit sys_config sys_devices sys_ip_config sys_ipc_config sys_linkdir sys_mount sys_net_config sys_nfs sys_res_config sys_resource sys_smb sys_suser_compat sys_time sys_trans_label win_colormap win_config win_dac_read win_dac_write win_devices win_dga win_downgrade_sl win_fontpath win_mac_read win_mac_write win_selection win_upgrade_sl

Was braucht jetzt ein Apache Server?

net_privaddr: Allow a process to bind to a privileged port number. The privilege port numbers are 1-1023 (the traditional UNIX privileged ports) as well as those ports marked as "udp/tcp_extra_priv_ports" with the exception of the ports reserved for use by NFS and SMB.

145

contract_event contract_observer cpc_cpu dtrace_kernel dtrace_proc dtrace_user f i le_chown f i le_chown_self file_dac_execute file_dac_read file_dac_search file_dac_write file_downgrade_sl file_flag_set file_link_any file_owner file_setid file_upgrade_sl graphics_access graphics_map ipc_dac_read ipc_dac_write ipc_owner net_bindmlp net_icmpaccess net_mac_aware net_privaddr net_rawaccess proc_audit proc_chroot proc_clock_highres proc_exec proc_fork proc_info proc_lock_memory proc_owner proc_priocntl proc_session proc_setid proc_taskid proc_zone sys_acct sys_admin sys_audit sys_config sys_devices sys_ip_config sys_ipc_config sys_linkdir sys_mount sys_net_config sys_nfs sys_res_config sys_resource sys_smb sys_suser_compat sys_time sys_trans_label win_colormap win_config win_dac_read win_dac_write win_devices win_dga win_downgrade_sl win_fontpath win_mac_read win_mac_write win_selection win_upgrade_sl

Was braucht jetzt ein Apache Server?

proc_info: Allow a process to examine the status of processes other than those to which it can send signals. Processes that cannot be examined cannot be seen in /proc and appear not to exist.

146

contract_event contract_observer cpc_cpu dtrace_kernel dtrace_proc dtrace_user f i le_chown f i le_chown_self file_dac_execute file_dac_read file_dac_search file_dac_write file_downgrade_sl file_flag_set file_link_any file_owner file_setid file_upgrade_sl graphics_access graphics_map ipc_dac_read ipc_dac_write ipc_owner net_bindmlp net_icmpaccess net_mac_aware net_privaddr net_rawaccess proc_audit proc_chroot proc_clock_highres proc_exec proc_fork proc_info proc_lock_memory proc_owner proc_priocntl proc_session proc_setid proc_taskid proc_zone sys_acct sys_admin sys_audit sys_config sys_devices sys_ip_config sys_ipc_config sys_linkdir sys_mount sys_net_config sys_nfs sys_res_config sys_resource sys_smb sys_suser_compat sys_time sys_trans_label win_colormap win_config win_dac_read win_dac_write win_devices win_dga win_downgrade_sl win_fontpath win_mac_read win_mac_write win_selection win_upgrade_sl

Was braucht jetzt ein Apache Server ?

proc_session: Allow a process to send signals or trace processes outside its session.

147

contract_event contract_observer cpc_cpu dtrace_kernel dtrace_proc dtrace_user f i le_chown f i le_chown_self file_dac_execute file_dac_read file_dac_search file_dac_write file_downgrade_sl file_flag_set file_link_any file_owner file_setid file_upgrade_sl graphics_access graphics_map ipc_dac_read ipc_dac_write ipc_owner net_bindmlp net_icmpaccess net_mac_aware net_privaddr net_rawaccess proc_audit proc_chroot proc_clock_highres proc_exec proc_fork proc_info proc_lock_memory proc_owner proc_priocntl proc_session proc_setid proc_taskid proc_zone sys_acct sys_admin sys_audit sys_config sys_devices sys_ip_config sys_ipc_config sys_linkdir sys_mount sys_net_config sys_nfs sys_res_config sys_resource sys_smb sys_suser_compat sys_time sys_trans_label win_colormap win_config win_dac_read win_dac_write win_devices win_dga win_downgrade_sl win_fontpath win_mac_read win_mac_write win_selection win_upgrade_sl

Was braucht jetzt ein Apache Server?

file_link_any: Allow a process to create hardlinks to files owned by a UID different from the process's effective UID.

148

contract_event contract_observer cpc_cpu dtrace_kernel dtrace_proc dtrace_user f i le_chown f i le_chown_self file_dac_execute file_dac_read file_dac_search file_dac_write file_downgrade_sl file_flag_set file_link_any file_owner file_setid file_upgrade_sl graphics_access graphics_map ipc_dac_read ipc_dac_write ipc_owner net_bindmlp net_icmpaccess net_mac_aware net_privaddr net_rawaccess proc_audit proc_chroot proc_clock_highres proc_exec proc_fork proc_info proc_lock_memory proc_owner proc_priocntl proc_session proc_setid proc_taskid proc_zone sys_acct sys_admin sys_audit sys_config sys_devices sys_ip_config sys_ipc_config sys_linkdir sys_mount sys_net_config sys_nfs sys_res_config sys_resource sys_smb sys_suser_compat sys_time sys_trans_label win_colormap win_config win_dac_read win_dac_write win_devices win_dga win_downgrade_sl win_fontpath win_mac_read win_mac_write win_selection win_upgrade_sl

Was braucht jetzt ein Apache Server?

149

There is no root!

150

contract_event contract_observer cpc_cpu dtrace_kernel dtrace_proc dtrace_user f i le_chown f i le_chown_self file_dac_execute file_dac_read file_dac_search file_dac_write file_downgrade_sl file_flag_set file_link_any file_owner file_setid file_upgrade_sl graphics_access graphics_map ipc_dac_read ipc_dac_write ipc_owner net_bindmlp net_icmpaccess net_mac_aware net_privaddr net_rawaccess proc_audit proc_chroot proc_clock_highres proc_exec proc_fork proc_info proc_lock_memory proc_owner proc_priocntl proc_session proc_setid proc_taskid proc_zone sys_acct sys_admin sys_audit sys_config sys_devices sys_ip_config sys_ipc_config sys_linkdir sys_mount sys_net_config sys_nfs sys_res_config sys_resource sys_smb sys_suser_compat sys_time sys_trans_label win_colormap win_config win_dac_read win_dac_write win_devices win_dga win_downgrade_sl win_fontpath win_mac_read win_mac_write win_selection win_upgrade_sl

Und das haben sie bisher vergeben ...

151

# svcprop -v -p start apache2 start/exec astring /lib/svc/method/http-apache2\ start start/timeout_seconds count 60 start/type astring method start/user astring webservd start/group astring webservd start/privileges astring basic,!proc_session,!proc_info,!file_link_any,net_privaddr start/limit_privileges astring :default start/use_profile boolean false start/supp_groups astring :default start/working_directory astring :default start/project astring :default start/resource_pool astring :default

Via SMF kann man die Privilegien setzen ...

152

# svcprop -v -p start apache2 start/exec astring /lib/svc/method/http-apache2\ start start/timeout_seconds count 60 start/type astring method start/user astring webservd start/group astring webservd start/privileges astring basic,!proc_session,!proc_info,!file_link_any,net_privaddr start/limit_privileges astring :default start/use_profile boolean false start/supp_groups astring :default start/working_directory astring :default start/project astring :default start/resource_pool astring :default

Dann kann man auch den webserver ohne root-Rechte laufen lassen ....

153

# ps -ef | grep "apache2" | grep -v "grep"webservd 2239 2235 0 19:29:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k startwebservd 2241 2235 0 19:29:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k startwebservd 2235 1 1 19:29:53 ? 0:00 /usr/apache2/2.2/bin/httpd -k startwebservd 2238 2235 0 19:29:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k startwebservd 2240 2235 0 19:29:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k startwebservd 2242 2235 0 19:29:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k startwebservd 2236 2235 0 19:29:54 ? 0:00 /usr/apache2/2.2/bin/httpd -k start

154

Ganz neue Entwicklung ...

Apache selbst wird privilege-aware - mod_privilegeshttp://www.mail-archive.com/dev@httpd.apache.org/msg42159.html

155

mod_privileges

Pro <virtualhost></virtualhost> ein eigener Satz Privilegien ...und nebenbei auch getrennter User und Group.

156

Achja ... ein Punkt zu „there is no root“.Eine Besonderheit gibt es ....

157

Files die root gehoeren, kann man nur ändern, wenn man alle Priviliegen hat.

158

Warum?

Hat man die Privilegien sämtlicheDateien zu ändern, könnte man auch die

Dateien ändern, die die Privilegien ändern.

159

Weitere interessante Features ...

160

Auditing

Die Fragestellung:Was passiert auf meinem System?Wann hat wer welche Kommandos ausgeführt?

161

Auditing

Solaris Auditing beantwortet diese Fragestellung

header,124,2,AUE_EXECVE,,localhost,2008-02-02 00:12:49.560 +01:00 path,/usr/bin/ls attribute,100555,root,bin,26738688,1380,0 exec_args,2,ls,-l subject,jmoekamp,root,root,root,root,665,2040289354,12921 71168 10.211.55.2 return,success,0

162

Auditing

Mit Solaris Auditing kann man eine Vielzahlvon Aktionen im System überwachen ...

163

Basic Audit Reporting Tool

Fragestellung:Ist das System wirklich noch so wie ich es installiert habe ?

Oder die Standardausrede eines jeden Adminwenn was schief geht:„Ich habe wirklich nichts geändert!!!“

1

1 Ich eingeschlossen ...

164

Basic Audit Reporting Tool

Nach der Installation lässt man das BARTein erstes Mal über die Dateisysteme laufen.

165

Basic Audit Reporting Tool

Damit hat man eine Baseline für spätere Vergleiche ...

Diese Datei gut weglegen!

166

Basic Audit Reporting Tool

Der Tag ist da ... man will wissen, was an einem System verändert worden ist.

167

Basic Audit Reporting Tool

Man lässt nochmals das BART Tool über die Installation laufen.

168

Basic Audit Reporting Tool

Und dann vergleicht man diese Versionen.

169

/nsswitch.files: mode control:100644 test:100777 acl control:user::rw-,group::r--,mask:r-- ,other:r-- test:user::rwx,group::rwx,mask:rwx,other:rwx /nsswitch.nisplus: size control:2525 test:2538 mtime control:473976b5 test:47a44862 contents control:79e8fd689a5221d1cd059e5077da71b8 test:3f79176ec352441db11ec8a3d02ef67c /thisisjustatest:add

Basic Audit Reporting Tool

Das kommt dabei raus, wenn man zwischenden beiden Starts von BART ...1. die rechte an /etc/nsswitch.files ändert,2. an /etc/nsswitch.nisplus eine Zeile anhängt,3. und ein touch /etc/thisisjustatest ausführt.

170

Signed Binaries

Okay, ich habe hier die/usr/sbin/ifconfig

... aber ist die Datei auch von Sun?

171

Signed Binaries

Jedes Programm des Solaris Operating Environmentist von Sun digital signiert.

172

Signed Binaries

# elfsign verify -v /usr/sbin/ifconfigelfsign: verification of /usr/sbin/ifconfig passed.format: rsa_md5_sha1.signer: CN=SunOS 5.10, OU=Solaris Signed Execution, O=Sun Microsystems Inc.

173

IP Filter

Solaris verfügt über eine Firewall:•Stateful und Stateless Packet Inspection•beherrscht Support for both NAT and PAT•Proxies für bestimmte (TCP, UDP, FTP, rcmds, etc.)

174

IP Filter

Die Konfiguration ist textbasiert:pass out quick all keep state keep frags# Drop all NETBIOS traffic but don't log it.block in quick from any to any port = 137 #netbios-nsblock in quick from any to any port = 138 #netbios-dgmblock in quick from any to any port = 139 #netbios-ssn# Allow incoming IKE/IPsecpass in quick proto udp from any to any port = ikepass in quick proto udp from any to any port = 4500pass in proto esp from any to any# Allow pingpass in quick proto icmp from any to any icmp-type echo# Allow routing infopass in quick proto udp from any to port = routepass in quick proto icmp from any to any icmp-type 9 # routeradvertpass in quick proto igmp from any to any# Block and log everything else that comes inblock in log allblock in from any to 255.255.255.255block in from any to 127.0.0.1/32

(aus Glen Brunettes Solaris Security Deep Dive)

175

Was gibt es sonst noch so ?• tcpwrapper

• eine Art Firewall auf einem höheren Level• steht zwischen der Anforderung und dem Daemon ...• gegebenfalls ueber den inetd superserver

• svccfg -s inetd setprop defaults/tcp_wrappers=true• sendmail/rpcbind/ssh

• Vorsicht bei SSH: Solaris Security Toolkit *grins*

• Passwörter• unterschiedliche Verschlüsselungsverfahren• es geht auch länger als 8 Zeichen• Komplexitätschecks

• Vorsicht: Solaris Security Toolkit *grins*

• Achja ... Solaris Security Toolkit• automatisiertes Härten eines System• ins Jumpstart Enterprise Toolkit integrierbar• kennen immer noch nicht alle Kunden

176

Wollt Ihr mehr wissen?

177

www.c0t0d0s0.org/pages/lksf_content.html#subversionweek

Recommended