ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ΅Π»ΠΈΠ· ΠΏΡΠΎΠ΅ΠΊΡΠ° Firejail 0.9.72, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ , ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΡΠΊ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π½Π΅ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ Π΄ΠΎΠ²Π΅ΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΡΠ·Π²ΠΈΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ, ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv2 ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅ Linux Ρ ΡΠ΄ΡΠΎΠΌ ΡΡΠ°ΡΡΠ΅ 3.0. ΠΠΎΡΠΎΠ²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Ρ Firejail ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ°Ρ deb (Debian, Ubuntu) ΠΈ rpm (CentOS, Fedora).
ΠΠ° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π² Firejail ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π·Π° ΠΈΠΌΠ΅Π½Π° (namespaces), AppArmor ΠΈ ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ (seccomp-bpf) Π² Linux. Π‘Π»Π΅Π΄ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΠΈ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΉΠ½ΠΈ Π΄ΡΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ, ΠΊΠ°ΡΠΎ ΠΌΡΠ΅ΠΆΠΎΠ² ΡΡΠ΅ΠΊ, ΡΠ°Π±Π»ΠΈΡΠ° Ρ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅. ΠΠ·Π°ΠΈΠΌΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π² Π΅Π΄Π½ΠΎ ΠΎΠ±ΡΠΎ ΠΏΡΡΡΡΠ½ΠΈ ΠΊΡΡΠΈΠΈ. ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅, 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β.
Π Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ seccomp-ΡΠΈΠ»ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ², Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΡΠ½ (Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βrestrict-namespacesΒ»). ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈ Π³ΡΡΠΏΠΏΡ seccomp.
- Π£Π»ΡΡΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ force-nonewprivs (NO_NEW_PRIVS), Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π² Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ .
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ AppArmor (Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βapparmorΒ»).
- Π ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° nettrace, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± IP ΠΈ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΡΠ°ΡΠΈΠΊΠ° Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ICMP ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ ΠΎΠΏΡΠΈΠΈ Β«βdnstraceΒ», Β«βicmptraceΒ» ΠΈ Β«βsnitraceΒ».
- Π£Π΄Π°Π»Π΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ βcgroup ΠΈ βshell (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ βshell=none). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΡΠ±ΠΎΡΠΊΠ° firetunnel. ΠΡΠΊΠ»ΡΡΠ΅Π½Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ chroot, private-lib ΠΈ tracelog Π² /etc/firejail/firejail.config. ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° grsecurity.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
