Sisällysluettelo:

This is a mirror of http://myy.helia.fi/~a0402587/apparmor/, crawled 2007-11-29.

App Armorin käyttäminen

Aki Kaivola 2007. Idean tehtävään antoi Tero Karvinen.

Tämä dokumentti on lisensoitu GNU Free Documentation License -lisenssin (GFDL) mukaisesti. Kopio lisenssistä on kommenttina tämän dokumentin lähdekoodissa.

Ubuntu Gutsyssä AppArmor on automaattisesti asennettuna. AppArmorin tarvittavat kernel -moduulit tulevat vakiona Ubuntun mukana.

Käyttäjän tehtäväksi jää AppArmorin profiiliasetusten hienosäätäminen omiin tarkoituksiinsa.

Tässä dokumentaatiossa tehdään profiili Google Earth -ohjelmaan, sekä Skypen suojaamiseksi AppArmorilla.

Google Earth ja Skypen asentaminen

Google Earthin ja Skypen asentaminen puhtaaseen Ubuntu Gutsyyn on helpoiten tehtävissä Automatix2 -ohjelmalla (www.getautomatix.com). Automatix:n asentaminen onnistuu linkin Installation kautta. Valittavissa olevista vaihtoehdoista klikkaamalla oman arkkitehtuurin .deb pakettia avautuu gdebi asennusohjelma, jonka kautta asentaminen tapahtuu automaattisesti.

Automatix2 käynnistetään Applications > System Tools kautta.

Kuva 1. Automatix2 ja Skypen asentaminen

Ohjelmien asentaminen onnistuu valitsemalla halutut ohjelmat ja klikkaamalla valikon "Start" -nappia. Automatix huolehtii kaikista asetuksista, sekä tarvittavien lisäosien asentamisesta.

Kuva 2. Google Earth asennus

Kun Google Earth ja Skype on asennettu, voidaan aloittaa AppArmorin profiilin konfiguroiminen.

AppArmor profiilin konfiguroiminen

Profiilin tuottamiseksi AppArmor pitää laittaa complain -modeen. AppArmorin mukana tuleva genprof -apuohjelma helpottaa profiilin luomista kuuntelemalla halutun ohjelman suorittamia toimintoja.

Google Earth -profiilin luominen aloitetaan kirjoittamalla:

sudo genprof <ohjelman_nimi>

Esim.

sudo genprof /home/aki/google-earth/googleearth-bin

Suositeltavaa on käyttää suoraa hakemistopolkua haluttavan sovelluksen binääritiedostoon asti, sillä profiilin luominen hankaloituu jos genprof osoitetaan esimerkiksi symboliseen linkkiin (esim. googleearth -linkki käyttäjän kotihakemistossa ei käy).

Komento:

which <ohjelman_nimi>

palauttaa halutun sovelluksen koko hakemistopolun.

Kuva 3. Profiilin luonti

Ohjelma käynnistyy ja kehoittaa käynnistämään haluttu ohjelma ja alkamaan käyttämään sitä normaalisti.

Heti kun Google Earth on käynnistynyt, siirrytään takaisin terminaali -ikkunaan ja painetaan S (Scan).

Kuva 4. Oikeuksien antaminen

genprof ilmoittaa useista eri ohjelmien ajamisista (mm. /bin/grep). Jos haluat sallia toiminnon, painetaan I (inherit).

Jos jonkin aikaisemmin hyväksytyn ohjelman suorittamisessa tapahtuu muutos. Esimerkiksi /bin/dash ohjelma suoritettiin aikaisemmin.

Kuva 5. Oikeuksien muuttuminen

Kysyy apparmor sallitaanko kyseinen uusi toiminto. Rivi "Old Mode" ja "New Mode" -ilmoittavat tapahtuman muutoksen. Tällä kertaa kyseessä on ohjelman /bin/dash lukeminen ( r lisänä New Mode -rivillä ). Tapahtuma hyväksytään painamalla A (allow) -näppäintä.

Kuva 6. Abstraktiot

Kun eteen tulee tilanne, jossa ko. ohjelma haluaa käyttää resurssia, jolle löytyy apparmorista ns. abstraktio, voidaan valita abstraktion sisällyttäminen luotavaan profiiliin. Abstraktiot ovat kokoelma käyttötapaukseen liittyviä ennakkoon tehtyjä sääntöjä, joilla profiilin luominen nopeutuu.

Kuva 7. Glob

Kun vastaan tulee tilanne, jossa apparmor kysyy lupaa päästä kirjoittamaan /home/*/.googleearth/Cache/ hakemistoon, painetaan G (glob) näppäintä niin että halutun hakemiston vaihtoehdoksi tulee /** päätteinen. Esim. cache hakemiston kohdalla lukisi:
/home/*/.googleearth/Cache/**. Tämä antaa AppArmorissa luotavalle profiilille luvan lukea tai kirjoittaa Cache hakemistoon mitä tahansa.

Kuva 8. profiilin tallentaminen.

Profiilin tallentaminen

Kun ensimmäinen oikeuksien hyväksymis -kierros on valmis, genprof kysyy halutaanko profiili tallentaa. Tallennus hyväksytään painamalla S (save). Lisäksi genprof kysyy halutaanko talletettu profiili lisätä kaikille käyttäjille käytettävissä olevaan kirjastoon, josta muiden ohjelmalle luomia profiileja on mahdollista ladata ja käyttää.

Seuraavaksi on mahdollista alkaa käyttämään Google Earthia normaalisti. Hetken käytön jälkeen voi palata takaisin genprof -terminaali-ikkunaan ja ajaa S (scan) uudestaan. Tällä kertaa toimitaan kuten aikaisemmalla kerralla ja käydään läpi mahdollisesti uudet muuttuneet ohjelman suorittamat toiminnot.

Ohjelmasta poistutaan kirjoittamalla F (Finish).

Luotu profiili tallentuu hakemistoon /etc/apparmor.d/

Esimerkiksi: /etc/apparmor.d/home.vmware.google-earth.googleearth-bin

Profiilin sisältöä voi muokata tavallisella tekstieditorilla. Jos genprof -ohjelmassa tuli töpeksittyä, on tiedostosta mahdollista poistaa pahimmat virheet.

Ladatut profiilit saa näkyviin komennolla:

sudo apparmor_status

Profiilin käytöönotto (enforce)

Kun profiili halutaan ottaa käyttöön, tulee profiili siirtää Enforced -tilaan. Komennolla:

sudo aa-enforce <ohjelman_nimi>

esim:

sudo aa-enforce /home/aki/google-earth/googleearth-bin

Tämän jälkeen AppArmor tulee käynnistää uudelleen komennolla:

sudo /etc/init.d/apparmor restart

Voit vielä varmistaa, onko profiili enforce -moodissa komennolla:

sudo apparmor_status

Tämän jälkeen profiili on käytössä ja AppArmor valvoo sovelluksen oikeuksia.

Profiilin muokkaaminen

Jos profiilista jäi jotain pois ja haluat ajaa genprof-in uudelleen, on profiili siirrettävä takaisin complain -tilaan. tämä tapahtuu komennolla:

sudo aa-complain /home/aki/google-earth/googleearth-bin

apparmor on tämän jälkeen käynnistettävä uudelleen.

Skype

Skype asentuu oletuksena /usr/bin/ -polkuun. Skypen profilointi aloitetaan tuttuun tapaan käynniställä genprof komennolla:

sudo genprof /usr/bin/skype

Skypen profiloinnissa hypätään ensimmäisen profiloinnin dokumentoinnin ohitse, ja aloitetaan suoraan tilanteesta, jossa skype on profiloitu ja skypen profiili on enforced -tilassa.

Testaamme luodun profiilin kykyä estää liitetiedostojen tallentaminen skypelle annettujen hakemistojen ulkopuolelle.

Avataan skype normaalisti ja otetaan yhteys kaveriin chat-tilassa:

Kuva 9. Alkutilanne

Olen yhteydessä thisisatest -kaveriin, joka haluaa lähettää minulle liitetiedoston.

Kuva 10. Tiedoston vastaanottaminen

Skype haluaa tallentaa tiedoston kotihakemistoon /home/aki. Tämä hakemisto on kuitenkin määrittelemättä apparmorin profiilissa.

Painettaessa "Accept" -tapahtuu seuraavaa:

Kuva 11. Epäonnistunut tiedoston lähetys

Apparmor on kieltänyt kirjoittamisen kotihakemistoon. Tutkittaessa konsolissa dmesg komennolla nähdään seuraava logirivi:

[10697.874200] audit(1196271848.919:15760): 
type=1503 operation="inode_create" requested_mask="w" denied_mask="w" 
name="/home/aki/Sunset.jpg.part" pid=9364 profile="/usr/bin/skype"

AppArmor toimi kuten lupasi ja on estänyt luvattoman toiminnon suorittamisen. kohdat 'requested_mask="w"' ja denied_mask="w"' -kertovat AppArmorin hylänneen operaation "inode_create".

AppArmor kirjoittaa myös logitiedostoa syslogiin (oletuksena syslog kirjoitetaan /var/log/syslog -hakemistoon.

Kuitenkin profiileja luotaessa tulee mahdollisesti annettua joillekin hakemistoille kirjoitusoikeuksia. Tämän vuoksi on varmistettava genprof -ohjelman luoman profiilin oikeudet itse. Tarpeettomat kirjoitusoikeudet voi poistaa ja ohjelmien turvallisuus paranee.

Luodut profiilit

genprof -ohjelmalla luotu Google Earth -profiili:

# Last Modified: Wed Nov 28 18:43:17 2007
#include <tunables/global>
/opt/google-earth/googleearth-bin {
  #include <abstractions/base>
  #include <abstractions/fonts>
  #include <abstractions/nameservice>

  /dev/dri/* rw,
  /home/*/.ICEauthority r,
  /home/*/.Xauthority r,
  /home/*/.googleearth/** rw,
  /opt/google-earth/ r,
  /opt/google-earth/** mr,
  /proc/sys/kernel/osrelease r,
  /tmp/.ICE-unix/* w,
  /tmp/.X11-unix/* w,
  /usr/lib/dri/* mr,
  /usr/share/X11/* r,
  /usr/share/icons/** r,
}

Skype -profiili:

# Last Modified: Wed Nov 28 19:26:07 2007
#include <tunables/global>
/usr/bin/skype {
  #include <abstractions/audio>
  #include <abstractions/base>
  #include <abstractions/fonts>
  #include <abstractions/nameservice>
  #include <abstractions/nvidia>
  /etc/gai.conf r,
  /home/*/.ICEauthority r,
  /home/*/.Skype/** krw,
  /home/*/.Xauthority r,
  /home/*/.config/* kr,
  /home/*/.kde/share/config/kioslaverc r,
  /proc/*/cmdline r,
  /tmp/.ICE-unix/* w,
  /tmp/.X11-unix/* w,
  /usr/bin/skype mr,
  /usr/share/X11/* r,
  /usr/share/icons/** r,
  /usr/share/skype/** kr,
}