Π—Π° FreeBSD сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° изолация, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° pledge ΠΈ unveil.

Π—Π° FreeBSD Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° рСализация Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° изолация Π½Π° прилоТСния, наподобяващ систСмнитС извиквания plegde ΠΈ unveil, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenBSD. Π˜Π·ΠΎΠ»Π°Ρ†ΠΈΡΡ‚Π° Π² plegde сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° Ρ‡Ρ€Π΅Π· Π·Π°Π±Ρ€Π°Π½Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ систСмни извиквания, Π° Π² unveil Ρ‡Ρ€Π΅Π· сСлСктивно отварянС Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° само Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ ΠΏΡŠΡ‚ΠΈΡ‰Π°, с ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ. Π—Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС ΡΡŠΡΡ‚Π°Π²Ρ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ Π½Π° бял списък Π½Π° систСмни извиквания ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ ΠΏΡŠΡ‚ΠΈΡ‰Π°, Π° всички останали извиквания ΠΈ ΠΏΡŠΡ‚ΠΈΡ‰Π° сС забраняват.

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

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

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

ΠŸΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ ΠΌΠΎΠΆΠ΅ самостоятСлно Π΄Π° настрои собствСната си изолация, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ° curtainctl ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° прСдоставСнитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libcurtain, als pledge() ΠΈ unveil(), Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΈ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ OpenBSD. Π—Π° прослСдяванС Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈΡ‚Π΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ sysctl β€˜security.curtain.log_level’. Π”ΠΎΡΡ‚ΡŠΠΏΡŠΡ‚ Π΄ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ‚Π΅ X11 ΠΈ Wayland сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Ρ‡Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΡ†ΠΈΠΈ ΠΏΡ€ΠΈ стартиранС Π½Π° curtain - β€˜-X’/β€˜-Y’ ΠΈ β€˜-W’, Π½ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈ прилоТСния всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ стабилна ΠΈ ΠΈΠΌΠ° Ρ€Π΅Π΄ΠΈΡ†Π° Π½Π΅Ρ€Π΅ΡˆΠ΅Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ (ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ основно сС проявяват ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° X11, Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Wayland Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅). ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° добавят Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ограничСния Ρ‡Ρ€Π΅Π· създаванС Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с ΠΏΡ€Π°Π²ΠΈΠ»Π° (~/.curtain.conf). НапримСр, Π·Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° запис ΠΎΡ‚ Firefox само Π² дирСктория ~Downloads/ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π΄ΠΎΠ±Π°Π²ΠΈ сСкция β€œ[firefox]” с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ β€œ~/Downloads/: rw +”.

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster