2004.09_Bezpieczeństwo Linuksa_[Bezpieczenstwo].pdf

(741 KB) Pobierz
332779215 UNPDF
dla początkujących
Bezpieczeństwo
Linuksa
tów używanych przez zwolenników
Linuksa w dyskusjach z użytkowni-
kami Windows jest to, że Linux jest
bezpieczny. Ale czy rzeczywiście tak jest?
Nie do końca. W przypadku każdego sys-
temu operacyjnego należy podjąć pewne
kroki, które utrudnią zadanie ewentual-
nym czarnym charakterom.
serwery są przechowywane w specjalnie
zabezpieczonych pomieszczeniach, do
których mają wstęp tylko upoważnione
osoby. Niemniej, można utrudnić zada-
nie osobie, która chciałaby grzebać nam
w systemie pod naszą nieobecność. Dzięki
temu włamanie się może zająć jej na tyle
dużo czasu, że okaże się nieopłacalne.
Hasło systemowe
Zazwyczaj pierwszą zaporą stojącą na
drodze do systemu jest hasło użytkowni-
ka. Od nas zależy, na ile ta zapora będzie
skuteczna. Przykładowo, jeśli nasz zna-
jomy usiądzie przy naszym komputerze,
może próbować odgadnąć hasło. Zacznie
od daty urodzenia, imion rodziców,
nazwiska, jak również od rzucających
się w oczy napisów znajdujących się
w okolicy. Z tego powodu nigdy nie należy
tworzyć takich ani podobnych haseł.
Włamywacz może również w jakiś
sposób uzyskać dostęp do pliku z hasłami
(zazwyczaj zaszyfrowanymi), a następnie
z pomocą odpowiedniego programu
odgadnąć użyte w nim hasła. Takie pro-
gramy stosują metody słownikowe (wy-
próbowywane są kolejne słowa znajdujące
się w olbrzymich plikach tekstowych), jak
również brutalne ataki (program sprawdza
kolejne kombinacje znaków). Mamy kolej-
ną wskazówkę, jakich haseł nie używać
– słów znajdujących się w słownikach
(zarówno polskich, jak i angielskich), jak
również prostych, krótkich zlepków liter.
Dodatkowo, nie powinniśmy używać
CD/DVD
Po uruchomieniu dystrybucji
Linux+ Live CD/DVD można
przetestować omawiane
zagadnienia.
Przykład użycia
Nareszcie zaczęło się lato. Wydawałoby
się, że wszystkich wywieje nad wodę, ale
nie – nadal wielu ludzi woli (niektórzy
nie mają wyjścia) ślęczeć przed moni-
torami. Niektórym rosnąca temperatura
podgrzewa krew i skłania do niezbyt
rozsądnych czynów. Jeden z takich osob-
ników postanowił zabawić się kosztem
mojego znajomego, włamując mu się na
konto i przerabiając jego stronę WWW .
Znajomy bardzo się zdziwił, zmartwił
i zdenerwował (to łagodne określenia
stanu faktycznego), po czym przybiegł
do mnie domagając się, abym pomógł
mu się zemścić. Gdy już się uspokoił,
porozmawialiśmy chwilę. Okazało się,
że włamanie mogło nie mieć miejsca,
gdyby bardziej dbał o swój system. Czy
można się dziwić, że ktoś nie skorzystał
z zaproszenia, jakim jest karteczka
z hasłem wywieszona na monitorze sto-
jącym w pokoju w akademiku? Tym bar-
dziej, że znajomy korzysta z tego samego
hasła dosłownie wszędzie, nawet przy
logowaniu na konto bankowe ( sic! ).
Zamiast mścić się na włamywaczu,
po cichu podziękowaliśmy mu, że nie
przelał sobie dosyć pokaźnej sumki
zaoszczędzonej na wakacyjny wyjazd
i od razu zabraliśmy się za lepsze zabez-
pieczanie systemu.
Na płycie CD/DVD
Na płycie CD/DVD znajdują się
programy do wykonywania kopii
zapasowych danych.
O autorze
Autor ukończył studia na kierunku
Informatyka na Politechnice
Opolskiej. Z Linuksem (i ogólnie
systemami uniksowymi) ma
styczność od wielu lat. Obecnie
administruje dwoma sieciami
blokowymi. Wolne chwile dzieli
pomiędzy jazdy konne, pływanie,
czytanie książek i mang oraz oglą-
danie anime. Kontakt z autorem:
autorzy@lpmagazine.org
Bezpieczeństwo lokalne
Zawsze należy pamiętać o jednej zasadzie
– ten, kto ma fizyczny dostęp do kompu-
tera, ma również dostęp do zainstalowa-
nego na nim systemu i przechowywanych
danych. Z tego powodu bardziej istotne
Rysunek 1. Slang hakerski jest świetnym
sposobem na tworzenie trudnych do
odgadnięcia haseł
56 wrzesień 2004
Piotr Machej
J ednym z podstawowych argumen-
332779215.033.png 332779215.034.png 332779215.035.png 332779215.036.png 332779215.001.png 332779215.002.png 332779215.003.png
bezpieczeństwo Linuksa dla początkujących
a wpisujemy yqw3oi0 (klawisz [ y ] jest nad
[ h ], [ q ] nad [ a ] i tak dalej).
Oczywiście, każdy może wymyślić
własne hasło stworzone inną metodą.
Ważne jest, aby było łatwe do zapamię-
tania i trudne do odgadnięcia.
Należy pamiętać o tym, aby co jakiś
czas zmieniać swoje hasło. Szczególnie,
jeśli podejrzewamy, że ktoś mógł zoba-
czyć, jak je wpisujemy lub w inny sposób
je zdobyć – wtedy należy je zmienić
natychmiast (dla przypomnienia – służy
do tego polecenie passwd w konsoli tek-
stowej). Nie należy pozwalać, aby ktoś
pod naszą nieobecność mógł korzystać
z otwartej sesji. Przykładowo, w menu
KDE istnieje opcja Zablokuj ekran . Jej
użycie powoduje, że aby ponownie roz-
począć pracę, należy podać hasło zalogo-
wanego użytkownika.
password=hasło
restricted
Rysunek 2. W Internecie jest wiele
serwisów dotyczących bezpieczeństwa,
głównie w języku angielskim
Oczywiście, zamiast hasło wpisujemy
odpowiadające nam hasło. Należy
pamiętać, że umieszczone tu hasło jest
widoczne na ekranie, więc nie powinno
być takie samo, jak na którymkolwiek
koncie. Po zapisaniu zmian w pliku
należy uaktualnić dane w sektorze
startowym. W tym celu wydajemy pole-
cenie /sbin/lilo . Nie wolno tego kroku
pominąć, gdyż możemy mieć proble-
my z uruchomieniem systemu. Od tej
pory, jeśli przy uruchamianiu systemu
chcielibyśmy zmienić parametry wywo-
łania jądra, to zostaniemy zapytani
o hasło. Pominięcie w pliku /etc/lilo.conf
słowa restricted spowodowałoby, że
o hasło bylibyśmy pytani przy każdym
uruchomieniu systemu, niezależnie,
czy zmienialibyśmy parametry wywo-
łania.
W przypadku GRUB-a postępujemy
podobnie. Tym razem edytujemy plik
/boot/grub/grub.conf (w przypadku
Auroksa – w innych dystrybucjach plik
może znajdować się gdzie indziej). Na
jego początku dopisujemy linijkę o treści:
password hasło .
Po zapisaniu zmian, jeśli ktoś zechce
podczas uruchamiania modyfikować
jakiekolwiek parametry, będzie musiał
podać hasło.
W przypadku obydwu plików ( /etc/
lilo.conf i /boot/grub/grub.conf ) należy
upewnić się, że jedynie właściciel pliku
ma prawa do odczytu. Po co nam hasło,
jeśli każdy z użytkowników może je
odczytać. Dlatego wykonujemy następu-
jące polecenia:
haseł bardzo krótkich – rozsądne mini-
mum to 8 znaków. Bardzo złymi hasłami
są np. słowa ala i domek .
Skoro już wiemy, jakich haseł nie
należy używać, możemy się zastanowić,
jakich można użyć. Przede wszystkim
musi to być hasło łatwe do zapamię-
tania. Dzięki temu unikniemy pokusy
zapisywania go na karteczce przyklejo-
nej do monitora (niestety, jest to bardzo
częsta praktyka). Przykładowo, weźmy
hasło L,Om,Tjjz. Trudne do odgadnięcia?
Wystarczająco – ma 10 znaków, z czego
część to wielkie i małe litery, a są też
kropki i przecinki. Nie jest to słowo, więc
atak słownikowy się nie uda. Złamanie
takiego hasła brutalnym atakiem jest
możliwe, ale wymaga dosyć dużo czasu
i silnego komputera. A co z łatwością
zapamiętania? Chyba każdy zna ten cytat:
Litwo, Ojczyzno moja, Ty jesteś jak zdro-
wie... Jak widać, wzięliśmy z tego cytatu
pierwsze litery każdego słowa i znaki
przestankowe. W ten sposób można
wykorzystać praktycznie dowolny cytat.
Można spróbować innej metody.
Popatrzmy na takie hasło: 3,14jMl3k0 .
Również trudne do odgadnięcia, ale do
zapamiętania wystarczy nam popularne
hasło reklamowe: Pij mleko . Litery Pi
zamieniliśmy na 3,14 , usunęliśmy spację,
a słowo mleko zaczęliśmy wielką literą
i dodatkowo zamieniliśmy e na 3 i o na
cyfrę 0 . Ostatnie dwie podmiany liter
pochodzą z dosyć popularnego w Inter-
necie slangu zwanego 1337 ( leet , od elite ).
Więcej na ten temat można poczytać
nastronach http://www.urbandictionary.
com/define.php?term=1337 i http://en.
wikipedia.org/wiki/Leet .
Jeszcze inna metoda, pozwalająca na
łatwe zapamiętanie haseł, to wciskanie
klawiszy znajdujących się o poziom wyżej
(lub niżej, lub o dwa w lewo itp.) od
klawisza, o którym myślimy. Przykłado-
wo, zapamiętujemy sobie słowo haselko ,
Hasło LILO i GRUB
Wydawałoby się, że mając dobre hasło,
jesteśmy zabezpieczeni przed użytkow-
nikiem, który chciałby uzyskać dostęp do
naszego systemu. Nic bardziej błędnego.
Osoba mająca fizyczny dostęp do kom-
putera może wcisnąć przycisk RESET na
obudowie. Jeśli korzystamy z menedże-
ra ładowania LILO lub GRUB , to może
dopisać do parametrów wywołania jądra
słowo single (np. wpisując w tekstowym
LILO polecenie linux single ). Spowoduje
to uruchomienie systemu w trybie jedne-
go użytkownika i przyznanie intruzowi
praw administratora bez konieczności
podawania hasła ( sic! ). W tym momencie
może zrobić z systemem wszystko – zmie-
nić hasło administratora ( passwd ), innego
użytkownika ( passwd nazwa_użytkownika ),
zainstalować tylną furtkę (ang. backdoor ),
umożliwiającą mu ponowne uzyskanie
praw administratora (tym razem już bez
resetowania komputera), czy po prostu
skasować wszystkie pliki.
Jak się przed tym ustrzec? Jeśli pod-
czas instalacji dystrybucji zainstalowaliśmy
LILO , to będziemy musieli zmodyfikować
plik /etc/lilo.conf . W tym celu urucha-
miamy dowolny emulator terminala (np.
Terminal lub Multi Gnome Terminal ).
Musimy uzyskać uprawnienia admini-
stratora, więc korzystamy z polecenia
su i podajemy hasło użytkownika root .
Teraz możemy modyfikować plik konfi-
guracyjny w naszym ulubionym edytorze
(np. vi /etc/lilo.conf lub mcedit /etc/
lilo.conf ). Na początku pliku dopisujemy
dwie linie o następującej treści:
chmod go-rwx /etc/lilo.conf
chmod go-rwx /boot/grub/grub.conf
Rysunek 3. Listy kontroli dostępu można
już wykorzystywać w Linuksie, choć nadal
standardem jest kontrola na poziomie
pliku
www.lpmagazine.org
57
332779215.004.png 332779215.005.png 332779215.006.png 332779215.007.png 332779215.008.png 332779215.009.png 332779215.010.png 332779215.011.png
dla początkujących
systemu. Pamiętajmy jednak, że Linux jest
systemem wieloużytkownikowym – rów-
nocześnie może korzystać z niego wiele
osób. Założenie, że każdy, kto legalnie
korzysta z systemu, jest grzecznym
użytkownikiem, jest błędne. Często nie
wiemy, kim są inni użytkownicy i jakie
mają zamiary. Dlatego musimy uważać,
w jaki sposób chronimy dane umiesz-
czone w systemie. Pozwalają nam na to
prawa dostępu do plików oraz możli-
wość definiowania grup użytkowników.
Niestety, domyślny system praw dostępu
do plików nie jest zbyt doskonały, ale
póki nie zostanie dopracowany system
list kontroli dostępu ( ACL Access
Control List ), musi nam wystarczyć.
i wykonywania. Zobaczmy to na prak-
tycznym przykładzie. W oknie terminalu
wpiszmy polecenie ls -l /etc/passwd .
Powinniśmy uzyskać wynik podobny do
poniższego:
-rw-r--r-- 1 root root S
1966 cze 30 12:10 /etc/passwd
Rysunek 4. Do zarządzania
użytkownikami i grupami można również
wykorzystać interfejsy graiczne
To, co nas w tej chwili interesuje, to ciąg
-rw-r--r-- oraz dwa wyrazy root . Pierw-
szy wyraz root wskazuje, że właścicielem
pliku /etc/passwd jest użytkownik root .
Natomiast drugi mówi, że grupą, która
ma uprawnienia do tego pliku, jest grupa
o nazwie root . Więcej o grupach dowie-
my się w dalszej części artykułu. Na razie
skupimy się na ciągu -rw-r--r-- , określają-
cym uprawnienia do pliku.
Pierwszy myślnik tego ciągu wskazu-
je, że /etc/passwd jest zwykłym plikiem.
W przypadku katalogów w tym miejscu
znajduje się litera d , ale można spotkać
się jeszcze z literami b (urządzenie bloko-
we) i c (urządzenie znakowe).
Następne trzy znaki to prawa
przyznane właścicielowi pliku (w tym
przypadku użytkownikowi root ). Ma
on możliwość czytania pliku ( r Read )
i zapisywania go ( w Write ). Nie ma
natomiast możliwości wykonywania pliku
– nie potrzebuje jej, gdyż plik /etc/passwd
nie jest programem ani skryptem. Gdyby
był, to na trzeciej pozycji, zamiast myślni-
ka, znajdowałaby się litera x ( eXecute ).
Analogicznie, kolejne trzy znaki okre-
ślają uprawnienia przysługujące grupie
Bliższe objaśnienie tych poleceń znajduje
się w dalszej części artykułu, w rozdziale
Ochrona plików .
Prawa dostępu
Na początku trzeba przyzwyczaić się
do myśli, że Linux wszystko traktuje
jako pliki. Zapisany na dysku obrazek
czy dokument tekstowy są plikami (to
jest naturalne), ale plikiem jest również
katalog i, co ciekawsze, urządzenie pod-
łączone do komputera. Przykładowo,
pierwszy dysk twardy to plik /dev/hda ,
a umieszczona na nim partycja to /dev/
hda1 . Z kolei napędowi CD-ROM odpo-
wiada plik /dev/cdrom . Dla nas oznacza
to tyle, że kontrolując prawa dostępu do
plików możemy równocześnie kontrolo-
wać dostęp do wielu urządzeń.
Uprawnienia do plików możemy
przydzielać właścicielowi pliku, grupie
oraz wszystkim pozostałym. Możliwe
uprawnienia to prawo do odczytu, zapisu
Hasło BIOS-u
Poczyniliśmy już tyle przygotowań,
a jednak nadal można dosyć łatwo spe-
netrować nasz system. Wystarczy, że
ktoś przyniesie swoją dyskietkę startową
i wskaże odpowiednią partycję z syste-
mem. Może również skorzystać z dowol-
nej dystrybucji uruchamianej z płyty CD
lub DVD – po jej uruchomieniu może
podmontować naszą partycję z syste-
mem i wprowadzić odpowiednie zmiany
(np. zmienić hasło administratora).
I na to jest sposób. W każdym kom-
puterze mamy możliwość założenia
hasła, o które jesteśmy pytani podczas
uruchamiania komputera lub przy próbie
zmiany konfiguracji. W naszym przypad-
ku powinno wystarczyć wyłączenie moż-
liwości startowania systemu z dyskietki
lub płyty oraz zabezpieczenie hasłem
możliwości zmian w konfiguracji. Ze
względu na różnorodność BIOS-ów, naj-
lepiej w tym celu zapoznać się z instruk-
cją dołączoną do komputera.
Włamywacz, który chciałby ominąć
to zabezpieczenie, musiałby otworzyć
obudowę komputera w celu zresetowa-
nia pamięci CMOS (zależnie od modelu
płyty, można tego dokonać wyciągając
baterię lub korzystając z odpowiedniej
zworki na płycie głównej). Może też
skorzystać z tzw. hasła uniwersalnego,
ale znalezienie hasła pasującego akurat
do naszej wersji BIOS nie jest takie
proste.
Ochrona plików
Rozważaliśmy dotąd działania osoby,
która próbuje uzyskać dostęp do naszego
Rysunek 5. O wykrytych lukach w bezpieczeństwie możemy się również dowiedzieć
z polskich serwisów
58
wrzesień 2004
332779215.012.png 332779215.013.png 332779215.014.png 332779215.015.png 332779215.016.png 332779215.017.png 332779215.018.png 332779215.019.png
bezpieczeństwo Linuksa dla początkujących
umask . Jeśli wywołamy je w postaci
umask -S u=rwx,g=,o= , to utworzone od
tego momentu katalogi będą miały prawa
-rwx------ , natomiast pliki: -rw------- .
Warto to polecenie dopisać do jednego ze
skryptów uruchamianych podczas logo-
wania, np. ~/.bash_profile . Dokonujemy
tego otwierając go w naszym ulubionym
edytorze tekstu (np. vi ~/.bash_profile )
i dopisując na jego końcu linię o treści:
umask -S u=rwx,g=,o= .
Rysunek 6. Osobom mniej obeznanym z językiem angielskim z pewnością przyda się
polskie tłumaczenie wiadomości z BugTraq
Grupy
Wiemy już, jak chronić pliki. Czasem
chcielibyśmy, aby określone osoby
miały do nich dostęp, a inne nie.
W poprzednim rozdziale mówiliśmy
o przyznawaniu uprawnień do plików
grupie użytkowników. Niestety, dodawa-
nie użytkowników do grup jest możliwe
tylko z uprawnieniami administratora,
co czyni tę technikę nieco niewygodną.
Niemniej, warto ją poznać.
Załóżmy, że w systemie mamy trzech
użytkowników: jacek , wacek i placek .
Użytkownicy jacek i wacek pracują
nad wspólnym projektem, dlatego też
potrzebują katalogu, w którym mogliby
je przechowywać. Postanowili, że umiesz-
czą je w podkatalogu projekt/ katalogu
domowego użytkownika jacek . Nie chcą
jednak, aby użytkownik placek mógł
tam zaglądać. Poszli do administratora
i poprosili go o założenie odpowiedniej
grupy. Administrator akurat miał chwilę
czasu, więc ze swojego konta (jak zwykle
pracował na koncie zwykłego użytkow-
nika) wydał polecenie su i wpisał swoje
hasło. Następnie utworzył nową grupę
o nazwie projekt : groupadd projekt . Jej
istnienie można sprawdzić przegląda-
jąc plik /etc/group , np. poleceniem cat
/etc/group . Teraz pozostało mu dopisanie
użytkowników do grupy. Dokonał tego
poleceniami: usermod -G projekt jacek
oraz usermod -G projekt wacek . Polecenie
takie powoduje, że wskazany użytkownik
jest przypisywany do grup wymienionych
w opcji -G . Jeśli należał do innych, niewy-
mienionych grup, to jest z nich usuwany.
Z tego powodu lepiej wywołać polecenia
groups jacek i groups wacek zarówno
przed, jak i po użyciu polecenia usermod .
Pozwoli to na sprawdzenie, do jakich grup
należą wskazani użytkownicy, oraz czy
wykonanie polecenia dało oczekiwany
przez nas skutek.
Teraz już użytkownik jacek może
w swoim katalogu utworzyć podkatalog
(w tym przypadku grupie root ) – ma ona
tylko prawo do odczytu pliku. Takie same
prawa mają wszyscy pozostali użytkownicy,
co jest określone przez ostatnie trzy znaki.
Należy zwrócić uwagę, że w przypad-
ku katalogów prawa dostępu mają nieco
inne znaczenie: prawo odczytu pozwala
na odczyt zawartości katalogu, prawo
zapisu pozwala na tworzenie i kasowa-
nie plików w katalogu, natomiast prawo
wykonywania pozwala na wchodzenie
do katalogu (np. komendą cd ).
Jak to wykorzystać w praktyce?
Omówmy to na przykładzie naszego
katalogu domowego. Przede wszystkim
powinniśmy zadbać, aby nikt nie miał
dostępu do naszych danych. W tym celu
zmniejszamy prawa dostępu do naszego
katalogu poleceniem chmod go-rwx ~/ .
Składnia polecenia może wydawać się
trudna, ale szybko się do niej przyzwy-
czaimy. Po chmod (nazwa polecenia
zmieniającego uprawnienia do pliku)
mamy litery go . Oznaczają one, że zmie-
niamy uprawnienia dla grupy ( g group )
i wszystkich pozostałych użytkowników
( o others ). Następujący po niej znak
minusa oznacza, że usuwamy upraw-
nienia określone następnymi literami.
W tym przypadku usuwamy uprawnienia
do odczytu ( r ), zapisu ( w ) i wykonywania
( x ). Ostatni parametr to nazwa pliku lub
katalogu, którego dotyczy polecenie.
W analogiczny sposób powinniśmy
postąpić z katalogami i plikami umiesz-
czonymi w naszym katalogu domowym.
Jeśli jesteśmy pewni, że chcemy zmienić
uprawnienia wszystkich plików i kata-
logów, możemy dokonać tego jednym
poleceniem: chmod -R go-rwx ~/ . W tym
przypadku użyliśmy dodatkowej opcji
-R , która sprawia, że prawa są ustawia-
ne rekursywnie dla wszystkich plików
i katalogów.
Co się jednak dzieje, gdybyśmy chcie-
li, aby inni użytkownicy mieli dostęp do
pewnych plików w naszym katalogu?
Przykładowo, chcemy stworzyć własną
stronę WWW i umieścić ją w katalogu
~/public_html/ . Do tego katalogu muszą
mieć dostęp inni użytkownicy, a co naj-
mniej serwer WWW . Najlepiej ustawić
następujące prawa: chmod u=rwx,go=x
~/public_html/ . Tym razem skorzystaliśmy
ze znaku = , który powoduje ustawienie
dokładnie takich praw, jakie podaliśmy.
W naszym przypadku użytkownik ( u )
będzie miał wszystkie prawa do katalogu,
natomiast grupa i inni ( go po przecinku)
będą mogli tylko wchodzić do katalogu.
Umieszczając w nim pliki musimy zadbać,
aby miały prawa -rwxr--r-- , natomiast
podkatalogi powinny mieć prawa -rwx-
-x--x . Na koniec musimy zrobić jeszcze
jedną rzecz, a mianowicie ustawić prawo
wejścia do naszego katalogu domowego
dla innych użytkowników. Jeśli nie wyko-
namy polecenia chmod go+x ~/ , to nie będą
oni mogli uzyskać dostępu do plików
zawartych w katalogu ~/public_html/ .
Dużym ułatwieniem w zarządza-
niu prawami dostępu jest ustawienie
domyślnych praw nadawanych plikom
i katalogom. Służy do tego polecenie
www.lpmagazine.org
59
332779215.020.png 332779215.021.png 332779215.022.png 332779215.023.png 332779215.024.png
 
dla początkujących
projekt/ (poleceniem mkdir ~jacek/
projekt/ ). Następnie musi wskazać,
że katalog ten należy do niego i do
grupy projekt . Czyni to poleceniem
chown jacek:projekt ~jacek/projekt/ .
Powinien jeszcze zadbać, aby członko-
wie grupy mogli swobodnie pracować
w tym katalogu. W tym celu ustawia prawa
dostępu poleceniem chmod ug=rwx,o-rwx
~jacek/projekt/ . Jeśli dotychczas tego nie
zrobił, musi również umożliwić wstęp
do swojego katalogu, o czym mówiliśmy
w poprzednim rozdziale (służy do tego
polecenie chmod o+x ~jacek/ ).
Czas zacząć pracę. Jeśli teraz któryś
z użytkowników jacek lub wacek utwo-
rzy nowy plik w tym katalogu (np.
poleceniem touch plik1 ), to jako grupa
właściciela pliku będzie podana (zależnie
od systemu) grupa o nazwie users lub
o nazwie takiej, jak nazwa użytkownika.
A nam przecież zależy na tym, aby jacek
i wacek mogli wspólnie korzystać z tych
plików – powinny one należeć do grupy
projekt . Dlatego przed rozpoczęciem
pracy w tym katalogu każdy z użytkow-
ników powinien wydać polecenie newgrp
projekt . Od tej pory tworzone przez niego
pliki będą miały ustawioną grupę właści-
ciela projekt . Warto również od razu usta-
wić opcję umask : umask ug=rwx,o= , dzięki
czemu właściciel i grupa będą mieli pełne
prawa do tworzonych plików, natomiast
inni (np. użytkownik placek ) nie.
SUID . Gdyby znajdowała się na pozycji
odpowiadającej prawu wykonywania
przez grupę, to oznaczałoby to, że usta-
wiony jest bit SGID . Powód ustawienia
bitu SUID dla programu passwd jest
prozaiczny – plik /etc/passwd , w którym
przechowywane są informacje o użyt-
kownikach, jest dostępny do odczytu dla
wszystkich, ale zapisywać w nim może
tylko użytkownik root . Ponieważ każdy
z użytkowników musi mieć możliwość
zmiany swojego hasła, więc konieczne
jest wykonywanie programu passwd
z uprawnieniami administratora.
Czy takie pliki mogą nam zaszko-
dzić? Tak. Każdy plik z ustawionym
bitem SUID to potencjalne zagrożenie.
Jeśli będzie w nim jakiś błąd, to może
to doprowadzić do tego, że niegrzeczny
użytkownik uzyska na stałe uprawnienia
właściciela pliku. Niemniej, część plików
z ustawionymi bitami SUID lub SGID jest
konieczna do funkcjonowania systemu.
W przypadku innych (np. polecenie
mount ) jest to raczej kwestia wygody
w używaniu systemu.
Listę znajdujących się w systemie
plików z ustawionymi wspomnianymi
bitami możemy uzyskać wydając jako
administrator następujące polecenie: find
/ -perm +6000 > ~/spis_suidy_sgidy.txt
Po dłuższym oczekiwaniu (polece-
nie to przeszukuje cały system plików
w poszukiwaniu plików z ustawio-
nym bitem SUID lub SGID ), w pliku
~/spis_suidy_sgidy.txt zostaną umiesz-
czone nazwy plików spełniających ten
warunek. Można się zdziwić ich liczbą
– oprócz narzędzi administracyjnych,
z bitów SUID często korzystają gry.
Podczas administracji systemem należy
zwrócić baczną uwagę na to, czy pliki
te nie zostały przez kogoś podmienione.
Taka podmiana może świadczyć o sku-
tecznym włamaniu na serwer. Możemy
też, w miarę możliwości, pozdejmować
bity SUID i SGID . Rozdział Polecenie
sudo zawiera opis jednej z metod zastą-
pienia funkcjonalności bitów SUID .
Samo zdejmowanie bitów dokonujemy
znanym nam już poleceniem chmod
(np. dla przypadku programu /bin/
mount ):
Rysunek 7. Nawet serwery NASA nie były
w stanie oprzeć się włamywaczom
ograniczyć wygodę korzystania z sys-
temu – może się zdarzyć, że większość
funkcji będzie można wykonać tylko
z uprawnieniami użytkownika root .
Praca z uprawnieniami
administratora
Podczas instalacji dystrybucji Linuksa
mamy możliwość ustalenia hasła admi-
nistratora (użytkownika root ) oraz utwo-
rzenia jednego lub więcej kont zwykłych
użytkowników. Zawsze należy pamiętać,
aby unikać pracy z uprawnieniami admini-
stratora. Jeśli jest to możliwe, powinniśmy
pracować na koncie zwykłego użytkow-
nika, a konta root (lub innego uprzywile-
jowanego) używać tylko w wyjątkowych
przypadkach. Takie przypadki to insta-
lacja oprogramowania lub dodawanie
nowych użytkowników. Zasady tej należy
przestrzegać nawet wtedy, gdy jesteśmy
jedynymi użytkownikami komputera.
Powód jest prosty – konto administrato-
ra daje nieograniczone możliwości, więc
jedna nieprzemyślana komenda (lub
polecenie wydane w złym katalogu) może
spowodować bardzo duże straty, z utratą
wszystkich danych włącznie.
Nie musimy logować się na konto
root , gdyż możemy uzyskać jego przy-
wileje korzystając z polecenia su . Po jego
wydaniu zostaniemy zapytani o hasło
użytkownika root . Jeśli podamy je pra-
widłowo, to od tej chwili aż do wydania
polecenia exit pracujemy z uprawnienia-
mi tego użytkownika. Jeśli zależy nam
na tym, aby nie tylko mieć odpowiednie
przywileje, ale również dostęp do zmien-
nych środowiskowych wykorzystywa-
nych przez administratora, to musimy
jako argument polecenia wpisać myślnik:
su - . Dzięki temu możemy również korzy-
stać ze zdefiniowanych przez tego użyt-
kownika aliasów i ścieżek dostępu.
Poleceniem su możemy nie tylko stać
się administratorem, ale również dowol-
nym użytkownikiem – wystarczy podać
Specjalne prawa
Tym, co nie daje spokoju wielu admi-
nistratorów, to programy z ustawionym
bitem SUID ( Set User ID ) lub SGID
( Set Group ID ). Ich istnienie powoduje,
że (w skrócie) program nie jest wyko-
nywany z uprawnieniami użytkownika
uruchamiającego polecenie, lecz z upraw-
nieniami (odpowiednio) właściciela pliku
lub jego grupy. Sztandarowym przykła-
dem pliku z ustawionym bitem SUID jest
program passwd . Najłatwiej to sprawdzić
wydając polecenie ls -l `which passwd .
Powinniśmy uzyskać wynik zbliżony do
poniższego:
-r-s--x--x 1 root root S
16336 lut 13 2003 /usr/bin/passwd
Należy zwrócić uwagę na literę s znaj-
dującą się na pozycji, gdzie zwykle jest
zapisywane prawo do wykonywania ( x )
pliku przez użytkownika. To właśnie
ona mówi nam, że plik ma ustawiony bit
chmod u-s /bin/mount
Analogicznie, w przypadku bitu SGID ,
zamiast u-s stosujemy g-s . Należy pamię-
tać, że takie zmiany mogą znacząco
60
wrzesień 2004
332779215.025.png 332779215.026.png 332779215.027.png 332779215.028.png 332779215.029.png 332779215.030.png 332779215.031.png 332779215.032.png
 
Zgłoś jeśli naruszono regulamin