ื ืึธื ื”ื™ื™ื‘ืขืจ ื’ื™ื™ื“ ืฆื• SELinux

ื ืึธื ื”ื™ื™ื‘ืขืจ ื’ื™ื™ื“ ืฆื• SELinux

ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืฆื•ื’ืขื’ืจื™ื™ื˜ ืคึฟืึทืจ ืงื•ืจืก ืกื˜ื•ื“ืขื ื˜ืŸ "ืœื™ื ื•ืงืก ื–ื™ื›ืขืจื”ื™ื™ื˜"

SELinux ืึธื“ืขืจ Security Enhanced Linux ืื™ื– ืึทืŸ ืขื ื›ืึทื ืกื˜ ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ ืžืขืงืึทื ื™ื–ืึทื ื“ืขื•ื•ืขืœืึธืคึผืขื“ ื“ื•ืจืš ื“ื™ ื™ื•. ืขืก. ื ืึทืฉืึทื ืึทืœ ืกืขืงื•ืจื™ื˜ื™ ืึทื’ืขื ืกื™ (NSA) ืฆื• ืคืึทืจืžื™ื™ึทื“ืŸ ื‘ื™ื™ื–ืข ื™ื ื˜ืจื•ื–ืฉืึทื ื–. ืขืก ื™ืžืคึผืœืึทืžืึทื ืฅ ืึท ื’ืขืฆื•ื•ื•ื ื’ืขืŸ (ืึธื“ืขืจ ืžืึทื ื“ืึทื˜ืึธืจื™) ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ ืžืึธื“ืขืœ (ืขื ื’ืœื™ืฉ ืžืึทื ื“ืึทื˜ืึธืจื™ ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ, MAC) ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ ื“ื™ ื™ื’ื–ื™ืกื˜ื™ื ื’ ื“ื™ืกืงืจืขืฉืึทื ืขืจื™ (ืึธื“ืขืจ ืกืขืœืขืงื˜ื™ื•ื•) ืžืึธื“ืขืœ (ืขื ื’ืœื™ืฉ ื“ื™ืกืงืจืขืฉืึทื ืขืจื™ ืึทืงืกืขืก ืงืึธื ื˜ืจืึธืœ, DAC), ื“ืึธืก ืื™ื–, ืคึผืขืจืžื™ืฉืึทื ื– ืฆื• ืœื™ื™ืขื ืขืŸ, ืฉืจื™ื™ึทื‘ืŸ, ื•ื™ืกืคื™ืจืŸ.

SELinux ื”ืื˜ ื“ืจื™ื™ ืžืึธื“ืขืก:

  1. ืขื ืคืึธืจืกื™ื ื’ - ืฆื•ื˜ืจื™ื˜ ืึธืคึผืœื™ื™ืงืขื ื•ื ื’ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืคึผืึธืœื™ื˜ื™ืง ื›ึผืœืœื™ื.
  2. ืคึผืขืจืžื™ืกื™ื•ื• - ื”ืึทืœื˜ืŸ ืึท ืงืœืึธืฅ ืคื•ืŸ ืึทืงืฉืึทื ื– ื•ื•ืึธืก ืึธื ืจื™ืจืŸ ื“ื™ ืคึผืึธืœื™ื˜ื™ืง, ื•ื•ืึธืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืคึผืจืึธื•ื›ื™ื‘ืึทื˜ืึทื“ ืื™ืŸ ื“ื™ ืขื ืคืึธืจืกื™ื ื’ ืžืึธื“ืข.
  3. Disabled - ื’ืึทื ืฅ ื“ื™ืกื™ื™ื‘ืึทืœื™ื ื’ ืคื•ืŸ SELinux.

ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ื“ื™ ืกืขื˜ื˜ื™ื ื’ืก ื–ืขื ืขืŸ ืื™ืŸ /etc/selinux/config

ื˜ืฉืึทื ื’ื™ื ื’ SELinux ืžืึธื“ืขืก

ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืงืจืึทื ื˜ ืžืึธื“ืข, ืœื•ื™ืคืŸ

$ getenforce

ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ืžืึธื“ืข ืฆื• ืคึผืขืจืžื™ืกื™ื•ื•, ืœื•ื™ืคืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ

$ setenforce 0

ืึธื“ืขืจ, ืฆื• ื˜ื•ื™ืฉืŸ ืžืึธื“ืข ืคื•ืŸ ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ ืื•ื™ืฃ ืขื ืคืึธืจืกื™ื ื’, ื•ื•ื™ืคึผืึธืœื ื™ื˜ืข

$ setenforce 1

ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื’ืึธืจ ื“ื™ืกื™ื™ื‘ืึทืœ SELinux, ื“ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ื‘ืœื•ื™ื– ื“ื•ืจืš ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืข

$ vi /etc/selinux/config

ืฆื• ื“ื™ืกื™ื™ื‘ืึทืœ, ื˜ื•ื™ืฉืŸ ื“ื™ SELINUX ืคึผืึทืจืึทืžืขื˜ืขืจ ื•ื•ื™ ื’ื™ื™ื˜:

SELINUX=disabled

ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ SELinux

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

$ vi /etc/selinux/config
SELINUX=permissive

ื ืึธืš ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ืขื ืžืึธื“ืข ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ, ืฉืึทืคึฟืŸ ืึท ืœื™ื™ื“ื™ืง ืคืึทืจื‘ืึธืจื’ืŸ ื˜ืขืงืข ืื™ืŸ ื“ืขืจ ื•ื•ืึธืจืฆืœ ืžื™ื˜ ื“ืขื ื ืึธืžืขืŸ autorelabel

$ touch /.autorelabel

ืื•ืŸ ืจื™ืกื˜ืึทืจื˜ ื“ื™ ืงืึธืžืคึผื™ื•ื˜ืขืจ

$ init 6

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

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

$ setenforce 1

ืื™ืจ ื”ืึธื˜ ื”ืฆืœื—ื” ืขื ื™ื™ื‘ืึทืœื“ SELinux ืื•ื™ืฃ ื“ื™ื™ืŸ ืงืึธืžืคึผื™ื•ื˜ืขืจ.

ืžืึธื ื™ื˜ืึธืจื™ื ื’ ื“ื™ ืœืึธื’ืก

ืื™ืจ ืงืขืŸ ื”ืึธื‘ืŸ ื’ืขืคึผืœืึธื ื˜ืขืจื˜ ืขื˜ืœืขื›ืข ืขืจืจืึธืจืก ื‘ืขืฉืึทืก ืžืึทืจืงื™ื ื’ ืึธื“ืขืจ ื‘ืฉืขืช ื“ื™ ืกื™ืกื˜ืขื ืื™ื– ืคืœื™ืกื ื“ื™ืง. ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืื•ื™ื‘ ื“ื™ื™ืŸ SELinux ืึทืจื‘ืขื˜ ืจื™ื›ื˜ื™ืง ืื•ืŸ ืื•ื™ื‘ ืขืก ืื™ื– ื ื™ืฉื˜ ื‘ืœืึทืงื™ื ื’ ืึทืงืกืขืก ืฆื• ืงื™ื™ืŸ ืคึผืึธืจื˜, ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืืื–"ื• ื•, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงื•ืงืŸ ืื™ืŸ ื“ื™ ืœืึธื’ืก. ื“ื™ SELinux ืงืœืึธืฅ ืื™ื– ืœื™ื’ืŸ ืื™ืŸ /var/log/audit/audit.log, ืึธื‘ืขืจ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ืขื ืขืŸ ื“ื™ ื’ืื ืฆืข ื–ืึทืš ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืขืจืจืึธืจืก. ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ื™ audit2why ื ื•ืฆืŸ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืขืจืจืึธืจืก. ืœื•ื™ืคืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:

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

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

ืงืึทื ืคื™ื’ื™ืขืจ SELinux ืคึผืึธืœื™ื˜ื™ืง

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

1. ืœืึทื“ื–ืฉื™ืงืึทืœ ื•ื•ืึทืœื•ืขืก (ืกื•ื•ื™ื˜ืฉื™ื–)

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

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

$ 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

ืื™ืฆื˜ ืื•ื ื“ื–ืขืจ ืคื˜ืคึผ ื“ื™ื™ืžืึทืŸ ื•ื•ืขื˜ ืงืขื ืขืŸ ืฆื• ืึทืงืกืขืก ื“ื™ ื‘ืึทื ื™ืฆืขืจ 'ืก ื”ื™ื™ื ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ.
ื‘ืึทืžืขืจืงื•ื ื’: ืื™ืจ ืงืขื ื˜ ืื•ื™ืš ื‘ืึทืงื•ืžืขืŸ ืึท ืจืฉื™ืžื” ืคื•ืŸ ืคืึทืจืึทื ืขืŸ ืกื•ื•ื™ื˜ืฉื™ื– ืึธืŸ ืึท ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ getsebool -a

2. ืœืึทื‘ืขืœืก ืื•ืŸ ืงืึธื ื˜ืขืงืกื˜

ื“ืึธืก ืื™ื– ื“ื™ ืžืขืจืกื˜ ืคึผืจืึธืกื˜ ื•ื•ืขื’ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ SELinux ืคึผืึธืœื™ื˜ื™ืง. ื™ืขื“ืขืจ ื˜ืขืงืข, ื˜ืขืงืข, ืคึผืจืึธืฆืขืก ืื•ืŸ ืคึผืึธืจื˜ ืื™ื– ืื ื’ืขืฆื™ื™ื›ื ื˜ ืžื™ื˜ ื“ื™ SELinux ืงืึธื ื˜ืขืงืกื˜:

  • ืคึฟืึทืจ ื˜ืขืงืขืก ืื•ืŸ ืคืึธืœื“ืขืจืก, ืœืึทื‘ืขืœืก ื–ืขื ืขืŸ ืกื˜ืึธืจื“ ื•ื•ื™ ืขืงืกื˜ืขื ื“ืขื“ ืึทื˜ืจื™ื‘ื™ื•ืฅ ืื•ื™ืฃ ื“ื™ ื˜ืขืงืข ืกื™ืกื˜ืขื ืื•ืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื•ื•ื™ื•ื“ ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:
    $ ls -Z /etc/httpd
  • ืคึฟืึทืจ ืคึผืจืึทืกืขืกืึทื– ืื•ืŸ ืคึผืึธืจืฅ, ื“ื™ ืœื™ื™ื‘ืœื™ื ื’ ืื™ื– ื’ืขืจืื˜ืŸ ื“ื•ืจืš ื“ื™ ืงืขืจืŸ, ืื•ืŸ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ืœืึทื‘ืขืœืก ื•ื•ื™ ื’ื™ื™ื˜:

ืคึผืจืึธืฆืขืก

$ ps โ€“auxZ | grep httpd

port

$ 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'

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

ื ืึธืš ื“ืขื ืงืึธื ื˜ืขืงืกื˜ ืื™ื– ืคืืจืขื ื“ืขืจื˜ ืžื™ื˜ ืกืขืžืึทื ืึทื’ืข, ื“ื™ ืจืขืกื˜ืึธืจืขืงืึธืŸ ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ืœืึธื“ืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ืงืึธื ื˜ืขืงืกื˜ ืคึฟืึทืจ ื˜ืขืงืขืก ืื•ืŸ ื“ื™ื™ืจืขืงื˜ืขืจื™ื–. ืื•ื ื“ื–ืขืจ ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ ื•ื•ืขื˜ ืื™ืฆื˜ ืงืขื ืขืŸ ืฆื• ืœื™ื™ืขื ืขืŸ ื˜ืขืงืขืก ืคึฟื•ืŸ ื“ืขืจ ื˜ืขืงืข /home/dan/htmlื•ื•ื™ื™ึทืœ ื“ื™ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืงืึธื ื˜ืขืงืกื˜ ืคึฟืึทืจ ื“ืขื ื˜ืขืงืข ืื™ื– ื’ืขื‘ื™ื˜ืŸ ืฆื• httpd_sys_content_t.

3. ืฉืึทืคึฟืŸ ื”ื™ื’ืข ืคึผืึทืœืึทืกื™ื–

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

ืื™ืจ ืงืขื ืขืŸ ืžืึทื›ืŸ ืึท ื”ื™ื’ืข ืคึผืึธืœื™ื˜ื™ืง ืฆื• ืกืึธืœื•ื•ืข ืขืจืจืึธืจืก. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ืึท ื˜ืขื•ืช ืฉื™ื™ึทื›ื•ืช ืฆื• httpd (ืึทืคึผืึทื˜ืฉื™) ืึธื“ืขืจ smbd (samba), ืžื™ืจ ื’ืจืขืคึผ ื“ื™ ืขืจืจืึธืจืก ืื•ืŸ ืฉืึทืคึฟืŸ ืึท ืคึผืึธืœื™ื˜ื™ืง ืคึฟืึทืจ ื–ื™ื™:

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 ืึธื“ืขืจ ื“ื™ื ื™ื™ืœ ืื™ืŸ audit.log.

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

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

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