Firejail, tűzbörtön programoknak

Firejail alapok, használata és három példa a használatára. Az első kérdés jogos:

Mi is az a Firejail?

Egy kis program, ami a leírásának első mondata szerint:

Firejail is a SUID sandbox program that reduces the risk of security breaches by restricting the running environment of untrusted applications using Linux namespaces, seccomp-bpf and Linux capabilities.

Azaz létrehoz a futtatandó programnak egy “homokozót”, egy saját környezetet, amiben az adott program futhat, de korlátozza a rendszer egészéhez való hozzáférést. Én egy fontos témát is érintek, bár ez kicsit unortodox megközelítése a dolognak.

Ha egy programot nem mersz szabadon futtatni a rendszereden, akkor azt cseréld le - ha van rá lehetőség - olyanra, amiben teljesen megbízol. Ez legyen az első lépés. Az utolsó példában ez kicsit jobban kifejtem majd. A firejail a bemutatottnál sokkal többet tud, de a leírásban is kiemelték, hogy az egyik előnye az egyszerűség, nem kell alapesetben komolyabban konfigurálni. Majd ha az alapoknál többet szeretnél kihozni ebből, akkor a leírásokban nagyon jól összefoglalták a haladóbb gondolatokat.

A firejail telepítése egyszerű, a legtöbb disztribúcióban benne van. Használd azt, amit a disztribútorod ad, az a legegyszerűbb.

A Firejail alap használata

A lehető legegyszerűbb:

firejail programnév

Azaz, ha a

firejail firefox

parancsot elindítod, akkor egy biztonságosabb környezetben futtathatod a firefox-ot. Igen, valóban ennyi, és így már a rendszered biztonságosabb lesz. Az adott program, jelenleg a firefox egy homokozóba lesz szorítva, amiben csak az éri el, amit feltétlen szabad.

Nyom nélküli programhasználat

Ebben az esetben egy olyan környezetet, “homokozót” hozunk létre, amit teljesen, véglegesen eltörlök, amikor a programot bezárjuk. Jó példa lehet rá egy böngésző, ami adatokat ment le a használatakor a gyorsabb weblap betöltéséhez, az előzményeket menti, követi a dolgokat, és azokat tárolja stb. Ha ezt nem akarod, akkor vagy olyan beállításokat adunk meg a böngészőnek, amiknél ez alapbeállítás, vagy csak ennyit teszünk:

firejail --private firefox

Mindenképp figyel rá: ez a mód nem egyezik meg a firefox privát ablakkal. Itt egy szűz firefox indul, azaz semmi saját beállítás, amit eddig megtettél nem lesz, de a használatakor beállított dolgok is eltűnnek. Azaz egy teljesen védett, maradéktalanul eltüntethető munkafolyamatod lesz.

Az ilyen maradéktalanul eltüntet megoldásokkal érdemes kicsit óvatosabb lenni, mert a firejail valóban eltörli amit kell kilépéskor, de amit a lemezre ír, azt vissza lehet esetleg szereznie egy ügyes és kíváncsi embernek. Az esélye annak, hogy az én gépemet ilyen kíváncsi emberek nagyon sok pénzt ráköltve így elemezgessék nulla, de soha nem árt tudni: ami törölve van, az csak egy bizonyos szintig lett letörölve, amíg azt a tárhely szeletet újra nem írod, aggig vissza lehet állítani.

A harmadik Firejail alapokat érintő téma az Internet elérésének a letiltása

Régebben az Audacity tulaja kavarta fel a kedélyeket, mert telemetriát akart belerakni a kedvenc hangszerkesztőnkbe. Így képbe került az a gondolat, hogy bizony ha telemetria és adatokat küld valahova a program, akkor az is egy megoldás, ha a programnak nem adunk elérést az internethez. Így biztosan nem küld el semmit. Több megoldása is lehet ennek, de gyakorlatilag a legegyszerűbb a

firejail --net=none programneve

használata. Így a firejail nem engedi a programot ki az internetre. Szuper!

Bár az Audacity-t emlegettem, de nagyon sok olyan program van, ami telemetriát, hibajelentést és a felhasználói élmény fokozása miatt mindenféle adatokat küld ki a nagyvilágba. Ami nem is baj, amíg tudsz róla, és engedélyezed. A probléma akkor van, ha nem szól a program, de küldözget bármi adatot. Vagy csak pld. nem akarod, hogy a frissítésekre figyelmeztessen, miután a saját honlapjára kinézett...

Alap gondolat: amelyik programnak nem kell a tényleges működéséhez az interneten nézelődnie, annak semmi keresni valója az interneten.

Az elején ígértem, hogy jobban kifejtem a témát kissé unortodox mód. Mint Linux felhasználónak természetesen a telemetria miatt az első gondolatunk, hogy letiltjuk a program számára azt a funkciót, amivel elérheti az internetet. Linux alatt megszokhattuk, hogy igen jól szabályozhatjuk ki vagy mi és mit tehet a saját gépünkön. De nem feltétlen kell nekem valamit tenni, védeni a gépet, vagy korlátozni a programot. Van egy másik út is: nem használom. A legtöbb esetben van alternatív és megfelelő program, ami a hagyományosabban követi a Szabad Szoftver elveket és betartja a főbb erkölcsi elvárásokat. Így, ha egy programban megrendül a bizalom keresni kell másikat. Ha az Audacity gazdájának az volt elképzelése, hogy jó dolog ha kérdés nélkül telemetriát rak bele, majd a felháborodás miatt eláll ettől, akkor mi a garancia, hogy holnap nem talál ki valami mást? A bizalom a legfontosabb a Linux területen, ha az elveszik egy program iránt, akkor már nehéz visszaállítani!

Általánosságban, ha egy programnak nem kell feltétlen az internetet elérni, akkor érdemes letiltani számára az internet elérését. Biztos, ami biztos. Ezt a firejail alapok megismerésével megteheted.

Na de akkor…

Szép, szép, de akkor minden programot terminálból kell indítani? Dehogy! Akár a start menüben, akár desktop fájlban, asztali ikonos indításnál szerkesztheted indítási parancsot, így azután már sandbox-ban indul a firejail segítségével. Aki pedig WM-et használ, annak nem kell elmondani, hogy gyorsbillentyű parancsoknál mindegyik elé berakott firejail előtag már meg is oldja a feladatot…

A projekt weboldala: https://firejail.wordpress.com/

Letöltés és telepítés: https://firejail.wordpress.com/download-2/

Dokumentáció: https://firejail.wordpress.com/documentation-2/

GYIK:  https://github.com/netblue30/firejail/wiki/Gyakran

Wiki: https://github.com/netblue30/firejail/wiki

A programot 2023 májusában teszteltem újra.