Выпуск систСмы изоляции ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Firejail 0.9.72

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Firejail 0.9.72, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ систСму для ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ выполнСния графичСских, ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ сСрвСрных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ риск ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΈ основной систСмы ΠΏΡ€ΠΈ запускС Π½Π΅ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… довСрия ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ уязвимых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° написана Π½Π° языкС Π‘ΠΈ, распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ 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».

Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ 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