bezpieczeństwo
Wszystko o prawach dostępu
Wszystko
o prawach dostępu
Marcin Ulikowski
Instalując system Linux jesteśmy proszeni o dokonanie podziału dysku twardego na partycje.
Większość nowoczesnych dystrybucji oferuje nawet w pełni automatyczne ich przydzielanie. Ilość
partycji wpływa na poziom bezpieczeństwa systemu. Dlatego warto zrezygnować z automatyzacji
tego procesu i poświęcić trochę więcej czasu na własnoręczne przystosowanie dysku twardego dla
instalowanego systemu.
artycje to obszary na dysku twardym zarezer- że to spowodować konieczność powtórnej instalacji sys-
wowane dla określonych systemów plików. temu.
Linux cechuje się dużą elastycznością w two- Aby uniknąć problemów, należy dla każdego syste-
Przeniu i zarządzaniu wieloma partycjami. Po- mu plików utworzyć oddzielną partycję. Wraz z oddzie-
przez podział naszego dysku na odpowiednią ilość par- laniem poszczególnych obszarów systemu zyskujemy
tycji zyskujemy możliwość zastosowania bardziej ry- większą stabilność, zwiększony poziom bezpieczeństwa
gorystycznej kontroli nad poszczególnymi systemami i kontrolę nad sposobem montowania poszczególnych
plików oraz nad sposobami ich montowania (ang. mo- partycji. Tworzenie wielu partycji ma jeszcze kilka zalet.
unt) w systemie. Pliki systemowe oddzielone są od pli- Zapobiega to m.in. przypadkowemu unieruchomieniu
ków użytkowników. Ponadto już na starcie ułatwiamy systemu oraz chroni główny katalog przed przepełnie-
sobie tworzenie kopii zapasowych i administrację całe- niem. Na przykład katalog /var przechowuje informacje
go systemu. o zdarzeniach w systemie. Rozrastając się nie zablokuje
W przypadku instalacji systemu na pojedynczej par- całego systemu plików jak w przypadku pojedynczej par-
tycji jego administracja jest nieco utrudniona. Bardzo tycji.
kłopotliwe będzie na przykład wykonywanie aktuali-
zacji czy tworzenie kopii zapasowych. Takie rozwiąza-
nie zwiększa szansę na wykorzystanie przez intruza błę-
O autorze
dów programów z ustawionym bitem SUID. Ponadto,
Autor zajmuje się bezpieczeństwem sieci i systemów
jeśli cały system znajduje się tylko na jednej partycji, na-
komputerowych. Jest studentem drugiego roku informa-
wet niewielkie uszkodzenie pliku może doprowadzić do
tyki.
pojawienia się większych kłopotów (uszkodzenie jedne-
Kontakt z autorem: elceef@itsec.pl
go katalogu może mieć wpływ na inne katalogi). Mo-
44 styczeń 2007
autorzy@lpmagazine.org
bezpieczeństwo
Wszystko o prawach dostępu
Dla przykładu podzielmy dysk twardy
na sześć partycji. Podziału na partycje mo-
żemy dokonać programem fdisk (występuje
w każdej dystrybucji) lub jego bardziej przy-
jaznym odpowiednikiem - cfdisk. W archi-
tekturze opartej na procesorach Intel ilość
partycji podstawowych jest ograniczona do
czterech. Więcej partycji tworzymy wyko-
rzystując jedną partycję rozszerzoną i kilka
partycji logicznych. Podczas podziału dys-
ku ważne jest, aby dwie pierwsze partycje
(w naszym przypadku partycja główna i par-
tycja pamięci wirtualnej) posiadały status
podstawowych (ang. primary), a reszta logicz-
nych (ang. logical) utworzonych na partycji
rozszerzonej (ang. extended).
Najtrudniejszym aspektem podziału dys-
Rysunek 1. Tworzenie partycji programem cfdisk
ku (szczególnie mniejszego) na partycje jest
określenie poziomu jego obciążenia. Two- największe znaczenie z punktu widzenia Flaga noexec zapobiega wykonywaniu
rząc wiele partycji ograniczamy poszczegól- bezpieczeństwa systemu; plików wykonywalnych w danym syste-
nym systemom plików możliwość rozrasta- " parametr tworzenia kopii zapasowych mie plików. Jest ona szczególnie przydatna
nia, chociaż czasami o to nam chodzi. Lepiej danego systemu plików; w przypadku tych systemów plików, w któ-
jednak dobrze przemyśleć swoje decyzje, " parametr kolejności sprawdzania integral- rych nie powinny być umieszczone żadne
aby nie okazało się, że pewnemu systemowi ności systemu, jest to priorytet, z jakim pliki wykonywalne. Należy pamiętać, iż fla-
plików przydzieliliśmy zbyt mało miejsca. program fsck sprawdza spójność syste- ga noexec nie ogranicza skryptów powło-
mu. Partycje o takich samych numerach ki (powłoka /bin/sh znajduje się na party-
Plik fstab są sprawdzane jednocześnie, natomiast cji, która nie jest ograniczona tą flagą), które
Dzięki podziałowi dysku twardego możemy z wartością 0 omijane. będą wykonywane na takich partycjach. Je-
określić opcje montowania poszczególnych śli chcemy być bardziej rygorystyczni mo-
systemów plików w naszym systemie, co Jak możemy przeczytać na Listingu 1, nie- żemy flagę noexec dodać do partycji /home,
daje nam większe pole manewru w zwięk- które z partycji są niepotrzebnie montowane przez co użytkownicy będą mogli korzystać
szaniu poziomu bezpieczeństwa. Odpowia- z przyznaniem zbyt dużych przywilejów, wy- tylko z programów oferowanych przez nasz
da za to plik /etc/fstab, z którego podczas znaczonych flagą defaults. Przywileje mo- system.
startu systemu odczytywane są wszystkie żemy ograniczyć takimi flagami jak rw (moż-
dostępne systemy plików i montowane we- liwy odczyt i zapis) oraz ro, która powoduje Aamanie zabezpieczeń
dług podanych w nim reguł. Każdy wiersz zamontowanie plików w trybie tylko do od- Dodane przez nasz ograniczenia dla posz-
w tym pliku odpowiada jednemu systemo- czytu, powstrzymując wszystkie modyfikacje czególnych partycji mogą zostać ominięte
wi plików. Listing 1 zawiera przykładowy informacji dotyczących plików. Flaga ro jest przez sprytnego użytkownika, jeśli w na-
plik /etc/fstab. Zawiera on absolutnie mini- bardzo przydatna w przypadku systemów szym systemie polecenie /bin/mount posia-
malny podział pod względem ilości partycji. używanych jako katalog plików, które mają da ustawiony bit SUID oraz jądro zostało
Nic nie stoi na przeszkodzie, aby było ich pozostać niezmienione podczas pracy syste- skompilowane z opcją Loopback device sup-
znacznie więcej. Ilość zależy głównie od us- mu. Będziemy stosować kilka flag jednocze- port. Podane warunki spełnia większość do-
ług, jakimi chcemy dysponować. Na przy- śnie, np: defaults,ro. Zapis ten oznacza, stępnych dystrybucji, więc szanse są spore.
kład kolejną partycją może być partycja na że system przyjmuje opcję domyślną (flaga Sprytny użytkownik może utworzyć swój
pamięć cache serwera proxy, lub także na defaults), ale ograniczoną wpisem ro (tyl- własny system plików (niezbyt duży, np.
zasoby serwera FTP. ko do odczytu). Pozostałe flagi wchodzące wielkości 1MB) w swoim katalogu domo-
Każdy wiersz tego pliku składa się z sze- w skład defaults zostaną aktywne (oczy- wym i następnie zamontować bez restryk-
ściu pól: wiście poza flagą rw, która została zastąpio- cyjnych flag. Aby to zrobić wystarczą trzy
na wpisem ro). polecenia:
" nazwa urządzenia blokowego (np. /dev/ Flaga nosuid zapobiega uwzględnianiu
hda1), albo system plików, który ma być bitów set-UID oraz set-GID w przypadku $ dd if=/dev/zero of=ext2.fs
montowany; dowolnego pliku wykonywalnego. Powin- count=2048
" plik lokalizujący system plików, czyli na być stosowana dla partycji użytkowników $ mkfs -t ext2 ext2.fs
punkt montowania, np. /home; i partycji plików tymczasowych. Przykłado- $ mount ext2.fs ~/mnt -o
" typ systemu plików, w naszym przykła- wo po dodaniu tej flagi dla partycji plików loop,rw,suid,exec
dzie są to ext3 oraz swap; tymczasowych, stary exploit wykorzystują-
" opcje montowania, w których określa- cy błąd gry Abuse (dostarczanej z dystrybu- Po ich wykonaniu użytkownik w punkcie
my zakres dostępu do danego systemu cją Red Hat 2.1 - jeden z plików gry posiadał ~/mnt będzie posiadał własny system plików,
plików, zawartość tego pola ma dla nas ustawiony bit SUID) nie zadziała. w którym może wykonywać swoje własne
www.lpmagazine.org 45
bezpieczeństwo
Wszystko o prawach dostępu
programy (flaga exec). Jądro skompilowa- je ona ignorowanie obecnych w systemie pli-
ne z opcją Loopback device support umożliwia ków urządzeń specjalnych, dzięki czemu jest
Programy SUID i SGID
nam tworzenie w zwykłym pliku (w naszym bardzo pożyteczna. Warto także odznaczyć
Plik wykonywalny z ustawionym bitem
przypadku plik ma nazwę ext2.fs) dowolne- opcję Loopback device support podczas konfi-
SUID ma specjalną właściwość: nieza-
go systemu plików (np. ext2), który potem guracji jądra, jeśli nie jest przez nas wyko-
leżnie od tego, kto go uruchomi, wyko-
można zamontować w systemie. Jeśli jądro rzystywana.
nywany jest z przywilejami jego właści-
nie ma wsparcia dla urządzeń loopback można
ciela. Podobnie jest z bitem SGID ale
do tego samego celu wykorzystać np. proto- Prawa dostępu do plików
wtedy to grupa, do której należy program
kół zdalnego udostępniania plików NFS (Ne- Główną zaletą Linuksa jest rozbudowany
przekazuje swoje uprawnienia. Na przy-
twork File System). mechanizm kontroli dostępu do plików i ka-
kład, jeśli właścicielem pliku SUID jest
Główną przyczyną, dla której użyt- talogów. Każdemu użytkownikowi moż-
użytkownik root, w trakcie pracy program
kownik miał możliwość utworzenia wła- na przydzielić osobne prawa. Jeden z nich
będzie posiadał wszystkie uprawnienia
snego systemu plików był bit SUID usta- może dany plik czytać i zapisywać do nie-
tego użytkownika. Będzie miał możliwość
wiony dla polecenia /bin/mount. Dlatego za- go dane, inny może tylko odczytać, a jesz-
odczytu i zapisu do każdego miejsca
leca się usunięcie bitu set-ID z tego polece- cze inny może mieć odebrane wszelkie pra-
w systemie. Wykorzystanie błędu w takim
nia (nie zapominając także o /bin/umount). wa dostępu.
programie może zagrozić całemu sys-
Dzięki temu przy próbie zamontowania Każdy użytkownik posiada swój wła-
temowi.
systemu plików zwykły użytkownik otrzy- sny katalog domowy i tylko w jego obrębie
ma komunikat: może tworzyć pliki, katalogi oraz dokony-
wać innych zmian. Reszta systemu powin- modyfikację krytycznych elementów syste-
mount: only root can do that. na pozostawać "tylko do odczytu" (z pew- mu przez osoby niepowołane. Dzięki takie-
nymi wyjątkami, np. katalog /tmp), a do nie- mu podejściu użytkownicy są też oddziele-
Do pliku /etc/fstab obok takich flag jak no- których zasobów użytkownik nie powinien ni od siebie nawzajem.
exec i nosuid należy także dodać jeszcze jed- mieć żadnego prawa dostępu. Jest to bar- Zanim przejdziemy do ustalania praw
ną przydatną flagę o nazwie nodev. Powodu- dzo dobre rozwiązanie uniemożliwiające dostępu, należy pamiętać, aby zbytnio nie
przesadzić z ich odbieraniem (np. prawa
Listing 1. Przykładowy plik /etc/fstab odczytu pliku /etc/passwd) czy nadawaniem.
Najlepiej przed dokonaniem zmian, zro-
/dev/hda1 swap swap defaults 0 0 bić kopię dotychczasowych praw dostępu
/dev/hda2 / ext3 defaults 1 1 w osobnym pliku. Bardzo pomocne będzie
/dev/hda5 /home ext3 defaults 1 1 także stworzenie konta testowego o upraw-
/dev/hda6 /tmp ext3 defaults 1 1 nieniach zwykłego użytkownika, które umo-
/dev/hda7 /var ext3 defaults 1 1 żliwi nam sprawdzenie swoich założeń co
/dev/hda8 /usr ext3 defaults 1 1 do nałożonych restrykcji.
Główną zasadą podczas modyfikacji praw
Listing 2. Restrykcyjny plik /etc/fstab jest pełna świadomość, jaką funkcję pełni
ograniczany plik lub katalog oraz jakie kon-
/dev/hda1 swap swap defaults 0 0 sekwencje wynikną po ingerencji w jego pra-
/dev/hda2 / ext3 defaults 1 1 wa dostępu. Najlepszym rozwiązaniem jest
/dev/hda5 /home ext3 defaults,nosuid 1 1 sprawdzenie działania programu przed oraz
/dev/hda6 /tmp ext3 defaults,nosuid,noexec 1 1 po zmianie.
/dev/hda7 /var ext3 defaults,nosuid,noexec 1 1 Powinniśmy także zwrócić szczególną
/dev/hda8 /usr ext3 defaults 1 1 uwagę na pliki zawierające ustawiony bit
SUID. Zaraz po instalacji Linuksa stanow-
Listing 3. ulimit -a czo zbyt wiele programów posiada ten bit.
Dużo starych eksploitów wykorzystywało
core file size (blocks, -c) unlimited ten fakt. Wyszukaniem wszystkich plików
data seg size (kbytes, -d) unlimited tego rodzaju zajmie się polecenie:
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited $ find / -perm +4000
max memory size (kbytes, -m) unlimited
open files (-n) 1024 Zawartość otrzymanej listy jest zależna od
pipe size (512 bytes, -p) 8 programów, jakie wybraliśmy podczas in-
stack size (kbytes, -s) 8192 stalacji systemu. Dla niektórych progra-
cpu time (seconds, -t) unlimited mów ustawiony bit SUID jest niezbędny
max user processes (-u) 1022 do poprawnego działania, dlatego przed
virtual memory (kbytes, -v) unlimited usunięciem atrybutu +s musimy się upew-
nić, do czego służy dany program. Pomo-
cą będzie nam służyć odpowiednia stro-
46 styczeń 2007
bezpieczeństwo
Wszystko o prawach dostępu
na podręcznika systemowego (man naz- pis). Do tej grupy należą z pewnością /dev/ może doprowadzić do zawieszenia syste-
wa). zero i /dev/null. Natomiast prawo tylko do mu. Skrypt ten jest w rzeczywistości zwy-
W przypadku katalogu /tmp należy sto- odczytu na pewno potrzebne jest urządze- kłą funkcją rekurencyjną. Lepiej nie wywo-
sować tzw. bit lepkości (ang. sticky bit). Jego niom generatorów losowych danych, czyli ływać jej w powłoce systemowej, jeśli nie
ustawienie powoduje, że pliki znajdujące się /dev/random i /dev/urandom. zostały ustalone odpowiednie ogranicze-
w danym katalogu mogą być usunięte tylko nia. W powyższym przykładzie ogranicze-
przez ich właścicieli lub przez właściciela ka- Ograniczenia powłoki nie ilości procesów uchroniło zasoby sys-
talogu. Dzięki temu można tworzyć katalo- Powłoka Bash posiada wbudowane pole- temu.
gi, w których wszyscy mogą zapisywać pli- cenie ulimit. Za jego pomocą można usta- Aby limity obowiązywały po każdym
ki, ale nie mogą ich sobie nawzajem kasować, wić m.in. maksymalny rozmiar plików, pa- logowaniu użytkownika do systemu, mu-
co w przypadku katalogu plików tymczaso- mięci wirtualnej, zużycie czasu proceso- simy je zapisać w pliku konfiguracyjnym
wych jest wskazane. Bit lepkości dodajemy ra, największe rozmiary plików zrzutu pa- powłoki - /etc/profile. Jeśli nowe ogranicze-
poleceniem: mięci (ang. core file), nieprzekraczalny li- nia mają dotyczyć tylko zwykłych użyt-
mit otwartych na raz deskryptorów plików, kowników, wystarczy umieścić polecenia
$ chmod +t /tmp maksymalną liczbę procesów, jakie dany w instrukcji warunkowej, która sprawdza
użytkownik może rozpocząć oraz maksy- czy numer ID użytkownika jest większy od
Innymi przykładami "wrażliwych" katalo- malny rozmiar zajmowanej pamięci. Takie zera:
gów są: /var/tmp, /var/lock i /var/spool/mail. ograniczenia są bardzo ważne i mogą w za-
sadniczy sposób ułatwić administrację. Na if [ `id -u` -gt 0 ]; then
Prawa dostępu przykład, gdy użytkownik uruchamia dużą ulimit -f 1024 -u 100
do urządzeń liczbę procesów, czyni system mniej wydaj- fi
W systemach typu Unix wszystko jest pli- nym i utrudnia korzystanie z niego przez
kiem. Także urządzenia sprzętowe mają przy- innych użytkowników. Wydanie polecenia Powyższy sposób możemy wykorzystać do
dzielone odpowiednie nazwy plików, któ- ulimit -a spowoduje wyświetlenie listy stosowania ograniczeń dla wybranych użyt-
re znajdują się w katalogu /dev i jego pod- ograniczeń użytkownika, podobnej do tej kowników lub grup użytkowników.
katalogach. widocznej na Listingu 3. Mechanizm ulimit uniemożliwia ponow-
W przypadku bezpiecznego systemu Widać wyraznie, że większość ograni- ne zwiększenie własnych limitów przez
zwyczajni użytkownicy nie powinni korzy- czeń ma wartość unlimited. Dlatego pier- zwykłego użytkownika (może tylko zmniej-
stać z bezpośredniego dostępu do urządzeń wszą rzeczą, jaką powinniśmy zrobić jest szyć). Ponadto każdy nowo uruchomiony
dyskowych (/dev/hd* oraz /dev/sd*), ponie- ograniczenie rozmiaru pliku zrzutu pamię- program dziedziczy ustawienia dla powło-
waż spowodowałoby to pominięcie wszyst- ci do zera, wydając polecenie ulimit -c 0. ki.
kich zabezpieczeń systemu plików. W żad- Następnie ograniczymy maksymalny roz-
nym wypadku nie mogą mieć dostępu do miar tworzonego pliku, na przykład do $ ulimit -u unlimited
większości urządzeń tty, gdyż w przeciw- 1MB: -bash: ulimit: cannot modify limit:
nym wypadku pozwalałoby to na prze- Operation not permitted
chwytywanie klawiszy naciskanych przez $ ulimit -f 1024
poszczególne osoby. Kolejne urządzenia, $ cat /dev/urandom > plik.txt Użytkownicy przyjmują ograniczenia bez en-
do których dostęp może mieć wyłącznie File size limit exceeded tuzjazmu i trudno się temu dziwić. Jeśli jed-
administrator to urządzenie pamięci jądra nak nałożone przez nas limity nie będą zbyt
(/dev/kmem) i pamięci fizycznej (/dev/mem). W ten sposób możemy zapobiec tworzeniu rygorystyczne to na pewno nie zauważą żad-
Dostęp do tych plików przez osoby nie- ogromnych plików przez proces. Polece- nych zmian.
powołane może być bardzo niebezpieczny nie to niestety nie uniemożliwi utworzeniu
w skutkach. Oba urządzenia powinny nale- wielu plików przez użytkownika (służy do Na koniec
żeć do użytkownika root, a ich prawa do- tego mechanizm o nazwie quota). Instalując i konfigurując system warto kie-
stępu należy ustawić na 600. Kolejny parametr ulimit umożliwia ogra- rować się zasadą, że jeśli coś jest zbędne
Niektóre urządzenia muszą mieć usta- niczyć maksymalną liczbę procesów potom- i niepotrzebne to należy to usunąć lub cho-
wione pełne prawa dostępu (odczyt i za- nych uruchamianych przez jednego użyt- ciaż wyłączyć. W pewnym stopniu może-
kownika. Na Listingu 3 ograniczenie ma war- my wykluczyć taką sytuację poprzez unik-
tość 1022, czyli stanowczo za dużo. Zmniej- nięcie standardowej instalacji systemu. Dla-
szymy ją dziesięciokrotnie: tego zawsze, gdy jest to możliwe, powin-
Restrykcje
niśmy uruchamiać szczegółową procedurę
Należy z rozwagą dobierać flagi monto-
$ ulimit -u 100 instalacji i w ten sposób zrezygnować z do-
wania partycji. Czasami narzucenie zbyt
$ :(){ :|:&};: łączania niepotrzebnych pakietów.
restrykcyjnych reguł dostępu może stać
-bash: fork: Resource temporarily Bezpieczeństwo jest procesem rozpo-
irytujące dla administratora. Przykładowo,
unavailable czynającym się już podczas instalacji syste-
jeśli ktoś montowałby partycję z opro-
mu. Tworzymy wtedy fundament naszego
gramowaniem w trybie tylko do odczytu,
Przedstawiony wyżej skrypt powłoki, tzw. systemu. To od naszych decyzji zależy czy
będzie utrudniał sobie próby jego aktu-
fork-bomba, w bardzo krótkim czasie po- ów fundament będzie solidny i czy wytrzy-
alizacji.
woduje zużycie dostępnych zasobów, co ma próbę czasu.
www.lpmagazine.org 47
Wyszukiwarka
Podobne podstrony:
2007 01 Novell Security Manager–powered by Astaro [Bezpieczenstwo]2007 01 Web Building the Aptana Free Developer Environment for Ajax2007 08 Podstawy zabezpieczenia serwerów [Bezpieczenstwo]G 11 01 Wszystkich Swietych2007 01 Rehabilitacja2007 01 Boom na fizjoterapię2007 01 Praca dla fizjoterapeutów2007 01 Grę każdy napisać może! [Programowanie]2007 01 Amerykańskie badania nad elektrostymulacją mięśniWszystko o prawach pacjenta2010 01 Prywatność poczty elektronicznej [Bezpieczenstwo]2007 01 Rehabilitacja lecznicza umowa z NFZSIMR ALG1 EGZ 2007 01 30a rozwwięcej podobnych podstron