SELinux és AppArmor a gyakorlatban: kötelező hozzáférés-vezérlés Linux szervereken

Gyakorlati útmutató a SELinux és AppArmor MAC-keretrendszerek telepítéséhez, konfigurálásához és hibaelhárításához. Egyedi szabályzatok írása, konténerbiztonsági integráció és a két rendszer összehasonlítása.

Bevezetés: Miért nem elég a hagyományos jogosultságkezelés?

Ha valaha is adminisztráltál Linux szervert éles környezetben, szinte biztos, hogy belefutottál abba a klasszikus rémálomba: egy kompromittált webszerver-folyamat vidáman hozzáfér olyan fájlokhoz, amelyekhez semmi köze. A hagyományos UNIX jogosultságrendszer — a Diszkrecionális Hozzáférés-vezérlés (DAC) — lényegében a fájl tulajdonosára bízza, ki mit csinálhat az adott erőforrással. Ez a modell évtizedeken át egész jól működött, de őszintén? 2026-ban, amikor az AI-vezérelt támadások órákon belül kihasználják az ismert sebezhetőségeket, ez önmagában már kevés.

A megoldás a Kötelező Hozzáférés-vezérlés (Mandatory Access Control — MAC), amit a Linux két meghatározó keretrendszere valósít meg: a SELinux és az AppArmor. Ezek a rendszerek kernel szinten kényszerítenek ki biztonsági szabályokat — még akkor is, ha egy támadó root jogosultságot szerez, a MAC korlátozza, mit tehet valójában.

Egy jól konfigurált MAC-rendszer a legtöbb behatolást egyszerűen zsákutcába tereli. Szóval, nézzük meg mindkét keretrendszert a gyakorlatban.

Ez a cikk a telepítéstől az egyedi szabályzatok írásán át a hibaelhárításig mindent lefed. A cél az, hogy a végére képes legyél saját produkciós környezetedben hatékonyan bevezetni és üzemeltetni bármelyik MAC-megoldást.

A DAC és MAC közötti alapvető különbség

Mielőtt belevetnénk magunkat a technikai részletekbe, gyorsan tisztázzuk a két modell közötti lényegi különbséget — mert ez határozza meg mindent, ami utána jön.

Diszkrecionális Hozzáférés-vezérlés (DAC)

A hagyományos UNIX modellben a fájltulajdonos dönti el, ki olvashatja, írhatja vagy futtathatja a fájlt. Ha egy Apache folyamat www-data felhasználóként fut és a /etc/shadow fájlra van olvasási joga (mondjuk egy misconfiguration miatt), simán el tudja olvasni. A DAC nem tesz különbséget aközött, hogy ki kérte a hozzáférést — csak a jogosultsági bitmaszk számít.

Kötelező Hozzáférés-vezérlés (MAC)

A MAC-rendszerben az operációs rendszer kernele dönt, nem a felhasználó. Minden folyamathoz, fájlhoz és erőforráshoz biztonsági szabályzat tartozik. Még ha egy támadó root jogosultságot is kap, a MAC korlátozza, mely fájlokat érheti el, milyen hálózati portokat nyithat meg, és milyen rendszerhívásokat hajthat végre.

A szabályzatot kizárólag a rendszergazda módosíthatja — a futó folyamatok nem képesek saját engedélyeiket kiterjeszteni.

Gyakorlati szemléltetés

Képzeld el így: a DAC olyan, mint egy irodaház, ahol minden dolgozó maga döntheti el, ki mehet be a szobájába. A MAC ezzel szemben egy központi biztonsági rendszer, ahol az épületfelügyelet határozza meg, ki hova léphet be — és még ha valaki megszerezte is egy dolgozó kulcsát, a központi rendszer akkor is megakadályozza, hogy illetéktelen helyekre jusson.

Egyszerű, ugye? Na, nézzük a gyakorlatot.

SELinux mesterfokon

A Security-Enhanced Linux-ot eredetileg az NSA fejlesztette ki (igen, az az NSA), és ma a Red Hat tartja karban. A RHEL, CentOS, AlmaLinux, Rocky Linux és Fedora rendszerek alapértelmezett MAC-keretrendszere. A SELinux címkealapú (label-based) megközelítést alkalmaz: minden fájlhoz, folyamathoz, porthoz és erőforráshoz biztonsági kontextust rendel, és az ezek közötti interakciókat egy központi szabályzat alapján engedélyezi vagy tiltja.

Telepítés és állapot ellenőrzése

RHEL/CentOS/AlmaLinux rendszereken a SELinux alapértelmezetten telepítve van. Az aktuális állapot ellenőrzéséhez:

# SELinux állapot részletes megjelenítése
sestatus

# Példa kimenet:
# SELinux status:                 enabled
# SELinuxfs mount:                /sys/fs/selinux
# SELinux root directory:         /etc/selinux
# Loaded policy name:             targeted
# Current mode:                   enforcing
# Mode from config file:          enforcing
# Policy MLS status:              enabled
# Policy deny_unknown status:     allowed
# Memory protection checking:     actual (secure)
# Max kernel policy version:      33

Ha a SELinux véletlenül nincs telepítve (ami RHEL-alapú rendszereken elég ritka):

# SELinux telepítése (RHEL/CentOS/AlmaLinux)
sudo dnf install -y selinux-policy selinux-policy-targeted policycoreutils policycoreutils-python-utils setroubleshoot-server

# SELinux engedélyezése a GRUB-ban (ha korábban le volt tiltva)
sudo grubby --update-kernel ALL --remove-args selinux=0

A három üzemmód

A SELinux három üzemmódban működhet, és fontos, hogy tudd, melyik mire való:

  • Enforcing (Kikényszerítő) — A szabályzat aktívan érvényben van. A tiltott műveletek blokkolásra kerülnek és naplózódnak. Ezt használd production környezetben, mindig.
  • Permissive (Megengedő) — A szabályzat nem blokkol semmit, de minden szabálysértést naplóz. Teszteléshez és hibaelhárításhoz ideális.
  • Disabled (Letiltott) — A SELinux teljesen ki van kapcsolva. Soha ne használd production-ben. Komolyan.
# Aktuális üzemmód lekérdezése
getenforce

# Ideiglenes váltás (újraindításig érvényes)
sudo setenforce 0    # Permissive módra váltás
sudo setenforce 1    # Enforcing módra visszaváltás

# Tartós beállítás: /etc/selinux/config szerkesztése
# SELINUX=enforcing

Egy fontos dolog: ha a SELinux-ot disabled-ről enforcing-re kapcsolod, a rendszer újraindítása során a kernel újracímkéz minden fájlt. Nagyobb fájlrendszereken ez akár percekbe is telhet — ne ijedj meg tőle, ez teljesen normális.

Biztonsági kontextusok megértése

A SELinux minden objektumhoz (fájl, folyamat, port) egy biztonsági kontextust rendel. Ez négy részből áll, és megértetni nem is olyan bonyolult, mint elsőre tűnik:

# Fájlkontextusok listázása
ls -Z /var/www/html/
# system_u:object_r:httpd_sys_content_t:s0 index.html

# Folyamatkontextusok listázása
ps -eZ | grep httpd
# system_u:system_r:httpd_t:s0    1234 ?  00:00:05 httpd

# A kontextus formátuma:
# felhasználó:szerep:típus:szint
# system_u  :object_r:httpd_sys_content_t:s0

A típus (type) a legfontosabb elem — a SELinux targeted szabályzatában a hozzáférés-vezérlés döntő többsége a típusok közötti interakciók alapján működik. Például az httpd_t típusú folyamat (Apache) csak httpd_sys_content_t típusú fájlokat olvashat. Logikus, nem?

Boolean-ok: gyors szabályzat-finomhangolás

A SELinux Boolean-ok olyan kapcsolók, amelyekkel a szabályzat egyes aspektusait anélkül módosíthatod, hogy egyedi modult kellene írnod. A valóságban ez a legtöbb probléma leggyorsabb és legegyszerűbb megoldása.

# Összes Boolean listázása
sudo getsebool -a

# HTTP-vel kapcsolatos Boolean-ok szűrése
sudo getsebool -a | grep httpd

# Példa: Apache engedélyezése hálózati kapcsolatok létrehozására
sudo setsebool -P httpd_can_network_connect on

# Példa: Apache engedélyezése a felhasználói home könyvtárak kiszolgálására
sudo setsebool -P httpd_enable_homedirs on

# A -P kapcsoló a beállítást tartóssá teszi (persistent)

Fájlkontextusok kezelése

Na, ez az a téma, ami a legtöbb SELinux-frusztrációt okozza. A leggyakoribb probléma a hibás fájlcímkézés. Ha egy fájlt áthelyezel (mv), megtartja eredeti címkéjét. Ha másolod (cp), az új hely címkéjét örökli. Ez a különbség rengeteg fejfájás forrása — személyes tapasztalatból mondom.

# Fájlkontextus ellenőrzése
ls -Z /var/www/html/app/

# Ha a kontextus hibás, a restorecon helyreállítja az alapértelmezettet
sudo restorecon -Rv /var/www/html/

# Egyedi kontextus tartós hozzárendelése egy könyvtárhoz
sudo semanage fcontext -a -t httpd_sys_content_t "/opt/myapp(/.*)?"
sudo restorecon -Rv /opt/myapp/

# Port kontextus hozzáadása (pl. nem szabványos porton futó szolgáltatás)
sudo semanage port -a -t http_port_t -p tcp 8443
sudo semanage port -l | grep http

Egyedi SELinux-szabályzat írása

Amikor a Boolean-ok és fájlkontextusok nem elegendők, egyedi szabályzatmodult kell írnunk. Ez ritkábban szükséges, de komplex alkalmazásoknál sajnos elkerülhetetlen.

# Fejlesztőeszközök telepítése
sudo dnf install -y selinux-policy-devel

# 1. lépés: A tiltott műveletek azonosítása a naplóból
sudo ausearch -m AVC -ts recent

# 2. lépés: Az audit2allow segítségével kiindulási szabályzat generálása
sudo ausearch -m AVC -ts recent | audit2allow -m myapp_policy

# 3. lépés: A generált .te fájl áttekintése (FONTOS — ne vakon alkalmazd!)
# Példa myapp_policy.te tartalma:
# module myapp_policy 1.0;
#
# require {
#     type myapp_t;
#     type var_log_t;
#     class file { read write open create };
# }
#
# allow myapp_t var_log_t:file { read write open create };

# 4. lépés: Modul fordítása és betöltése
sudo ausearch -m AVC -ts recent | audit2allow -M myapp_policy
sudo semodule -i myapp_policy.pp

# 5. lépés: Ellenőrzés
sudo semodule -l | grep myapp

Kritikus figyelmeztetés: az audit2allow kimenete gyakran túl tág jogosultságokat javasol. Mindig, de tényleg mindig nézd át a generált .te fájlt, és szűkítsd le a jogosultságokat a minimálisan szükségesre. Ha a kimenetben ismeretlen típusokra vonatkozó engedélyeket látsz, az akár egy kompromittálódott rendszer jele is lehet — ilyenkor ne a szabályzatot írd, hanem vizsgáld meg alaposan, mi történt.

SELinux hibaelhárítás lépésről lépésre

Ha valami nem működik SELinux-szal, ne ess pánikba. Kövesd ezt a módszeres hibaelhárítási folyamatot:

# 1. lépés: Ellenőrizd, hogy valóban SELinux okozza-e a problémát
sudo setenforce 0
# Próbáld újra a műveletet. Ha most működik, SELinux-probléma.
sudo setenforce 1

# 2. lépés: Keresd meg a tiltott műveletet az audit naplóban
sudo ausearch -m AVC,USER_AVC,SELINUX_ERR -ts recent -i

# 3. lépés: Használd a sealert eszközt olvasható elemzéshez
# (a setroubleshoot-server csomag része)
sudo sealert -a /var/log/audit/audit.log | head -50

# A sealert prioritás szerint rendezi a javaslatokat:
# - Legmagasabb megbízhatóság: fájlkontextus-helyreállítás
# - Közepes: Boolean bekapcsolása
# - Legalacsonyabb: egyedi szabályzatmodul

# 4. lépés: A sealert javaslata alapján javíts
# Általában az alábbiak egyike a megoldás:
# a) Fájlkontextus helyreállítása:
sudo restorecon -Rv /problemas/utvonal/
# b) Boolean bekapcsolása:
sudo setsebool -P valamilyen_boolean on
# c) Port címke hozzáadása:
sudo semanage port -a -t szolgaltatas_port_t -p tcp PORT
# d) Egyedi modul (csak végső esetben):
sudo audit2allow -a -M fix_modul && sudo semodule -i fix_modul.pp

AppArmor mesterfokon

Az AppArmor (Application Armor) a Debian, Ubuntu és SUSE alapú disztribúciók alapértelmezett MAC-keretrendszere. A SELinux címkealapú megközelítésével szemben az AppArmor útvonalalapú (path-based) modellt alkalmaz: a biztonsági profilok közvetlenül fájlútvonalak alapján szabályozzák a hozzáférést.

Ez a megközelítés egyszerűbb és jóval intuitívabb, bár néhány szélsőséges esetben kevésbé finom felbontású, mint a SELinux. A legtöbb alkalmazásnál viszont tökéletesen megfelel.

Telepítés és állapot ellenőrzése

Ubuntu rendszereken az AppArmor alapértelmezetten telepítve és engedélyezve van. Az Ubuntu 24.04-es verziótól kezdve az AppArmor közvetlenül a kernelbe van integrálva, szóval nem igazán kell vele bajlódni.

# AppArmor állapot ellenőrzése
sudo aa-status

# Példa kimenet:
# apparmor module is loaded.
# 47 profiles are loaded.
# 47 profiles are in enforce mode.
# 0 profiles are in complain mode.
# 12 processes have profiles defined.
# 12 processes are in enforce mode.

# Szükséges segédeszközök telepítése
sudo apt install -y apparmor-utils apparmor-profiles apparmor-profiles-extra

Profilok és üzemmódok

Az AppArmor profilok egyszerű szöveges fájlok az /etc/apparmor.d/ könyvtárban. Minden profil két módban működhet:

  • Enforce (Kikényszerítő) — A tiltott műveletek blokkolva és naplózva vannak. Ez kell production-be.
  • Complain (Panaszkodó) — A tiltott műveletek nem blokkolódnak, de naplózva vannak. Teszteléshez és profilfejlesztéshez tökéletes.
# Profil enforce módba helyezése
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx

# Profil complain módba helyezése
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx

# Profil letiltása (nem ajánlott production-ben)
sudo aa-disable /etc/apparmor.d/usr.sbin.nginx

# Profil újratöltése módosítás után
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx

AppArmor profil felépítése

Nézzünk egy egyszerű, de valósághű példát egy Nginx-profilra. Ebből jól látható, hogyan épül fel egy profil a gyakorlatban:

# /etc/apparmor.d/usr.sbin.nginx
#include <tunables/global>

/usr/sbin/nginx {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/openssl>

  # Bináris végrehajtási jog
  /usr/sbin/nginx mr,

  # Konfigurációs fájlok olvasása
  /etc/nginx/** r,
  /etc/ssl/certs/** r,
  /etc/ssl/private/** r,

  # Webtartalom kiszolgálása (csak olvasás)
  /var/www/** r,
  /usr/share/nginx/** r,

  # Naplófájlok írása
  /var/log/nginx/*.log w,
  /var/log/nginx/ r,

  # PID és socket fájlok
  /run/nginx.pid rw,
  /run/nginx/ rw,

  # Hálózati hozzáférés
  network inet stream,
  network inet6 stream,

  # Capability-k (szükséges jogosultságok)
  capability net_bind_service,
  capability setuid,
  capability setgid,
  capability dac_override,

  # Worker folyamatok indítása
  /usr/sbin/nginx ix,

  # Ideiglenes fájlok
  /var/lib/nginx/tmp/** rw,
  owner /tmp/** rw,
}

A jogosultsági betűjelek röviden: r (olvasás), w (írás), m (memórialeképezés végrehajtásként), k (fájlzárolás), l (hard link létrehozás), ix (végrehajtás az aktuális profil öröklésével).

Automatikus profilgenerálás az aa-genprof segítségével

Az AppArmor egyik legnagyobb erőssége az automatikus profilgeneráló eszköz. Megfigyeli egy alkalmazás viselkedését és profilt épít belőle — ez komolyan megkönnyíti az életed:

# 1. lépés: Profilgenerálás indítása
# Ez complain módba helyezi az alkalmazást és figyeli a tevékenységét
sudo aa-genprof /usr/sbin/myapp

# 2. lépés: Egy másik terminálban használd az alkalmazást normálisan
# Végezz el minden tipikus műveletet (fájlolvasás, hálózati kapcsolatok stb.)
sudo systemctl restart myapp
curl http://localhost:8080/
# ...egyéb tipikus műveletek...

# 3. lépés: Térj vissza az aa-genprof terminálhoz
# Nyomj "S"-t a naplóbejegyzések vizsgálatához
# Az eszköz minden észlelt tevékenységre rákérdez:
#   (A)llow - Engedélyezés
#   (D)eny - Tiltás
#   (G)lob - Általánosítás (pl. /var/log/myapp/*.log)
#   A(u)dit - Engedélyezés naplózással

# 4. lépés: Ha végeztél, nyomj "F"-et (Finish)
# A profil enforce módba kerül

# 5. lépés: Finomhangolás a naplók alapján
sudo aa-logprof
# Ez újra végigmegy a naplóbejegyzéseken és javaslatokat tesz

AppArmor hibaelhárítás

Az AppArmor hibakeresése szerencsére egyszerűbb, mint a SELinux-é. Íme a bevált recept:

# 1. lépés: Tiltott műveletek keresése a naplóban
sudo dmesg | grep "apparmor=\"DENIED\""
# vagy
sudo journalctl -k | grep "apparmor=\"DENIED\""

# Példa kimenet:
# audit: type=1400 audit(1711100400.123:456): apparmor="DENIED"
#   operation="open" profile="/usr/sbin/nginx"
#   name="/opt/custom/config.conf" pid=1234 comm="nginx"
#   requested_mask="r" denied_mask="r"

# 2. lépés: A profil complain módba kapcsolása teszteléshez
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx

# 3. lépés: A problémás művelet végrehajtása

# 4. lépés: A naplóbejegyzések alapján profil frissítése
sudo aa-logprof

# 5. lépés: Visszakapcsolás enforce módba
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx

SELinux vs. AppArmor: melyiket válaszd?

Ez a kérdés mindig felmerül, és a válasz nem egyszerűen az, hogy „az egyik jobb, mint a másik". Mindkettőnek megvan a maga erőssége.

SzempontSELinuxAppArmor
MegközelítésCímkealapú (label-based)Útvonalalapú (path-based)
Alapértelmezett disztribúciókRHEL, CentOS, Fedora, AlmaLinuxUbuntu, Debian, SUSE
KomplexitásMagas — meredek tanulási görbeAlacsony-közepes — könnyebben tanulható
GranularitásRendkívül finom — típus, szerep, szintKözepes — fájlútvonal és capability
MLS/MCS támogatásIgen — multi-level és multi-category securityNem
Konténer-izolációKiváló (MCS egyedi címkékkel)Jó (profil-alapú)
NFS fájlrendszerKorlátozott (címkézés nem lehetséges)Teljes támogatás (útvonalalapú)
Hibaelhárítássealert, ausearch, audit2allowaa-logprof, dmesg, journalctl
Ideális felhasználásKormányzati, pénzügyi, magas biztonsági környezetekWebszerverek, alkalmazásszerverek, általános célú szerverek

Gyakorlati tanács: általában azt a keretrendszert érdemes használni, amelyik a disztribúcióddal alapértelmezetten érkezik. RHEL-en ne próbálj AppArmor-t erőltetni, Ubuntu-n pedig ne SELinux-ra váltani — hacsak nincs rá nagyon nyomós okod. Mindkét rendszer megfelelő védelmet nyújt, ha rendesen be van konfigurálva.

Érdekesség egyébként: az openSUSE Tumbleweed és Leap 16 2025-ben áttért az alapértelmezett SELinux-ra. Ez jól mutatja a SELinux növekvő dominanciáját az enterprise szegmensben.

MAC és konténerbiztonság

A konténerizált környezetekben a MAC-keretrendszerek kritikus védelmi réteget jelentenek. A Docker és a Podman egyaránt támogatja mind a SELinux-ot, mind az AppArmor-t — és érdemes is kihasználni őket.

SELinux konténerekkel

# SELinux kontextus ellenőrzése futó konténeren
sudo podman inspect --format "{{.ProcessLabel}}" my_container
# system_u:system_r:container_t:s0:c123,c456

# MCS (Multi-Category Security) biztosítja, hogy
# minden konténer egyedi címkét kap — így nem férhetnek
# hozzá egymás fájlrendszeréhez, még ha azonos node-on is futnak.

# Egyedi SELinux-beállítás konténerhez
sudo podman run --security-opt label=type:my_custom_container_t myimage

# Konténer futtatása SELinux nélkül (NEM AJÁNLOTT production-ben)
sudo podman run --security-opt label=disable myimage

AppArmor konténerekkel

# Docker alapértelmezett AppArmor profil ellenőrzése
sudo docker inspect --format "{{.AppArmorProfile}}" my_container
# docker-default

# Egyedi AppArmor profil alkalmazása konténerre
sudo docker run --security-opt apparmor=my_custom_profile myimage

# AppArmor profil létrehozása Docker konténerhez
# /etc/apparmor.d/docker-custom
#include <tunables/global>

profile docker-custom flags=(attach_disconnected,mediate_deleted) {
  #include <abstractions/base>

  network inet stream,
  network inet6 stream,

  # Csak a /app könyvtár elérése engedélyezett
  /app/** r,
  /app/data/** rw,

  # Érzékeny területek tiltása
  deny /etc/shadow r,
  deny /etc/passwd w,
  deny /proc/*/mem rw,

  # Capability korlátozás
  capability net_bind_service,
  deny capability sys_admin,
  deny capability sys_ptrace,
}

Bevált gyakorlatok és gyakori hibák

Amit mindig tegyél meg

  • Mindig Enforcing módban futtasd production-ben — a Permissive/Complain mód kizárólag tesztelésre való.
  • Fájlokat másold, ne mozgasd — SELinux-nál a cp örökli a célkönyvtár kontextusát, az mv megtartja az eredetit. Ez a különbség sok fejfájást spórolhat meg.
  • A sealert/aa-logprof javaslatait mindig nézd át — ne vakon alkalmazz automatikus javításokat.
  • Teszteld staging környezetben — új szabályzatokat és profilokat sosem éles rendszeren próbálj ki először. (Elhidd, megéri az extra időt.)
  • Verziókezeld a szabályzatokat — a SELinux-modulokat és AppArmor-profilokat kezeld Git-ben, mint bármely infrastruktúra-kódot.
  • Dokumentáld az egyedi szabályokat — hat hónap múlva nem fogod emlékezni, miért adtad hozzá azt az allow-szabályt. Bízz bennem.

Amit soha ne tegyél

  • Ne tiltsd le a MAC-ot — ha valami nem működik, derítsd ki az okát. A védelem kikapcsolása nem megoldás, hanem kapitulálás.
  • Ne használd az audit2allow-t vakon — a generált szabályzat gyakran túl tág, és biztonsági rést nyithat.
  • Ne hagyd figyelmen kívül a Permissive/Complain naplókat — ezek a naplók pontosan megmutatják, mi történne Enforcing módban.
  • Ne futtass mindent unconfined_t kontextusban — ez gyakorlatilag kikapcsolt SELinux-szal egyenértékű, és pont az egész MAC lényegét öli meg.

Gyakran ismételt kérdések (GYIK)

Lehet egyszerre SELinux-ot és AppArmor-t is használni ugyanazon a rendszeren?

Technikailag lehetséges, de a gyakorlatban erősen kerülendő. Mindkét keretrendszer Linux Security Module (LSM) implementáció, és együttes futtatásuk konfliktusokhoz, kiszámíthatatlan viselkedéshez és rendkívül nehéz hibaelhárításhoz vezet. Válassz egyet — amelyik a disztribúcióddal jön — és azt konfiguráld alaposan.

Miért blokkol a SELinux egy szolgáltatást, és hogyan derítem ki az okát?

A három leggyakoribb ok: hibás fájlcímkézés (fájl áthelyezés mv-vel), nem szabványos porton futó szolgáltatás (hiányzó port-címke), vagy hiányzó Boolean-beállítás. Első lépésként futtasd a sealert -a /var/log/audit/audit.log parancsot — ez emberi nyelven elmagyarázza a problémát és javaslatot ad a megoldásra.

Mennyire lassítja a SELinux vagy AppArmor a rendszert?

A modern kerneleken a teljesítményveszteség minimális, jellemzően 1-3% között mozog. Normál szerver-terhelésnél ez gyakorlatilag észrevehetetlen. A biztonsági előnyök messze felülmúlják ezt a csekély overhead-et. Ha mégis teljesítményproblémát tapasztalsz, az általában túlságosan komplex vagy rosszul optimalizált szabályzatokra utal — nem magára a MAC-keretrendszerre.

Hogyan védi a MAC a konténereket a breakout-támadásoktól?

A konténerek alapvetően Linux namespace-ekre és cgroup-okra építenek, amelyek izolációt biztosítanak, de nem hermetikus biztonsági határt. A MAC-keretrendszerek (SELinux MCS-sel vagy AppArmor profilokkal) egy plusz réteget adnak hozzá: még ha egy támadó ki is tör a konténer namespace-éből, a MAC-szabályzat korlátozza, mely host-erőforrásokhoz férhet hozzá. Ez drámaian csökkenti a sikeres breakout-támadások hatáskörét.

Érdemes SELinux-ot tanulnom, ha csak Ubuntu-t használok?

Ha kizárólag Ubuntu/Debian környezetben dolgozol, az AppArmor elsajátítása a praktikusabb befektetés. Ugyanakkor ha enterprise környezetben is megfordulsz vagy RHEL/CentOS szervereket is kezelsz, a SELinux ismerete egyszerűen alapvető elvárás. Karrierszempontból mindkettő ismerete komoly előny a munkaerőpiacon — ez egyike azoknak a témáknak, amit érdemes befektetésnek tekinteni.

A Szerzőről Editorial Team

Our team of expert writers and editors.