Bezpieczeństwo Wojciech Myszka 17 listopada 2008
Podstawowe zasady 1. Wszystkie zasady bezpieczeństwa są niewygodne dla użytkowników (i administratora). 2. Cały system jest tak bezpieczny jak najmniej bezpieczny jego element. 3. Systemy podłączone bezpośrednio do sieci Internet nie są bezpieczne.
Aspekty bezpieczeństwa 1. Zapewnienie ciągłości pracy. 2. Zapewnienie ochrony danych: strata, wyciek. 3. Zapewnienie ochrony dostępu.
Jak? 1. Trzeba przewidywać (planowanie kryzysowe). 2. Trzeba mieć plan. 3. Szyfrować wszystko co się da. 4. Monitorować pracę systemu. 5. Wykrywać awarie (i naprawiać). 6. Szukać przyczyn awarii i zapobiegać.
Zagrożenia 1. Fizyczne Kradzież. Zniszczenie. Awaria zasilania. 2. Danych Uszkodzenie. Kradzież. Ujawnienie 3. Ciągłość dostępu Awarie sprzętu Awarie oprogramowania Awarie zasilania Awarie klimatyzacji Awarie infrastruktury sieciowej
Zabezpieczenia Standardowe: hasła (chronią przed nieautoryzowanym dostępem) prawa dostępu (chronią przed działaniami innych użytkowników; w pewnych warunkach również przed samym sobą) Inne: szyfrowanie (poufność danych)
Słabości Standardowy system haseł jest kiepski zachęca do ataków brute force 8 znaków /etc/passwd Standardowe prawa dostępu są bardzo kiepskie: wyróżniają tylko trzy rodzaje użytkowników: on sam grupa cała reszta
Ochrona kont Plik shadow (tcb) Zapewnienie haseł niepustych i nietrywialnych (i długich!?) Okresowe zmiany haseł Przeterminowywanie haseł (password aging) Jedno konto = jeden użytkownik Jedno hasło = jeden komputer (zwłaszcza root!) Centralne zarządzanie kontami (Kerberos, NIS, LDAP) Bardziej zaawansowane metody sprawdzania tożsamości Hasła jednorazowe
Ochrona plików Programy wykonywalne montowanie niektórych systemów plików no-ex Programy set-uid wykrywanie dzikich programów set-uid poprawne programowanie Sprawdzanie plików i katalogów systemowych prawa dostępu sumy kontrolne Sprawdzanie plików i katalogów użytkowych (niezgodne z zasadami prawa dostępu)
SELinux 1. Produkt National Security Agency http://www.nsa.gov/selinux/. 2. Let me assure you that this action by the NSA was the crypto-equivalent of the Pope coming down off the balcony in Rome, working the crowd with a few loaves of bread and some fish, and then inviting everyone to come over to his place to watch the soccer game and have a few beers. There are some things that one just never expects to see, and the NSA handing out source code along with details of the security mechanism behind it was right up there on that list. Larry Loeb [4]
SELinux I 1. W sumie dosyć podobne do AppArmor. 2. Wprowadza pewne modyfikacje do jądra (wprowadzone na stałe od wersji 2.6) 3. Architektura bezpieczeństwa oparta na ideii zwanej FLASK (NSA, University of Utah and the Secure Computing Corp.). 4. W jądro wbudowano mechanizmy MAC (Mandatory Access Control) nadzorujące uruchomiony program i zupełnie niezależne od praw wynikających UID i GID. 5. Wyeliminowano pojęcia root, setuid, setgid.
SELinux II 6. Pozwala to definiować dla każdej aplikacji zestaw uprawnień niezbędnych do pracy. 7. W przypadku przejęcia kontroli nad takim programem można minimalizować szkody. 8. System dostarcza podstawową politykę bezpieczeństwa. Administrator może ją modyfikować i zmieniać. 9. SELinux zapewnia kompatybilność na poziomie aplikacji.
SELinux III 10. Większośc modułów jądra będzie pracowała bez zmian (być może będzie potrzebna rekompilacja). W przypadku gdy jądro ma już wbudowane mechanizmy MAC pewne moduły jądra mogą wymagać zmian jeżeli wymagają dostępu do informacji związanych z bezpieczeństwem. 11. Systemy implementujące SELinux: Debian EnGarde Secure Linux Fedora Gentoo Red Hat Enterprise Linux Ubuntu
SELinux Przepełnienie bufora 1. Przepełnienie bufora to jedna z popularniejszych metod atakowania systemu w celu uruchomienia na nim swojego kodu i, w konsekwencji, przejęcia sterowania. 2. SELinux w żaden sposób nie zabezpiecza przed wystąpieniem tego zjawiska. 3. Jeżeli polityka bezpieczeństwa nie umożliwia (atakowanemu) programowi na uruchamianie programów atak się załamie, mimo, że (formalnie) się uda. 4. Natomiast system jest bardzo czuły na błędy polityki bezpieczeństwa.
AppArmor 1. AppArmor chroni przed uruchomieniem niezaufanych procesów przez uruchamianie ich pod kontrolą, ze specjalnie ustalonymi uprawnieniami (niezależnymi od uprawnień użytkownika i grupy). 2. Jeżeli zainstalowany jest AppArmor, programy, dla których nie są zdefiniowane ograniczenia uruchamiane są na dotychczasowych zasadach. 3. AppArmor zna dwa typy zasobów: pliki możliwości z POSIX.1e (POSIX.1e capabilities) i ogranicza kontrolowanym programom do nich dostęp zgodnie ze zdefiniowanymi zasadami.
AppArmor Profile 1. Aby skorzystać z możliwości oferowanych przez AppArmor należy dla każdej aplikacji, którą chcemy kontrolować stworzyć profil: 1.1 można skorzystać z istniejącego, 1.2 można napisać nowy, 1.3 można uruchomić aplikację w trybie uczenia będą notowane wszystkie jej działania i na tej podstawie można profil zbudować automatycznie Aplikacja nie musi być modyfikowana! 2. Dostęp do zasobów (na przykład plików) definiowany jest przez podawnie ich nazw.
AppArmor I Czy należy się tym przejmować? dpkg -l grep armor ii apparmor 2.1+1075-0ubuntu9. ii apparmor-utils 2.1+1075-0ubuntu9.
AppArmor II Czy należy się tym przejmować? # apparmor_status apparmor module is loaded. 2 profiles are loaded. 2 profiles are in enforce mode. /usr/sbin/cupsd /usr/lib/cups/backend/cups-pdf 0 profiles are in complain mode. 1 processes have profiles defined. 1 processes are in enforce mode : /usr/sbin/cupsd (4967) 0 processes are in complain mode. 0 processes are unconfined but have a profile defined.
AppArmor Ubuntu 8.04 I apparmor module is loaded. 3 profiles are loaded. 3 profiles are in enforce mode. /usr/bin/freshclam /usr/sbin/cupsd /usr/lib/cups/backend/cups-pdf 0 profiles are in complain mode. 2 processes have profiles defined. 2 processes are in enforce mode : /usr/bin/freshclam (5112) /usr/sbin/cupsd (5137)
AppArmor Ubuntu 8.04 II 0 processes are in complain mode. 0 processes are unconfined but have a profile defined.
AppArmor Ubuntu 8.10 I apparmor module is loaded. 4 profiles are loaded. 4 profiles are in enforce mode. /usr/share/gdm/guest-session/xsession /usr/bin/freshclam /usr/sbin/cupsd /usr/lib/cups/backend/cups-pdf 0 profiles are in complain mode. 2 processes have profiles defined. 2 processes are in enforce mode : /usr/sbin/cupsd (5302)
AppArmor Ubuntu 8.10 II /usr/bin/freshclam (5270) 0 processes are in complain mode. 0 processes are unconfined but have a profile defined.
AppArmor Ubuntu 9.10 I \begin{frame}[fragile,allowframebreaks] \frametitle{apparmor --- Ubuntu 9.10} \begin{verbatim} 9 profiles are loaded. 9 profiles are in enforce mode. /usr/lib/connman/scripts/dhclient-script /usr/bin/evince-previewer /usr/sbin/tcpdump /usr/lib/cups/backend/cups-pdf /usr/bin/evince-thumbnailer /sbin/dhclient3
AppArmor Ubuntu 9.10 II /usr/bin/evince /usr/sbin/cupsd /usr/lib/networkmanager/nm-dhcp-client.action 0 profiles are in complain mode. 2 processes have profiles defined. 2 processes are in enforce mode : /sbin/dhclient3 (3728) /usr/sbin/cupsd (1179) 0 processes are in complain mode. 0 processes are unconfined but have a profile defined.
Monitorowanie pracy systemu I Log systemowy (rejestr zdarzeń systemowych): lokalny, zdalny Rejestr nieudanych połączeń Rejestr prób wejścia na konto roota (sulog) Rejestr wejść do systemu
Monitorowanie pracy systemu II Wykrywanie niepoprawnych kont (puste, łatwe hasła, uid=0) Sumy kontrolne newralgicznych plików systemowych Wykrywanie plików set-uid 0, zwłaszcza zabezpieczanie NFS
Monitorowanie pracy systemu III System accounting (rejestracja wszystkich lub wybranych działań programów, użytkowników) Sprawdzanie czasów modyfikacji (i ostatniego dostępu) niektóre systemy zarządzania pakietami! Wydarzenia sieciowe
Usługi r* Bardzo wygodne. Wygoda polega na tym, że autoryzacja wykorzystuje mechanizm równoważności komputerów (użytkownik zalogowany na jednym komputerze nie musi się autoryzować na kolejnych komputerach). Generalnie jeżeli tylko nie ma obowiązku, nie należy korzystać.
ssh I Bezpieczny zamiennik rsh i rcp Niestety, również pozwalają na korzystanie z mechanizmów równoważności zazwyczaj standardowa konfiguracja na to nie zezwala
ssh II Przed (kolejnym) połączeniem z komputerem dokonują pewnych sprawdzeń jego tożsamości Pozwala na połączenie z innym komputerem wykorzystując do autentykacji mechanizmy kluczy publicznych
ssh III Połączenie między komputerami jest szyfrowane i kompresowane Połączenie ssh może być wykorzystywane do tunelowania połączeń (Nie zawsze jest to zaletą!) Pozwala na wygodne tunelowanie sesji X (slogin -X) Tworzy proxy socks (slogin -D 7070)
Narzędzia swatch ułatwia przeglądanie logów systemowych md5sum obliczanie sygnatur plików tripwire sprawdzanie poprawności plików systemowych crypt systemowy program do szyfrowania crack program łamania haseł (lepszy jest Johny the Ripper) cops sprawdzanie dziur w zabezpieczeniach chkrootkit sprawdzanie śladów rootkitów
PAM +----------------+ application: X +----------------+ / +----------+ +================+ authentication-[---->--\--] Linux- --<-- PAM config file + [----<--/--] PAM ================ [conversation()][--+ \ X auth.. a.so +----------------+ / +-n--n-----+ X auth.. b.so / service user A,-----' V A +----------------+ +------ ----- ---------+ -----+------+ +---u-----u----+ auth... --[ a ]--[ b ]--[ c ] +--------------+ acct... --[ b ]--[ d ] +--------------+ password --[ b ]--[ c ] +--------------+ session --[ e ]--[ c ] +--------------+
Biblio I Cracking passwords in the cloud: Breaking PGP on EC2 with EDPR. http://news.electricalchemy.net/2009/10/ cracking-passwords-in-cloud.html, Listopad 2009. Electric Alchemy blog. Cracking passwords in the cloud: Insights on password policies. http://news.electricalchemy.net/2009/10/ password-cracking-in-cloud-part-5.html, Październik 2009. Electric Alchemy blog.
Biblio II Cracking passwords in the cloud Q&A. http://news.electricalchemy.net/2009/11/ cracking-passwords-in-cloud-q.html, Listopad 2009. Electric Alchemy blog. Larry Loeb. Uncovering the secrets of se linux. http://www-128.ibm.com/developerworks/library/ s-selinux/?n-s-381, 2001.