Bezpieczeństwo

październik 27th, 2009

Bezpieczeństwo w systemach Linuks
Zacznijmy od najprostszych i najbardziej oczywistych rzeczy. Jeśli do naszego komputera maja dostęp osoby trzecie to warto użyć wygaszacza w  konsoli. Jeżeli pracujemy w trybie tekstowym i musimy na chwilę opuścić nasze stanowisko pracy skorzystajmy z kilku narzędzi by pozostawiać komputer bezpiecznym. Zacznijmy od lockvc, jest to prosty ale skuteczny wygaszasz, może on wyświetlać jedną z czterech dostępnych animacji. Po naciśnięciu jakiegoś przycisku na klawiaturze pyta on o hasło użytkownika. Wygaszasz ten nie jest domyślnie instalowany ale możemy go doinstalować w dowolnej chwili. Kolejnym programem który zablokuje ekran jest vlock. Program ten wyświetla tekst że ekran jest zablokowany, używając go możemy zablokować tylko tą konsolę na której pracujemy. Jest jeszcze jeden program o podobnych właściwościach czyli screen.

Przejdźmy teraz do praw użytkowników. Do zarządzania nimi służy chmod za jego pomocą zmieniamy prawa do plików i katalogów. W systemach linuks są trzy podstawowe prawa: do odczytu, do zapisu, do wykonania. Prawa te przyznawane są właścicielowi pliku czy katalogu, grupie czy też reszcie użytkowników. Jeśli chodzi o prawa do plików to można je zrozumieć. Z katalogami jest już trochę bardziej skomplikowanie. Prawo do odczytu pozwala nam na wyświetlenie zawartości katalogu. Prawo do zapisu pozwala nam zmienić wyświetloną wcześniej zawartość. Prawo do wykonania pozwoli nam wejść do danego katalogu. Aby wyświetlić pliki wraz z ich prawami użyjmy polecenia: ls – l

Programu do zmiany uprawnień używamy w następujący sposób:

chmod [opcje] prawa_dostępu pliki

Prawa możemy podac na dwa sposoby symbolicznie lub w systemie ósemkowym. W tej metodze uprawnienie oznacza się trzema cyframi, pierwsza z nich oznacza prawo dla właściciela, druga dla grupy, trzecia dla pozostałych użytkowników.

4 – oznacza prawo do odczytu

2 – prawo do zapisu

1 – prawo do wykonania

dla przykładu prawo 7 oznacza wszystkie te prawa razem. Więc co znaczy jeśli plikowi test.txt nadamy prawo 777, a więc jest to nadanie wszystkich trzech praw zarówno dla właściciela pliku, dla grupy, dla wszystkich. Pierwsza cyfra bowiem oznacza prawo dla właściciela pliku, druga dla grupy trzecia dla reszty.  Aby nadać prawo katalogowi i wszystkim podkatalogom i plikom w danym katalogu jest to opcja –R.

Jak wiadomo ręczne modyfikowanie wszystkich praw do różnych plików dla różnych użytkowników byłoby bardzo pracochłonne. Sterując programem umask mamy wpływ na standardowe ustawienia praw. Umask odpowiada za nadanie uprawnień plikom i katalogom nowo utworzonym. Domyślnie system jest ustawiony na działa tak że nowo tworzone pliki posiadają prawo 666 a katalogi 777. Jak zrozumieć umask ? Otórz trzeba od praw standardowych odjąć ustawioną wartość umask, w tym przypadku jest to 022. Wtedy pliki będą tworzone z prawem 644 a katalogi z 755.  Możemy wartość 022 zmienić na nową dowolną wystarczy wpisać umask nowa_wartosc. Wielu administratorów dodaje to polecenie do skryptów startowych dzięki czemu umask działa cały czas. Aby umask dotyczył wszystkich użytkowników naszego systemu należy w /etc/profile dodać wpis.
Oprócz standardowych są jeszcze trzy dodatkowe prawa dostępu, nazywamy je buitami specjalnymi. Bity te ustawiamy pisząc chmod symbolicznie. Niektóre z nich pozwalają na uruchomienie programów tylko użytkownikowi z prawami root. Za to odpowiada bit suid i sgid. Plik który posiada bit suid będzie zawsze uruchomiony z konteksty jego właściciela, niezależnie kto go uruchomi, bit sgid będzie on zawsze uruchamiany z kontekstu grupy.

Jak wiedzą wszyscy użytkownicy Linuksa najważniejszym katalogiem jest katalog domowy w którym przechowujemy nasze prywatne pliki itd. Jeśli uprawnienia tego katalogu pozwalają na odczyt postronnym osobom to możemy paść ofiarą ataku. Najgorzej jak osoba postronna może zapisywać lub edytować pliki, dlatego prawo 700 dla naszego domowego katalogu to absolutna konieczność.

Zdarza się że jeśli któryś z dysków odłączymy a wcześniej go nie odmotujemy to system uruchomi się z programem fsck który będzie skanował komputer w poszukiwaniu błędów i jeśli je znajdzie to podejmie próbę naprawy. Dane które nie zostaną odzyskane po uszkodzeniu zostaną przegrane do katalogu lost+found. Pliki tam są zapisywane z różnymi uprawnieniami a nawet bez uprawnień, dlatego administrator powinien od czasu do czasu zerknąć do tego folderu w celu sprawdzenia uprawnień.

W systemach z rodziny linuks istnieje coś takiego jak Chattr. Używamy tej aplikacji wtedy gdy standardowe prawa nie wystarczą w ochronie naszych informacji. Program ten dysponuje spora ilością różnych atrybutów które możemy przypisać plikom czy katalogom. Warto zaznaczyć że uprawnienia te mogą działać tylko na dyskach posiadających system plików ext2 lub ext3.

W linuksie znajduje się program locate który działa podobnie do find czyli wyszukuje pliki. Ale jest on dużo lepszy, aby go używać musimy stworzyć bazę plików i katalogów. Wydajemy w tym celu polecenie updatedb. Później by znaleźć plik wystarczy napisać locate plik.txt. Jednak program ten może narobić nam problemu. Wyobraźmy sobie że zwykły użytkownik wydaje polecenie locate /root, wtedy zobaczy on całą zawartość katalogu. Alternatywą jest program slocate lub updatedb trzeba skonfigurować tak by było tylko w kontekście usera nieuprzywilejowanego.

Czasem musimy usunąć trwale dane z dysku. Taka sytuacja może zaistnieć wtedy gdy wymieniamy komputer na nowy i nie chcemy by ktoś ze starego dysku odzczytał dane. W tym celu najwygodniej użyć programu wipe. Program ten wielokrotnie nadpisuje miejsce które zajmował plik przez specjalne wzorce których jest 34 a 8 z niech całkowicie losowych.

wipe –rcf /home/katalog1

Usuwa katalog „katalog1” rekursywnie wraz z całą zawartością (-r), automatycznie nadaje prawo do zapisu plikom (-c) i nie pyta o potwierdzenie (-f)

Wipe –kq /dev/hda2

Usuwa wszystkie dane z partycji hda2 w trybie szybkim używając tylko 4 wzorców z pośród 34

Lokalne logowanie użytkownika root

Jest możliwość ograniczenia możliwości lokalnego logowania użytkownika root.  Można też utrudnić możliwość podejrzenia hasła przez osoby które mogłyby się znaleźć za naszymi plecami. Zacznijmy od edycji pliku /etc/securitty/ jest tam lista wirtualnych konsol czyli TTY z których root może dokonać logowania. Można usunąć wszystkie linie za wyjątkiem tty1.

Root może logować się zdalnie za pomocą serwera ssh. Można zablokować możliwość logowania w ten sposób użytkownikowi root w pliku /etc/ssh/sshd_config znajdujemy PermitRootLogin i zmieniamy z yes na no. Warto też nadać tylko użytkownikom z grupy admin możliwość wykonywania polecenia su. Zrobimy to edytując plik /etc/pam.d/su i wpisujemy w nim auth required pam_wheel.so group=admin. Pamiętajmy także o wartościowym haśle dla użytkownika root, powinno ono zawierać wielkie i małe litery, cyfry oraz znaki typu @$&, długość hasła powinna być min 6 znaków.