เบ„เบนเปˆเบกเบทเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ SELinux

เบ„เบนเปˆเบกเบทเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ SELinux

เบเบฒเบ™โ€‹เปเบ›โ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบเบฐโ€‹เบเบฝเบกโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ™เบฑเบโ€‹เบฎเบฝเบ™โ€‹เบซเบผเบฑเบโ€‹เบชเบนเบ”โ€‹ "เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž Linux"

SELinux เบซเบผเบท Security Enhanced Linux เปเบกเปˆเบ™เบเบปเบ™เป„เบเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบตเปˆเบ›เบฑเบšเบ›เบธเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเบญเบปเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเปเบซเปˆเบ‡เบŠเบฒเบ”เบชเบฐเบซเบฐเบฅเบฑเบ” (NSA) เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™เบšเบธเบเบฅเบธเบเบ—เบตเปˆเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบ. เบกเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบšเบšเบšเบฑเบ‡เบ„เบฑเบš (เบซเบผเบทเบšเบฑเบ‡เบ„เบฑเบš) เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ (เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ” Mandatory Access Control, MAC) เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆ (เบซเบผเบทเป€เบฅเบทเบญเบ) เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง (เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ” Discretionary Access Control, DAC), เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบญเปˆเบฒเบ™, เบ‚เบฝเบ™, เบ›เบฐเบ•เบดเบšเบฑเบ”.

SELinux เบกเบตเบชเบฒเบกเป‚เบซเบกเบ”:

  1. เบเบฒเบ™เบšเบฑเบ‡เบ„เบฑเบšเปƒเบŠเป‰ โ€” เบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ™เบฐเป‚เบเบšเบฒเบ.
  2. เบญเบฐเบ™เบธเบเบฒเบ” โ€” เบเบฒเบ™โ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบเบฐโ€‹เบ—เปเบฒโ€‹เบ—เบตเปˆโ€‹เบฅเบฐโ€‹เป€เบกเบตเบ”โ€‹เบ™เบฐโ€‹เป‚เบโ€‹เบšเบฒเบโ€‹, เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ–เบทเบโ€‹เบซเป‰เบฒเบกโ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เบšเบฑเบ‡โ€‹เบ„เบฑเบšโ€‹เปƒเบŠเป‰โ€‹.
  3. เบ„เบปเบ™เบžเบดเบเบฒเบ™ - เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ SELinux เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™.

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ /etc/selinux/config

เบเบณเบฅเบฑเบ‡เบ›เปˆเบฝเบ™เป‚เปเบ” SELinux

เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบฎเบนเบšเปเบšเบšเบ›เบฐเบˆเบธเบšเบฑเบ™, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™

$ getenforce

เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เป‚เบซเบกเบ”เป€เบžเบทเปˆเบญเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰

$ setenforce 0

เบซเบผเบท, เบ›เปˆเบฝเบ™เบฎเบนเบšเปเบšเบšเบˆเบฒเบ permissive เบชเบธเบ” เบšเบฑเบ‡เบ„เบฑเบš, เบ›เบฐเบ•เบดเบšเบฑเบ”

$ setenforce 1

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ SELinux เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบœเปˆเบฒเบ™เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ

$ vi /etc/selinux/config

เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™, เปƒเบซเป‰เบ›เปˆเบฝเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต SELINUX เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

SELINUX=disabled

เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ SELinux

เปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ–เบทเบเบซเบกเบฒเบเบ”เป‰เบงเบเบšเปเบฅเบดเบšเบปเบ” SELinux, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบŠเบฑเปˆเบ™: เบœเบนเป‰เปƒเบŠเป‰, เบšเบปเบ”เบšเบฒเบ”, เบ›เบฐเป€เบžเบ”, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบ–เป‰เบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เบฑเป‰เบ‡เบ—เบณเบญเบดเบ”เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเป€เบ›เบตเบ”เปƒเบŠเป‰ SELinux, เบเปˆเบญเบ™เบญเบทเปˆเบ™เปเบปเบ”เป€เบˆเบปเป‰เบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบณเบ™เบปเบ”เบ„เปˆเบฒเบšเปเบฅเบดเบšเบปเบ” เปเบฅเบฐเบ›เป‰เบฒเบเบเบณเบเบฑเบš. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบกเบญเบšเปเบฒเบเบ›เป‰เบฒเบเบเบณเบเบฑเบš เปเบฅเบฐเบšเปเบฅเบดเบšเบปเบ”เปเบกเปˆเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบเบฒเบ™เบ•เบดเบ”เปเบ—เบฑเบ. เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบซเบกเบฒเบ, เปƒเบ™เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เบฎเบนเบšเปเบšเบšเป€เบ›เบฑเบ™ permissive.

$ vi /etc/selinux/config
SELINUX=permissive

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป‚เบซเบกเบ” permissive, เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบขเบนเปˆเปƒเบ™เบฎเบฒเบเบ—เบตเปˆเบกเบตเบŠเบทเปˆ autorelabel

$ touch /.autorelabel

เปเบฅเบฐเบ›เบดเบ”เป€เบ›เบตเบ”เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ„เบทเบ™เปƒเปเปˆ

$ init 6

เบซเบกเบฒเบเป€เบซเบ”: เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เป‚เบซเบกเบ” permissive เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเปเบšเบš เบšเบฑเบ‡เบ„เบฑเบš เบญเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบšเบปเบšเบ‚เบฑเบ”เบ‚เป‰เบญเบ‡เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบดเบ”เป€เบ›เบตเบ”เปƒเปเปˆ.

เบšเปเปˆเบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เบซเปˆเบงเบ‡เบ–เป‰เบฒเบเบฒเบ™เบ”เบฒเบงเป‚เบซเบผเบ”เบ•เบดเบ”เบขเบนเปˆเปƒเบ™เบšเบฒเบ‡เป„เบŸเบฅเปŒ, เบเบฒเบ™เป€เบฎเบฑเบ”เป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเปƒเบŠเป‰เป€เบงเบฅเบฒเป„เบฅเบเบฐเปœเบถเปˆเบ‡. เป€เบกเบทเปˆเบญเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบชเปเบฒเป€เบฅเบฑเบ”เปเบฅเบฐเบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ–เบทเบ booted, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป„เบ›เบ—เบตเปˆเป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบฅเบฐเบเปเบฒเบ™เบปเบ”เป‚เบซเบกเบ” เบšเบฑเบ‡เบ„เบฑเบšเปเบฅเบฐโ€‹เบเบฑเบ‡โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹:

$ setenforce 1

เบ•เบญเบ™เบ™เบตเป‰เบ—เปˆเบฒเบ™เป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰ SELinux เปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเบณเป€เบฅเบฑเบ”เปเบฅเป‰เบง.

เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบเบงเบ”โ€‹เบเบฒโ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹

เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบžเบปเบšเบเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบซเบกเบฒเบเบซเบผเบทเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฅเบฐเบšเบปเบšเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ. เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ SELinux เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบญเบ”, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบšเบดเปˆเบ‡เบšเบฑเบ™เบ—เบถเบ. เบšเบฑเบ™เบ—เบถเบ SELinux เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ /var/log/audit/audit.log, เปเบ•เปˆเบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบญเปˆเบฒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ audit2why utility เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”. เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$ audit2why < /var/log/audit/audit.log

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. เบ–เป‰เบฒเบšเปเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบšเบฑเบ™เบ—เบถเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบˆเบฐเบšเปเปˆเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ”เป†.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบฐเป‚เบเบšเบฒเบ SELinux

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

1. เบ„เปˆเบฒเบ•เบฒเบกเป€เบซเบ”เบœเบปเบ™ (เบชเบฐเบงเบดเบ”)

เบชเบฐเบงเบดเบ” (booleans) เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบ›เปˆเบฝเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™, เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบเปƒเบซเบกเปˆ. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ rebooting เบซเบผเบท recompiling เบ™เบฐเป‚เบเบšเบฒเบ SELinux.

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

$ semanage boolean -l

เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบˆเบฐเบชเบฐเปเบ”เบ‡เบฅเบฒเบเบŠเบทเปˆเบชเบฐเบงเบดเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ (เป€เบ›เบตเบ”เบซเบผเบทเบ›เบดเบ”) เปเบฅเบฐเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบก grep เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš ftp เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™:

$ semanage boolean -l | grep ftp

เปเบฅเบฐเบ—เปˆเบฒเบ™เบˆเบฐเบžเบปเบšเป€เบซเบฑเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

เบชเบฐเบงเบดเบ”เบ™เบตเป‰เบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบ›เบตเบ”เปƒเบŠเป‰เบกเบฑเบ™เบ”เป‰เบงเบ setsebool $ setsebool ftp_home_dir on

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ ftp daemon เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบฎเบทเบญเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เป„เบ”เป‰.
เบซเบกเบฒเบเป€เบซเบ”: เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบชเบฐเบซเบงเบดเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเป‚เบ”เบเบšเปเปˆเบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเป‚เบ”เบเบเบฒเบ™เป€เบฎเบฑเบ” getsebool -a

2. เบ›เป‰เบฒเบเบเบณเบเบฑเบš เปเบฅเบฐ เบšเปเบฅเบดเบšเบปเบ”

เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบฐเป‚เบเบšเบฒเบ SELinux. เบ—เบธเบเป†เป„เบŸเบฅเปŒ, เป‚เบŸเบ™เป€เบ”เบต, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ เปเบฅเบฐเบžเบญเบ”เบˆเบฐเบ–เบทเบเปเบฒเบเบ”เป‰เบงเบเบšเปเบฅเบดเบšเบปเบ” SELinux:

  • เบชเบณเบฅเบฑเบšเป„เบŸเบฅเปŒ เปเบฅเบฐเป‚เบŸเบ™เป€เบ”เบตเป‰เบ•เปˆเบฒเบ‡เป†, เบ›เป‰เบฒเบเบเบณเบเบฑเบšเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เป€เบ›เบฑเบ™เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบฐเบซเบเบฒเบเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ เปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป„เบ”เป‰เบ”เป‰เบงเบเบ„เบณเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:
    $ ls -Z /etc/httpd
  • เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบฅเบฐเบžเบญเบ”, เบเบฒเบ™เบ•เบดเบ”เบชเบฐเบซเบผเบฒเบเบ–เบทเบเบˆเบฑเบ”เบเบฒเบ™เป‚เบ”เบ kernel, เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ›เป‰เบฒเบเบŠเบทเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™

$ ps โ€“auxZ | grep httpd

เบ—เปˆเบฒเป€เบฎเบทเบญ

$ netstat -anpZ | grep httpd

เบ•เบปเบงเบขเปˆเบฒเบ‡:
เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ›เป‰เบฒเบเบเบณเบเบฑเบš เปเบฅเบฐเบšเปเบฅเบดเบšเบปเบ”เป„เบ”เป‰เบ”เบตเบ‚เบถเป‰เบ™. เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบ—เบตเปˆ, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต /var/www/html/ ะธัะฟะพะปัŒะทัƒะตั‚ /home/dan/html/. SELinux เบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ™เบตเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เบฅเบฐเป€เบกเบตเบ”เบ™เบฐเป‚เบเบšเบฒเบเปเบฅเบฐเบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบซเบ™เป‰เบฒเป€เบงเบฑเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ”เป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเป„เบŸเบฅเปŒ HTML. เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบšเปเบฅเบดเบšเบปเบ”เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปƒเบซเป‰เปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$ ls โ€“lz /var/www/html
 -rw-rโ€”rโ€”. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš httpd_sys_content_t เป€เบ›เบฑเบ™เบšเปเบฅเบดเบšเบปเบ”เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒ html. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบˆเบธเบšเบฑเบ™เบกเบตเบชเบฐเบžเบฒเบšเบเบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

-rw-rโ€”rโ€”. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบฐเบžเบฒเบšเบเบฒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบซเบผเบทเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต:

$ semanage fcontext -l | grep '/var/www'

เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเปƒเบŠเป‰ semanage เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบšเปเบฅเบดเบšเบปเบ”เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบžเบปเบšเป€เบซเบฑเบ™เบšเปเบฅเบดเบšเบปเบ”เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบšเปเบฅเบดเบšเบปเบ”เบ‚เบญเบ‡ /home/dan/html, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$ semanage fcontext -a -t httpd_sys_content_t โ€˜/home/dan/html(/.*)?โ€™
$ semanage fcontext -l | grep โ€˜/home/dan/htmlโ€™
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html

เบซเบผเบฑเบ‡เบˆเบฒเบเบšเปเบฅเบดเบšเบปเบ”เบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบเปƒเบŠเป‰ semanage, เบ„เปเบฒเบชเบฑเปˆเบ‡ restorecon เบˆเบฐเป‚เบซเบฅเบ”เบšเปเบฅเบดเบšเบปเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเปเบฅเบฐเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต. เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบŸเบฅเปŒเบˆเบฒเบเป‚เบŸเบ™เป€เบ”เบต /home/dan/htmlเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบšเปเบฅเบดเบšเบปเบ”เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบชเปเบฒเบฅเบฑเบšเป‚เบŸเบ™เป€เบ”เบตเบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ httpd_sys_content_t.

3. เบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™

เบญเบฒเบ”เบˆเบฐเบกเบตเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบงเบดเบ—เบตเบเบฒเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เบ•เปเปˆเป€เบˆเบปเป‰เบฒเปเบฅเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” (avc/denial) เปƒเบ™ audit.log. เป€เบกเบทเปˆเบญเบชเบดเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เป‚เบ”เบเปƒเบŠเป‰ audit2why, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš httpd (apache) เบซเบผเบท smbd (samba), เบžเบงเบเป€เบฎเบปเบฒ grep เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบชเป‰เบฒเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ:

apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy

เบกเบฑเบ™เป€เบ›เบฑเบ™ http_policy ะธ smb_policy เปเบกเปˆเบ™เบŠเบทเปˆเบ‚เบญเบ‡เบ™เบฐเป‚เบเบšเบฒเบเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡. เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป‚เบซเบฅเบ”เบ™เบฐเป‚เบเบšเบฒเบเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ™เบฐเป‚เบเบšเบฒเบ SELinux เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$ semodule โ€“I http_policy.pp
$ semodule โ€“I smb_policy.pp

เบ™เบฐเป‚เบเบšเบฒเบเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ–เบทเบเบ”เบฒเบงเป‚เบซเบผเบ”เปเบฅเป‰เบง เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบš avc เบซเบผเบท denail เปƒเบ™ audit.log เบญเบตเบเบ•เปเปˆเป„เบ›.

เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ‚เบญเบ‡เบ‚เป‰เบญเบเบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆ SELinux. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบญเปˆเบฒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบฎเบนเป‰เบชเบถเบเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบเบเบฑเบš SELinux.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™