ืžืขืจื›ื•ืช ืื‘ื˜ื—ื” ืœื™ื ื•ืงืก

ืื—ืช ื”ืกื™ื‘ื•ืช ืœื”ืฆืœื—ื” ื”ืื“ื™ืจื” ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื” ืœื™ื ื•ืงืก ื‘ืžื›ืฉื™ืจื™ื ืžื•ื˜ื‘ืขื™ื, ื ื™ื™ื“ื™ื ื•ืฉืจืชื™ื ื”ื™ื ืžื™ื“ืช ื”ืื‘ื˜ื—ื” ื”ื’ื‘ื•ื”ื” ืœืžื“ื™ ืฉืœ ื”ืœื™ื‘ื”, ืฉื™ืจื•ืชื™ื ื•ื™ื™ืฉื•ืžื™ื ืงืฉื•ืจื™ื. ืื‘ืœ ืื ืชืกืชื›ืœ ืžืงืจื•ื‘ ืœืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืœื™ื‘ืช ืœื™ื ื•ืงืก, ืื– ืื™ ืืคืฉืจ ืœืžืฆื•ื ื‘ื” ืจื™ื‘ื•ืข ื”ืื—ืจืื™ ืœืื‘ื˜ื—ื” ื›ื›ื–ื•. ื”ื™ื›ืŸ ืžืกืชืชืจืช ืชืช-ืžืขืจื›ืช ื”ืื‘ื˜ื—ื” ืœื™ื ื•ืงืก ื•ืžืžื” ื”ื™ื ืžื•ืจื›ื‘ืช?

ืจืงืข ืขืœ ืžื•ื“ื•ืœื™ ืื‘ื˜ื—ื” ืฉืœ ืœื™ื ื•ืงืก ื•-SELinux

ืื‘ื˜ื—ื” ืžืฉื•ืคืจืช ืœื™ื ื•ืงืก ื”ื™ื ืงื‘ื•ืฆื” ืฉืœ ื›ืœืœื™ื ื•ืžื ื’ื ื•ื ื™ ื’ื™ืฉื” ื”ืžื‘ื•ืกืกื™ื ืขืœ ืžื•ื“ืœื™ื ื—ื•ื‘ื” ื•ืžื‘ื•ืกืกื™ ืชืคืงื™ื“ื™ื ื›ื“ื™ ืœื”ื’ืŸ ืขืœ ืžืขืจื›ื•ืช ืœื™ื ื•ืงืก ืžืคื ื™ ืื™ื•ืžื™ื ืคื•ื˜ื ืฆื™ืืœื™ื™ื ื•ืœืชืงืŸ ืืช ื”ื—ืกืจื•ื ื•ืช ืฉืœ ื‘ืงืจืช ื’ื™ืฉื” ืฉื™ืงื•ืœ ื“ืขืช (DAC), ืžืขืจื›ืช ื”ืื‘ื˜ื—ื” ื”ืžืกื•ืจืชื™ืช ืฉืœ ื™ื•ื ื™ืงืก. ืžืงื•ืจ ื”ืคืจื•ื™ืงื˜ ื‘ืžืขื™ื” ืฉืœ ื”ืกื•ื›ื ื•ืช ืœื‘ื™ื˜ื—ื•ืŸ ืœืื•ืžื™ ื‘ืืจื”"ื‘, ื•ื”ื•ื ืคื•ืชื— ื™ืฉื™ืจื•ืช ื‘ืขื™ืงืจ ืขืœ ื™ื“ื™ ื”ืงื‘ืœื ื™ื Secure Computing Corporation ื•-MITER, ื•ื›ืŸ ืžืกืคืจ ืžืขื‘ื“ื•ืช ืžื—ืงืจ.

ืžืขืจื›ื•ืช ืื‘ื˜ื—ื” ืœื™ื ื•ืงืก
ืžื•ื“ื•ืœื™ ืื‘ื˜ื—ื” ืฉืœ ืœื™ื ื•ืงืก

Linus Torvalds ื”ืขื™ืจ ืžืกืคืจ ื”ืขืจื•ืช ืœื’ื‘ื™ ืคื™ืชื•ื—ื™ื ื—ื“ืฉื™ื ืฉืœ NSA ื›ื“ื™ ืฉื™ื•ื›ืœื• ืœื”ื™ื›ืœืœ ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก ื”ืจืืฉื™ืช. ื”ื•ื ืชื™ืืจ ืกื‘ื™ื‘ื” ื›ืœืœื™ืช, ืขื ืงื‘ื•ืฆื” ืฉืœ ืžื™ื™ืจื˜ื™ื ืœืฉืœื™ื˜ื” ื‘ืคืขื•ืœื•ืช ืขื ืื•ื‘ื™ื™ืงื˜ื™ื ื•ืงื‘ื•ืฆื” ืฉืœ ืฉื“ื•ืช ื”ื’ื ื” ืžืกื•ื™ืžื™ื ื‘ืžื‘ื ื™ ื ืชื•ื ื™ื ืฉืœ ืœื™ื‘ื” ืœืื—ืกื•ืŸ ื”ืชื›ื•ื ื•ืช ื”ืžืชืื™ืžื•ืช. ืœืื—ืจ ืžื›ืŸ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืกื‘ื™ื‘ื” ื–ื• ืขืœ ื™ื“ื™ ืžื•ื“ื•ืœื™ ืœื™ื‘ื” ื”ื ื™ืชื ื™ื ืœื˜ืขื™ื ื” ื›ื“ื™ ืœื™ื™ืฉื ื›ืœ ืžื•ื“ืœ ืื‘ื˜ื—ื” ืจืฆื•ื™. LSM ื ื›ื ืก ื‘ืžืœื•ืื• ืœื’ื™ืจืกืช ืœื™ื ื•ืงืก 2.6 ื‘ืฉื ืช 2003.

ืžืกื’ืจืช ื”-LSM ื›ื•ืœืœืช ืฉื“ื•ืช ืฉืžื™ืจื” ื‘ืžื‘ื ื™ ื ืชื•ื ื™ื ื•ืงืจื™ืื•ืช ืœืคื•ื ืงืฆื™ื•ืช ื™ื™ืจื•ื˜ ื‘ื ืงื•ื“ื•ืช ืงืจื™ื˜ื™ื•ืช ื‘ืงื•ื“ ื”ืœื™ื‘ื” ื›ื“ื™ ืœืชืžืจืŸ ืื•ืชืŸ ื•ืœื‘ืฆืข ื‘ืงืจืช ื’ื™ืฉื”. ื–ื” ื’ื ืžื•ืกื™ืฃ ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืœืจื™ืฉื•ื ืžื•ื“ื•ืœื™ ืื‘ื˜ื—ื”. ืžืžืฉืง /sys/kernel/security/lsm ืžื›ื™ืœ ืจืฉื™ืžื” ืฉืœ ืžื•ื“ื•ืœื™ื ืคืขื™ืœื™ื ื‘ืžืขืจื›ืช. ื•ื•ื™ื ืฉืœ LSM ืžืื•ื—ืกื ื™ื ื‘ืจืฉื™ืžื•ืช ืฉื ืงืจืื•ืช ื‘ืกื“ืจ ื”ืžืฆื•ื™ืŸ ื‘-CONFIG_LSM. ืชื™ืขื•ื“ ืžืคื•ืจื˜ ืขืœ hooks ื›ืœื•ืœ ื‘ืงื•ื‘ืฅ ื”ื›ื•ืชืจืช include/linux/lsm_hooks.h.

ืชืช-ื”ืžืขืจื›ืช LSM ืืคืฉืจื” ืœื”ืฉืœื™ื ืืช ื”ืื™ื ื˜ื’ืจืฆื™ื” ื”ืžืœืื” ืฉืœ SELinux ืขื ืื•ืชื” ื’ืจืกื” ืฉืœ ืœื™ื‘ืช ืœื™ื ื•ืงืก ื”ื™ืฆื™ื‘ื” v2.6. ื›ืžืขื˜ ืžื™ื“, SELinux ื”ืคืš ืœืชืงืŸ ื“ื” ืคืงื˜ื• ืขื‘ื•ืจ ืกื‘ื™ื‘ืช ืœื™ื ื•ืงืก ืžืื•ื‘ื˜ื—ืช ื•ื ื›ืœืœ ื‘ื”ืคืฆื•ืช ื”ืคื•ืคื•ืœืจื™ื•ืช ื‘ื™ื•ืชืจ: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.

ืžื™ืœื•ืŸ ืžื•ื ื—ื™ื ืฉืœ SELinux

  • ื–ื”ื•ืช - ืžืฉืชืžืฉ SELinux ืื™ื ื• ื–ื”ื” ืœืžื–ื”ื” ื”ืžืฉืชืžืฉ ื”ืจื’ื™ืœ ืฉืœ Unix/Linux; ื”ื ื™ื›ื•ืœื™ื ืœื”ืชืงื™ื™ื ื‘ืžืงื‘ื™ืœ ืขืœ ืื•ืชื” ืžืขืจื›ืช, ืืš ืฉื•ื ื™ื ืœื—ืœื•ื˜ื™ืŸ ื‘ืžื”ื•ืชื. ื›ืœ ื—ืฉื‘ื•ืŸ ืœื™ื ื•ืงืก ืกื˜ื ื“ืจื˜ื™ ื™ื›ื•ืœ ืœื”ืชืื™ื ืœืื—ื“ ืื• ื™ื•ืชืจ ื‘-SELinux. ื–ื”ื•ืช ื”-SELinux ื”ื™ื ื—ืœืง ืžื”ืงืฉืจ ื”ืื‘ื˜ื—ื” ื”ื›ื•ืœืœ, ืฉืงื•ื‘ืข ืœืื™ืœื• ืชื—ื•ืžื™ื ืืชื” ื™ื›ื•ืœ ื•ืื™ื–ื” ืœื ืชื•ื›ืœ ืœื”ืฆื˜ืจืฃ.
  • ื“ื•ืžื™ื™ื ื™ื - ื‘-SELinux, ืชื—ื•ื ื”ื•ื ื”ื”ืงืฉืจ ืœื‘ื™ืฆื•ืข ืฉืœ ื ื•ืฉื, ื›ืœื•ืžืจ ืชื”ืœื™ืš. ื”ื“ื•ืžื™ื™ืŸ ืงื•ื‘ืข ื™ืฉื™ืจื•ืช ืืช ื”ื’ื™ืฉื” ืฉื™ืฉ ืœืชื”ืœื™ืš. ืชื—ื•ื ื”ื•ื ื‘ืขืฆื ืจืฉื™ืžื” ืฉืœ ืžื” ืชื”ืœื™ื›ื™ื ื™ื›ื•ืœื™ื ืœืขืฉื•ืช ืื• ืžื” ืชื”ืœื™ืš ื™ื›ื•ืœ ืœืขืฉื•ืช ืขื ืกื•ื’ื™ื ืฉื•ื ื™ื. ื›ืžื” ื“ื•ื’ืžืื•ืช ืœื“ื•ืžื™ื™ื ื™ื ื”ื sysadm_t ืœื ื™ื”ื•ืœ ืžืขืจื›ืช, ื•-user_t ืฉื”ื•ื ื“ื•ืžื™ื™ืŸ ืžืฉืชืžืฉ ืจื’ื™ืœ ืœืœื ื”ืจืฉืื•ืช. ืžืขืจื›ืช init ืคื•ืขืœืช ื‘ื“ื•ืžื™ื™ืŸ init_t, ื•ื”ืชื”ืœื™ืš ื”ื ืงื•ื‘ ืคื•ืขืœ ื‘ื“ื•ืžื™ื™ืŸ named_t.
  • ืชืคืงื™ื“ื™ื - ืžื” ืฉืžืฉืžืฉ ื›ืžืชื•ื•ืš ื‘ื™ืŸ ื“ื•ืžื™ื™ื ื™ื ื•ืžืฉืชืžืฉื™ SELinux. ืชืคืงื™ื“ื™ื ืงื•ื‘ืขื™ื ืœืื™ืœื• ืชื—ื•ืžื™ื ืžืฉืชืžืฉ ื™ื›ื•ืœ ืœื”ืฉืชื™ื™ืš ื•ืœืื™ืœื• ืกื•ื’ื™ ืื•ื‘ื™ื™ืงื˜ื™ื ื”ื ื™ื›ื•ืœื™ื ืœื’ืฉืช. ืžื ื’ื ื•ืŸ ื‘ืงืจืช ื’ื™ืฉื” ื–ื” ืžื•ื ืข ืืช ื”ืื™ื•ื ืฉืœ ื”ืชืงืคื•ืช ื”ืกืœืžื” ืฉืœ ื”ืจืฉืื•ืช. ืชืคืงื™ื“ื™ื ื ื›ืชื‘ื™ื ื‘ืžื•ื“ืœ ื”ืื‘ื˜ื—ื” ืฉืœ ื‘ืงืจืช ื’ื™ืฉื” ืžื‘ื•ืกืกืช ืชืคืงื™ื“ื™ื (RBAC) ื”ืžืฉืžืฉ ื‘-SELinux.
  • ืกื•ื’ื™ื - ืชื›ื•ื ืช ืจืฉื™ืžืช ืื›ื™ืคืช ืกื•ื’ ื”ืžื•ืงืฆื” ืœืื•ื‘ื™ื™ืงื˜ ื•ืงื•ื‘ืขืช ืžื™ ื™ื›ื•ืœ ืœื’ืฉืช ืืœื™ื•. ื‘ื“ื•ืžื” ืœื”ื’ื“ืจืช ื”ืชื—ื•ื, ืืœื ืฉื”ืชื—ื•ื ื—ืœ ืขืœ ืชื”ืœื™ืš, ื•ื”ืกื•ื’ ื—ืœ ืขืœ ืื•ื‘ื™ื™ืงื˜ื™ื ื›ืžื• ืกืคืจื™ื•ืช, ืงื‘ืฆื™ื, ืฉืงืขื™ื ื•ื›ื•'.
  • ื ื•ืฉืื™ื ื•ื—ืคืฆื™ื - ืชื”ืœื™ื›ื™ื ื”ื ื ื•ืฉืื™ื ื•ืคื•ืขืœื™ื ื‘ื”ืงืฉืจ ืžืกื•ื™ื, ืื• ืชื—ื•ื ืื‘ื˜ื—ื”. ืžืฉืื‘ื™ ืžืขืจื›ืช ื”ืคืขืœื”: ืงื‘ืฆื™ื, ืกืคืจื™ื•ืช, ืฉืงืขื™ื ื•ื›ื•', ื”ื ืื•ื‘ื™ื™ืงื˜ื™ื ืฉืžื™ื•ื—ืกื™ื ืœื”ื ืกื•ื’ ืžืกื•ื™ื, ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ืจืžืช ืคืจื˜ื™ื•ืช.
  • ืžื“ื™ื ื™ื•ืช SELinux - SELinux ืžืฉืชืžืฉ ื‘ืžื’ื•ื•ืŸ ืžื“ื™ื ื™ื•ืช ื›ื“ื™ ืœื”ื’ืŸ ืขืœ ื”ืžืขืจื›ืช. ืžื“ื™ื ื™ื•ืช SELinux ืžื’ื“ื™ืจื” ืืช ื”ื’ื™ืฉื” ืฉืœ ืžืฉืชืžืฉื™ื ืœืชืคืงื™ื“ื™ื, ืชืคืงื™ื“ื™ื ืœื“ื•ืžื™ื™ื ื™ื ื•ื“ื•ืžื™ื™ื ื™ื ืœืกื•ื’ื™ื. ืจืืฉื™ืช, ื”ืžืฉืชืžืฉ ืžื•ืจืฉื” ืœืงื‘ืœ ืชืคืงื™ื“, ืœืื—ืจ ืžื›ืŸ ื”ืชืคืงื™ื“ ืžื•ืจืฉื” ืœื’ืฉืช ืœื“ื•ืžื™ื™ื ื™ื. ืœื‘ืกื•ืฃ, ืœื“ื•ืžื™ื™ืŸ ื™ื›ื•ืœื” ืœื”ื™ื•ืช ื’ื™ืฉื” ืจืง ืœืกื•ื’ื™ื ืžืกื•ื™ืžื™ื ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื.

LSM ื•ืืจื›ื™ื˜ืงื˜ื•ืจืช SELinux

ืœืžืจื•ืช ื”ืฉื, LSMs ืื™ื ื ื‘ื“ืจืš ื›ืœืœ ืžื•ื“ื•ืœื™ ืœื™ื ื•ืงืก ื”ื ื™ืชื ื™ื ืœื˜ืขื™ื ื”. ืขื ื–ืืช, ื›ืžื• SELinux, ื”ื•ื ืžืฉื•ืœื‘ ื™ืฉื™ืจื•ืช ื‘ืงืจื ืœ. ื›ืœ ืฉื™ื ื•ื™ ื‘ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ LSM ืžืฆืจื™ืš ื”ื™ื“ื•ืจ ืœื™ื‘ื” ื—ื“ืฉ. ื™ืฉ ืœื”ืคืขื™ืœ ืืช ื”ืืคืฉืจื•ืช ื”ืžืชืื™ืžื” ื‘ื”ื’ื“ืจื•ืช ื”ืœื™ื‘ื”, ืื—ืจืช ืงื•ื“ ื”-LSM ืœื ื™ื•ืคืขืœ ืœืื—ืจ ื”ืืชื—ื•ืœ. ืื‘ืœ ื’ื ื‘ืžืงืจื” ื–ื”, ื ื™ืชืŸ ืœื”ืคืขื™ืœ ืื•ืชื• ืขืœ ื™ื“ื™ ืืคืฉืจื•ืช ื˜ื•ืขืŸ ื”ืืชื—ื•ืœ ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื”.

ืžืขืจื›ื•ืช ืื‘ื˜ื—ื” ืœื™ื ื•ืงืก
ืžื—ืกื ื™ืช ื‘ื“ื™ืงื•ืช LSM

LSM ืžืฆื•ื™ื“ ื‘-hooks ื‘ืคื•ื ืงืฆื™ื•ืช ืœื™ื‘ื” ืฉื™ื›ื•ืœื•ืช ืœื”ื™ื•ืช ืจืœื•ื•ื ื˜ื™ื•ืช ืœื‘ื“ื™ืงื•ืช. ืื—ืช ื”ืชื›ื•ื ื•ืช ื”ืขื™ืงืจื™ื•ืช ืฉืœ LSMs ื”ื™ื ืฉื”ื ืžื•ืขืจืžื™ื. ืœืคื™ื›ืš, ื”ื‘ื“ื™ืงื•ืช ื”ืกื˜ื ื“ืจื˜ื™ื•ืช ืขื“ื™ื™ืŸ ืžื‘ื•ืฆืขื•ืช, ื•ื›ืœ ืฉื›ื‘ื” ืฉืœ LSM ืจืง ืžื•ืกื™ืคื” ื‘ืงืจื•ืช ื•ื‘ืงืจื•ืช ื ื•ืกืคื•ืช. ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉืœื ื ื™ืชืŸ ืœื‘ื˜ืœ ืืช ื”ืื™ืกื•ืจ. ื–ื” ืžื•ืฆื’ ื‘ืื™ื•ืจ; ืื ื”ืชื•ืฆืื” ืฉืœ ื‘ื“ื™ืงื•ืช DAC ืฉื’ืจืชื™ื•ืช ื”ื™ื ื›ืฉืœ, ืื– ื”ืขื ื™ื™ืŸ ืืคื™ืœื• ืœื ื™ื’ื™ืข ืœื•ื•ื™ื ืฉืœ LSM.

SELinux ืžืืžืฆืช ืืช ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืื‘ื˜ื—ื” Flask ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื” Fluke Research, ื‘ืžื™ื•ื—ื“ ืืช ืขืงืจื•ืŸ ื”ืžื™ื ื™ืžื•ื ื”ื–ื›ื•ื™ื•ืช. ื”ืžื”ื•ืช ืฉืœ ืžื•ืฉื’ ื–ื”, ื›ืคื™ ืฉืžืขื™ื“ ืฉืžื•, ื”ื™ื ืœื”ืขื ื™ืง ืœืžืฉืชืžืฉ ืื• ืœืขื‘ื“ ืจืง ืืช ื”ื–ื›ื•ื™ื•ืช ื”ื ื—ื•ืฆื•ืช ืœื‘ื™ืฆื•ืข ื”ืคืขื•ืœื•ืช ื”ืžื™ื•ืขื“ื•ืช. ืขื™ืงืจื•ืŸ ื–ื” ืžื™ื•ืฉื ื‘ืืžืฆืขื•ืช ื”ืงืœื“ืช ื’ื™ืฉื” ืžืื•ืœืฆืช, ื•ืœื›ืŸ ื‘ืงืจืช ื”ื’ื™ืฉื” ื‘-SELinux ืžื‘ื•ืกืกืช ืขืœ ืžื•ื“ืœ ื”-domain => type.

ื”ื•ื“ื•ืช ืœื”ืงืœื“ืช ื’ื™ืฉื” ื›ืคื•ื™ื”, ืœ-SELinux ื™ื›ื•ืœื•ืช ื‘ืงืจืช ื’ื™ืฉื” ื’ื“ื•ืœื•ืช ื‘ื”ืจื‘ื” ืžื“ื’ื ื”-DAC ื”ืžืกื•ืจืชื™ ื”ืžืฉืžืฉ ื‘ืžืขืจื›ื•ืช ื”ื”ืคืขืœื” Unix/Linux. ืœื“ื•ื’ืžื”, ื ื™ืชืŸ ืœื”ื’ื‘ื™ืœ ืืช ืžืกืคืจ ื™ืฆื™ืืช ื”ืจืฉืช ืฉืืœื™ื• ื™ืชื—ื‘ืจ ืฉืจืช ื”-ftp, ืœืืคืฉืจ ื›ืชื™ื‘ื” ื•ืฉื™ื ื•ื™ ืฉืœ ืงื‘ืฆื™ื ื‘ืชื™ืงื™ื™ื” ืžืกื•ื™ืžืช, ืืš ืœื ืœืžื—ื•ืง ืื•ืชื.

ื”ืžืจื›ื™ื‘ื™ื ื”ืขื™ืงืจื™ื™ื ืฉืœ SELinux ื”ื:

  • ืฉืจืช ืื›ื™ืคืช ืžื“ื™ื ื™ื•ืช - ื”ืžื ื’ื ื•ืŸ ื”ืขื™ืงืจื™ ืœืืจื’ื•ืŸ ื‘ืงืจืช ื’ื™ืฉื”.
  • ืžืกื“ ื ืชื•ื ื™ื ืฉืœ ืžื“ื™ื ื™ื•ืช ืื‘ื˜ื—ืช ืžืขืจื›ืช.
  • ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืžื™ื™ืจื˜ ืื™ืจื•ืขื™ LSM.
  • Selinuxfs - Pseudo-FS, ื–ื”ื” ืœ-/proc ื•ืžื•ืชืงืŸ ื‘-/sys/fs/selinux. ืžืื•ื›ืœืก ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ืขืœ ื™ื“ื™ ืœื™ื‘ืช ืœื™ื ื•ืงืก ื‘ื–ืžืŸ ืจื™ืฆื” ื•ืžื›ื™ืœ ืงื‘ืฆื™ื ื”ืžื›ื™ืœื™ื ืžื™ื“ืข ืกื˜ื˜ื•ืก SELinux.
  • ื’ื™ืฉื” ืœ-Vector Cache - ืžื ื’ื ื•ืŸ ืขื–ืจ ืœื”ื’ื‘ืจืช ื”ืคืจื™ื•ืŸ.

ืžืขืจื›ื•ืช ืื‘ื˜ื—ื” ืœื™ื ื•ืงืก
ืื™ืš SELinux ืขื•ื‘ื“

ื”ื›ืœ ืขื•ื‘ื“ ื›ื›ื”.

  1. ื ื•ืฉื ืžืกื•ื™ื, ื‘ืžื•ื ื—ื™ SELinux, ืžื‘ืฆืข ืคืขื•ืœื” ืžื•ืชืจืช ืขืœ ืื•ื‘ื™ื™ืงื˜ ืœืื—ืจ ื‘ื“ื™ืงืช DAC, ื›ืคื™ ืฉืžื•ืฆื’ ื‘ืชืžื•ื ื” ื”ืขืœื™ื•ื ื”. ื‘ืงืฉื” ื–ื• ืœื‘ื™ืฆื•ืข ืคืขื•ืœื” ืขื•ื‘ืจืช ืœืžื™ื™ืจื˜ ืื™ืจื•ืขื™ LSM.
  2. ืžืฉื, ื”ื‘ืงืฉื”, ื™ื—ื“ ืขื ื”ืงืฉืจ ืื‘ื˜ื—ืช ื”ื ื•ืฉื ื•ื”ืื•ื‘ื™ื™ืงื˜, ืžื•ืขื‘ืจืช ืœืžื•ื“ื•ืœ SELinux Abstraction and Hook Logic, ืฉืื—ืจืื™ ืขืœ ื”ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”-LSM.
  3. ืกืžื›ื•ืช ืงื‘ืœืช ื”ื”ื—ืœื˜ื•ืช ืœื’ื‘ื™ ื”ื’ื™ืฉื” ืฉืœ ื ื•ืฉื ืœืื•ื‘ื™ื™ืงื˜ ื”ื™ื ืฉืจืช ืื›ื™ืคืช ื”ืžื“ื™ื ื™ื•ืช ื•ื”ื•ื ืžืงื‘ืœ ื ืชื•ื ื™ื ืž-SELinux AnHL.
  4. ื›ื“ื™ ืœืงื‘ืœ ื”ื—ืœื˜ื•ืช ืœื’ื‘ื™ ื’ื™ืฉื” ืื• ื“ื—ื™ื”, ืฉืจืช ืื›ื™ืคืช ื”ืžื“ื™ื ื™ื•ืช ืคื•ื ื” ืœ-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 ืœื—ืฉื‘ื•ื ื•ืช ืžืขืจื›ืช ื”ื”ืคืขืœื”. ื”ืกื‘ืจ ืขืœ ื”ืชื—ื‘ื™ืจ ืขื‘ื•ืจ ืขืจื›ื™ ื˜ื•ื•ื— MLS/MCS ื ืžืฆื ื‘ืกืขื™ืฃ ื”ืงื•ื“ื.

[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

ืคืจืžื˜ืจื™ ืคืงื•ื“ื”:

  • -ื”ื•ืกืคื” ืฉืœ ืขืจืš ืžื™ืคื•ื™ ืชืคืงื™ื“ื™ื ืžื•ืชืื ืื™ืฉื™ืช;
  • -ืจืฉื™ืžืช ืžืฉืชืžืฉื™ื ื•ืชืคืงื™ื“ื™ื ืชื•ืืžื™ื;
  • -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 ืฉื’ื™ืืช ืฉืจืช ืคื ื™ืžื™ืช.

ืžืขืจื›ื•ืช ืื‘ื˜ื—ื” ืœื™ื ื•ืงืก

ืื ื—ื ื• ืžืชื—ื™ืœื™ื ืขื ื”ื—ืฉื•ื“ื™ื ื”ื˜ื™ืคื•ืกื™ื™ื, ื‘ื•ื“ืงื™ื /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.

ื‘ืฉืœื‘ ื–ื”, ืจื•ื‘ ืžื ื”ืœื™ ืœื™ื ื•ืงืก ื™ืชืคืชื• ืžืื•ื“ ืœื”ืจื™ืฅ setencorce 0, ื•ื–ื” ื™ืกืชื™ื™ื. ืœืžืขืŸ ื”ืืžืช, ืขืฉื™ืชื™ ื‘ื“ื™ื•ืง ืืช ื–ื” ื‘ืคืขื ื”ืจืืฉื•ื ื”. ื–ื• ื›ืžื•ื‘ืŸ ื’ื ืžื•ืฆื, ืื‘ืœ ืจื—ื•ืง ืžืœื”ื™ื•ืช ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ.

ืœืžืจื•ืช ื”ืขื™ืฆื•ื‘ื™ื ื”ืžืกื•ืจื‘ืœื™ื, SELinux ื™ื›ื•ืœ ืœื”ื™ื•ืช ื™ื“ื™ื“ื•ืชื™ ืœืžืฉืชืžืฉ. ืคืฉื•ื˜ ื”ืชืงืŸ ืืช ื—ื‘ื™ืœืช setroubleshoot ื•ื”ืฆื’ ืืช ื™ื•ืžืŸ ื”ืžืขืจื›ืช.

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

ืฉื™ื ืœื‘ ืฉื™ืฉ ืœื”ืคืขื™ืœ ืžื—ื“ืฉ ืืช ืฉื™ืจื•ืช ื”-audid ื‘ืื•ืคืŸ ื–ื”, ื•ืœื ื‘ืืžืฆืขื•ืช systemctl, ืœืžืจื•ืช ื”ื ื•ื›ื—ื•ืช ืฉืœ systemd ื‘ืžืขืจื›ืช ื”ื”ืคืขืœื”. ื‘ื™ื•ืžืŸ ื”ืžืขืจื›ืช ื™ืฆื•ื™ืŸ ืœื ืจืง ืขื•ื‘ื“ืช ื”ื—ืกื™ืžื”, ืืœื ื’ื ื”ืกื™ื‘ื” ื• ื“ืจืš ืœื”ืชื’ื‘ืจ ืขืœ ื”ืื™ืกื•ืจ.

ืžืขืจื›ื•ืช ืื‘ื˜ื—ื” ืœื™ื ื•ืงืก

ืื ื• ืžื‘ืฆืขื™ื ืืช ื”ืคืงื•ื“ื•ืช ื”ื‘ืื•ืช:

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

ืื ื—ื ื• ื‘ื•ื“ืงื™ื ื’ื™ืฉื” ืœื“ืฃ ื”ืื™ื ื˜ืจื ื˜ pgadmin4-web, ื”ื›ืœ ืขื•ื‘ื“.

ืžืขืจื›ื•ืช ืื‘ื˜ื—ื” ืœื™ื ื•ืงืก

ืžืขืจื›ื•ืช ืื‘ื˜ื—ื” ืœื™ื ื•ืงืก

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”