2007 02 SELinux – bardziej bezpieczny Linux [Bezpieczenstwo]


bezpieczeństwo
SELinux  bardziej bezpieczny Linux
SELinux  bardziej
bezpieczny Linux
Marek Sawerwain
Czy system Linux oraz inne systemy uniksowe są bezpiecznymi systemami. Jeśli w odpowiedzi,
uwzględnimy np.: tylko samo jadro systemu to istotnie tak jest. Jest to bezpośrednia konsekwencja
faktu iż, wielu programistów szczególnie, w przypadku systemów o otwartym kodzie zródłowym,
każdego dnia stara sie naprawiać istniejące błędy, a liczna społeczność użytkowników owe błędy
wyłapuje. Co ogólnie poprawia szeroko rozumiane bezpieczeństwo.
teoretycznego punktu widzenia może sie wy- Czym jest SELinux ?
dawać, że trzy podstawowe prawa systemów Najkrócej o projekcie SELinux można powiedzieć iż jest
uniksowych: prawo czytania, zapisywania to  łatka na standardowe jądro Linuxa. W jądrze, funk-
Zoraz prawo wykonywania (tzw. prawa rwx) cjonuje bowiem mechanizm o nazwie Linux Security Mo-
odpowiednio zastosowane, mogą wystarczyć do stwo- dule (w skrócie LSM), czyli jest to część jądra Linuxa która
rzenia środowiska, które będzie bezpieczne i nie narazi oferuje możliwość implementacji różnych dodatkowych
na utratę danych użytkowników tego środowiska. mechanizmów bezpieczeństwa. SELinux jest elementem
Jednak z drugiej strony, system operacyjny dla zwy- który pojawia się właśnie jako moduł LSM. Jednak, naj-
kłego użytkownika to nie tylko jadro systemu, lecz cały ze- nowsze jądra z serii 2.6.x oferują już na stałe mechani-
staw aplikacji stosowanych w codziennej pracy. Niestety, zmy SELinuxa, toteż od tej serii jąder SELinux jest natu-
wiele aplikacji posiada istotne uchybienia, co może naru- ralną częścią jądra Linuxa. Obecnie, w większości waż-
szać bezpieczeństwo całego systemu. yle napisana aplika- niejszych dystrybucji przedstawiane mechanizmy są już
cja sieciowa, uruchomiona nawet na poziomie konta zwy- obecne.
kłego użytkownika, może być zródłem wielu kłopotów. Jednak, oprócz samych modyfikacji jądra, istotnym
I niestety, nie pomogą tu prawa dostępu bądz odpowied- elementem są nowe wersje programów, które korzystają
nia hierarchia użytkowników. Czy istnieje zatem sposób, z możliwości SELinuxa. Szczególnie ważne są kluczo-
aby np.: zablokować uruchamianie pewnych programów, we programy dla bezpieczeństwa systemu jak ssh, ls, ps
jednak nie odbierając samych praw. Odpowiedz jest natu- czy np: login. Te programy zostały dopasowane do no-
ralnie twierdząca, a jest nim zestaw specjalnych rozszerzeń wych zabezpieczeń. Choć warto dopowiedzieć iż nowe
o nazwie SELinux. Sposób działania tego systemu można rozszerzenia zostały tak opracowane, iż nie ma potrze-
porównać do ściany ogniowej, lecz tym razem jest to zapo- by aby modyfikować istniejące oprogramowanie. Jeśli,
ra dla aplikacji. dany program wymaga specjalnych uprawnień, wystar-
52 luty 2007
autorzy@lpmagazine.org
bezpieczeństwo
SELinux  bardziej bezpieczny Linux
W przypadku SELinuxa tylko administra- o mechanizmie definiowania reguł dostępo-
tor systemu może określać nowe prawa do- wych.
stępu. Jest to zupełnie odmienne podejście Choć ilość typów jest nieograniczona to
w porównaniu do tradycyjnego rozwiązania, jednak nadmierna ilość różnych typów
gdzie każdy użytkownik może zarządzać wprowadza tylko dodatkowe zmieszanie,
Rysunek 1. Ogólny schemat systemu SELinux,
prawami, choć tylko we własnym otoczeniu. więc najlepiej nie przesadzać z ilością ty-
przedstawia podział na trzy części, użytkowników,
W przypadku SELinuxa, tak nie jest, gdyż pów. Tym bardziej iż w typowej instalacji
role i typy
prawa są przydzielane tylko przez admini- SELinux, istnieją nie setki ale tysiące tego
czy utworzyć odpowiednie zasady. Wspom- stratora. rodzaju reguł (zwykle około 100 000). Regu-
niane zasady (ang. policy) także są nieod- Drugim, wbrew pozorom nie zupełnie ły te pozwalają na bardzo precyzyjne okre-
łącznym elementem bezpieczeństwa. To one nowym mechanizmem jest wprowadzenie ślanie, jakie szczegółowe prawa są przy-
decydują który użytkownik ma dostęp do systemu kontroli opartego o role. System RB- dzielane do obiektów.
urządzeń czy plików. Domyślny, zbiór re- AC (jest to skrót od ang. Role Based Access Con-
guł zapewnia wysoki poziom bezpieczeń- trol) oferuje możliwość przypisywania specy- Odrobina szczegółów
stwa. Naturalnie, administrator może zmie- ficznej roli poszczególnym użytkowników. Użytkownik który pracuje w danym sys-
nić reguły bądz utworzyć nowe aby dopa- W taki sposób funkcjonuje standardowy me- temie, naraz może korzystać z tylko jednej
sować system do własnych specyficznych chanizm użytkowników, mamy przecież użyt- roli, naturalnie istnieje rola domyślna. W ra-
potrzeb. kowników systemowych, standardowych czy mach każdej roli, mamy dostęp tylko do wcześ-
Toteż zadaniem opisywanych rozsze- wręcz dedykowanych do pewnym wybra- niej określonych obiektów poprzez dome-
rzeń jest zwiększenie bezpieczeństwa, po- nych zadań np.: do obsługi serwera WWW. ny. Podobnie jak w przypadku roli możemy
przez wprowadzenie nowych ograniczeń Jednak, RBAC zmienia nieco ten schemat, znajdować się naraz tylko w jednej domenie.
bardziej szczegółowych niż typowe prawa ponieważ prawa nie są przydzielane bezpo- Jednak, nasze rzeczywiste możliwości są wy-
rwx. Użytkownicy są przypisywani do wcześ- średnio do użytkowników lecz do ról. Co wię- znaczanie na podstawie typu obiektu na któ-
niej określonych ról. Pozwala to na wpro- cej, w jednej chwili użytkownik, może peł- rym działamy, bowiem reguły o których była
wadzanie ograniczeń w dostępie do urzą- nić tylko jedną rolę, co ogranicza potencjal- mowa w poprzednim punkcie określą nam
dzeń i plików. Co ważne SELinux rozsze- ne szkody. Jest to naturalnie mniej wygod- możliwe interakcje pomiędzy domeną a ty-
rza istniejące prawa dostępu, co oznacza iż nie, ponieważ należy się przełączać pomię- pem obiektu. Najczęściej tworzone są nastę-
w przypadku złej konfiguracji nowych roz- dzy rolami ale podnosi w znaczący sposób pujące reguły:
szerzeń, nie naruszamy istniejących typo- bezpieczeństwo.
wych mechanizmów bezpieczeństwa. Dla- Uzyskanie dostępu do pewnej roli ozna- " określanie dopuszczalnych operacji jak
czego tak jest? Jak już to zostało powiedzia- cza iż użytkownik będzie korzystać z pew- czytanie, pisanie, tworzenie,
no, nowe prawa ograniczają istniejące, nie nych obiektów, czyli z plików, katalogów " dopuszczalne zmiany roli,
są to bowiem zupełnie nowe prawa. To- oraz innych urządzeń. W roli, prawa są przy- " możliwe zmiany domeny,
też, jeśli nastąpi naruszenie praw SELinu- dzielone, jednak do pewnych typów. Naj- " określenie automatycznych zmian do-
x'a, nadal w mocy pozostaną aktualne stan- ważniejszym ograniczeniem jest fakt iż tyl- meny oraz roli w przypadku zajścia jakiś
dardowe prawa Linuxa. ko administrator może tworzyć nowe typy konkretnych okoliczności.
i przydzielać je do obiektów. Ten mecha-
Nieco teorii o nowych nizm nazywany jest najczęściej jako system W SELinuxie każdy proces oraz użytkownik
rozszerzeniach kontroli dostępu w ramach domeny. (ang. posiada tzw. kontekst bezpieczeństwa. Ogól-
Najważniejszym elementem SELinuxa jest Dynamically Typed Access Control  DTAC), nie na kontekst składają się trzy elemen-
wprowadzenie bardzo silnej kontroli dostę- lepiej jednak mówić o tym systemie jako ty a są to: użytkownik:rola:domena. Jeśli,
pu (ang. Mandatory Access Control  MAC).
Ogólnie mówiąc, jest to rozszerzenie stan-
dardowych mechanizmów praw dostępu do
plików oraz grup i użytkowników. Kontro-
la odbywa się na poziomie procesu który po-
wstał w wyniku działań użytkownika. Pro-
ces otrzymuje tzw. kontekst bezpieczeństwa,
Mechanizmy kontroli MAC sprawdzają rów-
nież kontekst bezpieczeństwa obiektu na
którym dany proces ma pracować. Po wery-
fikacji, czy dany proces z otrzymanym kon-
tekstem może wykonać czynności do któ-
rych został powołany następuje odmowa
lub zgoda na wykonanie zadania jakie re-
alizuje proces.
Istnieje jedna zasadnicza różnica pomię-
dzy mechanizmami MAC, a standardowy-
mi rozwiązaniami dostępnymi w Linuxie. Rysunek 2. Dokładniejsze przedstawienie struktury nowych rozwiązań dostępnych w SELinuxie
www.lpmagazine.org 53
bezpieczeństwo
SELinux  bardziej bezpieczny Linux
je nazwa z klientami do sieci IRC. Plik wyko-
nywalny klienta IRC posiada także swój typ o
nazwie irc_exec_t, po uruchomieniu przez
użytkownika klienta IRC następuje zmiana
domeny w następujący sposób:
user:user_r:user_t
zmiana do
user:user_r:user_irc_t
Domena user_irc_t posiada liczne ogranicze-
nia, domyślnie w jej ramach program może za-
pisywać informacje do logów bądz korzystać
z podstawowych plików konfiguracyjnych.
Ewentualne włamanie się przez klienta, nie za-
grozi nawet jego własnym plikom, ponieważ
klient IRC jest uruchamiany w innej domenie.
Odrobina praktyki
Gdy chcemy wprowadzić do systemu nadzo-
rowanego przez SELinux nowego użytkowni-
ka, to pierwszą czynnością jaką trzeba wyko-
nać, jest zmiana aktualnej roli użytkownika za
pomocą polecenia newrole. Ponieważ chcemy
Historia projektu SELinux
Rysunek 3. Konfiguracja SELinuxa za pomocą narzędzia graficznego w dystrybucji Fedora Core 6
Pierwsze rozwiązania jakie stały się podsta-
użytkownik o nazwie np.: dorota zaloguje traktowany java_exec_t. W podobny spo-
wą dla SELinux powstały już w roku 1992
się do typowego systemu, gdzie istnieje SE- sób możemy sprawdzić kontekst bezpieczeń-
dla jądra MACH, gdzie pojawiły się bardzo
Linux, to dorota zazwyczaj otrzyma nastę- stwa dla procesów poleceniem ps -eZ:
rozbudowane mechanizmy kontroli dostę-
pujący kontekst: dorota:user_r:user_t,
pu. Pierwsze publiczne udostępnienie kodu
gdzie user_r to domyślna rola a user_t to system_u:system_r:init_t 1 ?
nastąpiło w 2000 roku. Od roku 2003 SELi-
domyślna domena. Aktualny kontekst mo- 00:00:00 init
nux jest łączony z kodem jądra w wersji 2.6.
żemy sprawdzić za pomocą polecenia id system_u:system_r:kernel_t 2 ?
Dlatego, aktualnie SELinux jest silnie zin-
a jeszcze lepiej id -Z. W efekcie otrzymamy 00:00:00 migration/0
tegrowanym z jądrem, właśnie dla tej wer-
następującą odpowiedz (np.: dla dystrybu- system_u:system_r:udev_t:System
sji i jest rozwijany przez firmę Secure Com-
cji Fedora Core 6): Low-SystemHigh 441 ? 00:00:00 udevd
puting Corportaion którą finansowo od po-
system_u:system_r:xfs_t 2190 ?
czątku wspiera amerykańska agencja bez-
user_u:system_r:unconfined_t 00:00:00 xfs
pieczeństwa narodowego (NSA  Natio-
system_u:system_r:getty_t 2368
nal Security Agency). SELinux jest dostęp-
Jak widać mamy tu jeszcze większe ograni- tty4 00:00:00 mingetty
ny w najnowszych dystrybucjach Fedo-
czenie, gdyż domyślnym określeniem użyt- user_u:system_r:unconfined_t 2515
ra Core, specjalnej dystrybucji dla serwe-
kownika dorota jest user_r. tty2 00:00:00 bash
rów Gentoo Hardend. SELinux oferuje tak-
Inne przykłady kontekstów są następu- root:system_r:unconfined_t:System
że Debian oraz SuSE, istnieje także port dla
jące dla plików wykonywalnych po wykona- Low-SystemHigh 2544 tty1 00:00:00 ps
FreeBSD.
niu ls -alZ:
Choć można się doszukiwać w udo-
Tym razem poszczególne usługi systemowe
stępnieniu mechanizmów SELinuxa szero-
-rwxr-xr-x root root system_u: mają przydzielone różne typy, mamy spe-
kiej społeczności, spiskowej teorii dziejów,
object_r:bin_t /usr/bin/gcalctool cjalny typ init_t dla pierwszego procesu
to jednak warto pamiętać iż Linux staje się
-rwxr-xr-x root root system_u: w systemie, a usługi działające na poziomie
coraz bardziej popularny, i w grę wchodzą
object_r:bin_t /usr/bin/gcc jądra posiadają własne typy. Typowe proce-
aspekty ekonomiczne. Liczba strat jakie
-rwxr-xr-x root root system_u: sy użytkownika posiadają kontekst: user_u:
powstają w wyniku błędnych zabezpieczeń
object_r:java_exec_t /usr/bin/ system_r:unconfined_t.
systemów komputerowych jest coraz więk-
gcj-dbtool Przykład typu dla Javy pokazuje iż od-
sza, więc to ostatecznie zwykły rachunek
powiednie określenie typów i praw daje na
ekonomiczny przemawia za udostępnie-
Na przykładzie tych plików widać iż kon- wiele możliwości w ochronie systemu. Przy-
niem SELinux społeczności OpenSource,
tekst dla zwykłych typów kończy się typem kładem który zazwyczaj się pokazuje jest do-
jak przecież wiadomo siła leży w grupie.
bin_t lecz program dla Javy jest specjalnie mena user_irc_t. Stowarzyszona jak poda-
54 luty 2007
bezpieczeństwo
SELinux  bardziej bezpieczny Linux
wykonywać czynności administracyjne, więc miać tylko obiekty związane z przeglądarką
przełączamy się do roli o nazwie sysadm_r: internetową user_firefox_t oraz omawiany
O Autorze
już klient do sieci IRC user_irc_t. Tworząc
Autor zajmuje się tworzeniem oprogramo-
newrole -r sysadm_r własne role, może ściśle przydzielać dostęp
wania dla Linuksa oraz WIN32. Zaintereso-
do odpowiednich programów definiując od-
wania: teoria języków programowania oraz
Zostaniemy poproszeni o podanie hasła dla powiednie typy.
dobra literatura.
administratora. Następnie za pomocą dwóch Informacje o typach plików są zgromadzo-
Kontakt z autorem: msawe@go.onet.pl
typowych poleceń adduser oraz passwd, two- ne w pliku file_context oraz w plikach o rozsze-
rzymy nowego użytkownika oraz określamy rzeniu *.fc. Dobrym przykładem może być opis
jego domyślne hasło. W ten sposób, do syste- katalogu domowego np.: wanie systemy pliku za pomocą polecenia
mu został dodany nowy użytkownik. Jednak, o postaci np.:
nie posiada on żadnych praw w SELinux'ie. /home system_u:object_r:home_root_t
Dlatego, w pierwszej kolejności trzeba okre- make -C /etc/selinux/policy relabel
ślić jego rolę. Pliki związane z regułami mo- Natomiast poszczególne pliki mogą być okre-
gą znajdować się w wielu miejscach choć naj- ślone jako: W ten sposób, poszczególne pliki w systemie
częściej są to katalogi /etc/security/selinux albo otrzymają zdefiniowane przez nas nowe ty-
/etc/selinux. Plik z informacjami o użytkow- /home/[^/]+/.+ system_u:object_r: py. To polecenie, podobnie jak load również
nikach może znajdować się np.: w katalogu user_home_t może zabrać sporo czasu.
/etc/selinux/users. Należy, na samym końcu
dodać nową regułę np.: Jeśli administratorowi systemu zależy na Podsumowanie
większej prywatności może jawnie rozdzielić Mam nadzieję iż udało się mi zachęcić do dal-
user dorota roles { user_r }; typy na poszczególnych użytkowników: szych poszukiwań informacji na temat SE-
Linuxa. Projekt ten jest świetnym przykła-
W ten sposób użytkownik dorota przez nowe /home/dorota/[^/]+/.+ system_u: dem iż Linux może być systemem o wyso-
mechanizmy bezpieczeństwa będzie postrze- object_r:user_dorota_home_t kim stopniu bezpieczeństwa. Naturalnie, ten
gany jako typowy użytkownik. Jeśli chcemy artykuł to tylko wprowadzenie do tematyki
zwiększyć prawa użytkownika, poprzez do- Powracając do przykładu z klientem do sieci systemu SELinux. I wiele elementów zostało
pisanie go do różnych ról pomiędzy którymi irc możemy określić zachowanie się obiektów pominiętych. Jednakże, w ramach uzupełnie-
może się on przełączać np.: chcemy dać możli- które są plikami tymczasowymi: nia, warto wspomnieć o teście, jaki przepro-
wość administracji systemem to reguła przed- wadził jakiś czas temu Russel Coker. Udostęp-
stawia się bardzo prosto: allow user_irc_t irc_tmp_t:file { nił on komputer z zainstalowanym SELinu-
create read write getattr setattr xem, wraz ze standardowymi ustawieniami.
user dorota roles { user_r sysadm_r }; link unlink rename }; Udostępnił także hasło roota do tej maszyny,
jak się okazało nikt nic istotnego nie zdołał
Użytkownik dorota może korzystać z dwóch Taka deklaracja nazywana jest także wek- zepsuć. Co jest znakomitym przykładem jako-
ról user_r bądz sysadm_r. Niestety, po wpro- torem dostępu, ponieważ określamy jakie ści SELinuxa. Jego zaletą jest także zgodność
wadzeniu zmian do pliku /etc/selinux/users nie czynności mogą być wykonywane na danym z normą POSIX.6 (system MAC jest przykła-
są one domyślnie wprowadzane do systemu. pliku. Oczywiście SELinux, pozwoli na przy- dem techniki zgodnej z tą normą). Wadą jest
Należy za pomocą dodatkowego polecenia do- dzielenie określonych praw jednemu określo- niewątpliwie problematyczna konfiguracja
konać kompilacji wszystkich reguł. W przy- nemu plikowi, które może działać w jednej szczególnie dla początkujących użytkowni-
padku typowej instalacji nowych rozszerzeń domenie. Nie ma przeszkód aby istniał tylko ków, sprawia wiele kłopotów. Drugą istotną
wykonujemy polecenie: jeden użytkownik który może modyfikować wadą jest także obniżenie wydajności syste-
ten plik. Jednak, jak to już wcześniej powie- mu, szczególnie, jeśli zbiór reguł jest bardzo
make -C /etc/selinux load dziono regułami zarządza administrator i to rozbudowany. Jednak zalet jest więcej, dlatego
tylko on może podjąć decyzję o takim postę- warto sprawdzić, czy nasza ulubiona dystry-
Ponieważ reguł jest wiele, więc kompilacja mo- powaniu. bucja zawiera wsparcie dla SELinuxa?
że zabrać sporo czasu. Możemy teraz dokład- Można przytoczyć jeszcze wiele przykła-
nie określić jakie programy mogą być urucha- dów reguł np.: dla serwera Apache dostęp do
miane przez poszczególnych użytkowników, gniazdka sieciowego jest określony w nastę-
definiując w szczegółowy sposób rolę dla użyt- pujący sposób: W Sieci
kownika:
" Strona domowa NSA poświęcona
allow httpd_suexec_t self:unix_stream_
projektowi SELinux:
role user_r types { user_t socket create_socket_perms;
http://www.nsa.gov/selinux
user_firefox_t user_irc_t };
" Lista najczęściej zadawanych pytań:
Ponieważ, obostrzenia na pliki są mimo
http://www.nsa.gov/selinux/info/
Przydzielona rola user_r oznacza iż użyt- wszystko dodatkowym elementem w syste-
faq.cfm
kownik z tej roli może korzystać z obiektów mie plików, wymienione rodzaje praw nie
" Podstawowe informacje o SELinuxie:
ogólnego typu user_t np.: pliki z doku- są nadawane za pomocą standardowego po-
http://en.wikipedia.org/wiki/Selinux
mentami, ale z drugiej strony może urucha- lecenia chmod, toteż niezbędne jest etykieto-
www.lpmagazine.org 55


Wyszukiwarka

Podobne podstrony:
02 06 Standard bezpiecznej pracy na dachach
Bądź bardziej bezpieczny
2007 07 Jądro nieprzewidywalności [Bezpieczenstwo]
20 02 Zbiorowe siatki bezpieczenstwa
2008 02 KGP Razem bezpieczniej sprawozdanie za 2007rid&445
2007 04 Tworzenie kopii bezpieczeństwa danych [Administracja]
Bądź bardziej bezpieczny
2007 02 Szkoła konstruktorów
2007 02 Retributionware
SIMR ALG1 EGZ 2007 02 08b rozw
SIMR AN1 EGZ 2007 02 07b rozw
2007 02 Programowanie równoległe z Qt [Programowanie]
2007 02 Mozliwosci wykorzystania masazu u dzieci z zab rozwojem psychomotorycznym cz 2
2007 02 Firewall leak testing [Consumer test]
Magazine Ellery Queen Mystery Magazine 2007 02 February (v1 0) [html]
Eko Świat Zwierzyniec terapeutyczny str 47 2007 02 47
Eko Świat Zwierzyniec terapeutyczny str 47 2007 02 47
2007 02 23 wzorcowa umowa przylaczeniowa

więcej podobnych podstron