Kako koristiti Firejail na Linuxu za izolaciju i zaštitu aplikacija

Zadnje ažuriranje: 13/01/2026
Autor: Isaac
  • Firejail stvara lagane sandboxove koristeći imenske prostore, seccomp-bpf i kontrolu mogućnosti kernela Linux.
  • Ima unaprijed definirane profile, bijele/crne liste i privatne načine rada za ograničavanje pristupa datotečnom sustavu i mreži.
  • Omogućuje vam izolaciju preglednika, AppImagesa, poslužitelja i igara s neovisnom kontrolom propusnosti, DNS-a i IP-a.
  • Integrira se s AppArmorom i SELinuxom, može se omogućiti prema zadanim postavkama s firecfg-om i dodaje minimalno opterećenje sustavu.

Vodič za korištenje Firejaila na Linuxu

Ako svakodnevno koristite GNU/Linux i zabrinuti ste zbog sigurnost, privatnost i nepouzdani programiPrije ili kasnije, naići ćete na Firejail. Ovaj mali uslužni program godinama je jedan od najlakših načina za zatvaranje aplikacija u izolirano okruženje, bez postavljanja virtualnog stroja ili ludovanja s beskrajnim konfiguracijama.

Ideja je jednostavna: Pokrećete svoj program "umetnut" unutar Firejaila I odatle, taj proces vidi datotečni sustav, mrežu, korisnike i uređaje koji su puno ograničeniji od stvarnih. Na taj način, PDF Sumnjivo, preglednik pun ekstenzija ili čudna igra s itch.io imaju puno manje prostora za uništavanje sustava.

Što je Firejail i kako funkcionira unutra?

Vatreni zatvor je C program, tipa SUID i s GPLv2 licencomDjeluje kao pješčanik za procese u GNU/Linuxu. Njegov je zadatak minimizirati utjecaj kompromitirane aplikacije stvaranjem okruženja za izvršavanje s ograničenim privilegijama gdje svaki proces ima vlastiti "izrezani prikaz" sustava.

Na tehničkoj razini, oslanja se na nekoliko Sigurnosne značajke Linux kernelaImenski prostori, filteri sistemskih poziva sa seccomp-bpf, kontrola kapaciteta i izolacija datotečnog sustava. Zahvaljujući tome, proces koji se izvršava unutar sandboxa ima vlastitu tablicu procesa, mrežni stog, tablicu montiranja i, općenito, kolekciju virtualiziranih resursa.

Jedna od njegovih velikih prednosti je to što Gotovo da nema ovisnosti i njegovi opterećenja su minimalna.Ne pokreće pozadinske demone, ne otvara utičnice za upravljanje niti zahtijeva dodatne usluge. Jednostavno se pokreće kada se pozove i troši resurse dok istovremeno održava sandbox aktivnim.

Osim toga, Firejail dolazi s unaprijed definirane sigurnosne profile za stotine programa stolna računala i usluge: preglednici poput Firefoxa i Chromiuma, medijski playeri poput VLC-a, BitTorrent klijenti poput Transmissiona, klijenti e-pošte, igre (uključujući Parna), alati za chat, poslužitelji poput Apachea ili Nginxa, klijenti SSH, Vinoitd. Ako ne postoji specifičan profil za program, primjenjuje se generički profil.

Glavni sigurnosni mehanizmi koje koristi Firejail

Da biste doista razumjeli što Firejail radi, korisno je pregledati mehanizme jezgre koje koristiNe morate biti kernel haker, ali vam je potreban kontekst da biste znali što pojačavate kada se igrate s njegovim opcijama.

Linux imenski prostori Omogućuju skupini procesa dijeljenje vlastitog "imenskog prostora": identifikatora procesa (PID-ova), imena hostova, korisnika, točaka montiranja, mreže itd. Firejail stvara ove imenske prostore tako da program u sandboxu vidi samo resurse koji mu odgovaraju unutar tog enkapsuliranog okruženja.

Od verzije kernela 2.6 nadalje, a posebno od verzije 3.x, dodani su različiti tipovi imenskih prostora (PID, UTS, mount, user, network, IPC, itd.). Firejail se oslanja na njih da bi... proces ima vlastitu mrežu, vlastito stablo procesa i vlastiti datotečni sustav, sve odvojeno od ostatka sustava.

Osim imenskih prostora, Firejail implementira pravila kontrole pristupa na razini datotečnog sustava na temelju bijelih i crnih lista. To vam omogućuje definiranje direktorija kojima aplikacija može pristupiti, drugih koje može samo čitati i onih koji su potpuno blokirani, i u korijenskom direktoriju i unutar korisničkog početnog direktorija.

Paralelno s tim, na scenu stupa sljedeće seccomp-bpfFilter sistemskih poziva povezan je s procesom i njegovim potomcima. Koristeći jezik za filtriranje temeljen na Berkeley Packet Filteru (BPF), Firejail ograničava koje sistemske pozive aplikacija može izvršiti. Ako pokuša učiniti nešto što politika ne dopušta, poziv se blokira ili se proces zaustavlja, što značajno smanjuje površinu napada.

Firejail se također dobro integrira s AppArmor i SELinuxOva rješenja MAC (Obavezna kontrola pristupa) definira koje resurse aplikacija može koristiti, dok Firejail dodaje dodatni sloj izolacije: čak i ako dvije aplikacije imaju dopuštenje za isti resurs prema AppArmoru, s Firejailom možete ih spriječiti u međusobnoj interakciji jer svaka živi u vlastitom sandboxu.

Praktične prednosti korištenja Firejaila

Za prosječnog korisnika nije toliko važna teorija koliko ono što postiže u svakodnevnoj upotrebi: Veća sigurnost bez promjene načina rada radikalno. Firejail se upravo na to usredotočuje.

S jedne strane, postoji izolacija potencijalno opasnih primjenaPDF koji vam se ne čini ispravnim, uredski dokument poslan e-poštom, sumnjiva web stranica ili AppImage preuzeta tko zna odakle, sve se to izvodi u okruženju koje ograničava njihovu mogućnost pristupa sustavu.

  Kako onemogućiti značajku "Ljudi u blizini" na Telegramu i izbjeći praćenje blizine

S druge strane, nudi vrlo granularno ograničenje resursaMožete ograničiti mrežu (potpuno isključiti internet, dati joj vlastitu IP adresu, ograničiti propusnost), smanjiti pristup datotečnom sustavu (bijela i crna lista), ukloniti uređaje iz /dev, kontrolirati zvučni poslužitelj ili čak promijeniti DNS poslužitelje s kojima aplikacija komunicira.

Jedna vrlo zanimljiva stvar je da je osnovna upotreba smiješno jednostavno: firejail program_nazivNe morate uređivati ​​konfiguracijske datoteke da biste započeli; unaprijed definirani profili pokrivaju najčešće upotrebe. Samo ako želite složeniji pristup, trebali biste početi s podešavanjem prilagođenih profila.

Unatoč fokusiranju na GNU/Linux, Firejail je također portiran ili prilagođen drugi tipovi sustava Unix kao što su neke BSD varijante ili čak macOS, iako tamo gdje stvarno blista je u Linux okruženjima s 3.xo kernelom ili novijim.

Instaliranje Firejaila i Firetoolsa na različitim distribucijama

Vatreni zatvor i vatreni alati

Instaliranje Firejaila je jednostavno kao povlačenje upravitelj paketa vaše distribucijeObično ne dolazi unaprijed instaliran, ali se nalazi u službenim repozitorijima gotovo svih modernih distribucija.

Na sustavima temeljenim na Debianu i Ubuntuu, jednostavno koristite APT: sudo apt install firejailU derivatima poput Linux Minta, Elementaryja ili sličnih, naredba je potpuno ista i preuzet će paket iz repozitorija distribucije.

U "čistom" Debianu možete se poslužiti sudo apt-get install firejailDok se u Arch Linuxu i derivatima poput Manjara paket nalazi u službenim repozitorijima i instalira se s sudo pacman -S firejailU Gentoou se nalazi u glavnom stablu kao sys-apps/firejail i instalira se pomoću emerge – pitajte sys-apps/firejail ili njegovu LTS varijantu.

U Fedori možete odabrati preuzimanje RPM od SourceForgea i pokrenite ga s `sudo rpm -i` ili omogućite određeni Copr repozitorij (na primjer, `ssabchew/firejail`) i zatim ga instalirajte s `dnf`. Na openSUSE-u je dostupan putem klasičnog sustava instalacija jednim klikom iz preporučenih repozitorija za Tumbleweed ili Leap.

Ako vaša distribucija ne nudi paket, uvijek ga možete kompajlirati iz izvornog koda: git klon https://github.com/netblue30/firejail.git; cd firejail; ./configure && make && sudo make install-stripTo je lagani projekt s malo ovisnosti, pa se obično kompajlira bez ikakvih problema.

Za grafičko sučelje imate Firetools, koji se obično instalira s istim upraviteljem paketa, na primjer sudo apt instaliraj firetoolsOvaj paket dodaje mali pokretač u sistemsku traku i uslužne programe za grafičko upravljanje sandboxima.

Kako koristiti Firejail iz terminala

Najizravniji način da iskoristite Firejail je putem naredbeNjihova filozofija je vrlo jasna: dodajte riječ firejail željenoj naredbi. Ništa više.

Na primjer, za pokretanje Firefoxa u sandboxu koristili biste Firejail Firefoxza VLC Firejail VLC, za prijenos Firejail transmission-gtk ili za gedit firejail geditFirejail detektira program, provjerava postoji li odgovarajući profil u /etc/firejail i primjenjuje definirana ograničenja.

Također se može koristiti s usluge ili demoni poslužitelj, pokrenut kao korijenTipičan primjer bi bio pokretanje Nginxa s `sudo firejail /etc/init.d/nginx start` ili bilo koje druge usluge koju želite smjestiti unutar sandboxa s vlastitom mrežom i ograničenim datotečnim sustavom.

Ako želite u bilo kojem trenutku znati koji su sandboxovi aktivni, možete pokrenuti popis vatrogasacaProgram će vam prikazati popis s PID-om, korisnikom i naredbom povezanom sa svakim izoliranim okruženjem, vrlo slično filtriranom ps-u.

Kada želite pregledati resurse koje koriste aplikacije pod Firejailom, imate podnaredbu vatrogasni zatvor – vrh, koja prikazuje tablicu s PID-om, korisnikom, rezidentnom memorijom, dijeljenom memorijom, korištenim CPU-om, podređenim procesima i vremenom izvršavanja, a sve usmjereno na instance pokrenute putem sandboxa.

Da biste vidjeli potpunu hijerarhiju procesa unutar svakog sandboxa, možete pokrenuti vatreni zatvor – drvokoji prikazuje stablo procesa s "roditeljskom" instancom firejail-a i svim procesima koji vise s nje. Ako bilo koja instanca prestane reagirati, firejail –shutdown=PID Omogućuje vam da uništite taj specifični sandbox.

Firejail profili: gdje se nalaze i kako ih izmijeniti

Pravi potencijal Firejaila leži u njegovom konfiguracijski profiliTo su teksturne datoteke koje opisuju kako bi svaka aplikacija trebala biti izolirana: koje direktorije može vidjeti, koje mogućnosti kernela može koristiti, što se događa s mrežom, jesu li omogućeni alternativni grafički poslužitelji itd.

Sistemski profili se obično pohranjuju u /etc/firejail/Ako u tom direktoriju napravite naredbu ls, vidjet ćete kolekciju datoteka s ekstenzijom .profile, od kojih je svaka povezana s određenim programom: firefox.profile, vlc.profile, chromium.profile, steam.profile, server.profile itd.

Za prilagodbu ponašanja standardnog profila, jednostavno ga otvorite u svom omiljenom uređivaču, na primjer s sudo nano /etc/firejail/firefox.profileTamo možete omogućiti ili onemogućiti pravila kao što su crna lista, bijela lista, /dev ograničenja, mrežne opcije, kontrola zvuka ili onemogućiti 3D ubrzanje.

Ako želite znati koju sintaksu podržava jezik za profiliranje, Firejail uključuje namjensku stranicu priručnika: profil-firejaila-čovjeka-5Detaljno opisuje značenje svake naredbe (include, blacklist, whitelist, caps.keep, net, x11 itd.) i kako ih kombinirati za postizanje politike izolacije koja vas zanima.

Kada želite prilagoditi program bez diranja globalnog profila u /etc, možete stvoriti lokalni korisnički profilPohranjeni su u ~/.config/firejail/ i imaju isto ime kao i službeni profil. Na primjer, ako želite da VLC nikada nema pristup internetu, možete stvoriti ~/.config/firejail/vlc.profile sa sadržajem sličnim ovome:

  RAID ZFS vs mdadm: potpuna usporedba za Linux servere

uključi /etc/firejail/vlc.profile
neto ništa

Sljedeći put kad trčiš Firejail VLCPrvo će se primijeniti sistemski profil, a zatim vaše dodatne postavke, čime se provodi dodatna izolacija mreže bez potrebe za promjenom datoteke u /etc.

Bijele liste, crne liste i kontrola datotečnog sustava

Jedna od najmoćnijih primjena Firejaila je njegova sposobnost da ograničiti određene direktorije kojima aplikacija može pristupiti. To postižete pravilima bijele i crne liste, kako u globalnim tako i u prilagođenim profilima.

Ako želite, na primjer, spriječiti aplikaciju da pristupi korisnikovoj mapi Dokumenti, možete dodati redak crna lista ${HOME}/Dokumenti do profila. Alternativno, možete koristiti punu putanju poput blacklist /home/user/Documents ako ne želite koristiti varijable.

Suprotno tome, ako želite da program ima pristup samo vrlo specifičnom podskupu HOME direktorija, možete raditi s Popis dopuštenihVrlo uobičajena kombinacija je općenito blokiranje pristupa /boot, /root ili određenim osjetljivim direktorijima, a istovremeno dodjeljivanje dopuštenja jednom direktoriju od descargas ili privremenu mapu u koju ćete spremiti ono što vam stvarno treba.

Pravila popisa kombiniraju se s opcijama kao što su –samo-čitanje=/itd. tako da je određeni direktorij dostupan, ali samo u načinu čitanja ili s –privatna-kuća, –privatno-itd., –privatna-spremnik postaviti efemerne verzije tih ruta unutar sandboxa.

U naprednim profilima možete čak koristiti i obvezujuće direktive kao što su vezanje ishodišta, odredišta, tipično u poslužiteljskim okruženjima, tako da se stvarni sistemski direktorij (na primjer /server/web1) unutar sandboxa vidi kao /var/www/html, a sve pod puno strožom kontrolom pristupa.

Privatni način rada i privremeni datotečni sustavi

Kada tražite maksimalnu izolaciju, Firejail nudi posebno agresivan način rada: –privatnoKada se aktivira, aplikacija vidi privremeni HOME montiran na tmpfs, s minimalnom strukturom direktorija, a sve što zapiše nestat će kada se sandbox zatvori.

Ovaj način rada je idealan za provjeravajte online bankarstvo ili pokrenite posebno osjetljive aplikacije bez prenošenja uobičajenih postavki, proširenja, predmemorija, povijesti itd. Ako pokrenete preglednik s firejail --private, koristit će svoju zadanu konfiguraciju, bez dodataka ili prilagodbi, što smanjuje površinu napada.

Također možete poboljšati ovo ponašanje pomoću –privatno=direktorijšto ukazuje na trajnu alternativu HOME ili njezino miješanje s –private-tmp y –privatna-predmemorija tako da su direktoriji poput /tmp ili ~/.cache privremeni, dok zadržavate ostale "prave" elemente profila.

Drugi moćan mehanizam je –overlay-tmpfsTime se stvara prekrivni, efemerni datotečni sustav preko stvarnog sustava, tako da sve promjene pisanja ostaju u privremenom sloju. To omogućuje, na primjer, instalirajte paket unutar sandboxa i testirajte ga bez ostavljanja traga na host sustavu kada zatvorite Firejail sesiju.

U tim scenarijima važno je biti vrlo oprezan s kombinacijom opcija, jer ako koristite –bez profila A ako ne blokirate /tmp ispravno, i dalje možete dopustiti pisanje u dijelove sustava koje niste namjeravali dirati. Uobičajena praksa je dodavanje direktiva poput `--blacklist=/tmp` ili rad s vrlo specifičnim bijelim listama kako biste ograničili područje pisanja.

Kontrola mreže: isključivanje pristupa internetu, odvajanje IP adresa i ograničenja propusnosti

Još jedan ključni aspekt Firejaila je upravljanje mrežom. S jednim parametrom možete dopustiti aplikaciji da... potpuno izvan mreže ili postaviti vlastiti mrežni stog s individualnim IP-om, vatrozidom i ARP tablicom odvojeno od sustava.

Za onemogućavanje povezivosti jednostavno koristite –net=ništaNa primjer, u naredbama poput `firejail --net=none vlc`, `firejail --net=none clementine` ili bilo kojem drugom programu kojem želite blokirati pristup internetu. Idealno je za media playere, preglednike slika, uređivače teksta ili slične programe kojima nije potreban pristup mreži.

Ako želite postaviti određenu mrežu, možete koristiti –net=sučeljegdje je sučelje obično nešto poput eth0 na žičnim mrežama. Možete čak dodati i –ip=192.168.1.80 tako da sandbox ima drugačiju internu IP adresu od računala, što je vrlo korisno u kontekstima poslužitelja ili testiranju mreže.

S opcijom –dns=IP Možete prebrisati DNS poslužitelje za taj specifični sandbox. Na primjer, vrlo uobičajena kombinacija za online bankarstvo bila bi nešto poput `firejail --private --dns=8.8.8.8 --dns=8.8.4.4 google-chrome`, osiguravajući da se ti upiti rješavaju pomoću DNS poslužitelja koje navedete.

Firejail vam također omogućuje ograniči propusnost po sandboxuPrvo stvorite imenovanu instancu, na primjer firejail --name=browser --net=eth0 firefox, a zatim, iz druge terminalPravila primjenjujete s `firejail --bandwidth=browser set eth0 80 20` kako biste postavili preuzimanje na 80 KB/s i prijenos na 20 KB/s. Za uklanjanje ograničenja koristite `firejail --bandwidth=browser clear eth0`.

Imajte na umu da određene mrežne opcije (kao što je macvlan) rade samo na žičana sučeljaNe na Wi-Fi-ju. prenosiv S bežičnim mrežama morat ćete prilagoditi dizajn svog sandboxa u skladu s tim.

  Meta uvodi prepoznavanje lica u Europi za zaštitu računa i borbu protiv prijevara

Alternativni grafički poslužitelji i zaštita od keyloggera

Osim izolacije mreže i datotečnog sustava, Firejail uključuje mehanizme za jačanje X11 grafički slojUmjesto korištenja "normalne" X sesije korisnika, možete pokrenuti program unutar alternativnih grafičkih poslužitelja kao što su Xpra ili Xephyr.

Da biste to učinili, prvo morate instalirati odgovarajuće pakete, obično naredbom poput sudo apt-get install xpra xserver-xephyr na sustavima temeljenim na Debianu/Ubuntuu. Nakon što je instaliran, Firejail omogućuje pokretanje aplikacija pomoću –x11=naziv_poslužitelja, što stvara dodatno izolirano grafičko okruženje.

Na primjer, mogli biste pokrenuti firejail –x11=xephyr –net=none vlc otvoriti VLC na Xephyr poslužitelju s isključenom mrežom ili firejail –x11=xpra –net=none vlc učiniti to pod Xpra-om. To pomaže Zaštitite se od keyloggera i uređaja za snimanje zaslona koji možda radi u glavnoj X sesiji.

Kada izričito ne navedete grafički poslužitelj, opcija –x11 Prvo isprobajte Xpra, zatim Xephyr i na kraju sigurnosno proširenje X11 ako prethodne opcije nisu dostupne. Ovisno o vašoj distribuciji i okruženju radne površine, neke kombinacije možda neće savršeno funkcionirati i možda ćete morati ručno prilagoditi postavke.

Koristite Firejail "po zadanim postavkama" u svojim aplikacijama

Ako želite, možete pokrenuti određene aplikacije, ili čak sve one s profilom. uvijek Pod Firejailom, bez potrebe da svaki put tipkate riječ "firejail". Za to postoji pomoćni alat. firecfg.

Pri trčanju sudo firecfgProgram skenira instalirane binarne datoteke i stvara simboličke poveznice u /usr/local/bin za sve aplikacije koje imaju profil u /etc/firejail. Ove poveznice upućuju na /usr/bin/firejail, tako da kada korisnik pokrene "firefox", Firejail se zapravo poziva s odgovarajućim profilom.

Ako se predomislite i želite ponovno pokrenuti programe bez sandboxinga, tu konfiguraciju možete izbrisati pomoću firecfg – čistili ručno izbrišite simboličke poveznice iz /usr/local/bin. Druga alternativa je konfiguriranje samo određene aplikacije na ovaj način, ručno stvaranje simboličke poveznice s sudo ln -s /usr/bin/firejail /usr/local/bin/naziv_programa.

U grafičkim okruženjima također možete uređivati .desktop datoteke U programima za pokretanje na radnoj površini dodajte `firejail` u naredbeni redak. Na primjer, u prilagođenoj datoteci `firefox.desktop` postavite redak `Exec` na `Exec=firejail firefox`. Na taj će način svaki klik na ikonu pokrenuti već enkapsulirani program.

Ako instalirate Firetools, dobit ćete i mali grafički upravitelj sandboxa koji prikazuje aplikacije s dostupnim profilima. Odatle ih možete pokrenuti, vidjeti što se izvodi, provjeriti potrošnju resursa ili podesiti neke parametre bez korištenja terminala.

Napredno upravljanje: ulazak u sandbox, otklanjanje pogrešaka i AppArmor/SELinux

Može biti vrlo korisno za napredne administrativne zadatke uđite "unutar" pješčanikaFirejail to omogućuje opcijom –join, koja povezuje novu ljusku s imenskim prostorom postojećeg procesa.

Tipičan postupak bi bio izvršiti popis vatrogasaca Da biste vidjeli PID-ove instanci, pronađite glavni broj procesa sandboxa (na primjer, 5394) i zatim učinite sljedeće sudo firejail –pridruži se=5394Firejail će skočiti na prvi podređeni proces unutar sandboxa i ostaviti vas u ljusci kao root unutar tog izoliranog okruženja.

Kad ste tamo, možete koristiti naredbe poput df -h, ip adresa, ps pomoć ili bilo koji dijagnostički alat kako biste točno vidjeli što aplikacija vidi unutar sandboxa. Kada završite, jednostavno pokrenite `exit` za izlaz i povratak u normalno okruženje.

Za otkrivanje problema s konfiguracijom ili razumijevanje što blokira aplikaciju, imate sljedeće mogućnosti –otklanjanje pogrešaka y -tragOni prikazuju informacije o otklanjanju pogrešaka i sistemske pozive dok se naredba izvršava. Posebno su korisni kada previše agresivan profil sprječava pokretanje programa. čizma ili funkcioniraju normalno.

Firejail se dobro nadopunjuje s AppArmor i SELinuxU distribucijama koje prema zadanim postavkama omogućuju AppArmor, mnogi Firejail profili dizajnirani su za koegzistiranje s AppArmor profilima, dodajući dodatni sloj izolacije bez kršenja postojećih pravila. Primjeri specifičnih pravila za daljnje jačanje usluga kao što su web poslužitelji, SSH ili kritične desktop aplikacije dostupni su na GitHubu i u službenoj dokumentaciji.

Ako ćete koristiti Firejail na višekorisničkim poslužiteljima, preporučljivo je pregledati konfiguraciju u /etc/firejail/firejail.config, omogućite opcije poput force-nonewprivs i ograničite korisnike koji mogu pokretati /usr/bin/firejail prilagođavanjem njihove grupe i dozvola (na primjer, stvaranjem grupe „firejail“ i ograničavanjem SUID-a na njezine članove).

Firejail nudi Vrlo zanimljiva ravnoteža između sigurnosti i udobnosti.Ne zamjenjuje potpunu virtualizaciju, ali za mnoge svakodnevne zadatke, brze testove softvera ili izoliranje preglednika, AppImagesa, Winea i igara, pruža izvanrednu zaštitu uz vrlo nisku složenost. Temeljito razumijevanje njegovih profila, mrežnih opcija, privatnih načina rada i integracija s AppArmorom/SELinuxom omogućuje vam da ga prilagodite svojim željama i doista ojačate svoju Linux radnu površinu bez žrtvovanja upotrebljivosti.