AppArmor

Az AppArmor a névalapú kötelező hozzáférés-vezérlés megvalósítása Linux biztonsági modulként. Az AppArmor az egyes programokat felsorolt fájlok és a posix 1003.1e vázlat szerinti képességek halmazához köti.

Az AppArmor alapértelmezésben telepítésre és betöltésre kerül. Az alkalmazásokra profilokat használ az alkalmazás által igényelt fájlok és jogosultságok meghatározásához. Néhány csomag saját profilt telepít, valamint további profilok találhatók az apparmor-profiles csomagban.

Az apparmor-profiles csomag telepítéséhez adja ki a következő parancsot:

sudo apt-get install apparmor-profiles

Az AppArmor profiloknak két végrehajtási módjuk van:

  • Panaszkodás/tanulás: a profilsértések engedélyezettek, és naplózásra kerülnek. Új profilok teszteléséhez és fejlesztéséhez hasznos.

  • Kényszerített/korlátozott: kikényszeríti a profilházirendet, és naplózza a megsértését.

Az AppArmor használata

Az apparmor-utils csomag parancssori segédprogramokat tartalmaz, amelyekkel módosíthatja az AppArmor végrehajtási módot, meghatározhatja egy profil állapotát, új profilokat hozhat létre stb.

  • Az apparmor_status segítségével megjeleníthető az AppArmor profilok aktuális állapota.

    sudo apparmor_status
    
  • Az aa-complain a profilt panaszkodás módba kapcsolja.

    sudo aa-complain /útvonal/végrehajtható
    
  • Az aa-enforce a profilt kényszerített módba kapcsolja.

    sudo aa-enforce /útvonal/végrehajtható
    
  • Az AppArmor profilok az /etc/apparmor.d könyvtárban találhatók. Használatával az összes profil módja kezelhető.

    Adja ki a következő parancsot az összes profil panaszkodás módba kapcsolásához:

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

    Minden profil kényszerített módba kapcsolásához:

    sudo aa-enforce /etc/apparmor.d/*
    
  • Az apparmor_parser segítségével a profil betölthető a kernelbe. A -r kapcsoló segítségével használható a pillanatnyilag betöltött profil újratöltésére is. Profil betöltése:

    cat /etc/apparmor.d/profil.név | sudo apparmor_parser -a
    

    Profil újratöltése:

    cat /etc/apparmor.d/profil.név | sudo apparmor_parser -r
    
  • Az /etc/init.d/apparmor segítségével az össze profil újratölthető:

    sudo /etc/init.d/apparmor reload
    
  • Az /etc/apparmor.d/disable könyvtár az apparmor_parser -R kapcsolójával együtt a profil letiltására használható.

    sudo ln -s /etc/apparmor.d/profil.név /etc/apparmor.d/disable/
    sudo apparmor_parser -R /etc/apparmor.d/profil.név
    

    Letiltott profil újraengedélyezéséhez távolítsa el a profilra mutató szimbolikus linket az /etc/apparmor.d/disable/ könyvtárból. Ezután töltse be a profilt a -a kapcsoló használatával.

    sudo rm /etc/apparmor.d/disable/profil.név
    cat /etc/apparmor.d/profil.név | sudo apparmor_parser -a
    
  • Az AppArmor letiltható, és a kernelmodul eltávolítható a következő parancs kiadásával:

    sudo /etc/init.d/apparmor stop
    sudo update-rc.d -f apparmor remove
    
  • Az AppArmor újraengedélyezéséhez adja ki a következőt:

    sudo /etc/init.d/apparmor start
    sudo update-rc.d apparmor defaults
    
[Megjegyzés]

A profil.név helyet a kezelni kívánt profil nevét adja meg. Az /útvonal/végrehajtható helyett a tényleges végrehajtható fájl elérési útját adja meg. A ping parancshoz például a /bin/ping értéket használja.

Profilok

Az AppArmor profilok egyszerű szöveges fájlok az /etc/apparmor.d/ könyvtárban. A fájlok neve az általuk leírt végrehajtható fájl teljes elérési útvonala, a „/” helyett a „.” elválasztóval. Az /etc/apparmor.d/bin.ping például a /bin/ping parancs AppArmor profilja.

A profilokban használt szabályoknak két fő típusuk van:

  • Útvonalbejegyzések: ezek részletezik az alkalmazás által a fájlrendszerben elérhető fájlokat.

  • Képességbejegyzések: ezek meghatározzák a korlátozott folyamat által használható jogosultságokat.

Vegyük például az /etc/apparmor.d/bin.ping fájlt:

#include <tunables/global>
/bin/ping flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/consoles>
  #include <abstractions/nameservice>

  capability net_raw,
  capability setuid,
  network inet raw,
  
  /bin/ping mixr,
  /etc/modules.conf r,
}
  • #include <tunables/global>: más fájlokban található utasítások felvétele. Ez lehetővé teszi a több alkalmazásra vonatkozó utasítások közös fájlba helyezését.

  • /bin/ping flags=(complain): a profil által leírt program elérési útja, valamint a complain (panaszkodás) mód beállítása.

  • capability net_raw,: lehetővé teszi az alkalmazás számára a CAP_NET_RAW Posix.1e képesség elérését.

  • /bin/ping mixr,: engedélyezi az alkalmazásnak a fájl olvasását és végrehajtását.

[Megjegyzés]

A profilt a szerkesztés befejezése után újra kell tölteni. Részletekért lásd „Az AppArmor használata” szakaszt.

Profil létrehozása

  • Készítsen teszttervet: Gondolkodjon róla, hogy az alkalmazást hogyan kell megvizsgálni. A teszttervet kis tesztesetekre kell felosztani. Minden tesztesetnek rendelkeznie kell rövid leírással, és a követendő lépések listájával.

    Néhány általános teszteset:

    • A program elindítása.

    • A program leállítása.

    • A program újratöltése.

    • Az init parancsfájl által támogatott összes parancs tesztelése.

  • Az új profil előállítása: Az aa-genprof használatával állítsa elő az új profilt. Adja ki a következő parancsot:

    sudo aa-genprof végrehajtható
    

    Például:

    sudo aa-genprof slapd
    
  • A profil felvételéhez az apparmor-profiles csomagba, küldjön hibajelentést a Launchpadra az AppArmor csomaghoz:

    • Vigye fel a teszttervet és teszteseteket.

    • Mellékelje az új profilt a hibajelentéshez.

Profilok frissítése

Amikor a program hibásan viselkedik, akkor auditálási üzenetek kerülnek a naplófájlokba. Az aa-logprof program segítségével kiszűrhetők a naplófájlokból az AppArmor auditálási üzenetei, majd áttekintésük után a profilok frissíthetők. Adja ki a következő parancsot:

sudo aa-logprof

Hivatkozások

  • Az AppArmor problémák felvetésére, és az Ubuntu kiszolgáló közösség életébe való bekapcsolódásra remek hely a freenode #ubuntu-server IRC-csatornája.