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

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

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

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

"ื“ื™ ื•ื•ื™ื›ื˜ื™ืง ืืžืช ืึทื– ื“ื™ ื˜ื™ื ื’ื– ื–ืขื ืขืŸ ื ื™ืฉื˜ ืฉื˜ืขื ื“ื™ืง ื•ื•ืึธืก ื–ื™ื™ ื•ื™ืกืงื•ืžืขืŸ ืื™ื– ืคึผืจืึธืกื˜ ื•ื•ื™ืกืŸ ..."

-ื“ืึธื•ื’ืœืึทืก ืึทื“ืึทืžืก, ื“ื™ ื›ื™ื˜ืฉื›ื™ืงืขืจ ื’ื™ื™ื“ ืฆื• ื“ื™ ื’ืึทืœืึทืงืกื™

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

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

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

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

2. ื“ื™ ืฆื•ื•ื™ื™ ืžืขืจืกื˜ ื•ื•ื™ื›ื˜ื™ืง ืงืึทื ืกืขืคึผืก ื–ืขื ืขืŸ: ืœื™ื™ื‘ืœื™ื ื’ - ืžืึทืจืงื™ื ื’ื– (ืคื™ืœืขืก, ืคึผืจืึทืกืขืกืึทื–, ืคึผืึธืจืฅ, ืืื–"ื• ื•) ืื•ืŸ ื˜ื™ืคึผ ืขื ืคืึธืจืกืžืึทื ื˜ (ื•ื•ืึธืก ื™ื™ืกืึทืœื™ื™ืฅ ืคึผืจืึทืกืขืกืึทื– ืคื•ืŸ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื˜ื™ื™ืคึผืก).

3. ืจื™ื›ื˜ื™ืง ืคื™ืจืžืข ืคึฟืึธืจืžืึทื˜ user:role:type:level (ืึทืคึผืฉืึทื ืึทืœ).

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

5. ื™ื ืฉื•ืจื™ื ื’ ืžืึทืœื˜ื™-ืงืื˜ืขื’ืืจื™ืข ื–ื™ื›ืขืจื”ื™ื™ื˜ (ืžื•ืœื˜ื™-ืงืื˜ืขื’ืืจื™ืข ื–ื™ื›ืขืจื”ื™ื™ื˜ - MCS) ืคึผืจืึทื˜ืขืงืฅ ืขื ืœืขืš ืคึผืจืึทืกืขืกืึทื– ืคื•ืŸ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ (ืœืžืฉืœ, ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ, OpenShift ืขื ื“ื–ืฉืึทื ื–, SELinux ื–ืึทืžื“ื‘ืึธืงืกืขืก, ืงืึทื ื˜ื™ื™ื ืขืจื–, ืืื–"ื• ื•).

6. ืงืขืจื ืขืœ ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ ื˜ืฉืึทื ื’ื™ื ื’ SELinux ืžืึธื“ืขืก ื‘ื™ื™ ืฉื˜ื™ื•ื•ืœ:

  • autorelabel=1 โ†’ ื– ื“ื™ ืกื™ืกื˜ืขื ืฆื• ืœื•ื™ืคืŸ ืจืขืœืึทื‘ืขืœื™ื ื’
  • selinux=0 โ†’ ื“ืขืจ ืงืขืจืŸ ื˜ื•ื˜ ื ื™ืฉื˜ ืœืึธื“ืŸ ื“ื™ SELinux ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ
  • enforcing=0 โ†’ ืœืึธื•ื“ื™ื ื’ ืื™ืŸ ืคึผืขืจืžื™ืกื™ื•ื• ืžืึธื“ืข

7. ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจื™ืœื™ื™ื‘ืœ ื“ื™ ื’ืื ืฆืข ืกื™ืกื˜ืขื:

# touch /.autorelabel
#reboot

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

8. ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืื•ื™ื‘ SELinux ืื™ื– ืขื ื™ื™ื‘ืึทืœื“: # getenforce

9. ืฆื• ื˜ืขืžืคึผืขืจืขืจืึทืœื™ ื’ืขื‘ืŸ / ื“ื™ืกื™ื™ื‘ืึทืœ SELinux: # setenforce [1|0]

ืงืกื ื•ืžืงืก. ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ SELinux ืกื˜ืึทื˜ื•ืก: # sestatus

ืงืกื ื•ืžืงืก. ืงืึธื ืคื™ื’ื•ืจืึทื˜ื™ืึธืŸ ื˜ืขืงืข: /etc/selinux/config

ืงืกื ื•ืžืงืก. ื•ื•ื™ ืึทื–ื•ื™ ืึทืจื‘ืขื˜ SELinux? ื“ืึธ ืื™ื– ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืžืึทืจืงื™ื ื’ ืคึฟืึทืจ ื“ื™ ืึทืคึผืึทื˜ืฉื™ ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ:

  • ื‘ื™ื™ื ืขืจื™ ืคืึทืจื˜ืจืขื˜ื•ื ื’: /usr/sbin/httpdโ†’httpd_exec_t
  • ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ: /etc/httpdโ†’httpd_config_t
  • ืงืœืึธืฅ ื˜ืขืงืข ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ: /var/log/httpd โ†’ httpd_log_t
  • ืื™ื ื”ืึทืœื˜ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ: /var/www/html โ†’ httpd_sys_content_t
  • ืึธื ื”ื™ื™ื‘ ืฉืจื™ืคื˜: /usr/lib/systemd/system/httpd.service โ†’ httpd_unit_file_d
  • ืคึผืจืึธืฆืขืก: /usr/sbin/httpd -DFOREGROUND โ†’ httpd_t
  • ืคืืจื˜ืก: 80/tcp, 443/tcp โ†’ httpd_t, http_port_t

ืคึผืจืึธืฆืขืก ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ืงืึธื ื˜ืขืงืกื˜ httpd_t, ืงืขื ืขืŸ ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ืึท ืœื™ื™ื‘ืึทืœื“ ื›ื™ื™ืคืขืฅ httpd_something_t.

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

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

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

ืงืกื ื•ืžืงืก. ืขืก ื–ืขื ืขืŸ ืคื™ืจ ื”ื•ื™ืคึผื˜ ืกื™ื‘ื•ืช ืคื•ืŸ SELinux ืขืจืจืึธืจืก, ื•ื•ืึธืก ื–ืขื ืขืŸ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ ืžืขืจ ื“ืขื˜ืึทืœ ืื™ืŸ ืคื•ื ืงื˜ืŸ 15-21 ืื•ื ื˜ืŸ:

  • ืœื™ื™ื‘ืœื™ื ื’ ื™ืฉื•ื–
  • ื•ื•ื™ื™ึทืœ ืคื•ืŸ ืขืคึผืขืก ื•ื•ืึธืก SELinux ื“ืึทืจืฃ ื•ื•ื™ืกืŸ
  • ื˜ืขื•ืช ืื™ืŸ SELinux ืคึผืึธืœื™ื˜ื™ืง / ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ
  • ื“ื™ื™ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืงืขืŸ ื–ื™ื™ืŸ ืงืึทืžืคึผืจืึทืžื™ื™ื–ื“

ืงืกื ื•ืžืงืก. ืœื™ื™ื‘ืœื™ื ื’ ืคึผืจืึธื‘ืœืขื: ืื•ื™ื‘ ื“ื™ื™ืŸ ื˜ืขืงืขืก ื–ืขื ืขืŸ ืื™ืŸ /srv/myweb ื–ืขื ืขืŸ ื ื™ืฉื˜ ืจื™ื›ื˜ื™ืง ืื ื’ืขืฆื™ื™ื›ื ื˜, ื“ืขืจ ืฆื•ื˜ืจื™ื˜ ืงืขืŸ ื–ื™ื™ืŸ ื’ืขืœื™ื™ืงื ื˜. ื“ืึธ ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ื•ื•ืขื’ืŸ ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ ื“ืขื:

  • ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืกืŸ ื“ื™ ืคื™ืจืžืข:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืกืŸ ืึท ื˜ืขืงืข ืžื™ื˜ ืขืงื•ื•ื™ื•ื•ืึทืœืขื ื˜ ืžืึทืจืงื™ื ื’ื–:
    # semanage fcontext -a -e /srv/myweb /var/www
  • ืจื™ืกื˜ืึธืจื™ื ื’ ื“ืขื ืงืึธื ื˜ืขืงืกื˜ (ืคึฟืึทืจ ื‘ื™ื™ื“ืข ืงืึทืกืขืก):
    # restorecon -vR /srv/myweb

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

  • ื˜ื•ื™ืฉืŸ ื“ื™ ืงืึธื ื˜ืขืงืกื˜ ื‘ืึทืคึฟืขืœ ืžื™ื˜ ื“ื™ ืคื™ืจืžืข:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • ื˜ื•ื™ืฉืŸ ื“ื™ ืงืึธื ื˜ืขืงืกื˜ ื‘ืึทืคึฟืขืœ ืžื™ื˜ ื“ื™ ืœื™ื ืง ืคื™ืจืžืข:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • ื•ืžืงืขืจืŸ ื“ืขื ืงืึธื ื˜ืขืงืกื˜ (ืคึฟืึทืจ ื‘ื™ื™ื“ืข ืงืึทืกืขืก): # restorecon -vR /var/www/html/

ืงืกื ื•ืžืงืก. ืฆื™ SELinux ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื•ื•ื™ืกืŸืึทื– HTTPD ืื™ื– ืฆื•ื’ืขื”ืขืจื˜ ืื•ื™ืฃ ืคึผืึธืจื˜ 8585, ื–ืึธื’ืŸ SELinux:

# semanage port -a -t http_port_t -p tcp 8585

ืงืกื ื•ืžืงืก. SELinux ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื•ื•ื™ืกืŸ ื‘ืึธืึธืœืขืึทืŸ ื•ื•ืึทืœื•ืขืก ื•ื•ืึธืก ืœืึธื–ืŸ ื˜ื™ื™ืœืŸ ืคื•ืŸ ื“ื™ SELinux ืคึผืึธืœื™ื˜ื™ืง ืฆื• ื–ื™ื™ืŸ ื˜ืฉื™ื™ื ื“ื–ืฉื“ ืื™ืŸ ืจื•ื ื˜ื™ืžืข ืึธืŸ ื•ื•ื™ืกืŸ ืคื•ืŸ ื“ื™ SELinux ืคึผืึธืœื™ื˜ื™ืง ืื™ื– ืึธื•ื•ื•ืขืจืจื™ื˜ืึทืŸ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ httpd ืฆื• ืฉื™ืงืŸ ื‘ืœื™ืฆืคึผืึธืกื˜, ืึทืจื™ื™ึทืŸ: # setsebool -P httpd_can_sendmail 1

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

  • ืฆื• ื–ืขืŸ ืึทืœืข ื‘ื•ืœื™ืึทืŸ ื•ื•ืึทืœื•ืขืก: # getsebool -a
  • ืฆื• ื–ืขืŸ ืึท ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื™ืขื“ืขืจ: # semanage boolean -l
  • ืฆื• ืฉื˜ืขืœืŸ ืึท ื‘ื•ืœื™ืึทืŸ ื•ื•ืขืจื˜: # setsebool [_boolean_] [1|0]
  • ืคึฟืึทืจ ืึท ืฉื˜ืขื ื“ื™ืง ื™ื™ึทื ืžืึธื ื˜ื™ืจื•ื ื’, ืœื™ื™ื’ืŸ -P. ืฆื•ื ื‘ื™ื™ืฉืคึผื™ืœ: # setsebool httpd_enable_ftp_server 1 -P

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

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

ืขืคึฟืขื ืขืŸ ื˜ื™ืงื™ืฅ (ื˜ืึธืŸ ื ื™ื˜ ืคืึธืจืœื™ื™ื’ืŸ ืึท ื‘ืึทืจื™ื›ื˜ ืฆื• Bugzilla; Bugzilla ื”ืื˜ ืงื™ื™ืŸ SLA).

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

  • ืœืึธื“ืŸ ืงืขืจืŸ ืžืึทื“ื–ืฉื•ืœื–
  • ื“ื™ืกื™ื™ื‘ืึทืœ ืขื ืคืึธืจืกื˜ SELinux ืžืึธื“ืข
  • ืฉืจื™ื™ื‘ ืฆื• etc_t/shadow_t
  • ื˜ื•ื™ืฉืŸ ื“ื™ ื›ึผืœืœื™ื ืคื•ืŸ ื™ืคึผื˜ืึทื‘ืœืขืก

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

# yum -y install setroubleshoot setroubleshoot-server

ืจืขื‘ืึธืึธื˜ ืึธื“ืขืจ ืจื™ืกื˜ืึทืจื˜ auditd ื ืึธืš ื™ื™ึทื ืžืึธื ื˜ื™ืจื•ื ื’.

ืงืกื ื•ืžืงืก. ื ื™ืฆืŸ

journalctl

ืฆื• ื•ื•ื™ื™ึทื–ืŸ ืึท ืจืฉื™ืžื” ืคื•ืŸ ืึทืœืข ืœืึธื’ืก ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ setroubleshoot:

# journalctl -t setroubleshoot --since=14:20

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

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

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

Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e

# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.

***** Plugin restorecon (99.5 confidence) suggests ************************

If you want to fix the label,
/var/www/html/index.html default label should be httpd_syscontent_t.
Then you can restorecon.
Do
# /sbin/restorecon -v /var/www/html/index.html

ืงืกื ื•ืžืงืก. ืœืึธื’ื™ื ื’: SELinux ืจืขืงืึธืจื“ื™ืจื˜ โ€‹โ€‹ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื™ืŸ ืคื™ืœืข ืขืจื˜ืขืจ:

  • / ื•ื•ืึทืจ / ืงืœืึธืฅ / ืึทืจื˜ื™ืงืœืขืŸ
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

ืงืกื ื•ืžืงืก. ืœืึธื’ื™ื ื’: ื–ื•ื›ืŸ ืคึฟืึทืจ SELinux ืขืจืจืึธืจืก ืื™ืŸ ื“ื™ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืงืœืึธืฅ:

# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

ืงืกื ื•ืžืงืก. ืฆื• ื’ืขืคึฟื™ื ืขืŸ SELinux ืึทืงืกืขืก ื•ื•ืขืงื˜ืึธืจ ืงืึทืฉ (AVC) ืึทืจื˜ื™ืงืœืขืŸ ืคึฟืึทืจ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื“ื™ื ืกื˜:

# ausearch -m avc -c httpd

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

  • ืฆื• ืฉืึทืคึฟืŸ ืึท ืžืขื ื˜ืฉ-ืœื™ื™ื ืขื•ื•ื“ื™ืง ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื•ื•ืึธืก ืึทืงืกืขืก ืื™ื– ื’ืขืœื™ื™ืงื ื˜: # audit2allow -w -a
  • ืฆื• ื–ืขืŸ ืึท ื˜ื™ืคึผ ืขื ืคืึธืจืกืžืึทื ื˜ ื”ืขืจืฉืŸ ื•ื•ืึธืก ืึทืœืึทื•ื– ื’ืขืœื™ื™ืงื ื˜ ืึทืงืกืขืก: # audit2allow -a
  • ืฆื• ืฉืึทืคึฟืŸ ืึท ืžื ื”ื’ ืžืึธื“ื•ืœืข: # audit2allow -a -M mypolicy
  • ืึธืคึผืฆื™ืข -M ืงืจื™ื™ื™ืฅ ืึท ื˜ื™ืคึผ ืขื ืคืึธืจืกืžืึทื ื˜ ื˜ืขืงืข (.ื˜ืข) ืžื™ื˜ ื“ื™ ืกืคึผืขืกืึทืคื™ื™ื“ ื ืึธืžืขืŸ ืื•ืŸ ืงืึทืžืคึผื™ื™ืœื– ื“ื™ ื”ืขืจืฉืŸ ืื™ืŸ ืึท ืคึผืึธืœื™ื˜ื™ืง ืคึผืขืงืœ (.ืคึผืคึผ): mypolicy.pp mypolicy.te
  • ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืึท ืžื ื”ื’ ืžืึธื“ื•ืœืข: # semodule -i mypolicy.pp

ืงืกื ื•ืžืงืก. ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืคึผืจืึธืฆืขืก ( ืคืขืœื“) ืฆื• ืึทืจื‘ืขื˜ืŸ ืื™ืŸ ืคึผืขืจืžื™ืกื™ื•ื• ืžืึธื“ืข: # semanage permissive -a httpd_t

ืงืกื ื•ืžืงืก. ืื•ื™ื‘ ืื™ืจ ื ื™ื˜ ืžืขืจ ื•ื•ื™ืœืŸ ื“ื™ ืคืขืœื“ ืฆื• ื–ื™ื™ืŸ ืคึผืขืจืžื™ืกื™ื•ื•: # semanage permissive -d httpd_t

ืงืกื ื•ืžืงืก. ืฆื• ื“ื™ืกื™ื™ื‘ืึทืœ ืึทืœืข ืคึผืขืจืžื™ืกื™ื•ื• ื“ืึธื•ืžื™ื™ื ื–: # semodule -d permissivedomains

ืงืกื ื•ืžืงืก. ืขื ื™ื™ื‘ืึทืœื™ื ื’ MLS SELinux ืคึผืึธืœื™ื˜ื™ืง: # yum install selinux-policy-mls
ะฒ /etc/selinux/config:

SELINUX=permissive
SELINUXTYPE=mls

ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– SELinux ืื™ื– ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ืคึผืขืจืžื™ืกื™ื•ื• ืžืึธื“ืข: # setenforce 0
ื ื™ืฆืŸ ืึท ืฉืจื™ืคื˜ fixfilesืฆื• ืขื ืฉื•ืจ ืึทื– ื“ื™ ื˜ืขืงืขืก ื–ืขื ืขืŸ ืจืขืœืึทื‘ืขืœืขื“ ืื•ื™ืฃ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืจืขื‘ืึธืึธื˜:

# fixfiles -F onboot # reboot

ืงืกื ื•ืžืงืก. ืฉืึทืคึฟืŸ ืึท ื‘ืึทื ื™ืฆืขืจ ืžื™ื˜ ืึท ืกืคึผืขืฆื™ืคื™ืฉ MLS ืงื™ื™ื˜: # useradd -Z staff_u john

ื ื™ืฆืŸ ื“ื™ ื‘ืึทืคึฟืขืœ useradd, ืžืึทืคึผืข ื“ื™ ื ื™ื™ึทืข ื‘ืึทื ื™ืฆืขืจ ืฆื• ืึทืŸ ื™ื’ื–ื™ืกื˜ื™ื ื’ SELinux ื‘ืึทื ื™ืฆืขืจ (ืื™ืŸ ื“ืขื ืคืึทืœ, staff_u).

ืงืกื ื•ืžืงืก. ืฆื• ื–ืขืŸ ื“ื™ ืžืึทืคึผื™ื ื’ ืฆื•ื•ื™ืฉืŸ SELinux ืื•ืŸ Linux ื ื™ืฆืขืจืก: # semanage login -l

ืงืกื ื•ืžืงืก. ื“ืขืคื™ื ื™ืจืŸ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืงื™ื™ื˜ ืคึฟืึทืจ ื“ื™ ื‘ืึทื ื™ืฆืขืจ: # semanage login --modify --range s2:c100 john

ืงืกื ื•ืžืงืก. ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ ื“ืขื ื‘ืึทื ื™ืฆืขืจ 'ืก ื”ื™ื™ื ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืคื™ืจืžืข (ืื•ื™ื‘ ื ื™ื™ื˜ื™ืง): # chcon -R -l s2:c100 /home/john

ืงืกื ื•ืžืงืก. ืฆื• ื–ืขืŸ ืงืจืึทื ื˜ ืงืึทื˜ืขื’ืึธืจื™ืขืก: # chcat -L

ืงืกื ื•ืžืงืก. ืฆื• ื˜ื•ื™ืฉืŸ ืงืึทื˜ืขื’ืึธืจื™ืขืก ืึธื“ืขืจ ืึธื ื”ื™ื™ื‘ืŸ ืงืจื™ื™ื™ื˜ื™ื ื’ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข, ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ื˜ืขืงืข ื•ื•ื™ ื’ื™ื™ื˜:

/etc/selinux/_<selinuxtype>_/setrans.conf

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

# runcon -t initrc_t -r system_r -u user_u yourcommandhere

  • -t ื˜ืขืงืข ืงืึธื ื˜ืขืงืกื˜
  • -r ืจืึธืœืข ืงืึธื ื˜ืขืงืกื˜
  • -u ื‘ืึทื ื™ืฆืขืจ ืงืึธื ื˜ืขืงืกื˜

ืงืกื ื•ืžืงืก. ืงืึทื ื˜ื™ื™ื ืขืจื– ืžื™ื˜ SELinux ืคืึทืจืงืจื™ืคึผืœื˜:

  • ืคืื“ืžืืŸ: # podman run --security-opt label=disable โ€ฆ
  • ื“ืึธืงืงืขืจ: # docker run --security-opt label=disable โ€ฆ

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

  • ืคืื“ืžืืŸ: # podman run --privileged โ€ฆ
  • ื“ืึธืงืงืขืจ: # docker run --privileged โ€ฆ

ืื•ืŸ ืื™ืฆื˜ ืื™ืจ ืฉื•ื™ืŸ ื•ื•ื™ืกืŸ ื“ื™ ืขื ื˜ืคืขืจ. ืึทื–ื•ื™ ื‘ื™ื˜ืข: ื˜ืึธืŸ ื ื™ื˜ ืคึผืึทื ื™ืง ืื•ืŸ ื’ืขื‘ืŸ SELinux.

ืœื™ื ืงืก:

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

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