Solaris 10 Security - c0t0d0s0.org · Solaris 10 11/06 ist evaluiert nach ... 14. 15 EAL 4+ ... Ein...
-
Upload
truongliem -
Category
Documents
-
view
213 -
download
0
Transcript of Solaris 10 Security - c0t0d0s0.org · Solaris 10 11/06 ist evaluiert nach ... 14. 15 EAL 4+ ... Ein...
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
63
Für Solaris 10 11/06:
http://www.sun.com/software/security/securitycert/docs/solaris10-sec-e.pdf
Security Target:
http://www.sun.com/software/security/securitycert/docs/solaris10-cert-e.pdfCertification Report:
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/[email protected]/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