ΠžΡΠ»ΠΎΠ±ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° систСмот Π·Π° ΠΈΠ·ΠΎΠ»Π°Ρ†ΠΈΡ˜Π° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Firejail 0.9.60

Ја Π²ΠΈΠ΄ΠΎΠ² свСтлината ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Firejail 0.9.60, Π²ΠΎ Ρ‡ΠΈΠΈ Ρ€Π°ΠΌΠΊΠΈ сС Ρ€Π°Π·Π²ΠΈΠ²Π° систСм Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΎ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Ρ€Π°Ρ„ΠΈΡ‡ΠΊΠΈ, ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΈ ΠΈ сСрвСрски Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. ΠšΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° Firejail Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Ρ€ΠΈΠ·ΠΈΠΊΠΎΡ‚ ΠΎΠ΄ Π·Π°Π³Ρ€ΠΎΠ·ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Π»Π°Π²Π½ΠΈΠΎΡ‚ систСм ΠΏΡ€ΠΈ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° Π½Π΅Π΄ΠΎΠ²Π΅Ρ€Π»ΠΈΠ²ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΎ Ρ€Π°Π½Π»ΠΈΠ²ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π΅ напишана Π½Π° јазик C, дистрибуирани ΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†ΠΈΡ€Π°Π½ ΠΏΠΎΠ΄ GPLv2 ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° која Π±ΠΈΠ»ΠΎ Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° Π½Π° Линукс со Ρ˜Π°Π΄Ρ€ΠΎ постар ΠΎΠ΄ 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, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«firejail firefoxΒ» ΠΈΠ»ΠΈ Β«sudo firejail /etc/init.d/nginx startΒ».

Π’ΠΎ Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:

  • УстранСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ врСдоносному процСссу ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ограничСния систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ². Π‘ΡƒΡ‚ΡŒ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Seccomp ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /run/firejail/mnt, доступный Π½Π° запись Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ окруТСния. ЗапускаСмыС Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ изоляции врСдоносныС процСссы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти Ρ„Π°ΠΉΠ»Ρ‹, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹Π΅ процСссы, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ Π² этом ΠΆΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π±Π΅Π· примСнСния Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²;
  • Π’ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π΅ memory-deny-write-execute обСспСчСна Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π·ΠΎΠ²Π° Β«memfd_createΒ»;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая опция Β«private-cwdΒ» для измСнСния Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° для jail;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция Β«β€”nodbusΒ» для Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ сокСтов D-Bus;
  • Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° CentOS 6;
  • ΠŸΡ€Π΅ΠΊΠΈΠ½Π°Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… flatpak ΠΈ распарчи.
    Π£ΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ для Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… собствСнный инструмСнтарий;

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ для изоляции 87 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π² числС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… mypaint, nano, xfce4-mixer, gnome-keyring, redshift, font-manager, gconf-editor, gsettings, freeciv, lincity-ng, openttd, torcs, tremulous, warsow, freemind, kid3, freecol, opencity, utox, freeoffice-planmaker, freeoffice-presentations, freeoffice-textmaker, inkview, meteo-qt, ktouch, yelp ΠΈ cantata.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€