Для FreeBSD развиваСтся ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ изоляции, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° plegde ΠΈ unveil

Для FreeBSD ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° рСализация ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° изоляции ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ OpenBSD систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ plegde ΠΈ unveil. Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ Π² plegde осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡ€Π΅Ρ‚ обращСния ΠΊ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ систСмным Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ, Π° Π² unveil Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ доступа Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Для прилоТСния формируСтся ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Π±Π΅Π»ΠΎΠ³ΠΎ списка систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ ΠΏΡƒΡ‚ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π°ΡŽΡ‚ΡΡ.

ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ для FreeBSD Π°Π½Π°Π»ΠΎΠ³Π° plegde ΠΈ unveil сводится ΠΊ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ прослойки, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прилоТСния Π±Π΅Π· внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΈΡ… ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… измСнСниях. Напомним, Ρ‡Ρ‚ΠΎ Π² OpenBSD plegde ΠΈ unveil Π½Π°Ρ†Π΅Π»Π΅Π½Ρ‹ Π½Π° Ρ‚Π΅ΡΠ½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π² ΠΊΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прилоТСния. Для упрощСния ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ классами систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ², запись Ρ„Π°ΠΉΠ»ΠΎΠ², сокСты, ioctl, sysctl, запуск процСссов ΠΈ Ρ‚.ΠΏ.). Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ограничСния доступа ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄Π΅ прилоТСния ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ выполнСния Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… дСйствий, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, доступ ΠΊ сокСтам ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ послС открытия Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ установки сСтСвого соСдинСния.

Автор ΠΏΠΎΡ€Ρ‚Π° plegde ΠΈ unveil для FreeBSD Π½Π°ΠΌΠ΅Ρ€Π΅Π½ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ изоляции ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, для Ρ‡Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° curtain, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ прилоТСниям ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ конфигурация Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌΠΈ настройками, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΌΠΈ классы систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ, спСцифичныС для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Ρ€Π°Π±ΠΎΡ‚Π° со Π·Π²ΡƒΠΊΠΎΠΌ, сСтСвоС взаимодСйствиС, Π²Ρ‹Π²ΠΎΠ΄ Π² Π»ΠΎΠ³ ΠΈ Ρ‚.ΠΏ.), Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ» с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ доступа ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° curtain ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для изоляции Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π½Π΅ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, сСрвСрных процСссов, графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π΄Π°ΠΆΠ΅ Ρ†Π΅Π»Ρ‹Ρ… сСансов Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ совмСстноС использованиС curtain с ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ изоляции, прСдоставляСмыми подсистСмами Jail ΠΈ Capsicum. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° организация Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ изоляции, ΠΊΠΎΠ³Π΄Π° запускаСмыС прилоТСния Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ выставлСнныС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΏΡ€Π°Π²ΠΈΠ»Π°, дополняя ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ограничСниями. НСкоторыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ядра (срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, POSIX/SysV IPC, PTYs) Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π±Π°Ρ€ΡŒΠ΅Ρ€ΠΎΠ², Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ядра, созданным Π½Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ процСссом.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° curtainctl ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ прСдоставляСмыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ libcurtain Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ plegde() ΠΈ unveil(), Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ функциям ΠΈΠ· OpenBSD. Для отслСТивания Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния прСдусмотрСн sysctl ‘security.curtain.log_level’. Доступ ΠΊ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ X11 ΠΈ Wayland Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ запускС curtain ΠΎΠΏΡ†ΠΈΠΉ «-X»/»-Y» ΠΈ «-W», Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΅Ρ‰Ρ‘ Π½Π΅ достаточно стабилизирована ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ряд Π½Π΅Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ (ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² основном ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ использовании X11, Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Wayland Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅). ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ограничСния Ρ‡Π΅Ρ€Π΅Π· созданиС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ (~/.curtain.conf). НапримСр, для Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ записи ΠΈΠ· Firfox Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ~/Downloads/ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ΅ΠΊΡ†ΠΈΡŽ «[firefox]» с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ «~/Downloads/ : rw +».

РСализация Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра mac_curtain для ΠΌΠ°Π½Π΄Π°Ρ‚Π½ΠΎΠ³ΠΎ контроля доступа (MAC, Mandatory Access Control), Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ для ядра FreeBSD с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ², Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ libcurtain для использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ plegde ΠΈ unveil Π² прилоТСниях, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ curtain, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π½Π°Π±ΠΎΡ€ тСстов ΠΈ ΠΏΠ°Ρ‚Ρ‡ΠΈ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для использования $TMPDIR с Ρ†Π΅Π»ΡŒΡŽ ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ). По возмоТности Π°Π²Ρ‚ΠΎΡ€ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ свСсти ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ число ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… трСбуСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΊ ядру ΠΈ прилоТСниям.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ