Linux систСми Π·Π° сигурност

Π•Π΄Π½Π° ΠΎΡ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° огромния успСх Π½Π° Linux OS Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ, ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ устройства ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π΅ сравнитСлно високата стСпСн Π½Π° сигурност Π½Π° ядрото, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ услуги ΠΈ прилоТСния. Но Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½ΠΈ ΠΎΡ‚Π±Π»ΠΈΠ·ΠΎ към Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° ядрото Π½Π° Linux, Ρ‚ΠΎΠ³Π°Π²Π° Π΅ нСвъзмоТно Π΄Π° сС Π½Π°ΠΌΠ΅Ρ€ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ Π² Π½Π΅Π³ΠΎ, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° сигурността, ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°ΠΊΡŠΠ². КъдС сС ΠΊΡ€ΠΈΠ΅ подсистСмата Π·Π° сигурност Π½Π° Linux ΠΈ ΠΎΡ‚ ΠΊΠ°ΠΊΠ²ΠΎ сС ΡΡŠΡΡ‚ΠΎΠΈ?

ΠŸΡ€Π΅Π΄ΠΈΡΡ‚ΠΎΡ€ΠΈΡ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ Π·Π° сигурност Π½Π° Linux ΠΈ SELinux

Security Enhanced Linux Π΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ ΠΈ Ρ€ΠΎΠ»Π΅Π²ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ, Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° Linux систСмитС ΠΎΡ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈ Π·Π°ΠΏΠ»Π°Ρ…ΠΈ ΠΈ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° слабоститС Π½Π° дискрСционния ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° (DAC), Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° Unix систСма Π·Π° сигурност. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ сС Π·Π°Ρ€Π°ΠΆΠ΄Π° Π² Π½Π΅Π΄Ρ€Π°Ρ‚Π° Π½Π° АгСнцията Π·Π° Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»Π½Π° сигурност Π½Π° БАЩ, Π° Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° са пряко Π°Π½Π³Π°ΠΆΠΈΡ€Π°Π½ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Secure Computing Corporation ΠΈ MITER, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Ρ€Π΅Π΄ΠΈΡ†Π° изслСдоватСлски Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΈΠΈ.

Linux систСми Π·Π° сигурност
ΠœΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° сигурност Π½Π° Linux

Линус Ворвалдс допринСсС с Ρ€Π΅Π΄ΠΈΡ†Π° Π±Π΅Π»Π΅ΠΆΠΊΠΈ Π·Π° Π½ΠΎΠ²ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° NSA, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‚Π΅ Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² основния ΠΊΠ»ΠΎΠ½ Π½Π° ядрото Π½Π° Linux. Π’ΠΎΠΉ описва ΠΎΠ±Ρ‰Π° срСда с Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π΅Ρ…Π²Π°Ρ‰Π°Ρ‡ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΡŠΡ€Ρ…Ρƒ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ някои Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° Π² структуритС Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° ядрото Π·Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‚Π°Π·ΠΈ срСда ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π΅ΠΌΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° ядрото Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° всСки ΠΆΠ΅Π»Π°Π½ ΠΌΠΎΠ΄Π΅Π» Π½Π° сигурност. LSM напълно Π²Π»Π΅Π·Π΅ Π² ядрото Π½Π° Linux v2.6 ΠΏΡ€Π΅Π· 2003 Π³.

Π Π°ΠΌΠΊΠ°Ρ‚Π° LSM Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° Π² структуритС Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ извиквания Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π°Π½Π΅ Π² ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° ядрото, Π·Π° Π΄Π° Π³ΠΈ управлява ΠΈ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ°. Π’ΠΎΠΉ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° добавя функционалност Π·Π° рСгистриранС Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° сигурност. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡŠΡ‚ /sys/kernel/security/lsm ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° списък с Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π² систСмата. LSM ΠΊΡƒΠΊΠΈΡ‚Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² ΡΠΏΠΈΡΡŠΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ Π² Ρ€Π΅Π΄Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² CONFIG_LSM. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π° докумСнтация Π·Π° ΠΊΡƒΠΊΠ° Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² заглавния Ρ„Π°ΠΉΠ» include/linux/lsm_hooks.h.

ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚Π° LSM Π½Π°ΠΏΡ€Π°Π²ΠΈ възмоТно ΠΏΡŠΠ»Π½ΠΎΡ‚ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° SELinux Π½Π° ΡΡŠΡ‰Π°Ρ‚Π° вСрсия Π½Π° стабилното Linux ядро ​​v2.6. Π‘ΡƒΠΊΠ²Π°Π»Π½ΠΎ Π²Π΅Π΄Π½Π°Π³Π° SELinux стана Π΄Π΅ Ρ„Π°ΠΊΡ‚ΠΎ стандарт Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π΅Π½Π° Linux срСда ΠΈ стана част ΠΎΡ‚ Π½Π°ΠΉ-популярнитС дистрибуции: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.

Π’Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅Π½ Ρ€Π΅Ρ‡Π½ΠΈΠΊ

  • идСнтичност - ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΡ‚ Π½Π° SELinux Π½Π΅ Π΅ ΡΡŠΡ‰ΠΈΡΡ‚ ΠΊΠ°Ρ‚ΠΎ обичайния потрСбитСлски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° Unix / Linux, Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π² Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° систСма, Π½ΠΎ са напълно Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ. ВсСки стандартСн Linux Π°ΠΊΠ°ΡƒΠ½Ρ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π² SELinux. Бамоличността Π½Π° SELinux Π΅ част ΠΎΡ‚ цялостния контСкст Π½Π° сигурността, ΠΊΠΎΠΉΡ‚ΠΎ опрСдСля към ΠΊΠΎΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈ към ΠΊΠΎΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅.
  • Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ - Π’ SELinux Π΄ΠΎΠΌΠ΅ΠΉΠ½ΡŠΡ‚ Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡŠΡ‚ Π½Π° изпълнСниС Π½Π° субСкта, Ρ‚.Π΅. процСса. Π”ΠΎΠΌΠ΅ΠΉΠ½ΡŠΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ опрСдСля Π΄ΠΎΡΡ‚ΡŠΠΏΠ°, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° Π΄Π°Π΄Π΅Π½ процСс. Π”ΠΎΠΌΠ΅ΠΉΠ½ΡŠΡ‚ Π΅ основно списък Π½Π° Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ процСситС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° правят ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ дСйствия ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° процСс с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅. Някои ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ са sysadm_t Π·Π° систСмна администрация ΠΈ user_t, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ потрСбитСлски Π΄ΠΎΠΌΠ΅ΠΉΠ½. БистСмата init Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° init_t, Π° посочСният процСс сС изпълнява Π² Π΄ΠΎΠΌΠ΅ΠΉΠ½Π° named_t.
  • роля - НСщо, ΠΊΠΎΠ΅Ρ‚ΠΎ слуТи ΠΊΠ°Ρ‚ΠΎ посрСдник ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π½Π° SELinux. Π ΠΎΠ»ΠΈΡ‚Π΅ опрСдСлят към ΠΊΠ°ΠΊΠ²ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ Π΄Π°Π΄Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΈ Π΄ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ потрСбитСлят ΠΈΠΌΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ. Вакъв ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° прСдотвратява Π·Π°ΠΏΠ»Π°Ρ…Π°Ρ‚Π° ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠ° с Сскалация Π½Π° ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ. Π ΠΎΠ»ΠΈΡ‚Π΅ сС записват Π² ΠΌΠΎΠ΄Π΅Π»Π° Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° базирания Π½Π° Ρ€ΠΎΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° (RBAC), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² SELinux.
  • Π’ΠΈΠ΄ΠΎΠ²Π΅ β€” Π’ΠΈΠΏ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π½Π° списъка Π·Π° изпълнСниС, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ присвоСн Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ ΠΈ опрСдСля ΠΊΠΎΠΉ Ρ‰Π΅ ΠΈΠΌΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π½Π΅Π³ΠΎ. Подобно Π½Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½, с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΡŠΡ‚ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° към процСса, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΈΠΏΡŠΡ‚ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° към ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, сокСти ΠΈ Ρ‚.Π½.
  • Π‘ΡƒΠ±Π΅ΠΊΡ‚ΠΈ ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ - ΠŸΡ€ΠΎΡ†Π΅ΡΠΈΡ‚Π΅ са субСкти ΠΈ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ контСкст ΠΈΠ»ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ Π΄ΠΎΠΌΠ΅ΠΉΠ½. РСсурситС Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма: Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, сокСти ΠΈ Ρ‚.Π½. са ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Π΅ присвоСн ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ, с Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, Π½ΠΈΠ²ΠΎ Π½Π° сСкрСтност.
  • ΠŸΡ€Π°Π²ΠΈΠ»Π° Π½Π° SELinux - SELinux ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° систСмата. ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π½Π° SELinux Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° потрСбитСлския Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ€ΠΎΠ»ΠΈ, Ρ€ΠΎΠ»ΠΈΡ‚Π΅ Π΄ΠΎ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈΡ‚Π΅ Π΄ΠΎ Ρ‚ΠΈΠΏΠΎΠ²Π΅. ΠŸΡŠΡ€Π²ΠΎ, потрСбитСлят Π΅ ΡƒΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰Π΅Π½ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ роля, слСд Ρ‚ΠΎΠ²Π° ролята Π΅ ΡƒΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰Π΅Π½Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΈ. И накрая, Π΄ΠΎΠΌΠ΅ΠΉΠ½ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ само Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ.

LSM ΠΈ SELinux Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ ΠΈΠΌΠ΅Ρ‚ΠΎ, LSM ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ са Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π΅ΠΌΠΈ Linux ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°Ρ‚ΠΎ SELinux, Ρ‚ΠΎΠΉ Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ Π² ядрото. Всяка промяна Π² изходния ΠΊΠΎΠ΄ Π½Π° LSM изисква Π½ΠΎΠ²Π° компилация Π½Π° ядрото. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° опция трябва Π΄Π° бъдС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° Π² настройкитС Π½Π° ядрото, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай LSM ΠΊΠΎΠ΄ΡŠΡ‚ няма Π΄Π° бъдС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ слСд Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅. Но Π΄ΠΎΡ€ΠΈ ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ случай, Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ ΠΎΡ‚ опцията Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° OS.

Linux систСми Π·Π° сигурност
ΠšΡƒΠΏΡ‡ΠΈΠ½Π° LSM ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ

LSM Π΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½ с ΠΊΡƒΠΊΠΈΡ‡ΠΊΠΈ Π² основнитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ядрото, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ подходящи Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Π•Π΄Π½Π° ΠΎΡ‚ основнитС характСристики Π½Π° LSM Π΅, Ρ‡Π΅ Ρ‚Π΅ са Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° стСк. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ стандартнитС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ всС ΠΎΡ‰Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ ΠΈ всСки LSM слой добавя само Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π·Π°Π±Ρ€Π°Π½Π°Ρ‚Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½Π°. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚Π°, Π°ΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ Ρ€ΡƒΡ‚ΠΈΠ½Π½ΠΈΡ‚Π΅ DAC ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΅ ΠΏΠΎΠ²Ρ€Π΅Π΄Π°, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠΉ Π΄ΠΎΡ€ΠΈ няма Π΄Π° достигнС LSM ΠΊΡƒΠΊΠΈΡ‚Π΅.

SELinux Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π·Π° сигурност Flask Π½Π° изслСдоватСлската ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма Fluke, ΠΏΠΎ-спСциално ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ. Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° Ρ‚Π°Π·ΠΈ концСпция, ΠΊΠ°ΠΊΡ‚ΠΎ подсказва ΠΈΠΌΠ΅Ρ‚ΠΎ ΠΈΠΌ, Π΅ Π΄Π° прСдостави Π½Π° потрСбитСля ΠΈΠ»ΠΈ Π½Π° процСса само Ρ‚Π΅Π·ΠΈ ΠΏΡ€Π°Π²Π°, ΠΊΠΎΠΈΡ‚ΠΎ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ΠΈΡ‚Π΅ дСйствия. Π’ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Ρ‡Ρ€Π΅Π· въвСТданС Π½Π° ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŠΡ‚ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π½Π° SELinux сС основава Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ => Ρ‚ΠΈΠΏ.

Π§Ρ€Π΅Π· ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎ въвСТданС Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏ SELinux ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° ΠΎΡ‚ традиционния DAC ΠΌΠΎΠ΄Π΅Π», ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ систСми Unix/Linux. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° мрСТовия ΠΏΠΎΡ€Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ сС случи Π½Π° ftp ΡΡŠΡ€Π²ΡŠΡ€Π°, Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ писанС ΠΈ промяна Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΏΠΊΠ°, Π½ΠΎ Π½Π΅ ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ.

ΠžΡΠ½ΠΎΠ²Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° SELinux са:

  • Π‘ΡŠΡ€Π²ΡŠΡ€ Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° - ΠžΡΠ½ΠΎΠ²Π½ΠΈΡΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ°.
  • Π‘Π°Π·Π° Π΄Π°Π½Π½ΠΈ с ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° сигурност Π½Π° систСмата.
  • ВзаимодСйствиС с LSM ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Ρ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ.
  • Selinuxfs - ПсСвдо-FS, ΡΡŠΡ‰ΠΈΡΡ‚ ΠΊΠ°Ρ‚ΠΎ /proc ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½ Π² /sys/fs/selinux. Попълва сС Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΎΡ‚ ядрото Π½Π° Linux ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС ΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ информация Π·Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° SELinux.
  • Π”ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ вСкторния кСш - Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° подобряванС Π½Π° производитСлността.

Linux систСми Π·Π° сигурност
Как Ρ€Π°Π±ΠΎΡ‚ΠΈ SELinux

Всичко Ρ‚ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½.

  1. Π‘ΡƒΠ±Π΅ΠΊΡ‚, Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ‚Π΅ Π½Π° SELinux, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ дСйствиС Π²ΡŠΡ€Ρ…Ρƒ ΠΎΠ±Π΅ΠΊΡ‚ слСд ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° DAC, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π³ΠΎΡ€Π½Π°Ρ‚Π° снимка. Π’Π°Π·ΠΈ заявка Π·Π° опСрация ΠΎΡ‚ΠΈΠ²Π° към ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Ρ Π½Π° LSM ΡΡŠΠ±ΠΈΡ‚ΠΈΡ.
  2. ΠžΡ‚Ρ‚Π°ΠΌ заявката, Π·Π°Π΅Π΄Π½ΠΎ с контСкста Π½Π° сигурността Π½Π° субСкта ΠΈ ΠΎΠ±Π΅ΠΊΡ‚Π°, сС ΠΏΡ€Π΅Π΄Π°Π²Π° Π½Π° SELinux Abstraction ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π° Hook Logic, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° взаимодСйствиСто с LSM.
  3. Π‘ΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° Π΅ ΠΎΡ€Π³Π°Π½ΡŠΡ‚ Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ относно Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π½Π° субСкта Π΄ΠΎ ΠΎΠ±Π΅ΠΊΡ‚Π° ΠΈ Ρ‚ΠΎΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ SELinux AnHL.
  4. Π—Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ ΠΈΠ»ΠΈ Π·Π°Π±Ρ€Π°Π½Π°, Policy Enforcement Server сС ΠΏΠΎΠ·ΠΎΠ²Π°Π²Π° Π½Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‰Π°Ρ‚Π° подсистСма Π½Π° Π½Π°ΠΉ-ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Access Vector Cache (AVC).
  5. Ако Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π΅ бъдС Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΎ Π² кСша, Ρ‚ΠΎΠ³Π°Π²Π° заявката сС ΠΏΡ€Π΅Π΄Π°Π²Π° към Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° сигурност.
  6. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΈ AVC сС Π²Ρ€ΡŠΡ‰Π° към ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°.
  7. Ако Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π΅ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с исканото дСйствиС, Ρ‚ΠΎΠ³Π°Π²Π° опСрацията Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай опСрацията Π΅ Π·Π°Π±Ρ€Π°Π½Π΅Π½Π°.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° настройкитС Π½Π° SELinux

SELinux Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Ρ‚Ρ€ΠΈΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌΠ°:

  • НалаганС - Π‘Ρ‚Ρ€ΠΈΠΊΡ‚Π½ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π·Π° сигурност.
  • Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»Π½ΠΎ - Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΅ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ограничСнията, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡΡ‚ Π·Π½Π°ΠΊ сС ΠΏΡ€Π°Π²ΠΈ Π² Π΄Π½Π΅Π²Π½ΠΈΠΊΠ°.
  • Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ - ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π·Π° сигурност Π½Π΅ са Π² сила.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² какъв Ρ€Π΅ΠΆΠΈΠΌ Π΅ SELinux със слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°.

[admin@server ~]$ getenforce
Permissive

ΠŸΡ€ΠΎΠΌΡΠ½Π° Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΏΡ€Π΅Π΄ΠΈ рСстартиранС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π΄Π°ΠΉΡ‚Π΅ Π³ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ ΠΈΠ»ΠΈ 1. Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»Π½ΠΈΡΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° цифровия ΠΊΠΎΠ΄ 0.

[admin@server ~]$ setenfoce enforcing
[admin@server ~]$ setenfoce 1 #Ρ‚ΠΎ ΠΆΠ΅ самоС

ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌΠ°, ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ Ρ„Π°ΠΉΠ»Π°:

[admin@server ~]$ cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.

SELINUXTYPE=Ρ†Π΅Π»

Π Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° със setenfoce Π΅, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма сС стартира, Ρ€Π΅ΠΆΠΈΠΌΡŠΡ‚ SELinux Ρ‰Π΅ бъдС Π·Π°Π΄Π°Π΄Π΅Π½ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ със стойността Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° SELINUX Π² ​​конфигурационния Ρ„Π°ΠΉΠ». Π’ допълнСниС, Π½Π°Π»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° <=> Π·Π°Π±Ρ€Π°Π½Π΅Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π²Π»ΠΈΠ·Π° Π² сила само Ρ‡Ρ€Π΅Π· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»Π° /etc/selinux/config ΠΈ слСд рСстартиранС.

Π’ΠΈΠΆΡ‚Π΅ обобщСния ΠΎΡ‚Ρ‡Π΅Ρ‚ Π·Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ:

[admin@server ~]$ sestatus

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31

Π—Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΡ‚Π΅ Π½Π° SELinux, някои стокови ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ опцията -Z.

[admin@server ~]$ ls -lZ /var/log/httpd/
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20200920
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20200927
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20201004
-rw-r--r--. root root system_u:object_r:httpd_log_t:s0 access_log-20201011
[admin@server ~]$ ps -u apache -Z
LABEL                             PID TTY          TIME CMD
system_u:system_r:httpd_t:s0     2914 ?        00:00:04 httpd
system_u:system_r:httpd_t:s0     2915 ?        00:00:00 httpd
system_u:system_r:httpd_t:s0     2916 ?        00:00:00 httpd
system_u:system_r:httpd_t:s0     2917 ?        00:00:00 httpd
...
system_u:system_r:httpd_t:s0     2918 ?        00:00:00 httpd

Π’ сравнСниС с нормалния ΠΈΠ·Ρ…ΠΎΠ΄ ls -l, ΠΈΠΌΠ° няколко Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° Π² слСдния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:

<user>:<role>:<type>:<level>

ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ»Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚ Π·Π° сигурност ΠΈ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ комбинация ΠΎΡ‚ Π΄Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°:

  • s0 - значимост, ΡΡŠΡ‰ΠΎ записана Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ниско Π½ΠΈΠ²ΠΎ-високо Π½ΠΈΠ²ΠΎ
  • c0, c1… c1023 Π΅ катСгорията.

ΠŸΡ€ΠΎΠΌΡΠ½Π° Π½Π° конфигурацията Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ semodule, Π·Π° Π΄Π° Π·Π°Ρ€Π΅Π΄ΠΈΡ‚Π΅ SELinux ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π΄Π° Π³ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅.

[admin@server ~]$ semodule -l |wc -l #список всСх ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ
408
[admin@server ~]$ semodule -e abrt #enable - Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
[admin@server ~]$ semodule -d accountsd #disable - ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
[admin@server ~]$ semodule -r avahi #remove - ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ

ΠŸΡŠΡ€Π²ΠΈ ΠΎΡ‚Π±ΠΎΡ€ Π²Π»ΠΈΠ·Π°Π½Π΅ Π² semanage асоциира ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° SELinux с ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма, вторият Π³ΠΎ изброява. И накрая, послСдната ΠΊΠΎΠΌΠ°Π½Π΄Π° с ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚Π΅Π»Ρ -r ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π½Π° SELinux към Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ Π½Π° OS. ОбяснСниС Π½Π° синтаксиса Π·Π° стойноститС Π½Π° MLS/MCS Range сС Π½Π°ΠΌΠΈΡ€Π° Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ Ρ€Π°Π·Π΄Π΅Π».

[admin@server ~]$ semanage login -a -s user_u karol
[admin@server ~]$ semanage login -l

Login Name SELinux User MLS/MCS Range Service
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0-s0:c0.c1023 *
system_u system_u s0-s0:c0.c1023 *
[admin@server ~]$ semanage login -d karol

ΠžΡ‚Π±ΠΎΡ€ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° semanage ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½ΠΈΡΡ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΈ Ρ€ΠΎΠ»ΠΈ Π½Π° SELinux.

[admin@server ~]$ semanage user -l
                Labeling   MLS/       MLS/                          
SELinux User    Prefix     MCS Level  MCS Range             SELinux Roles
guest_u         user       s0         s0                    guest_r
staff_u         staff      s0         s0-s0:c0.c1023        staff_r sysadm_r
...
user_u          user       s0         s0                    user_r
xguest_u        user       s0         s0                    xguest_r
[admin@server ~]$ semanage user -a -R 'staff_r user_r'
[admin@server ~]$ semanage user -d test_u

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

  • -a добавянС Π½Π° пСрсонализиран запис Π·Π° ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° Ρ€ΠΎΠ»ΠΈ;
  • -l списък Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ ΠΈ Ρ€ΠΎΠ»ΠΈ;
  • -d ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° пСрсонализиран запис Π·Π° ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° Ρ€ΠΎΠ»ΠΈ;
  • -R списък с Ρ€ΠΎΠ»ΠΈ, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ΅Π½ΠΈ към потрСбитСля;

Π€Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ ΠΈ Π±ΡƒΠ»Π΅Π²ΠΈ стойности

ВсСки SELinux ΠΌΠΎΠ΄ΡƒΠ» прСдоставя Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ свои собствСни ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. НапримСр искамС ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π΄Π° ΠΈΠΌΠ° ΠΏΡ€Π°Π²Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /srv/www.

[admin@server ~]$ semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?
[admin@server ~]$ restorecon -R /srv/www/

ΠŸΡŠΡ€Π²Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° рСгистрира Π½ΠΎΠ²ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅, Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Π½ΡƒΠ»ΠΈΡ€Π°, ΠΈΠ»ΠΈ ΠΏΠΎ-скоро ΠΈΠ·Π»Π°Π³Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°.

По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ TCP/UDP ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅Ρ‚Π΅ са ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ Ρ‚Π°ΠΊΡŠΠ² Π½Π°Ρ‡ΠΈΠ½, Ρ‡Π΅ само подходящитС услуги Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π³ΠΈ ΡΠ»ΡƒΡˆΠ°Ρ‚. НапримСр, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ Π΄Π° ΡΠ»ΡƒΡˆΠ° Π½Π° ΠΏΠΎΡ€Ρ‚ 8080, трябва Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°.

[admin@server ~]$ semanage port -m -t http_port_t -p tcp 8080

Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½ Π±Ρ€ΠΎΠΉ SELinux ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠΌΠ°Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Π±ΡƒΠ»Π΅Π²ΠΈ стойности. ЦСлият списък с Ρ‚Π°ΠΊΠΈΠ²Π° ΠΎΠΏΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΠΈΠ΄ΠΈ с getsebool -a. Π‘ΡƒΠ»Π΅Π²ΠΈΡ‚Π΅ стойности ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС промСнят с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° setsebool.

[admin@server ~]$ getsebool httpd_enable_cgi
httpd_enable_cgi --> on
[admin@server ~]$ setsebool -P httpd_enable_cgi off
[admin@server ~]$ getsebool httpd_enable_cgi
httpd_enable_homedirs --> off

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌ, Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΡƒΠ΅Π± интСрфСйса Π½Π° Pgadmin

ΠŸΠΎΠΌΠΈΡΠ»Π΅Ρ‚Π΅ Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ‚Π°, инсталирахмС pgadmin7.6-web Π½Π° RHEL 4 Π·Π° администриранС Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π½Π° PostgreSQL. ΠŸΠΎΠ΄ΠΌΠΈΠ½Π°Ρ…ΠΌΠ΅ малък Π’ΡŠΡ€ΡΠ΅Π½Π΅ с настройка Π½Π° pg_hba.conf, postgresql.conf ΠΈ config_local.py, Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π²Π°Ρ‚Π° Π·Π° ΠΏΠ°ΠΏΠΊΠΈΡ‚Π΅, инсталиранС Π½Π° липсващитС Python ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΡ‚ pip. Всичко Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ, Ρ‚ΠΈΡ‡Π°ΠΉ ΠΈ Π²Π·Π΅ΠΌΠΈ 500 Π’ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°.

Linux систСми Π·Π° сигурност

Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ с Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈΡ‚Π΅ Π·Π°ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π½ΠΈ, ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ /var/log/httpd/error_log. Има някои интСрСсни записи Ρ‚Π°ΠΌ.

[timestamp] [core:notice] [pid 23689] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
...
[timestamp] [wsgi:error] [pid 23690] [Errno 13] Permission denied: '/var/lib/pgadmin'
[timestamp] [wsgi:error] [pid 23690] [timestamp] [wsgi:error] [pid 23690] HINT : You may need to manually set the permissions on
[timestamp] [wsgi:error] [pid 23690] /var/lib/pgadmin to allow apache to write to it.

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Linux администратори Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ силно ΠΈΠ·ΠΊΡƒΡˆΠ΅Π½ΠΈ Π΄Π° стартират setencorce 0 ΠΈ Π΄Π° ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π°Ρ‚ с Π½Π΅Π³ΠΎ. ЧСстно ΠΊΠ°Π·Π°Π½ΠΎ, Π·Π° ΠΏΡŠΡ€Π²ΠΈ ΠΏΡŠΡ‚ Π³ΠΎ правя. Π’ΠΎΠ²Π°, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, ΡΡŠΡ‰ΠΎ Π΅ ΠΈΠ·Ρ…ΠΎΠ΄, Π½ΠΎ Π΄Π°Π»Π΅Ρ‡ Π½Π΅ Π΅ Π½Π°ΠΉ-добрият.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ тромавия Π΄ΠΈΠ·Π°ΠΉΠ½, SELinux ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° потрСбитСля. ΠŸΡ€ΠΎΡΡ‚ΠΎ инсталирайтС ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π·Π° отстраняванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ систСмния Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€.

[admin@server ~]$ yum install setroubleshoot
[admin@server ~]$ journalctl -b -0
[admin@server ~]$ service restart auditd

ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ услугата auditd трябва Π΄Π° сС рСстартира ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Π° Π½Π΅ с systemctl, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° systemd Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма. Π’ систСмния Π΄Π½Π΅Π²Π½ΠΈΠΊ Ρ‰Π΅ бъдС посочСно Π½Π΅ само Ρ„Π°ΠΊΡ‚ΡŠΡ‚ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅, Π½ΠΎ ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π·Π° прСодоляванС Π½Π° Π·Π°Π±Ρ€Π°Π½Π°Ρ‚Π°.

Linux систСми Π·Π° сигурност

НиС изпълнявамС Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:

[admin@server ~]$ setsebool -P httpd_can_network_connect 1
[admin@server ~]$ setsebool -P httpd_can_network_connect_db 1

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ²Π°ΠΌΠ΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ ΡƒΠ΅Π± страницата pgadmin4-web, всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ.

Linux систСми Π·Π° сигурност

Linux систСми Π·Π° сигурност

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€