ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π΅ ΡΠ΅Π»ΠΈΠ· Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Firejail 0.9.78, ΡΠ°Π·Π²ΠΈΠ²Π°Π²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π³ΡΠ°ΡΠΈΡΠ½ΠΈ, ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΈ ΠΈ ΡΡΡΠ²ΡΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ° ΡΠΈΡΠΊΠ° ΠΎΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΡΡΠ·Π²ΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Π΅Π·ΠΈΠΊΠ° Π‘ΠΈ, ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΡΠ΅ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ GPLv2 ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Π½Π° Linux Ρ ΡΠ΄ΡΠΎ ΠΏΠΎ-Π½ΠΎΠ²ΠΎ ΠΎΡ 3.0. ΠΠΎΡΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ Ρ Firejail ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠΈ deb (Debian, Ubuntu) ΠΈ rpm (CentOS, Fedora).
ΠΠ° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π΅ Π² Firejail ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΡ ΠΈΠΌΠ΅Π½Π° (namespaces), AppArmor ΠΈ ΡΠΈΠ»ΡΡΠ°ΡΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ (seccomp-bpf) Π² Linux. Π‘Π»Π΅Π΄ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΈ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΉΠ½ΠΈ Π΄ΡΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ, ΠΊΠ°ΡΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΠ΅ΠΊ, ΡΠ°Π±Π»ΠΈΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅. Π‘Π²ΡΡΠ·Π°Π½ΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½ΠΈ Π² Π΅Π΄ΠΈΠ½ ΠΎΠ±Ρ sandbox. ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Firejail ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Docker, LXC ΠΈ OpenVZ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ° Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ, Firejail Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΡ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΡΠ½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ ΠΎΠ±ΡΠ°Π· β ΡΡΡΡΠ°Π²ΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ° Π½Π° ΠΌΠΈΠ³Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΡΠ΅ ΠΈΠ·ΡΡΠΈΠ²Π° ΡΠ»Π΅Π΄ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΠ΅ Π³ΡΠ²ΠΊΠ°Π²ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΠΈΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π΄ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ ΠΈΠ»ΠΈ Π·Π°Π±ΡΠ°Π½Π΅Π½ Π΄ΠΎΡΡΡΠΏ, ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ (tmpfs), ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΡΠ΅Π· bind-mount ΠΈ overlayfs.
ΠΠ° Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Firefox, Chromium, VLC ΠΈ Transmission, ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π³ΠΎΡΠΎΠ²ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈ Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ. ΠΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π° ΡΡΠ΅Π΄Π°, ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈΡΡ ΡΠ°ΠΉΠ» firejail ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Ρ ΡΠ»Π°Π³Π° SUID root (ΡΠ»Π΅Π΄ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡΠ΅ ΡΠ΅ ΡΠ±ΡΠΎΡΠ²Π°Ρ). ΠΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΊΠ°ΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π° ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ° firejail, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, "firejail firefox" ΠΈΠ»ΠΈ "sudo firejail /etc/init.d/nginx start".
Π Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:
- Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» firejail.config ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΎΠΏΡΠΈΠΈΡΠ΅ arg-max-count, arg-max-len, env-max-count ΠΈ env-max-len Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π»ΠΈΠΌΠΈΡΠΈΡΠ΅ Π½Π° Π±ΡΠΎΡ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, Π±ΡΠΎΡΡ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π½Π° 128, Π±ΡΠΎΡΡ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π½Π° 256, Π° ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π΅ PATH_MAX ΠΎΡ limits.h (Π² Linux 40196) + 32.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡΡΠ° Β«βxephyr-extra-paramsΒ» Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΎΠΏΡΠΈΠΈ ΠΊΡΠΌ Xephyr (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° sandbox-ΡΡΠ΅Π΄Π° X11 ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ X-ΡΠ΅ΡΠ²Π΅Ρ, ΡΡΠ°ΡΡΠΈΡΠ°Π½ Π² ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ) Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° firejail.config.
- Π£ΡΠΈΠ»ΠΈΡΠ°ΡΠ° bwrap (bubblewrap), ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π° Π² sandbox-ΡΡΠ΅Π΄Π°, Π΅ Π·Π°ΠΌΠ΅Π½Π΅Π½Π° Ρ ΠΏΡΠΎΠΌΠ΅ΠΆΠ΄ΡΡΡΠΊ fbwrap, ΠΊΠΎΠΉΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π±Π΅Π· ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π·Π° ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΡ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Firefox, Thunderbird, GIMP ΠΏΠΎΡΠ°Π΄ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° glycin 2.0.0 ΠΎΡ gdk-pixbuf2 Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° bwrap. ΠΠ° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΠ΄ΡΡΡΠΊ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡΡΠ° Β«βallow-bwrapΒ».
- ΠΠ±Π½ΠΎΠ²Π΅Π½ΠΈ ΡΠ° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ Π·Π° seccomp. ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ, ΠΊΠ°ΡΠΎ epoll_pwait2 ΠΈ futex_wait.
- Π‘ΡΠ±ΠΈΡΠ°ΡΠ°ΡΠ° ΠΎΠΏΡΠΈΡ Β«βdisable-globalcfgΒ» Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠ°, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° overlayfs (Β«βoverlayΒ») ΠΈ ΡΠ΅ΠΆΠΈΠΌ IDS (Intrusion Detection System, Β«βidsΒ») Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π°.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈ Π·Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π·Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ne, Π±ΡΠ°ΡΠ·ΡΡΠ° Trivalent ΠΈ ΠΈΠ³ΡΠΎΠ²ΠΈΡΠ΅ Π΄Π²ΠΈΠΆΠ΅ΡΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ OpenRA, quakespasm, gzdoom, lzdoom, uzdoom.
- ΠΠ±Π½ΠΎΠ²Π΅Π½ΠΈ ΡΠ° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ΅ Π·Π° thunderbird, wine, qutebrowser, firefox, godot, wusc, mullvad-browser, blink, steam, ssh, brave ΠΈ hashcat.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
