ืœื™ื ื•ืงืก ื–ื™ื›ืขืจื”ื™ื™ื˜ ืกื™ืกื˜ืขืžืขืŸ

ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืกื™ื‘ื•ืช ืคึฟืึทืจ ื“ื™ ื’ื•ื•ืึทืœื“ื™ืง ื”ืฆืœื—ื” ืคื•ืŸ ื“ื™ ืœื™ื ื•ืงืก ืึทืก ืื•ื™ืฃ ืขืžื‘ืขื“ื™ื“, ืจื™ืจืขื•ื•ื“ื™ืง ื“ืขื•ื•ื™ืกืขืก ืื•ืŸ ืกืขืจื•ื•ืขืจืก ืื™ื– ื“ื™ ื’ืึทื ืฅ ื”ื•ื™ืš ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคื•ืŸ ื“ื™ ืงืขืจืŸ, ืคึฟืึทืจื‘ื•ื ื“ืขื ืข ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–. ืื‘ืขืจ ืื•ื™ื‘ ื ืขืžืขืŸ ืึท ื ืขืขื ื˜ืขืจ ืงื•ืง ืฆื• ื“ื™ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืคื•ืŸ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ, ืขืก ืื™ื– ืื•ืžืžืขื’ืœืขืš ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืื™ืŸ ืขืก ืึท ืงื•ื•ืึทื“ืจืึทื˜ ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ื•ื•ื™ ืึทื–ืึท. ื•ื•ื• ืื™ื– ื“ื™ ืœื™ื ื•ืงืก ื–ื™ื›ืขืจื”ื™ื™ื˜ ืกืึทื‘ืกื™ืกื˜ืึทื ื›ื™ื™ื“ื™ื ื’ ืื•ืŸ ื•ื•ืึธืก ืื™ื– ืขืก?

ื”ื™ื ื˜ืขืจื’ืจื•ื ื˜ ืื•ื™ืฃ ืœื™ื ื•ืงืก ืกืขืงื•ืจื™ื˜ื™ ืžืึธื“ื•ืœืขืก ืื•ืŸ SELinux

ื–ื™ื›ืขืจื”ื™ื™ื˜ ืขื ื›ืึทื ืกื˜ ืœื™ื ื•ืงืก ืื™ื– ืึท ืกื›ื•ื ืคื•ืŸ ื›ึผืœืœื™ื ืื•ืŸ ืึทืงืกืขืก ืžืขืงืึทื ื™ื–ืึทืžื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืžืึทื ื“ืึทื˜ืึธืจื™ ืื•ืŸ ืจืึธืœืข-ื‘ืื–ื™ืจื˜ ืึทืงืกืขืก ืžืึธื“ืขืœืก ืฆื• ื‘ืึทืฉื™ืฆืŸ ืœื™ื ื•ืงืก ืกื™ืกื˜ืขืžืขืŸ ืคื•ืŸ ืคึผืึธื˜ืขื ืฆื™ืขืœ ื˜ืจืขืฅ ืื•ืŸ ืคืึทืจืจื™ื›ื˜ืŸ ื“ื™ ืฉืึธืจื˜ืงืึธืžื™ื ื’ืก ืคื•ืŸ ื“ื™ืกืงืจืขืฉืึทื ืขืจื™ ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ (ื“ืึทืง), ื“ื™ ื˜ืจืื“ื™ืฆื™ืื ืขืœืŸ ื™ื•ื ื™ืงืก ื–ื™ื›ืขืจื”ื™ื™ื˜ ืกื™ืกื˜ืขื. ื“ืขืจ ืคืจืื™ืขืงื˜ ืื™ื– ืขืจื™ื“ื–ืฉืึทื ื™ื™ื˜ืึทื“ ืื™ืŸ ื“ื™ ื’ืขื“ืขืจืขื ืคื•ืŸ ื“ื™ ื™ื•. ืขืก. ื ืึทืฉืึทื ืึทืœ ืกืขืงื•ืจื™ื˜ื™ ืึทื’ืขื ื˜ื•ืจ, ืื•ืŸ ืื™ื– ื’ืœื™ื™ืš ื“ืขื•ื•ืขืœืึธืคึผืขื“ ื“ืขืจ ื”ื•ื™ืคึผื˜ ื“ื•ืจืš ืงืึธื ื˜ืจืึทืงื˜ืึธืจืก ืกืขืงื•ืจืข ืงืึทืžืคึผื™ื•ื˜ื™ื ื’ ืงืึธืจืคึผืึธืจืึทื˜ื™ืึธืŸ ืื•ืŸ MITER, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ืึท ื ื•ืžืขืจ ืคื•ืŸ ืคืึธืจืฉื•ื ื’ ืœืึทื‘ืึธืจืึทื˜ืึธืจื™ืขืก.

ืœื™ื ื•ืงืก ื–ื™ื›ืขืจื”ื™ื™ื˜ ืกื™ืกื˜ืขืžืขืŸ
ืœื™ื ื•ืงืก ื–ื™ื›ืขืจื”ื™ื™ื˜ ืžืึธื“ื•ืœืขืก

Linus Torvalds ื”ืื˜ ื’ืขืžืื›ื˜ ืึท ื ื•ืžืขืจ ืคื•ืŸ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ื•ื•ืขื’ืŸ ื ื™ื™ึทืข NSA ื“ื™ื•ื•ืขืœืึทืคึผืžืึทื ืฅ ืึทื–ื•ื™ ื–ื™ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืœื™ื ื•ืงืก ืงืขืจืŸ. ืขืจ ื“ื™ืกืงืจื™ื™ื‘ื“ ืึท ื’ืขื ืขืจืึทืœ ืกื•ื•ื™ื•ื•ืข, ืžื™ื˜ ืึท ื’ืึทื ื’ ืคื•ืŸ ื™ื ื˜ืขืจืกืขืคึผื˜ืึธืจืก ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืžื™ื˜ ืึทื‘ื“ื–ืฉืขืงืฅ ืื•ืŸ ืึท ื’ืึทื ื’ ืคื•ืŸ ื–ื™ื›ืขืจ ืคึผืจืึทื˜ืขืงื˜ื™ื•ื• ืคืขืœื“ืขืจ ืื™ืŸ ืงืขืจื ืขืœ ื“ืึทื˜ืŸ ืกื˜ืจืึทืงื˜ืฉืขืจื– ืฆื• ืงืจืึธื ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืึทื˜ืจื™ื‘ื™ื•ืฅ. ื“ื™ ืกื•ื•ื™ื•ื•ืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื“ื•ืจืš ืœืึธื•ื“ืึทื‘ืœืข ืงืขืจืŸ ืžืึทื“ื–ืฉื•ืœื– ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ืงื™ื™ืŸ ื’ืขื•ื•ืืœื˜ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืžืึธื“ืขืœ. LSM ืื™ื– ื’ืึธืจ ืืจื™ื™ืŸ ืื™ืŸ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ื•ื•2.6 ืื™ืŸ 2003.

ื“ื™ LSM ืคืจื™ื™ืžื•ื•ืขืจืง ื›ื•ืœืœ ื”ื™ื˜ืŸ ืคืขืœื“ืขืจ ืื™ืŸ ื“ืึทื˜ืŸ ืกื˜ืจืึทืงื˜ืฉืขืจื– ืื•ืŸ ืจื•ืคื˜ ืฆื• ื™ื ื˜ืขืจืกืขืคึผืฉืึทืŸ ืคืึทื ื’ืงืฉืึทื ื– ืื™ืŸ ืงืจื™ื˜ื™ืฉ ืคื•ื ืงื˜ืŸ ืื™ืŸ ื“ื™ ืงืขืจืŸ ืงืึธื“ ืฆื• ืžืึทื ื™ืคึผื•ืœื™ืจืŸ ื–ื™ื™ ืื•ืŸ ื“ื•ืจื›ืคื™ืจืŸ ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ. ืขืก ืื•ื™ืš ืžื•ืกื™ืฃ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคึฟืึทืจ ืจืขื“ื–ืฉื™ืกื˜ืขืจื™ื ื’ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืžืึทื“ื–ืฉื•ืœื–. ื“ื™ /sys/kernel/security/lsm ืฆื•ื‘ื™ื ื“ ื›ึผื•ืœืœ ืึท ืจืฉื™ืžื” ืคื•ืŸ ืึทืงื˜ื™ื•ื• ืžืึทื“ื–ืฉื•ืœื– ืื•ื™ืฃ ื“ื™ ืกื™ืกื˜ืขื. LSM ื›ื•ืงืก ื–ืขื ืขืŸ ืกื˜ืึธืจื“ ืื™ืŸ ืจืฉื™ืžื•ืช ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขืจื•ืคึฟืŸ ืื™ืŸ ื“ื™ ืกื“ืจ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ CONFIG_LSM. ื“ื™ื˜ื™ื™ืœื“ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืื•ื™ืฃ ื›ื•ืงืก ืื™ื– ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ื›ืขื“ืขืจ ื˜ืขืงืข include/linux/lsm_hooks.h.

ื“ื™ LSM ืกืึทื‘ืกื™ืกื˜ืขื ื’ืขืžืื›ื˜ ืขืก ืžืขื’ืœืขืš ืฆื• ืคืึทืจืขื ื“ื™ืงืŸ ื“ื™ ืคื•ืœ ื™ื ืึทื’ืจื™ื™ืฉืึทืŸ ืคื•ืŸ SELinux ืžื™ื˜ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืกื˜ืึทื‘ื™ืœ ืœื™ื ื•ืงืก ืงืขืจืŸ ื•ื•2.6. SELinux ืื™ื– ื›ึผืžืขื˜ ื’ืœื™ื™ืš ื’ืขื•ื•ืืจืŸ ื“ืขืจ ื“ืข ืคืึทืงื˜ืึธ ื ืึธืจืžืึทืœ ืคึฟืึทืจ ืึท ื–ื™ื›ืขืจ ืœื™ื ื•ืงืก ืกื•ื•ื™ื•ื•ืข ืื•ืŸ ืื™ื– ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ืžืขืจืกื˜ ืคืึธืœืงืก ื“ื™ืกื˜ืจื™ื‘ื™ื•ืฉืึทื ื–: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.

SELinux ื’ืœืึธืกืึทืจ

  • ืื™ื“ืขื ื˜ื™ื˜ืขื˜ - ื“ืขืจ SELinux ื‘ืึทื ื™ืฆืขืจ ืื™ื– ื ื™ืฉื˜ ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ื“ื™ ื’ืขื•ื•ื™ื™ื ื˜ืœืขืš ื™ื•ื ื™ืงืก / ืœื™ื ื•ืงืก ื‘ืึทื ื™ืฆืขืจ ืฉื™ื™ึทืŸ; ื–ื™ื™ ืงืขื ืขืŸ ืงืึธื•ื™ื’ื–ื™ืกื˜ื™ืจืŸ ืื•ื™ืฃ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืกื™ืกื˜ืขื, ืึธื‘ืขืจ ื–ืขื ืขืŸ ื’ืึธืจ ืึทื ื“ืขืจืฉ ืื™ืŸ ืขืกืึทื ืก. ื™ืขื“ืขืจ ื ืึธืจืžืึทืœ ืœื™ื ื•ืงืก ื—ืฉื‘ื•ืŸ ืงืขื ืขืŸ ืฉื˜ื™ืžืขืŸ ืฆื• ืื™ื™ื ืขืจ ืึธื“ืขืจ ืžืขืจ ืื™ืŸ SELinux. ื“ื™ SELinux ืื™ื“ืขื ื˜ื™ื˜ืขื˜ ืื™ื– ืึท ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืงื•ื™ืœืขืœื“ื™ืง ื–ื™ื›ืขืจื”ื™ื™ื˜ ืงืึธื ื˜ืขืงืกื˜, ื•ื•ืึธืก ื“ื™ื˜ืขืจืžืึทื ื– ื•ื•ืึธืก ื“ืึธื•ืžื™ื™ื ื– ืื™ืจ ืงืขื ืขืŸ ืื•ืŸ ืงืขื ืขืŸ ื ื™ืฉื˜ ืคืึทืจื‘ื™ื ื“ืŸ.
  • ื“ืึธื•ืžื™ื™ื ื– - ืื™ืŸ SELinux, ืึท ืคืขืœื“ ืื™ื– ื“ืขืจ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืงืึธื ื˜ืขืงืกื˜ ืคื•ืŸ ืึท ื•ื ื˜ืขืจื˜ืขื ื™ืง, ื“"ื” ืึท ืคึผืจืึธืฆืขืก. ื“ื™ ืคืขืœื“ ื’ืœื™ื™ืš ื“ื™ื˜ืขืจืžืึทื ื– ื“ื™ ืึทืงืกืขืก ืึทื– ืึท ืคึผืจืึธืฆืขืก ื”ืื˜. ื ืคืขืœื“ ืื™ื– ื‘ื™ื™ืกื™ืงืœื™ ืึท ืจืฉื™ืžื” ืคื•ืŸ ื•ื•ืึธืก ืคึผืจืึทืกืขืกืึทื– ืงืขื ืขืŸ ื˜ืึธืŸ ืึธื“ืขืจ ื•ื•ืึธืก ืึท ืคึผืจืึธืฆืขืก ืงืขื ืขืŸ ื˜ืึธืŸ ืžื™ื˜ ืคืึทืจืฉื™ื“ืขื ืข ื˜ื™ื™ืคึผืก. ืขื˜ืœืขื›ืข ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ ื“ืึธื•ืžื™ื™ื ื– ื–ืขื ืขืŸ sysadm_t ืคึฟืึทืจ ืกื™ืกื˜ืขื ืึทื“ืžื™ื ื™ืกื˜ืจืึทืฆื™ืข, ืื•ืŸ user_t ื•ื•ืึธืก ืื™ื– ืึท ื ืึธืจืžืึทืœ ื ื™ื˜-ืคึผืจื™ื•ื•ืœื™ื“ื–ืฉื“ ื‘ืึทื ื™ืฆืขืจ ืคืขืœื“. ื“ื™ init ืกื™ืกื˜ืขื ืœื•ื™ืคื˜ ืื™ืŸ ื“ื™ init_t ืคืขืœื“, ืื•ืŸ ื“ื™ ื’ืขื”ื™ื™ืกืŸ ืคึผืจืึธืฆืขืก ืœื•ื™ืคื˜ ืื™ืŸ ื“ื™ named_t ืคืขืœื“.
  • ืจืึธืœืขืก - ื•ื•ืึธืก ืกืขืจื•ื•ืขืก ื•ื•ื™ ืึท ื™ื ื˜ืขืจืžื™ื“ื™ืขืจื™ ืฆื•ื•ื™ืฉืŸ ื“ืึธื•ืžื™ื™ื ื– ืื•ืŸ SELinux ื™ื•ื–ืขืจื–. ืจืึธืœืขืก ื‘ืึทืฉื˜ื™ืžืขืŸ ืฆื• ื•ื•ืึธืก ื“ืึธื•ืžื™ื™ื ื– ืึท ื‘ืึทื ื™ืฆืขืจ ืงืขื ืขืŸ ื’ืขื”ืขืจืŸ ืื•ืŸ ื•ื•ืึธืก ื˜ื™ื™ืคึผืก ืคื•ืŸ ืึทื‘ื“ื–ืฉืขืงืฅ ื–ื™ื™ ืงืขื ืขืŸ ืึทืงืกืขืก. ื“ืขื ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ ืžืขืงืึทื ื™ื–ืึทื ืคึผืจื™ื•ื•ืขื ืฅ ื“ื™ ืกืึทืงืึธื ืข ืคื•ืŸ โ€‹โ€‹ืคึผืจื™ื•ื•ื™ืœืขื’ื™ืข ืขืกืงืึทืœื™ืจื•ื ื’ ืื ืคืืœืŸ. ืจืึธืœืขืก ื–ืขื ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ื“ื™ ืจืึธืœืข-ื‘ืึทื–ื™ืจื˜ ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ (RBAC) ื–ื™ื›ืขืจื”ื™ื™ื˜ ืžืึธื“ืขืœ ื’ืขื ื™ืฆื˜ ืื™ืŸ SELinux.
  • ื˜ื™ื™ืคึผืก - ื ื˜ื™ืคึผ ืขื ืคืึธืจืกืžืึทื ื˜ ืจืฉื™ืžื” ืึทื˜ืจื™ื‘ื™ื•ื˜ ื•ื•ืึธืก ืื™ื– ืึทืกื™ื™ื ื“ ืฆื• ืึท ื›ื™ื™ืคืขืฅ ืื•ืŸ ื“ื™ื˜ืขืจืžืึทื ื– ื•ื•ืขืจ ืงืขื ืขืŸ ืึทืงืกืขืก ืขืก. ืขื ืœืขืš ืฆื• ื“ื™ ืคืขืœื“ ื“ืขืคึฟื™ื ื™ืฆื™ืข, ืึทื—ื•ืฅ ืึทื– ืคืขืœื“ ืึทืคึผืœื™ื™ื– ืฆื• ืึท ืคึผืจืึธืฆืขืก, ืื•ืŸ ื˜ื™ืคึผ ืึทืคึผืœื™ื™ื– ืฆื• ืึทื‘ื“ื–ืฉืขืงืฅ ืึทื–ืึท ื•ื•ื™ ื“ื™ืจืขืงื˜ืขืจื™ื–, ื˜ืขืงืขืก, ืกืึทืงืึทืฅ, ืขื˜ืง.
  • ื˜ืขืžืขืก ืื•ืŸ ืึทื‘ื“ื–ืฉืขืงืฅ - ืคึผืจืึทืกืขืกืึทื– ื–ืขื ืขืŸ ืกืึทื‘ื“ื–ืฉืขืงืฅ ืื•ืŸ ืœื•ื™ืคืŸ ืื™ืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืงืึธื ื˜ืขืงืกื˜ ืึธื“ืขืจ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคืขืœื“. ืึทืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ืจืขืกื•ืจืกืŸ: ื˜ืขืงืขืก, ื“ื™ื™ืจืขืงื˜ืขืจื™ื–, ืกืึทืงืึทืฅ, ืืื–"ื• ื•, ื–ืขื ืขืŸ ืึทื‘ื“ื–ืฉืขืงืฅ ื•ื•ืึธืก ื–ืขื ืขืŸ ืึทืกื™ื™ื ื“ ืึท ื–ื™ื›ืขืจ ื˜ื™ืคึผ, ืื™ืŸ ืื ื“ืขืจืข ื•ื•ืขืจื˜ืขืจ, ืึท ืคึผืจื™ื•ื•ืึทื˜ืงื™ื™ื˜ ืžื“ืจื’ื”.
  • SELinux ืคึผืึทืœืึทืกื™ื– - SELinux ื ื™ืฆื˜ ืึท ืคืึทืจืฉื™ื™ื“ื ืงื™ื™ึทื˜ ืคื•ืŸ ืคึผืึทืœืึทืกื™ื– ืฆื• ื‘ืึทืฉื™ืฆืŸ ื“ื™ ืกื™ืกื˜ืขื. ื“ื™ SELinux ืคึผืึธืœื™ื˜ื™ืง ื“ื™ืคื™ื™ื ื– ื“ื™ ืึทืงืกืขืก ืคื•ืŸ ื ื™ืฆืขืจืก ืฆื• ืจืึธืœืขืก, ืจืึธืœืขืก ืฆื• ื“ืึธื•ืžื™ื™ื ื– ืื•ืŸ ื“ืึธื•ืžื™ื™ื ื– ืฆื• ื˜ื™ื™ืคึผืก. ืขืจืฉื˜ืขืจ, ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืื™ื– ืึธื˜ืขืจื™ื™ื–ื“ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืึท ืจืึธืœืข, ืื•ืŸ ื“ืขืจ ืจืึธืœืข ืื™ื– ืึธื˜ืขืจื™ื™ื–ื“ ืฆื• ืึทืงืกืขืก ื“ืึธื•ืžื™ื™ื ื–. ืฆื•ื ืกื•ืฃ, ืึท ืคืขืœื“ ืงืขื ืขืŸ ื‘ืœื•ื™ื– ื”ืึธื‘ืŸ ืึทืงืกืขืก ืฆื• ื–ื™ื›ืขืจ ื˜ื™ื™ืคึผืก ืคื•ืŸ ืึทื‘ื“ื–ืฉืขืงืฅ.

LSM ืื•ืŸ ื“ื™ SELinux ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ

ื˜ืจืึธืฅ ื“ืขื ื ืึธืžืขืŸ, LSMs ื–ืขื ืขืŸ ื‘ื›ืœืœ ื ื™ืฉื˜ ืœืึธื•ื“ืึทื‘ืœืข ืœื™ื ื•ืงืก ืžืึทื“ื–ืฉื•ืœื–. ืึธื‘ืขืจ, ื•ื•ื™ SELinux, ืขืก ืื™ื– ื’ืœื™ื™ึทืš ื™ื ืึทื’ืจื™ื™ื˜ื™ื“ ืื™ืŸ ื“ื™ ืงืขืจืŸ. ืงื™ื™ืŸ ืขื ื“ืขืจื•ื ื’ ืฆื• ื“ื™ LSM ืžืงื•ืจ ืงืึธื“ ืจื™ืงื•ื•ื™ื™ืขืจื– ืึท ื ื™ื™ึทืข ืงืขืจืŸ ื–ืึทืžืœื•ื ื’. ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืึธืคึผืฆื™ืข ืžื•ื–ืŸ ื–ื™ื™ืŸ ืขื ื™ื™ื‘ืึทืœื“ ืื™ืŸ ื“ื™ ืงืขืจืŸ ืกืขื˜ื˜ื™ื ื’ืก, ืึทื ื“ืขืจืฉ ื“ื™ LSM ืงืึธื“ ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืึทืงื˜ื™ื•ื•ื™ื™ื˜ื™ื“ ื ืึธืš ืฉื˜ื™ื•ื•ืœ. ืึธื‘ืขืจ ืืคื™ืœื• ืื™ืŸ ื“ืขื ืคืึทืœ, ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืขื ื™ื™ื‘ืึทืœื“ ื“ื•ืจืš ื“ื™ OS ื‘ืึธืึธื˜ืœืึธืึทื“ืขืจ ืึธืคึผืฆื™ืข.

ืœื™ื ื•ืงืก ื–ื™ื›ืขืจื”ื™ื™ื˜ ืกื™ืกื˜ืขืžืขืŸ
LSM ื˜ืฉืขืง ืึธื ืœื™ื™ื’ืŸ

LSM ืื™ื– ื™ืงื•ื•ื™ืคึผื˜ ืžื™ื˜ ื›ื•ืงืก ืื™ืŸ ื”ืึทืจืฅ ืงืขืจืŸ ืคืึทื ื’ืงืฉืึทื ื– ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืคึฟืึทืจ ื˜ืฉืขืงืก. ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคื•ืŸ LSMs ืื™ื– ืึทื– ื–ื™ื™ ื–ืขื ืขืŸ ืกื˜ืึทืงื˜. ืื–ื•ื™, ื“ื™ ื ืึธืจืžืึทืœ ื˜ืฉืขืงืก ื–ืขื ืขืŸ ื ืึธืš ื“ื•ืจื›ื’ืขืงืึธื›ื˜, ืื•ืŸ ื™ืขื“ืขืจ ืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืœืกื ื‘ืœื•ื™ื– ืžื•ืกื™ืฃ ื ืึธืš ืงืึธื ื˜ืจืึธืœืก ืื•ืŸ ืงืึธื ื˜ืจืึธืœืก. ื“ืืก ืžื™ื™ื ื˜ ืื– ืžืขืŸ ืงืขืŸ ื ื™ืฉื˜ ืฆื•ืจื™ืงืฆื™ืขืŸ ื“ืขื ืื™ืกื•ืจ. ื“ืึธืก ืื™ื– ื’ืขื•ื•ื™ื–ืŸ ืื™ืŸ ื“ื™ ืคื™ื’ื•ืจ; ืื•ื™ื‘ ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ืจื•ื˜ื™ืŸ DAC ื˜ืฉืขืงืก ืื™ื– ืึท ื“ื•ืจื›ืคืึทืœ, ื“ืขืจ ืขื ื™ืŸ ื•ื•ืขื˜ ื ื™ืฉื˜ ืืคื™ืœื• ื“ืขืจื’ืจื™ื™ื›ืŸ ื“ื™ LSM ื›ื•ืงืก.

SELinux ืึทื“ืึทืคึผืฅ ื“ื™ ืคืœืึทืกืง ื–ื™ื›ืขืจื”ื™ื™ื˜ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืคื•ืŸ ื“ื™ Fluke ืคืึธืจืฉื•ื ื’ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื, ืกืคึผืขืฆื™ืขืœ ื“ืขืจ ืคึผืจื™ื ืฆื™ืคึผ ืคื•ืŸ ืžื™ื ื“ืกื˜ืขืจ ืคึผืจื™ื•ื•ื™ืœืขื’ื™ืข. ื“ื™ ืขืกืึทื ืก ืคื•ืŸ ื“ืขื ื‘ืึทื’ืจื™ืฃ, ื•ื•ื™ ื–ื™ื™ืŸ ื ืึธืžืขืŸ ืกืึทื’ื“ื–ืฉืขืก, ืื™ื– ืฆื• ื’ืขื‘ืŸ ื“ื™ ื‘ืึทื ื™ืฆืขืจ ืึธื“ืขืจ ืคึผืจืึธืฆืขืก ื‘ืœื•ื™ื– ื“ื™ ืจืขื›ื˜ ื•ื•ืึธืก ื–ืขื ืขืŸ ื ื™ื™ื˜ื™ืง ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ ื‘ื“ืขื” ืึทืงืฉืึทื ื–. ื“ืขืจ ืคึผืจื™ื ืฆื™ืคึผ ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ืžื™ื˜ ื’ืขืฆื•ื•ื•ื ื’ืขืŸ ืึทืงืกืขืก ื˜ื™ื™ืคึผื™ื ื’, ืึทื–ื•ื™ ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ ืื™ืŸ SELinux ืื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืคืขืœื“ => ื˜ื™ืคึผ ืžืึธื“ืขืœ.

ื“ืึทื ืง ืฆื• ื’ืขืฆื•ื•ื•ื ื’ืขืŸ ืึทืงืกืขืก ื˜ื™ื™ืคึผื™ื ื’, SELinux ื”ืื˜ ืคื™ืœ ื’ืจืขืกืขืจืข ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ื•ื•ื™ ื“ื™ ื˜ืจืื“ื™ืฆื™ืื ืขืœืŸ ื“ืึทืง ืžืึธื“ืขืœ ื’ืขื ื™ืฆื˜ ืื™ืŸ ื™ื•ื ื™ืงืก / ืœื™ื ื•ืงืก ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขืžืขืŸ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื™ืจ ืงืขื ืขืŸ ื‘ืึทื’ืจืขื ืขืฆืŸ ื“ื™ ื ืขืฅ ืคึผืึธืจื˜ ื ื•ืžืขืจ ื•ื•ืึธืก ื“ื™ ืคื˜ืคึผ ืกืขืจื•ื•ืขืจ ื•ื•ืขื˜ ืคืึทืจื‘ื™ื ื“ืŸ ืฆื•, ืœืึธื–ืŸ ืฉืจื™ื™ื‘ืŸ ืื•ืŸ ื˜ืฉืึทื ื’ื™ื ื’ ื˜ืขืงืขืก ืื™ืŸ ืึท ื–ื™ื›ืขืจ ื˜ืขืงืข, ืึธื‘ืขืจ ื ื™ืฉื˜ ื•ื™ืกืžืขืงืŸ ื–ื™ื™.

ื“ื™ ื”ื•ื™ืคึผื˜ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ืคื•ืŸ SELinux ื–ืขื ืขืŸ:

  • ืคึผืึธืœื™ื˜ื™ืง ืขื ืคืึธืจืกืžืึทื ื˜ ืกืขืจื•ื•ื™ืจืขืจ - ื“ื™ ื”ื•ื™ืคึผื˜ ืžืขืงืึทื ื™ื–ืึทื ืคึฟืึทืจ ืึธืจื’ืึทื ื™ื™ื–ื™ื ื’ ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ.
  • ืกื™ืกื˜ืขื ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืึธืœื™ื˜ื™ืง ื“ืึทื˜ืึทื‘ื™ื™ืก.
  • ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ LSM ื’ืขืฉืขืขื ื™ืฉ ื™ื ื˜ืขืจืกืขืคึผื˜ืึธืจ.
  • Selinuxfs - ืคึผืกืขื•ื•ื“ืึธ-ืคืก, ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ / ืคึผืจืึธืง ืื•ืŸ ืžืึธื•ื ื˜ืขื“ ืื™ืŸ /sys/fs/selinux. ื“ื™ื ืึทืžื™ืฉ ืคึผืึทืคึผื™ืึทืœื™ื™ื˜ืึทื“ ื“ื•ืจืš ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ื‘ื™ื™ ืจื•ื ื˜ื™ืžืข ืื•ืŸ ืžื™ื˜ ื˜ืขืงืขืก ืžื™ื˜ SELinux ืกื˜ืึทื˜ื•ืก ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข.
  • ืึทืงืกืขืก ื•ื•ืขืงื˜ืึธืจ ืงืึทืฉ - ืึทืŸ ืึทื’ื–ื™ืœื™ืขืจื™ ืžืขืงืึทื ื™ื–ืึทื ืคึฟืึทืจ ื™ื ืงืจื™ืกื™ื ื’ ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ืึทื˜ื™.

ืœื™ื ื•ืงืก ื–ื™ื›ืขืจื”ื™ื™ื˜ ืกื™ืกื˜ืขืžืขืŸ
ื•ื•ื™ SELinux ืึทืจื‘ืขื˜

ืขืก ืึทืœืข ืึทืจื‘ืขื˜ ื•ื•ื™ ื“ืึธืก.

  1. ื ื’ืขื•ื•ื™ืกืข ื˜ืขืžืข, ืื™ืŸ SELinux ื˜ืขืจืžื™ื ืขืŸ, ืคึผืขืจืคืึธืจืžื– ืึท ื“ืขืจืœื•ื™ื‘ื˜ ืงืึทืžืฃ ืื•ื™ืฃ ืึท ื›ื™ื™ืคืขืฅ ื ืึธืš ืึท DAC ื˜ืฉืขืง, ื•ื•ื™ ื’ืขื•ื•ื™ื–ืŸ ืื™ืŸ ื“ื™ ืฉืคึผื™ืฅ ื‘ื™ืœื“. ื“ื™ ื‘ืงืฉื” ืฆื• ื“ื•ืจื›ืคื™ืจืŸ ืึทืŸ ืึธืคึผืขืจืึทืฆื™ืข ื’ื™ื™ื˜ ืฆื• ื“ื™ LSM ื’ืขืฉืขืขื ื™ืฉ ื™ื ื˜ืขืจืกืขืคึผื˜ืึธืจ.
  2. ืคึฟื•ืŸ ื“ืึธืจื˜, ื“ื™ ื‘ืงืฉื”, ืฆื•ื–ืึทืžืขืŸ ืžื™ื˜ ื“ื™ ืงืึธื ื˜ืขืงืกื˜ ืคื•ืŸ ื“ื™ ื•ื ื˜ืขืจื˜ืขื ื™ืง ืื•ืŸ ืึทื‘ื“ื–ืฉืขืงื˜ ื–ื™ื›ืขืจื”ื™ื™ื˜, ืื™ื– ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืฆื• ื“ื™ SELinux ืึทื‘ืกื˜ืจืึทืงื˜ื™ืึธืŸ ืื•ืŸ ื›ืึธืง ืœืึธื’ื™ืง ืžืึธื“ื•ืœืข, ื•ื•ืึธืก ืื™ื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงื˜ื™ื ื’ ืžื™ื˜ ื“ื™ LSM.
  3. ื“ื™ ื‘ืึทืฉืœื•ืก-ืžืื›ืŸ ืื•ื™ื˜ืึธืจื™ื˜ืขื˜ ืื•ื™ืฃ ื“ื™ ืึทืงืกืขืก ืคื•ืŸ ืึท ื•ื ื˜ืขืจื˜ืขื ื™ืง ืฆื• ืึท ื›ื™ื™ืคืขืฅ ืื™ื– ื“ื™ ืคึผืึธืœื™ื˜ื™ืง ืขื ืคืึธืจืกืžืึทื ื˜ ืกืขืจื•ื•ื™ืจืขืจ ืื•ืŸ ืขืก ื ืขืžื˜ ื“ืึทื˜ืŸ ืคื•ืŸ SELinux AnHL.
  4. ืฆื• ืžืึทื›ืŸ ื“ื™ืกื™ื–ืฉืึทื ื– ื•ื•ืขื’ืŸ ืึทืงืกืขืก ืึธื“ืขืจ ืึธืคึผืœื™ื™ืงืขื ื•ื ื’, ืคึผืึธืœื™ื˜ื™ืง ืขื ืคืึธืจืกืžืึทื ื˜ ืกืขืจื•ื•ื™ืจืขืจ ื˜ื•ืจื ืก ืฆื• ื“ื™ ืึทืงืกืขืก ื•ื•ืขืงื˜ืึธืจ ืงืึทืฉ (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 - ืงืึทื˜ืขื’ืึธืจื™ืข.

ื˜ืฉืึทื ื’ื™ื ื’ ืึทืงืกืขืก ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ

ื ื™ืฆืŸ ืกืขืžืึธื“ื•ืœืข ืฆื• ืœืึธื“ืŸ, ืœื™ื™ื’ืŸ ืื•ืŸ ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ 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 - ัƒะดะฐะปะธั‚ัŒ ะผะพะดัƒะปัŒ

ืขืจืฉื˜ืขืจ ืžืึทื ืฉืึทืคึฟื˜ ืœืึธื’ื™ืŸ ืœืึธื’ื™ืŸ ืงืึทื ืขืงืฅ ื“ื™ 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

ืงืึธืœืขืงื˜ื™ื•ื• ืกืขืžืึทื ืึทื’ืข ื‘ืึทื ื™ืฆืขืจ ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ืคื™ืจืŸ ืžืึทืคึผื™ื ื’ื– ืฆื•ื•ื™ืฉืŸ 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

ื‘ืึทืคึฟืขืœืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก:

  • - ืึท ืœื™ื™ื’ืŸ ืžื ื”ื’ ืจืึธืœืข ืžืึทืคึผื™ื ื’ ืคึผืึธื–ื™ืฆื™ืข;
  • -ืœ ืจืฉื™ืžื” ืคื•ืŸ ื•ื•ืึธืก ืจื™ื›ื˜ืŸ ื ื™ืฆืขืจืก ืื•ืŸ ืจืึธืœืขืก;
  • -ื“ ื•ื™ืกืžืขืงืŸ ื‘ืึทื ื™ืฆืขืจ ืจืึธืœืข ืžืึทืคึผื™ื ื’ ืคึผืึธื–ื™ืฆื™ืข;
  • -ืจ ืจืฉื™ืžื” ืคื•ืŸ ืจืึธืœืขืก ืึทื˜ืึทื˜ืฉื˜ ืฆื• ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ;

ื˜ืขืงืขืก, ืคึผืึธืจืฅ ืื•ืŸ ื‘ื•ืœื™ืึทืŸ ื•ื•ืึทืœื•ืขืก

ื™ืขื“ืขืจ 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, ืฉื˜ืขืœืŸ ื˜ืขืงืข ืคึผืขืจืžื™ืฉืึทื ื–, ืื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืคืขืœื ื“ื™ืง ืคึผื™ื˜ื”ืึธืŸ ืžืึทื“ื–ืฉื•ืœื– ืคึฟื•ืŸ ืคึผื™ืคึผ. ืึทืœืฅ ืื™ื– ื’ืจื™ื™ื˜, ืžื™ืจ ืงืึทื˜ืขืจ ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ 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 ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืึทื ื™ืฆืขืจ-ืคืจื™ื™ึทื ื“ืœืขืš. ื ืึธืจ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ ืกืขื˜ืจืึธื‘ืœืขืฉืึธืึธื˜ ืคึผืขืงืœ ืื•ืŸ ื–ืขืŸ ื“ื™ ืกื™ืกื˜ืขื ืงืœืึธืฅ.

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

ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ื“ื™ ืึทื•ื“ื™ื˜ ืกืขืจื•ื•ื™ืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ืจื™ืกื˜ืึทืจื˜ื™ื“ ื“ืขื ื•ื•ืขื’, ืื•ืŸ ื ื™ืฉื˜ ื ื™ืฆืŸ ืกื™ืกื˜ืขืžืงื˜ืœ, ื˜ืจืึธืฅ ื“ืขื ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืคื•ืŸ ืกื™ืกื˜ืขืž ืื™ืŸ ื“ื™ ืึทืก. ืื™ืŸ ื“ื™ ืกื™ืกื˜ืขื ืงืœืึธืฅ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื ื’ืขื•ื•ื™ื–ืŸ ื ื™ื˜ ื‘ืœื•ื™ื– ื“ื™ ืคืึทืงื˜ ืคื•ืŸ ื‘ืœืึทืงื™ื ื’, ืึธื‘ืขืจ ืื•ื™ืš ื“ื™ ืกื™ื‘ื” ืื•ืŸ ื•ื•ืขื’ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ืขื ืคืึทืจื‘ืึธื˜.

ืœื™ื ื•ืงืก ื–ื™ื›ืขืจื”ื™ื™ื˜ ืกื™ืกื˜ืขืžืขืŸ

ืžื™ืจ ื•ื™ืกืคื™ืจืŸ ื“ื™ ืงืึทืžืึทื ื“ื–:

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

ืžื™ืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทืงืกืขืก ืฆื• ื“ื™ pgadmin4-ื•ื•ืขื‘ ื‘ืœืึทื˜, ืึทืœืฅ ืึทืจื‘ืขื˜.

ืœื™ื ื•ืงืก ื–ื™ื›ืขืจื”ื™ื™ื˜ ืกื™ืกื˜ืขืžืขืŸ

ืœื™ื ื•ืงืก ื–ื™ื›ืขืจื”ื™ื™ื˜ ืกื™ืกื˜ืขืžืขืŸ

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’