Blog (22)
Komentarze (234)
Recenzje (0)

AppArmor – jak dozbroić Linuksa?

@iacobusAppArmor – jak dozbroić Linuksa?08.08.2015 23:32

Ostatnia afera z dziurą w zabezpieczeniach Firefoksa wywołała lawinę standardowych komentarzy (w typie sarkazmu lub biadolenia), również w odniesieniu do bezpieczeństwa Linuksa. Otóż exploit pozwalał na przejrzenie pliku /etc/passwd, w którym są nazwy grup i użytkowników (nazwa jest myląca, zaszyfrowane hasła znajdują się w /etc/shadow, który jest zabezpieczony przed nieautoryzowanym podglądem). Oprócz tego miał możliwość przejrzeć ostatnie polecenia wydane w terminalu (.bash_history) oraz próbował dobrać się do plików konfiguracyjnych. W sumie, mógł zdziałać niewiele, ze względu na standardowy system zabezpieczeń, czyli...

DAC

...discretionary access control, czyli metodę zabezpieczania, polegającą na przypisywaniu konkretnym podmiotom (właściciel, grupa, inni) konkretnych uprawnień. Tylko właściciel ma pełną kontrolę nad swoimi plikami. Dlatego właśnie exploit nie mógł na przykład ani przejrzeć, ani skopiować pliku z zaszyfrowanymi hasłami:

jakub@Altsin:~$ cat /etc/shadow
cat: /etc/shadow: Brak dostępu
jakub@Altsin:~$ cp /etc/shadow ~
cp: nie można otworzyć „/etc/shadow” do czytania: Brak dostępu

O ile, rzecz jasna, ktoś nie uruchomił przeglądarki jako root, ale wtedy żadne zabezpieczenie nie pomoże, ponieważ na bezmyślność nie ma lekarstwa. To jednak nie wszystko, ponieważ Linuksy mają również inne standardowe zabezpieczenia wbudowane w kernel, na przykład...

MAC

...czyli mandatory access control - metoda zabezpieczenia, która jawnie określa, które funkcje są dostępne dla danych programów. W Linuksach dwiema głównymi implementacjami tego systemu są SElinux i AppArmor. W Ubuntu domyślnie używany jest ten drugi. Od razu po świeżej instalacji system posiada uruchomiony AppArmor z zestawem podstawowych reguł dla kilku kluczowych programów. Można to sprawdzić:

sudo /etc/init.d/apparmor status

Co ważne, Firefoksa NIE MA NA TEJ LIŚCIE. Można zapytać dlaczego, ale odpowiedzi mogliby udzielić tylko deweloperzy. Żeby się przekonać, które aplikacje podlegają dodatkowej kontroli należy wpisać:

sudo aa-status

.Instalacja zestawu reguł dla Firefoksa jest bardzo prosta.Po pierwsze należy zainstalować apparmor-utlis.

sudo apt-get install apparmor-utils

lub - dla tych, którzy chcą więcej zestawów reguł i narzędzi

sudo apt-get install apparmor-*

Apparmor utils pozwala na łatwą instalację prekonfigurowanych pakietów. Ale o tym za chwilę, najpierw trzeba się zdecydować czy...

Marudzić czy działać?

Apparmor może działać w dwóch trybach:

[list] [item]complain - naruszenia bezpieczeństwa nie blokowane, ale są zbierane w postaci logów[/item][item]enforced - naruszenia bezpieczeństwa są blokowane[/item]Wydaje się, że warto od razu walnąć z grubej rury i używać trybu enforced, w razie czego utrudniającą nam życie regułę będzie można przełączyć w tryb complain.

Dodanie Firefoksa do AppArmor

Mając już zainstalowane apparmor-utils (warto również zainstalować apparmor-profiles i apparmor-profiles-extra), wystarczy, że wpiszemy w terminalu

sudo aa-enforce /etc/apparmor.d/usr.bin.firefox

Można też dla bezpieczeństwa odpalić wszystykie profile:

sudo aa-enforce /etc/apparmor.d/*

W razie gdyby któraś z aplikacji nie działała tak, jakbyśmy sobie tego życzyli można ją przełączyć w tryb complain:

sudo aa-complain nazwa_aplikacji_lub_ścieżka

Ale o co chodzi?

Właściwie jaka z tego wszystkiego korzyść? AppArmor: Zezwala aplikacji na robienie jedynie tego, do czego przyznano jest dostęp i zabronieniu wszystkiego innego. Podręcznikowy przykład. W domowym katalogu utworzę skrypt o wdzięcznej nazwie blekot. Oto jego kod:

jakub@Altsin:~$ cat blekot 
#!/bin/bash
echo "Hello World!" > /tmp/hello.txt
cat /tmp/hello.txt
rm /tmp/hello.txt

Jak widać skrypt ma proste działanie: 1. Wyświetla tekst "Hello World!", ale tekst zamiast zostać wyświetlony na ekranie, zostaje przekierowany do pliku /tmp/hello.txt, co tworzy nowy plik i zapisuje w nim tekst. 2. Wyświetla zawartość pliku /tmp/hello.txt 3. Usuwa rzeczony plik. Dodajmy uprawnienia do wykonania:

chmod +x blekot

i wykonajmy plik:

jakub@Altsin:~$ ./blekot
Hello World!

Skrypt jak widać zadziałał. W logach systemowych nie pozostanie nawet ślad po naszym "przestępczym" działaniu. Stwórzmy teraz najprostszą regułę nie zezwalająca na nic, specjalnie dla naszego skryptu. W katalogu /etc/apparmor.d stworzymy (jako root) plik home.jakub.blekot o następującej zawartości:

/home/jakub/blekot {}

Plik jest pusty, a więc nie pozwalamy temu skryptowi na wykonanie czegokolwiek. Po uruchomieniu widzimy następujący komunikat:

jakub@Altsin:~$ ./blekot
/bin/bash: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

Ojoj, coś poszło nie tak i nasz super hakerski skrypt nie został odpalony... Sprawdzamy co słychać w logach odnośnie naszej "aplikacji":

cat /var/log/syslog | grep blekot
Aug  8 21:05:19 Altsin kernel: [ 9867.298928] audit: type=1400 audit(1439060719.833:240): apparmor="DENIED" operation="open" profile="/home/jakub/blekot" name="/lib/x86_64-linux-gnu/libtinfo.so.5.9" pid=8939 comm="blekot" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0

Całe zdarzenie zostało zapisane. Spróbujmy teraz przełączyć profil na tryb complain:

jakub@Altsin:~$ sudo aa-complain /home/jakub/blekot
Setting /home/jakub/blekot to complain mode.

Co ciekawe, zmienił się automagicznie nasz profil:

/home/jakub/blekot flags=(complain) {
}

Próbujemy wykonać nasz skrypt:

jakub@Altsin:~$ ./blekot 
Hello World!

Działa! A co słychać w logach?

cat /var/log/syslog | grep blekot
Aug  8 21:10:15 Altsin kernel: [10163.197508] audit: type=1400 audit(1439061015.432:250): apparmor="ALLOWED" operation="open" profile="/home/jakub/blekot" name="/home/jakub/blekot" pid=8974 comm="blekot" requested_mask="r" denied_mask="r" fsuid=1000 ouid=1

Skrypt został wykonany, ale AppArmor dzielnie zanotował w systemowych logach jego uruchomienie.

Czyli właściwie co robi AppArmor?

Jak wymienia Christian Boltz, jeden z deweloperów OpenSuse, AppArmor monitoruje i ogranicza:

  • dostęp do plików
  • dostęp do sieci
  • wykonanie zadań, tzw. linux capabilities (chown, setuid, itp)

Natomiast w żaden sposób nie zmienia zasad wymienionych wyżej DAC, dlatego jeżeli wszystkie pliki w naszym systemie mają flagi 777 albo siedzimy na koncie roota, AppArmor w niczym nie pomoże.

Podsumowanie

AppArmor nie obroni nas przed wszystkimi możliwymi exploitami, ale na pewno system jest bardziej bezpieczny z włączonym AppArmorem, niż bez niego. Ponieważ do wielu programów (przeglądarka internetowa, czytnik PDF, komunikatory) mamy gotowe profile, nie potrzeba z naszej strony żadnego wysiłku. Zasada optymalizacji wysiłku w stosunku do oczekiwanych rezultatów jest zatem po naszej stronie :-)

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.