Kako uporabljati Firejail v Linuxu za izolacijo in zaščito aplikacij

Zadnja posodobitev: 13/01/2026
Avtor: Isaac
  • Firejail ustvarja lahke peskovnike z uporabo imenskih prostorov, seccomp-bpf in nadzora zmogljivosti jedra Linux.
  • Ima vnaprej določene profile, bele/črne sezname in zasebne načine za omejitev dostopa do datotečnega sistema in omrežja.
  • Omogoča vam izolacijo brskalnikov, AppImages, strežnikov in iger z neodvisnim nadzorom pasovne širine, DNS-a in IP-ja.
  • Integrira se z AppArmorjem in SELinuxom, privzeto ga je mogoče omogočiti z ukazom firecfg in sistemu doda minimalno obremenitev.

Vodnik za uporabo Firejaila v Linuxu

Če vsakodnevno uporabljate GNU/Linux in vas skrbi varnost, zasebnost in nezanesljivi programiPrej ali slej boste naleteli na Firejail. Ta majhen pripomoček je že leta eden najlažjih načinov za zaprtje aplikacij v izoliranem okolju, ne da bi morali nastaviti virtualni stroj ali se prenagliti v neskončnih konfiguracijah.

Ideja je preprosta: Program zaženete "vstavljen" znotraj Firejaila In od tam naprej ta proces vidi datotečni sistem, omrežje, uporabnike in naprave, ki so veliko bolj omejene kot dejanske. Na ta način PDF Sumljivo je, da ima brskalnik, naložen z razširitvami, ali čudna igra z itch.io veliko manj prostora za povzročanje škode v sistemu.

Kaj je Firejail in kako deluje v notranjosti?

Ognjeni zapor je Program C, tipa SUID in z licenco GPLv2Deluje kot peskovnik za procese v GNU/Linuxu. Njegova naloga je zmanjšati vpliv ogrožene aplikacije z ustvarjanjem okolja za izvajanje z omejenimi privilegiji, kjer ima vsak proces svoj "izrezan pogled" na sistem.

Na tehnični ravni se zanaša na več Varnostne funkcije jedra LinuxaImenski prostori, filtri sistemskih klicev s seccomp-bpf, nadzor zmogljivosti in izolacija datotečnega sistema. Zahvaljujoč temu ima proces, ki se izvaja znotraj peskovnika, svojo lastno tabelo procesov, omrežni sklad, tabelo priklopov in na splošno zbirko virtualiziranih virov.

Ena od njegovih velikih prednosti je, da Skoraj nima odvisnosti in njegovi režijski stroški so minimalni.Ne zažene demonov v ozadju, ne odpira vtičnic za upravljanje in ne zahteva dodatnih storitev. Preprosto se zažene ob klicu in porablja vire, medtem ko ohranja peskovnik aktiven.

Poleg tega Firejail prihaja z vnaprej določeni varnostni profili za stotine programov namizni računalniki in storitve: brskalniki, kot sta Firefox in Chromium, predvajalniki medijev, kot je VLC, odjemalci BitTorrent, kot je Transmission, e-poštni odjemalci, igre (vključno z Parna), orodja za klepet, strežniki, kot sta Apache ali Nginx, odjemalci SSH, Vinoitd. Če za program ni specifičnega profila, se uporabi generični profil.

Glavni varnostni mehanizmi, ki jih uporablja Firejail

Da bi resnično razumeli, kaj Firejail počne, je koristno pregledati mehanizme jedra, ki jih izkoriščaNi vam treba biti heker jedra, vendar potrebujete nekaj konteksta, da veste, kaj utrjujete, ko se igrate z njegovimi možnostmi.

Imenski prostori Linuxa Skupini procesov omogočajo skupno rabo lastnega "imenskega prostora": identifikatorjev procesov (PID-ov), imen gostiteljev, uporabnikov, točk priklopa, omrežja itd. Firejail ustvari te imenske prostore tako, da program v peskovniku vidi le vire, ki mu ustrezajo znotraj tega enkapsuliranega okolja.

Od veje jedra 2.6 naprej, še posebej pa od različice 3.x, so bile dodane različne vrste imenskih prostorov (PID, UTS, mount, user, network, IPC itd.). Firejail se nanje zanaša pri ... proces ima svoje omrežje, svoje drevo procesov in svoj datotečni sistem, vse ločeno od preostalega sistema.

Poleg imenskih prostorov Firejail izvaja pravilniki za nadzor dostopa na ravni datotečnega sistema na podlagi belih in črnih seznamov. To vam omogoča, da določite imenike, do katerih lahko aplikacija dostopa, druge, ki jih lahko samo bere, in tretje, ki so popolnoma blokirani, tako v korenskem imeniku kot v domačem imeniku uporabnika.

Vzporedno pride v poštev naslednje seccomp-bpfS procesom in njegovimi potomci je povezan filter sistemskih klicev. Z uporabo jezika za filtriranje, ki temelji na Berkeley Packet Filter (BPF), Firejail omejuje, katere sistemske klice lahko aplikacija izvede. Če poskuša storiti nekaj, česar pravilnik ne dovoljuje, se klic blokira ali pa se proces ustavi, kar znatno zmanjša površino napada.

Firejail se dobro integrira tudi z AppArmor in SELinuxTe rešitve MAC (Obvezni nadzor dostopa) določa, katere vire lahko aplikacija uporablja, medtem ko Firejail doda dodatno plast izolacije: tudi če imata dve aplikaciji dovoljenje za isti vir po AppArmorju, lahko s Firejailom onemogočite medsebojno interakcijo, ker vsaka živi v svojem peskovniku.

Praktične prednosti uporabe Firejaila

Za povprečnega uporabnika ni toliko pomembna teorija, temveč to, kaj doseže v vsakdanji uporabi: Večja varnost brez spreminjanja načina dela radikalno. Firejail se osredotoča prav na to.

Po eni strani je to izolacija potencialno nevarnih aplikacijPDF, ki se ne zdi pravilen, pisarniški dokument, poslan po e-pošti, sumljivo spletno mesto ali slika aplikacije, prenesena od koderkoli, vse to deluje v okolju, ki omejuje njihovo možnost dostopa do sistema.

  Kako onemogočiti funkcijo »Osebe v bližini« v Telegramu in se izogniti sledenju bližine

Po drugi strani pa ponuja zelo natančna omejitev virovOmrežje lahko omejite (popolnoma izklopite internet, mu dodelite lasten IP-naslov, omejite pasovno širino), zmanjšate dostop do datotečnega sistema (beli in črni seznam), obrežete naprave iz /dev, nadzorujete zvočni strežnik ali celo spremenite DNS strežnike, s katerimi aplikacija komunicira.

Zelo zanimiva točka je, da je osnovna uporaba smešno preprosto: firejail ime_programaZa začetek vam ni treba urejati konfiguracijskih datotek; vnaprej določeni profili pokrivajo najpogostejše uporabe. Le če želite bolj zapleteno rešitev, se lotite prilagajanja profilov po meri.

Čeprav se osredotoča na GNU/Linux, je bil Firejail prenesen ali prilagojen tudi za drugi tipi sistemov Unix kot so nekatere različice BSD ali celo macOS, čeprav resnično sije v okoljih Linux z jedrom 3.xo ali novejšim.

Namestitev Firejaila in Firetools na različne distribucije

Firejail in Firetools

Namestitev Firejaila je tako enostavna kot odstranitev upravitelj paketov vaše distribucijeObičajno ni vnaprej nameščen, je pa v uradnih repozitorijih skoraj vseh sodobnih distribucij.

V sistemih, ki temeljijo na Debianu in Ubuntuju, preprosto uporabite APT: sudo apt namestite firejailV izpeljankah, kot so Linux Mint, Elementary ali podobne, je ukaz popolnoma enak in bo prenesel paket iz repozitorijev distribucije.

V "čistem" Debianu se lahko zatečete k sudo apt-get namestite firejailMedtem ko je v Arch Linuxu in derivatih, kot je Manjaro, paket v uradnih repozitorijih in je nameščen z sudo pacman -S požarni zaporV Gentooju se nahaja v glavnem drevesu kot sys-apps/firejail in se namesti z uporabo emerge – vprašajte sys-apps/firejail ali njegovo LTS različico.

V Fedori lahko prenesete RPM iz SourceForge in ga zaženite z `sudo rpm -i` ali pa omogočite določen repozitorij Copr (na primer `ssabchew/firejail`) in ga nato namestite z `dnf`. V openSUSE je na voljo prek klasičnega sistema namestitev z enim klikom iz priporočenih repozitorij za Tumbleweed ali Leap.

Če vaša distribucija ne ponuja paketa, ga lahko vedno prevedete iz izvorne kode: klon gita https://github.com/netblue30/firejail.git; cd firejail; ./configure && make && sudo make install-stripGre za lahek projekt z malo odvisnostmi, zato se običajno prevede brez težav.

Za grafični vmesnik imate na voljo Firetools, ki je običajno nameščen z istim upraviteljem paketov, na primer sudo apt namestite firetoolsTa paket doda majhen zaganjalnik v sistemsko vrstico in pripomočke za grafično upravljanje peskovnikov.

Kako uporabljati Firejail iz terminala

Najbolj neposreden način za izkoriščanje Firejaila je prek linije ukaziNjihova filozofija je zelo jasna: Dodajte besedo firejail želenemu ukazu. Nič več.

Na primer, za zagon Firefoxa v peskovniku bi uporabili Ognjeni zapor Firefoxaza VLC Firejail VLC, za prenos Firejail prenos-gtk ali za gedit požarni zapor geditFirejail zazna program, preveri, ali je v /etc/firejail ustrezen profil in uporabi določene omejitve.

Uporablja se lahko tudi z storitve ali demoni strežnik, zagnan kot korenTipičen primer bi bil zagon Nginxa z ukazom `sudo firejail /etc/init.d/nginx start` ali katere koli druge storitve, ki jo želite uporabljati znotraj peskovnika z lastnim omrežjem in omejenim datotečnim sistemom.

Če želite kadar koli vedeti, kateri peskovniki so aktivni, lahko zaženete seznam požarnih zapornikovProgram vam bo prikazal seznam s PID-om, uporabnikom in ukazom, povezanim z vsakim izoliranim okoljem, zelo podobno filtriranemu ps-ju.

Če želite pregledati vire, ki jih porabljajo aplikacije v programu Firejail, imate na voljo podukaz požarni zapor – vrh, ki prikazuje tabelo s PID-jem, uporabnikom, rezidenčnim pomnilnikom, deljenim pomnilnikom, uporabljenim CPU-jem, podrejenimi procesi in časom izvajanja, vse osredotočeno na primerke, zagnane prek peskovnika.

Če si želite ogledati celotno hierarhijo procesov znotraj vsakega peskovnika, lahko zaženete požarni zapor – drevoki predstavi drevo procesov z "nadrejenim" primerkom firejail in vsemi procesi, ki visijo na njem. Če kateri koli primerek postane neodziven, požarni zapor –zaustavitev=PID Omogoča vam, da ubijete ta specifični peskovnik.

Profili Firejail: kje so in kako jih spremeniti

Pravi potencial Firejaila leži v njegovem konfiguracijski profiliTo so teksturne datoteke, ki opisujejo, kako naj bo vsaka aplikacija izolirana: katere imenike lahko vidi, katere zmogljivosti jedra lahko uporablja, kaj se zgodi z omrežjem, ali so omogočeni alternativni grafični strežniki itd.

Sistemski profili so običajno shranjeni v /etc/firejail/Če v tem imeniku izvedete ukaz ls, boste videli zbirko datotek s končnico .profile, od katerih je vsaka povezana z določenim programom: firefox.profile, vlc.profile, chromium.profile, steam.profile, server.profile itd.

Če želite prilagoditi delovanje standardnega profila, ga preprosto odprite s svojim najljubšim urejevalnikom, na primer z sudo nano /etc/firejail/firefox.profileTam lahko omogočite ali onemogočite pravilnike, kot so črni seznam, beli seznam, omejitve /dev, omrežne možnosti, nadzor zvoka ali onemogočite 3D-pospešek.

Če želite vedeti, katero sintakso podpira jezik za profiliranje, ima Firejail namensko stran z navodili: profil-firejaila-moškega-5Podrobno opisuje pomen posameznih ukazov (include, blacklist, whitelist, caps.keep, net, x11 itd.) in kako jih kombinirati za dosego politike izolacije, ki vas zanima.

Če želite prilagoditi program, ne da bi se dotaknili globalnega profila v /etc, lahko ustvarite lokalni uporabniški profilShranjeni so v datoteki ~/.config/firejail/ in imajo isto ime kot uradni profil. Če na primer želite, da VLC nikoli ne bo imel dostopa do interneta, lahko ustvarite datoteko ~/.config/firejail/vlc.profile z vsebino, podobno tej:

  RAID ZFS proti mdadm: popolna primerjava za Linux strežnike

vključi /etc/firejail/vlc.profile
neto nič

Ko boste naslednjič tekli Firejail VLCNajprej bo uporabljen sistemski profil, nato pa vaše dodatne nastavitve, s čimer se uveljavi dodatna omrežna izolacija, ne da bi bilo treba spreminjati datoteko v /etc.

Bele liste, črne liste in nadzor datotečnega sistema

Ena najmočnejših uporab Firejaila je njegova sposobnost, da omeji določene imenike do katerih lahko aplikacija dostopa. To dosežete s pravili za bele in črne liste, tako v globalnih kot tudi v prilagojenih profilih.

Če želite na primer preprečiti aplikaciji dostop do uporabnikove mape Dokumenti, lahko dodate vrstico črni seznam ${HOME}/Dokumenti do profila. Lahko pa uporabite celotno pot, kot je blacklist /home/uporabnik/Dokumenti, če ne želite uporabljati spremenljivk.

Nasprotno pa, če želite, da ima program dostop le do zelo specifične podmnožice imenika HOME, lahko delate z whitelistZelo pogosta kombinacija je na splošno blokiranje dostopa do /boot, /root ali določenih občutljivih imenikov in vzporedno dodeljevanje dovoljenja enemu samemu imeniku ... descargas ali začasno mapo, kamor boste shranili tisto, kar resnično potrebujete.

Pravila seznama so kombinirana z možnostmi, kot so –samo-branje=/itd. tako da je določen imenik dostopen, vendar le v načinu branja ali z –zasebni-dom, –zasebno-itd., –zasebni-koš za nastavitev efemernih različic teh poti znotraj peskovnika.

V naprednih profilih lahko uporabite celo zavezujoče direktive, kot so vezava izvor, cilj, kar je značilno za strežniška okolja, tako da se dejanski sistemski imenik (na primer /server/web1) znotraj peskovnika vidi kot /var/www/html, vse pod veliko strožjim nadzorom dostopa.

Zasebni način in začasni datotečni sistemi

Ko iščete maksimalno izolacijo, Firejail ponuja še posebej agresiven način: –zasebnoKo je aktivirana, aplikacija vidi začasno datoteko HOME, nameščeno na tmpfs, z minimalno strukturo imenikov, in vse, kar zapiše, bo izginilo, ko se peskovnik zapre.

Ta način je idealen za preverite spletno bančništvo ali zaženite posebej občutljive aplikacije brez prenosa običajnih nastavitev, razširitev, predpomnilnikov, zgodovine itd. Če brskalnik zaženete z možnostjo firejail --private, bo uporabil privzeto konfiguracijo, brez dodatkov ali prilagoditev, kar zmanjša površino za napad.

To vedenje lahko izboljšate tudi z –zasebno=imenikkar kaže na vztrajno alternativo HOME ali njeno mešanje z –zasebni-tmp y –zasebni predpomnilnik tako da so imeniki, kot sta /tmp ali ~/.cache, začasni, medtem ko ohranite druge "prave" elemente profila.

Drug močan mehanizem je –prekrivanje-tmpfsTo ustvari prekrivni, kratkotrajni datotečni sistem na vrhu resničnega sistema, tako da vse spremembe pisanja ostanejo v začasni plasti. To omogoča na primer namestite paket v peskovnik in ga preizkusite brez sledi na gostiteljskem sistemu, ko zaprete sejo Firejail.

V teh primerih je pomembno biti zelo previden pri kombiniranju možnosti, saj če uporabljate –brez profila In če ne blokirate /tmp pravilno, lahko še vedno dovolite pisanje v dele sistema, ki se jih niste nameravali dotakniti. Običajna praksa je dodajanje direktiv, kot je `--blacklist=/tmp`, ali delo z zelo specifičnimi belimi seznami za omejitev območja pisanja.

Nadzor omrežja: prekinitev dostopa do interneta, ločeni IP-ji in omejitve pasovne širine

Drug ključni vidik Firejaila je upravljanje omrežja. Z enim samim parametrom lahko aplikaciji dovolite ... popolnoma brez povezave ali pa vzpostavi lasten omrežni sklad z individualnimi IP-naslovi, požarnim zidom in tabelo ARP, ločeno od sistema.

Če želite onemogočiti povezljivost, preprosto uporabite –net=brezNa primer, v ukazih, kot so `firejail --net=none vlc`, `firejail --net=none clementine`, ali katerem koli drugem programu, ki mu želite preprečiti dostop do interneta. Idealen je za predvajalnike medijev, pregledovalnike slik, urejevalnike besedil ali podobne programe, ki ne potrebujejo dostopa do omrežja.

Če želite nastaviti določeno omrežje, lahko uporabite –net=vmesnikkjer je vmesnik običajno nekaj takega kot eth0 v žičnih omrežjih. Lahko celo dodate –ip=192.168.1.80 tako da ima peskovnik drugačen notranji IP-naslov kot računalnik, kar je zelo uporabno v strežniških kontekstih ali pri testiranju omrežja.

Z možnostjo –dns=IP DNS strežnike za ta specifični peskovnik lahko prepišete. Na primer, zelo pogosta kombinacija za spletno bančništvo bi bila nekaj takega kot `firejail --private --dns=8.8.8.8 --dns=8.8.4.4 google-chrome`, kar zagotavlja, da se te poizvedbe razrešijo z uporabo DNS strežnikov, ki jih določite.

Firejail vam omogoča tudi omejitev pasovne širine na peskovnikNajprej ustvarite poimenovani primerek, na primer firejail --name=browser --net=eth0 firefox, nato pa iz drugega terminalPravila uporabite z `firejail --bandwidth=browser set eth0 80 20`, da nastavite hitrost prenosa na 80 KB/s in nalaganja na 20 KB/s. Če želite odstraniti omejitev, uporabite `firejail --bandwidth=browser clear eth0`.

Upoštevajte, da nekatere omrežne možnosti (kot je macvlan) delujejo samo na žični vmesnikiNe prek Wi-Fi-ja. prenosni Pri brezžičnih omrežjih boste morali ustrezno prilagoditi zasnovo peskovnika.

  Meta uvaja prepoznavanje obraza v Evropi za zaščito računov in boj proti prevaram

Alternativni grafični strežniki in zaščita pred keyloggerji

Poleg izolacije omrežja in datotečnega sistema Firejail vključuje mehanizme za utrjevanje Grafična plast X11Namesto uporabe uporabnikove "običajne" seje X lahko program zaženete v alternativnih grafičnih strežnikih, kot sta Xpra ali Xephyr.

Če želite to narediti, morate najprej namestiti ustrezne pakete, običajno z ukazom, kot je sudo apt-get install xpra xserver-xephyr v sistemih, ki temeljijo na Debianu/Ubuntuju. Ko je na voljo, Firejail omogoča zagon aplikacij z uporabo –x11=ime_strežnika, kar ustvari dodatno izolirano grafično okolje.

Na primer, lahko bi zagnali firejail –x11=xephyr –net=none vlc za odpiranje VLC na strežniku Xephyr z izklopljenim omrežjem ali firejail –x11=xpra –net=none vlc da to storite v okviru Xpra. To pomaga pri Zaščitite se pred keyloggerji in napravami za zajem zaslona ki morda deluje v glavni seji X.

Če grafičnega strežnika ne določite izrecno, je možnost –x11 Najprej poskusite Xpra, nato Xephyr in na koncu varnostno razširitev X11, če prejšnje možnosti niso na voljo. Glede na vašo distribucijo in namizno okolje nekatere kombinacije morda ne bodo delovale popolnoma in nastavitve boste morda morali prilagoditi ročno.

V svojih aplikacijah uporabite Firejail »privzeto«

Če želite, lahko zaženete določene aplikacije ali celo vse tiste s profilom. vedno V orodju Firejail, ne da bi vsakič morali vtipkati besedo »firejail«. Za to obstaja pomožno orodje. firecfg.

Med tekom sudo firecfgProgram pregleda nameščene binarne datoteke in ustvari simbolne povezave v /usr/local/bin za vse aplikacije, ki imajo profil v /etc/firejail. Te povezave kažejo na /usr/bin/firejail, tako da se Firejail, ko uporabnik zažene »firefox«, dejansko zažene z ustreznim profilom.

Če si premislite in želite programe znova zagnati brez uporabe peskovnika, lahko to konfiguracijo počistite z firecfg – čistoali ročno izbrišite simbolične povezave iz /usr/local/bin. Druga možnost je, da na ta način konfigurirate samo določeno aplikacijo in ročno ustvarite simbolično povezavo z sudo ln -s /usr/bin/firejail /usr/local/bin/ime_programa.

V grafičnih okoljih lahko urejate tudi Datoteke .desktop V zaganjalnikih namiznih računalnikov dodajte v ukazno vrstico ukaz `firejail`. Na primer, v datoteki po meri `firefox.desktop` nastavite vrstico `Exec` na `Exec=firejail firefox`. Na ta način bo vsak klik na ikono zagnal že enkapsuliran program.

Če namestite Firetools, boste dobili tudi majhen grafični upravitelj peskovnika, ki prikazuje aplikacije z razpoložljivimi profili. Od tam jih lahko zaženete, vidite, kaj se izvaja, preverite porabo virov ali prilagodite nekatere parametre brez uporabe terminala.

Napredno upravljanje: vstop v peskovnik, odpravljanje napak in AppArmor/SELinux

Lahko je zelo uporaben za napredna administrativna opravila vstopiti »v« peskovnikFirejail to omogoča z možnostjo –join, ki novo lupino poveže z imenskim prostorom obstoječega procesa.

Tipičen postopek bi bil izvedba seznam požarnih zapornikov Če si želite ogledati PID-je primerkov, poiščite glavno številko procesa peskovnika (na primer 5394) in nato naredite naslednje sudo firejail –pridruži se=5394Firejail bo skočil na prvi podrejeni proces znotraj peskovnika in vas pustil v lupini kot root znotraj tega izoliranega okolja.

Ko ste tam, lahko uporabite ukaze, kot so df -h, ip naslov, ps aux ali katero koli diagnostično orodje, da vidite natančno, kaj aplikacija vidi znotraj peskovnika. Ko končate, preprosto zaženite `exit` za izhod in vrnitev v normalno okolje.

Za odkrivanje težav s konfiguracijo ali razumevanje, kaj blokira aplikacijo, imate naslednje možnosti –odpravljanje napak y –sledTe prikazujejo informacije o odpravljanju napak in sistemske klice med izvajanjem ukaza. Še posebej so uporabne, kadar preveč agresiven profil preprečuje izvajanje programa. škorenj ali delujejo normalno.

Firejail se dobro dopolnjuje z AppArmor in SELinuxV distribucijah, ki privzeto omogočajo AppArmor, so številni profili Firejail zasnovani tako, da sobivajo s profili AppArmor, kar doda dodatno plast izolacije, ne da bi pri tem kršilo obstoječe pravilnike. Primeri posebnih pravil za nadaljnjo krepitev storitev, kot so spletni strežniki, SSH ali kritične namizne aplikacije, so na voljo na GitHubu in v uradni dokumentaciji.

Če boste Firejail uporabljali na strežnikih z več uporabniki, je priporočljivo pregledati konfiguracijo v /etc/firejail/firejail.config, omogočite možnosti, kot je force-nonewprivs, in omejite, kateri uporabniki lahko izvajajo /usr/bin/firejail, tako da prilagodite njihovo skupino in dovoljenja (na primer z ustvarjanjem skupine »firejail« in omejitvijo SUID-a na njene člane).

Firejail ponuja Zelo zanimivo ravnovesje med varnostjo in udobjem.Ne nadomešča popolne virtualizacije, vendar za številna vsakodnevna opravila, hitre preizkuse programske opreme ali izolacijo brskalnikov, AppImages, Wine in iger zagotavlja izjemno zaščito z zelo nizko kompleksnostjo. Temeljito razumevanje njegovih profilov, omrežnih možnosti, zasebnih načinov in integracij z AppArmor/SELinux vam omogoča, da ga prilagodite svojim željam in resnično okrepite svoje namizje Linux, ne da bi pri tem žrtvovali uporabnost.