เบฅเบฐเบšเบปเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Linux

เบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เบ‚เบญเบ‡ Linux OS เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบเบฑเบ‡, เบญเบธเบ›เบฐเบเบญเบ™เบกเบทเบ–เบทเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบกเปˆเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบชเบนเบ‡เบžเปเบชเบปเบกเบ„เบงเบ™เบ‚เบญเบ‡ kernel, เบšเปเบฅเบดเบเบฒเบ™เปเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เปเบ•เปˆเบ–เป‰เบฒ เป€เบšเบดเปˆเบ‡เบขเปˆเบฒเบ‡เปƒเบเป‰เบŠเบดเบ” เบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡ Linux kernel, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒเบชเบตเปˆเบซเบฅเปˆเบฝเบกเบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเป€เบŠเบฑเปˆเบ™เบ™เบฑเป‰เบ™. เบฅเบฐโ€‹เบšเบปเบšโ€‹เบเปˆเบญเบโ€‹เบ„เบงเบฒเบกโ€‹เบ›เบญเบ”โ€‹เป„เบž Linux เป€เบŠเบทเปˆเบญเบ‡โ€‹เป„เบงเป‰โ€‹เบšเปˆเบญเบ™โ€‹เปƒเบ”โ€‹เปเบฅเบฐโ€‹เบกเบฑเบ™โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ”เป‰เบงเบโ€‹เบซเบเบฑเบ‡โ€‹?

เบ›เบฐเบซเบงเบฑเบ”เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบกเบฒเบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Linux เปเบฅเบฐ SELinux

Security Enhanced Linux เปเบกเปˆเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบšเปเบฅเบฐเบเบปเบ™เป„เบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบตเปˆเบšเบฑเบ‡เบ„เบฑเบšเปเบฅเบฐเบญเบตเบ‡เปƒเบชเปˆเบšเบปเบ”เบšเบฒเบ”เป€เบžเบทเปˆเบญเบ›เบปเบเบ›เป‰เบญเบ‡เบฅเบฐเบšเบปเบš Linux เบˆเบฒเบเป„เบžเบ‚เบปเปˆเบกเบ‚เบนเปˆเบ—เบตเปˆเบญเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปเบฅเบฐเปเบเป‰เป„เบ‚เบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เบ‚เบญเบ‡ Discretionary Access Control (DAC), เบฅเบฐเบšเบปเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡ Unix เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบก. เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เบกเบตโ€‹เบ•เบปเป‰เบ™โ€‹เบเปเบฒโ€‹เป€เบ™เบตเบ”โ€‹เปƒเบ™โ€‹เบญเบธโ€‹เบ—เบญเบ™โ€‹เบ‚เบญเบ‡โ€‹เบญเบปเบ‡โ€‹เบเบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบ›เบญเบ”โ€‹เป„เบžโ€‹เปเบซเปˆเบ‡โ€‹เบŠเบฒเบ”โ€‹เบชเบฐโ€‹เบซเบฐโ€‹เบฅเบฑเบ”โ€‹, เปเบฅเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เป‚เบ”เบโ€‹เบเบปเบ‡โ€‹เป‚เบ”เบโ€‹เบชเปˆเบงเบ™โ€‹เปƒเบซเบเปˆโ€‹เป‚เบ”เบโ€‹เบœเบนเป‰โ€‹เบฎเบฑเบšโ€‹เป€เบซเบกเบปเบฒ Secure Computing Corporation เปเบฅเบฐ MITERโ€‹, เป€เบŠเบฑเปˆเบ™โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบเบฑเบšโ€‹เบซเป‰เบญเบ‡โ€‹เบ—เบปเบ”โ€‹เบฅเบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ„เบปเป‰เบ™โ€‹เบ„เบงเป‰เบฒโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹.

เบฅเบฐเบšเบปเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Linux
เป‚เบกเบ”เบนเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Linux

Linus Torvalds เป„เบ”เป‰เบญเบญเบเบ„เปเบฒเป€เบซเบฑเบ™เบซเบผเบฒเบเบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ NSA เปƒเปเปˆ เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ Linux kernel เบ•เบปเป‰เบ™เบ•เป. เบฅเบฒเบงเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบปเปˆเบงเป„เบ›, เป‚เบ”เบเบกเบตเบŠเบธเบ”เบ‚เบญเบ‡ interceptors เป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฑเบšเบงเบฑเบ”เบ–เบธเปเบฅเบฐเบŠเบธเบ”เบ‚เบญเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™ kernel เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™. เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเป‚เบกเบ”เบนเบ™ kernel เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป‚เบซเบผเบ”เป„เบ”เป‰เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบฎเบนเบšเปเบšเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. LSM เป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Linux kernel v2.6 เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™เปƒเบ™เบ›เบต 2003.

เบเบญเบšเบ‚เบญเบ‡ LSM เบ›เบฐเบเบญเบšเบกเบตเบžเบทเป‰เบ™เบ—เบตเปˆเบเบญเบ‡เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบเบฒเบ™เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบขเบนเปˆเปƒเบ™เบˆเบธเบ”เบชเปเบฒเบ„เบฑเบ™เปƒเบ™เบฅเบฐเบซเบฑเบ” kernel เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบžเบงเบเบกเบฑเบ™เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡. เบกเบฑเบ™เบเบฑเบ‡เป€เบžเบตเปˆเบกเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เป‚เบกเบ”เบนเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž. เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš /sys/kernel/security/lsm เบกเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบš. hooks LSM เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเบ–เบทเบเป€เบญเบตเป‰เบ™เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ CONFIG_LSM. เป€เบญเบเบฐเบชเบฒเบ™เบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบš hooks เปเบกเปˆเบ™เบฅเบงเบกเบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ header include/linux/lsm_hooks.h.

เบฅเบฐเบšเบปเบšเบเปˆเบญเบ LSM เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบ‚เบญเบ‡ SELinux เบเบฑเบšเบฎเบธเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบ‚เบญเบ‡ Linux kernel v2.6 เบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡. เป€เบเบทเบญเบšเบ—เบฑเบ™เบ—เบต, SELinux เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ de facto เบชเปเบฒเบฅเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก Linux เบ—เบตเปˆเบ›เบญเบ”เป„เบžเปเบฅเบฐเป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบเบ—เบตเปˆเบ™เบดเบเบปเบกเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.

เบ„เปเบฒเบชเบฑเบš SELinux

  • เป€เบญเบเบฐเบฅเบฑเบ โ€” เบœเบนเป‰โ€‹เปƒเบŠเป‰ SELinux เบšเปเปˆโ€‹เบ„เบทโ€‹เบเบฑเบ™โ€‹เบเบฑเบš id เบœเบนเป‰โ€‹เปƒเบŠเป‰ Unix/Linux เบ›เบปเบเบเบฐเบ•เบด; เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบขเบนเปˆโ€‹เบฎเปˆเบงเบกโ€‹เบเบฑเบ™โ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™, เปเบ•เปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹เป‚เบ”เบโ€‹เป€เบ™เบทเป‰เบญโ€‹เปเบ—เป‰โ€‹เปเบฅเป‰เบง. เปเบ•เปˆเบฅเบฐเบšเบฑเบ™เบŠเบต Linux เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเบฒเบกเบฒเบ”เบเบปเบ‡เบเบฑเบšเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™เปƒเบ™ SELinux. เบ•เบปเบงเบ•เบปเบ™ SELinux เปเบกเปˆเบ™เบชเปˆเบงเบ™เบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบšเปเบฅเบดเบšเบปเบ”เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเป‚เบ”เบเบฅเบงเบก, เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเป‚เบ”เป€เบกเบ™เปƒเบ”เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ” เปเบฅเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเป„เบ”เป‰.
  • เป‚เบ”เป€เบกเบ™ - เปƒเบ™ SELinux, เป‚เบ”เป€เบกเบ™เปเบกเปˆเบ™เบšเปเบฅเบดเบšเบปเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบซเบปเบงเบ‚เปเป‰เปƒเบ”เบซเบ™เบถเปˆเบ‡, i.e. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™. เป‚เบ”เป€เบกเบ™เป‚เบ”เบเบเบปเบ‡เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบตเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบกเบต. เป‚เบ”เป€เบกเบ™เปเบกเปˆเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบซเบผเบทเบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบเบฑเบšเบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†. เบšเบฒเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เป‚เบ”เป€เบกเบ™เปเบกเปˆเบ™ sysadm_t เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบฅเบฐเบšเบปเบš, เปเบฅเบฐ user_t เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เป‚เบ”เป€เบกเบ™เบœเบนเป‰เปƒเบŠเป‰เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบšเปเปˆเบกเบตเบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”. เบฅเบฐเบšเบปเบš init เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เป‚เบ”เป€เบกเบ™ init_t, เปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเบกเบตเบŠเบทเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป‚เบ”เป€เบกเบ™ name_t.
  • เบšเบปเบ”เบšเบฒเบ” โ€” เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเบเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เป‚เบ”เป€เบกเบ™ เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰ SELinux. เบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ”เบเปเบฒเบ™เบปเบ”เป‚เบ”เป€เบกเบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเปเบฅเบฐเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰. เบเบปเบ™เป„เบเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ™เบตเป‰เบ›เป‰เบญเบ‡เบเบฑเบ™เป„เบžเบ‚เบปเปˆเบกเบ‚เบนเปˆเบ‚เบญเบ‡เบเบฒเบ™เป‚เบˆเบกเบ•เบตเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”. เบšเบปเบ”เบšเบฒเบ”เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™เบ•เบปเบงเปเบšเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Role Based Access Control (RBAC) เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ SELinux.
  • เบ›เบฐเป€เบžเบ” โ€” เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบเบฒเบ™โ€‹เบเบฒเบ™โ€‹เบšเบฑเบ‡โ€‹เบ„เบฑเบšโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบ—เบตเปˆโ€‹เบ–เบทเบโ€‹เบกเบญเบšโ€‹เบซเบกเบฒเบโ€‹เปƒเบซเป‰โ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹เปเบฅเบฐโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบœเบนเป‰โ€‹เบ—เบตเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบกเบฑเบ™โ€‹. เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ„เปเบฒเบ™เบดเบเบฒเบกเป‚เบ”เป€เบกเบ™, เบเบปเบเป€เบงเบฑเป‰เบ™เป‚เบ”เป€เบกเบ™เบ™เบฑเป‰เบ™เปƒเบŠเป‰เบเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™, เปเบฅเบฐเบ›เบฐเป€เบžเบ”เปƒเบŠเป‰เบเบฑเบšเบงเบฑเบ”เบ–เบธเป€เบŠเบฑเปˆเบ™: เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เป„เบŸเบฅเปŒ, เบŠเบฑเบญเบเป€เบเบฑเบ”, เปเบฅเบฐเบญเบทเปˆเบ™เป†.
  • เบงเบดเบŠเบฒ เปเบฅเบฐเบงเบฑเบ”เบ–เบธ - เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบกเปˆเบ™เบซเบปเบงเบ‚เปเป‰เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐ, เบซเบผเบทเป‚เบ”เป€เบกเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž. เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™: เป„เบŸเบฅเปŒ, เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เป€เบ•เบปเป‰เบฒเบฎเบฑเบš, เปเบฅเบฐเบญเบทเปˆเบ™เป†, เปเบกเปˆเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”, เปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เบญเบทเปˆเบ™เป†, เบฅเบฐเบ”เบฑเบšเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ•เบปเบง.
  • เบ™เบฐเป‚เบเบšเบฒเบ SELinux - SELinux เปƒเบŠเป‰เบซเบผเบฒเบเบ™เบฐเป‚เบเบšเบฒเบเป€เบžเบทเปˆเบญเบ›เบปเบเบ›เป‰เบญเบ‡เบฅเบฐเบšเบปเบš. เบ™เบฐเป‚เบเบšเบฒเบ SELinux เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบ•เปเปˆเบเบฑเบšเบšเบปเบ”เบšเบฒเบ”, เบšเบปเบ”เบšเบฒเบ”เบ‚เบญเบ‡เป‚เบ”เป€เบกเบ™, เปเบฅเบฐเป‚เบ”เป€เบกเบ™เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†. เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”, เบœเบนเป‰เปƒเบŠเป‰เป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบšเบšเบปเบ”เบšเบฒเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเบปเบ”เบšเบฒเบ”เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เป€เบกเบ™. เบชเบธเบ”เบ—เป‰เบฒเบ, เป‚เบ”เป€เบกเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบซเบฒเบงเบฑเบ”เบ–เบธเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

LSM เปเบฅเบฐเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ SELinux

เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบŠเบทเปˆ, LSMs เบšเปเปˆเปเบกเปˆเบ™เป‚เบกเบ”เบนเบ™ Linux เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เป€เบŠเบฑเปˆเบ™ SELinux, เบกเบฑเบ™เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบšเปเบเปˆเบ™เป‚เบ”เบเบเบปเบ‡. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ”เป†เบ•เปเปˆเบเบฑเบšเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ LSM เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบเปˆเบ™เปƒเบซเบกเปˆ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ kernel, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบฐเบซเบฑเบ” LSM เบˆเบฐเบšเปเปˆเบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบซเบผเบฑเบ‡เบˆเบฒเบ boot. เปเบ•เปˆเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ—เบฒเบ‡เป€เบฅเบทเบญเบ OS bootloader.

เบฅเบฐเบšเบปเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Linux
LSM check stack

LSM เปเบกเปˆเบ™เบกเบต hooks เปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™ kernel เบซเบผเบฑเบเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบกเบตเบ„เบงเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบš. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ LSMs เปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ–เบทเบ stacked. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™, เปเบฅเบฐเปเบ•เปˆเบฅเบฐเบŠเบฑเป‰เบ™เบ‚เบญเบ‡ LSM เบžเบฝเบ‡เปเบ•เปˆเป€เบžเบตเปˆเบกเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเปเบฅเบฐเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบ™เบตเป‰ เปเบฒเบ เบ„เบงเบฒเบกเบงเปˆเบฒเบเบฒเบ™เบซเป‰เบฒเบกเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบเบปเบเป€เบฅเบตเบเบ„เบทเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบฎเบนเบš; เบ–เป‰เบฒเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบš DAC เบ›เบปเบเบเบฐเบ•เบดเปเบกเปˆเบ™เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบฅเบทเปˆเบญเบ‡เบˆเบฐเบšเปเปˆเป€เบ–เบดเบ‡ hooks LSM.

SELinux เบฎเบฑเบšเบฎเบญเบ‡เป€เบญเบปเบฒเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Flask เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒ Fluke, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบซเบผเบฑเบเบเบฒเบ™เบ‚เบญเบ‡เบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”. เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบงเบ‚เบญเบ‡เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰, เบ•เบฒเบกเบŠเบทเปˆเบ‚เบญเบ‡เบกเบฑเบ™เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™, เปเบกเปˆเบ™เบเบฒเบ™เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบซเบผเบทเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบดเบ”เบ—เบดเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบฐเบ—เปเบฒเบ—เบตเปˆเบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡. เบซเบผเบฑเบเบเบฒเบ™เบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰เบเบฒเบ™เบžเบดเบกเป€เบ‚เบปเป‰เบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปƒเบ™ SELinux เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบฎเบนเบšเปเบšเบšเป‚เบ”เป€เบกเบ™ => เบ›เบฐเป€เบžเบ”.

เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเบเบฒเบ™เบžเบดเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡, SELinux เบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเบผเบฒเบเบเปˆเบงเบฒเปเบšเบš DAC เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ Unix/Linux. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเปเบฒเบเบฑเบ”เบˆเปเบฒเบ™เบงเบ™เบžเบญเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ ftp เบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ‚เบฝเบ™เปเบฅเบฐเบ›เปˆเบฝเบ™เป„เบŸเบฅเปŒเปƒเบ™เป‚เบŸเบ™เป€เบ”เบตเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™, เปเบ•เปˆเบšเปเปˆเบฅเบถเบšเบžเบงเบเบกเบฑเบ™เบญเบญเบ.

เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ SELinux เปเบกเปˆเบ™:

  • เป€เบŠเบตเบšเป€เบงเบตเบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰เบ™เบฐเป‚เบเบšเบฒเบ โ€” เบเบปเบ™เป„เบเบซเบผเบฑเบเปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡.
  • เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ™เบฐเป‚เบเบšเบฒเบเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.
  • เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบšเบ•เบปเบงเบชเบฐเบเบฑเบ”เป€เบซเบ”เบเบฒเบ™ LSM.
  • Selinuxfs - Pseudo-FS, เบ„เบทเบเบฑเบ™เบเบฑเบš /proc เปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ /sys/fs/selinux. เบชเป‰เบฒเบ‡เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเป‚เบ”เบเปเบเปˆเบ™ Linux เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™ เปเบฅเบฐเบ›เบฐเบเบญเบšเบกเบตเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบชเบฐเบ–เบฒเบ™เบฐ SELinux.
  • เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ Vector Cache - เบเบปเบ™โ€‹เป„เบโ€‹เบŠเปˆเบงเบโ€‹เป€เบžเบตเปˆเบกโ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ•เบฐโ€‹เบžเบฑเบ™โ€‹.

เบฅเบฐเบšเบปเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Linux
SELinux เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”

เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปเบšเบšเบ™เบตเป‰.

  1. เบงเบดเบŠเบฒเบชเบฐเป€เบžเบฒเบฐ, เปƒเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚ SELinux, เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบš DAC, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบฎเบนเบšเป€เบ—เบดเบ‡. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ™เบตเป‰เป„เบ›เบซเบฒเบ•เบปเบงเบชเบฐเบเบฑเบ”เป€เบซเบ”เบเบฒเบ™ LSM.
  2. เบˆเบฒเบเบšเปˆเบญเบ™เบ™เบฑเป‰เบ™, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป, เบžเป‰เบญเบกเบเบฑเบšเบซเบปเบงเบ‚เปเป‰เปเบฅเบฐเบชเบฐเบžเบฒเบšเบเบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ, เบ–เบทเบเบชเบปเปˆเบ‡เบเบฑเบšเป‚เบกเบ”เบนเบ™ SELinux Abstraction เปเบฅเบฐ Hook Logic, เป€เบŠเบดเปˆเบ‡เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบš LSM.
  3. เบญเบณเบ™เบฒเบ”เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบงเบฑเบ”เบ–เบธเปƒเบ”เปœเบถเปˆเบ‡เบ‚เบญเบ‡เบงเบดเบŠเบฒเปƒเบ”เปœเบถเปˆเบ‡เปเบกเปˆเบ™เป€เบŠเบตเบšเป€เบงเบตเบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰เบ™เบฐเป‚เบเบšเบฒเบ เปเบฅเบฐเบกเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ SELinux AnHL.
  4. เป€เบžเบทเปˆเบญเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเบผเบทเบ›เบฐเบ•เบดเป€เบชเบ”, เป€เบŠเบตเบšเป€เบงเบตเบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰เบ™เบฐเป‚เบเบšเบฒเบเบซเบฑเบ™เป„เบ›เบซเบฒเบฅเบฐเบšเบปเบšเบเปˆเบญเบเบ‚เบญเบ‡ Access Vector Cache (AVC) เบชเปเบฒเบฅเบฑเบšเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเปƒเบŠเป‰เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”.
  5. เบ–เป‰เบฒเบเบฒเบ™เปเบเป‰เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเบžเบปเบšเบขเบนเปˆเปƒเบ™เปเบ„เบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ•เปเปˆเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ™เบฐเป‚เบเบšเบฒเบเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž.
  6. เบœเบปเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบˆเบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐ AVC เบ–เบทเบเบชเบปเปˆเบ‡เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰เบ™เบฐเป‚เบเบšเบฒเบ.
  7. เบ–เป‰เบฒเบ™เบฐเป‚เบเบšเบฒเบเบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™เบเบปเบ‡เบเบฑเบšเบเบฒเบ™เบเบฐเบ—เปเบฒเบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เป, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เปเบกเปˆเบ™เบ–เบทเบเบซเป‰เบฒเบก.

เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ SELinux

SELinux เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบฒเบกเป‚เบซเบกเบ”:

  • เบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰ - เบเบฒเบ™เบเบถเบ”เบซเบกเบฑเป‰เบ™เบขเปˆเบฒเบ‡เป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”เบ•เปเปˆเบ™เบฐเป‚เบเบšเบฒเบเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž.
  • เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ” - เบเบฒเบ™โ€‹เบฅเบฐโ€‹เป€เบกเบตเบ”โ€‹เบ‚เปเป‰โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เปเบกเปˆเบ™โ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹เบ—เบตเปˆโ€‹เบชเบญเบ”โ€‹เบ„เป‰เบญเบ‡โ€‹เบเบฑเบ™โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เปƒเบ™โ€‹เบงเบฒโ€‹เบฅเบฐโ€‹เบชเบฒเบ™โ€‹.
  • เบ„เบปเบ™เบžเบดเบเบฒเบ™ - เบ™เบฐเป‚เบเบšเบฒเบเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบšเปเปˆเบกเบตเบœเบปเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ SELinux เบขเบนเปˆเปƒเบ™เบฎเบนเบšเปเบšเบšเปƒเบ”เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰.

[admin@server ~]$ getenforce
Permissive

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฎเบนเบšเปเบšเบšเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐ rebooting, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเปเบฒเบ™เบปเบ”เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบš, เบซเบผเบท 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 - ัƒะดะฐะปะธั‚ัŒ ะผะพะดัƒะปัŒ

เบ—เบตเบกเบ‡เบฒเบ™เบ—เปเบฒเบญเบดเบ” เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบœเบนเป‰เปƒเบŠเป‰ SELinux เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™, เบ—เบตเบชเบญเบ‡เบชเบฐเปเบ”เบ‡เบฅเบฒเบเบŠเบทเปˆ. เบชเบธเบ”เบ—เป‰เบฒเบ, เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเบธเบ”เบ—เป‰เบฒเบเบเบฑเบš -r switch เป€เบญเบปเบฒเปเบœเบ™เบ—เบตเปˆเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰ SELinux เบเบฑเบšเบšเบฑเบ™เบŠเบต OS. เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบญเบ‡ syntax เบชเปเบฒเบฅเบฑเบšเบ„เปˆเบฒ 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

เบ—เบตเบกเบ‡เบฒเบ™ เบˆเบฑเบ”เบเบฒเบ™เบœเบนเป‰เปƒเบŠเป‰ เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เปเบœเบ™เบ—เบตเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบœเบนเป‰เปƒเบŠเป‰ 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 เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ”เบ•เบดเบ”เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰;

เป„เบŸเบฅเปŒ, เบžเบญเบ” เปเบฅเบฐเบ„เปˆเบฒ Boolean

เปเบ•เปˆเบฅเบฐเป‚เบกเบ”เบนเบ™ 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 เบกเบตเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบ„เปˆเบฒ Boolean. เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰ getsebool -a. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบ„เปˆเบฒ boolean เป‚เบ”เบเปƒเบŠเป‰ 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-web

เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”: เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡ 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 เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบกเบดเบ”เบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰. เบžเบฝเบ‡เปเบ•เปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบŠเบธเบ” setroubleshoot เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.

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

เบเบฐเบฅเบธเบ™เบฒเบฎเบฑเบšเบŠเบฒเบšเบงเปˆเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเป€เบ›เบตเบ”เบ„เบทเบ™เปƒเปเปˆเบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰, เปเบฅเบฐเบšเปเปˆเปƒเบŠเป‰ systemctl, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฐเบกเบตเบฅเบฐเบšเบปเบšเปƒเบ™ OS เบเปเบ•เบฒเบก. เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบ—เบถเบเบฅเบฐเบšเบปเบš เบˆเบฐเบ–เบทเบเบŠเบตเป‰เบšเบญเบ เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡, เปเบ•เปˆเบเบฑเบ‡เป€เบซเบ”เบœเบปเบ™เปเบฅเบฐ เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเบŠเบฐเบ™เบฐเบเบฒเบ™เบซเป‰เบฒเบก.

เบฅเบฐเบšเบปเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž 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