ืชืจืืื ืืืืืจ ืืืื ืืืืืื ืขืืืจ ืชืืืืื ืืงืืจืก
ืืื ืชืงืืื ืชืฉืืืืช ืืฉืืืืช ืืฉืืืืช ืขื ืืืืื, ืืืงืื ืืืื ืืืื ืืงืก ืขื ืืืืื ืืฉืืคืจืช.
"ืืืืช ืืืฉืืื ืฉืืืจืื ืื ืื ืชืืื ืื ืฉืื ื ืจืืื ืืื ืืืข ื ืคืืฅ..."
-ืืืืืก ืืืืืก, ืืืจืื ืืืจืืคืืกื ืืืืงืกืื
ืึผึฐืึดืืืึผืช. ืืืื ืืช ืืืืืจืช. ืึดืชืึผึทืชึฐืืึผืช. ืึฐืึดืื ึดืืึผืช. ืืจืืขืช ืคืจืฉื ืืืคืืงืืืคืกื ืกืืกืืืื. ืื ืืกืฃ ืืืฉืืืืช ืืืืืืืืืืช ืฉืื ื - ื ืืืืจ, ืืืืื, ืืืืขื, ืชืฆืืจื, ืขืืืื ืืื' - ืื ื ืืืจืืื ืื ืขื ืืืืืช ืืืขืจืืืช ืฉืื ื. ืืคืืื ืืืขืจืืืช ืฉืืื ืกืคืง ืืฆื ืืฉืืืฉื ืืืืืฅ ืฉื ืฉืืืช ืืช ืืืืืื ืืืฉืืคืจืช. ืื ืืจืืืฉ ืืื ืขืืืื
ืืื ืืืืืื ืืื, ืืื ืื ืืื ืืขืจืืช ืืืืืืื ืืงืืช
ืืจืื ืืืจืื ืืืจืืคืืกื ืืืืงืกืื, ืื ื 42 ืชืฉืืืืช ืืฉืืืืช ืืฉืืืืช ืื ืืฉื ืฉืืืื ืืฉืืืืฉ.
1. SELinux ืืื ืืขืจืืช ืืงืจืช ืืืฉื ืืืืืฆืช, ืื ืฉืืืืจ ืฉืืื ืชืืืื ืืฉ ืชืืืืช. ืืื ืงืืืฅ, ืกืคืจืืื ืืืืืืืงื ืืขืจืืช ืืฉ ืื ืชืืืืืช. ืืืื ืืืื ืืืช ืฉืืืืื ืืืืฉื ืืื ืชืืืืืื ืืืืืืืงืืื ืืชืืืืื. ืืงืจื ื ืืืืฃ ืืช ืืืืืื ืืืื.
2. ืฉื ื ืืืืฉืืื ืืืฉืืืื ืืืืชืจ ืื: ืชืืื - ืกืืืื ืื (ืงืืฆืื, ืชืืืืืื, ืืฆืืืืช ืืื') ื ืกืื ืืืืคื (ืื ืฉืืืืื ืชืืืืืื ืืื ืืืฉื ื ืขื ืคื ืืืคืืกืื).
3. ืคืืจืื ืชืืืืช ื ืืื user:role:type:level
(ืืืคืฆืืื ืืื).
4. ืืืืจื ืฉื ืืชื ืืืืื ืืจืืืช ืจืืืช (ืืืืื ืจื-ืฉืืืชืืช - MLS) ืืื ืื ืื ืชืืืืืื (ืืืืืื ืื) ืขื ืกืื ืจืืช ืืืืืื ืฉื ืื ืชืื ืื ืฉืื ืืฉืชืืฉื ืืื. ืืืืืื, ืชืืืื ืกืืื ืืื ื ืืืื ืืงืจืื ื ืชืื ืื ืกืืืืื ืืืืชืจ.
5. ืืืืืช ืืืืื ืืจืืืช ืงืืืืจืืืช (ืืืืื ืืจืืืช ืงืืืืจืืืช - MCS) ืืื ืขื ืชืืืืืื ืืืืื ืื ืืื (ืืืืืื, ืืืื ืืช ืืืจืืืืืืืช, ืื ืืขื OpenShift, ืืจืืื ืืื ืฉื SELinux, ืงืื ืืืื ืจืื ืืื').
6. ืืคืฉืจืืืืช ืืืื ืืฉืื ืื ืืฆืื SELinux ืืืชืืื:
autorelabel=1
โ ืืืจื ืืืขืจืืช ืืืคืขืื ืชืืื ืืืืฉselinux=0
โ ืืงืจื ื ืืื ื ืืืขื ืืช ืชืฉืชืืช SELinuxenforcing=0
โ ืืขืื ื ืืืฆื ืืชืืจื ื
7. ืื ืืชื ืฆืจืื ืืชืืื ืืืืฉ ืืช ืืืขืจืืช ืืืื:
# touch /.autorelabel
#reboot
ืื ืกืืืื ืืืขืจืืช ืืืื ืืกืคืจ ืจื ืฉื ืฉืืืืืช, ืืืชืื ืฉืืืื ืขืืื ืืืชืื ืืืฆื ืืชืืจื ื ืืื ืฉืืกืืืื ืืฆืืื.
8. ืืื ืืืืืง ืื SELinux ืืืคืขื: # getenforce
9. ืืื ืืืคืขืื/ืืืฉืืืช ืืื ืืช ืืช SELinux: # setenforce [1|0]
10. ืืืืงืช ืกืืืืก SELinux: # sestatus
11. ืงืืืฅ ืชืฆืืจื: /etc/selinux/config
12. ืืื SELinux ืขืืื? ืืืื ืกืืืื ืืืืืื ืขืืืจ ืฉืจืช ืืืื ืืจื ื ืฉื Apache:
- ืืืฆืื ืืื ืืจื:
/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
.
13. ืคืงืืืืช ืจืืืช ืืงืืืืช ืืืขืื -Z
ืืื ืืืฆืื, ืืืฆืืจ ืืืฉื ืืช ืืงืฉืจ:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
ืืงืฉืจืื ื ืืฆืจืื ืืืฉืจ ืงืืฆืื ื ืืฆืจืื ืขื ืกืื ืืืงืฉืจ ืฉื ืกืคืจืืืช ืืื ืฉืืื (ืืืขื ืืจืืืื ืืกืืืืื). RPMs ืืืืืื ืืืฆืืจ ืืงืฉืจืื ืืื ืืืืื ืืืชืงื ื.
14. ืืฉื ื ืืจืืข ืกืืืืช ืขืืงืจืืืช ืืฉืืืืืช SELinux, ืืืชืืืจืืช ืืืชืจ ืคืืจืื ืื ืงืืืืช 15-21 ืืืื:
- ืืขืืืช ืชืืื
- ืืืื ืืฉืื ืฉSELinux ืฆืจืื ืืืขืช
- ืฉืืืื ืืืืื ืืืช/ืืืฉืื ืฉื SELinux
- ืืืชืื ืฉืืืืืข ืฉืื ื ืคืืข
15. ืืขืืืช ืชืืื: ืื ืืงืืฆืื ืฉืื ื ืืฆืืื /srv/myweb
ืืกืืื ืื ืืฆืืจื ืฉืืืื, ืืืชืื ืฉืืืืฉื ืชืืืื. ืื ื ืืื ืืจืืื ืืชืงื ืืช ืื:
- ืื ืืชื ืืืืจ ืืช ืืชืืืืช:
# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
- ืื ืืชื ืืืืจ ืงืืืฅ ืขื ืกืืืื ืื ืืงืืืืื:
# semanage fcontext -a -e /srv/myweb /var/www
- ืฉืืืืจ ืืืงืฉืจ (ืืฉื ื ืืืงืจืื):
# restorecon -vR /srv/myweb
16. ืืขืืืช ืชืืื: ืื ืชืขืืืจ ืืช ืืงืืืฅ ืืืงืื ืืืขืชืืง ืืืชื, ืืงืืืฅ ืืฉืืืจ ืขื ืืืงืฉืจ ืืืงืืจื ืฉืื. ืืื ืืชืงื ืืขืื ืื:
- ืฉื ื ืืช ืคืงืืืช ืืืงืฉืจ ืขื ืืชืืืืช:
# 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/
17. ืื SELinux ืืชื ืฆืจืื ืืืขืชืฉ-HTTP ืืงืฉืื ืืืฆืืื 8585, ืืืืจ ื-SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18. SELinux ืืชื ืฆืจืื ืืืขืช ืขืจืืื ืืืืืื ืืื ืืืืคืฉืจืื ืืฉื ืืช ืืืงืื ืืืืื ืืืช SELinux ืืืื ืจืืฆื ืืืื ืฉืืืืคืก ืืืื ืืืช SELinux. ืืืืืื, ืื ืืชื ืจืืฆื ืฉ-httpd ืืฉืื ืืื"ื, ืืื: # setsebool -P httpd_can_sendmail 1
19. SELinux ืืชื ืฆืจืื ืืืขืช ืขืจืืื ืืืืืื ืืืคืขืื/ืืฉืืชื ืฉื ืืืืจืืช SELinux:
- ืืื ืืจืืืช ืืช ืื ืืขืจืืื ืืืืืืื ืืื:
# getsebool -a
- ืืื ืืจืืืช ืชืืืืจ ืฉื ืื ืืื:
# semanage boolean -l
- ืืื ืืืืืืจ ืขืจื ืืืืืื ื:
# setsebool [_boolean_] [1|0]
- ืืืชืงื ื ืงืืืขื, ืืืกืฃ
-P
. ืืืืืื:# setsebool httpd_enable_ftp_server 1 -P
20. ืืืื ืืืช/ืืืฉืืื SELinux ืขืฉืืืื ืืืืื ืฉืืืืืช, ืืืื:
- ื ืชืืื ืงืื ืืืฆืื ืืืคื
- ืชืฆืืจืืช
- ืืคื ื ืืืืฉ ืกืืout
- ืืืืคืืช ืืชืืจ ืืงืืืฅ
- ืืืืจืื ืืจ ืืคืขืื
- ืกืคืจืืืช ืฉื ืื ื ืืฆืืจื ืืจืืขื
ืืจืืืกืื ืคืชืืืื (ืืื ืืืืืฉ ืืืืื ืืืืืืืื; ืืืืืืืื ืืื SLA).
21. ืืืชืื ืฉืืืืืข ืฉืื ื ืคืืขืื ืืฉ ืื ืืืืืื ืื ืืืืืืื ืฉืื ืกืื:
- ืืขื ืืืืืื ืืืื
- ืืฉืืช ืืช ืืฆื SELinux ืืคืื
- ืืืชืื ื
etc_t/shadow_t
- ืฉื ื ืืืื iptables
22. ืืื SELinux ืืคืืชืื ืืืืืื ืืืื ืืืช:
# yum -y install setroubleshoot setroubleshoot-server
ืืคืขื ืืืืฉ ืื ืืคืขื ืืืืฉ auditd
ืืืจื ืืืชืงื ื.
23. ืืฉืชืืฉ
journalctl
ืืื ืืืฆืื ืจืฉืืื ืฉื ืื ืืืืื ืื ืืืฉืืืืื ืืืืื setroubleshoot
:
# journalctl -t setroubleshoot --since=14:20
24. ืืฉืชืืฉ journalctl
ืืจืฉืืืช ืื ืืืืื ืื ืืืฉืืืืื ืืชื SELinux ืกืคืฆืืคื. ืืืืืื:
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. ืื ืืชืจืืฉืช ืฉืืืืช 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
26. ืจืืฉืื: SELinux ืืชืขื ืืืืข ืืืงืืืืช ืจืืื:
- / var / log / ืืืืขืืช
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. ืจืืฉืื: ืืืคืืฉ ืฉืืืืืช SELinux ืืืืื ืืืืงืืจืช:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. ืืื ืืืฆืื ืืืืขืืช SELinux Access Vector Cache (AVC) ืขืืืจ ืฉืืจืืช ืกืคืฆืืคื:
# ausearch -m avc -c httpd
29. ืฉืืจืืช audit2allow
ืืืกืฃ ืืืืข ืืืืื ืื ืฉื ืคืขืืืืช ืืกืืจืืช ืืืืืจ ืืื ืืืฆืจ ืืืื ืืืื ืืืช ืืจืฉืืืช SELinux. ืืืืืื:
- ืืื ืืืฆืืจ ืชืืืืจ ืงืจืื ืื ืืฉื ืฉื ืืืืข ื ืืืชื ืืืฉื:
# audit2allow -w -a
- ืืื ืืืฆืื ืืื ืืืืคื ืืกืื ืืืืคืฉืจ ืืืฉื ื ืืืชื:
# audit2allow -a
- ืืื ืืืฆืืจ ืืืืื ืืืชืื ืืืฉืืช:
# audit2allow -a -M mypolicy
- ืืคืฉืจืืช
-M
ืืืฆืจ ืงืืืฅ ืืืืคื ืืกืื (.te) ืขื ืืฉื ืฉืฆืืื ืืืจืืื ืืช ืืืื ืืืืืืช ืืืื ืืืช (.pp):mypolicy.pp mypolicy.te
- ืืื ืืืชืงืื ืืืืื ืืืชืื ืืืฉืืช:
# semodule -i mypolicy.pp
30. ืืื ืืืืืืจ ืชืืืื ื ืคืจื (ืืืืืื) ืืขืืื ืืืฆื ืืชืืจื ื: # semanage permissive -a httpd_t
31. ืื ืืื ื ืจืืฆื ืขืื ืฉืืืืืืื ืืืื ืืชืืจื ื: # semanage permissive -d httpd_t
32. ืืื ืืืฉืืืช ืืช ืื ืืืืืืื ืื ืืืชืืจืื: # semodule -d permissivedomains
33. ืืคืขืืช ืืืื ืืืช MLS SELinux: # yum install selinux-policy-mls
ะฒ /etc/selinux/config:
SELINUX=permissive
SELINUXTYPE=mls
ืืื ืฉ-SELinux ืคืืขื ืืืฆื ืืชืืจื ื: # setenforce 0
ืืฉืชืืฉ ืืกืงืจืืคื fixfiles
ืืื ืืืืืื ืฉืืงืืฆืื ืืกืืื ื ืืืืฉ ืืืชืืื ืืื:
# fixfiles -F onboot # reboot
34. ืฆืืจ ืืฉืชืืฉ ืขื ืืืื MLS ืกืคืฆืืคื: # useradd -Z staff_u john
ืฉืืืืฉ ืืคืงืืื useradd
, ืืคื ืืช ืืืฉืชืืฉ ืืืืฉ ืืืฉืชืืฉ SELinux ืงืืื (ืืืงืจื ืื, staff_u
).
35. ืืฆืคืืื ืืืืคืื ืืื ืืฉืชืืฉื SELinux ื-Linux: # semanage login -l
36. ืืืืจ ืืืื ืกืคืฆืืคื ืขืืืจ ืืืฉืชืืฉ: # semanage login --modify --range s2:c100 john
37. ืืื ืืชืงื ืืช ืชืืืืช ืกืคืจืืืช ืืืืช ืฉื ืืืฉืชืืฉ (ืืืืืช ืืฆืืจื): # chcon -R -l s2:c100 /home/john
38. ืืื ืืืฆืื ืงืืืืจืืืช ื ืืืืืืช: # chcat -L
39. ืืื ืืฉื ืืช ืงืืืืจืืืช ืื ืืืชืืื ืืืฆืืจ ืงืืืืจืืืช ืืฉืื, ืขืจืื ืืช ืืงืืืฅ ืืืืคื ืืื:
/etc/selinux/_<
selinuxtype>
_/setrans.conf
40. ืืื ืืืคืขืื ืคืงืืื ืื ืกืงืจืืคื ืืงืืืฅ, ืชืคืงืื ืืืงืฉืจ ืกืคืฆืืคื ืฉื ืืฉืชืืฉ:
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-t
ืืงืฉืจ ืฉื ืงืืืฅ-r
ืืงืฉืจ ืชืคืงืื-u
ืืงืฉืจ ืืฉืชืืฉ
41. ืืืืืื ืืคืืขืืื ืขื SELinux ืืืฉืืช:
- ืคืืืื:
# podman run --security-opt label=disable โฆ
- ืืืงืจ:
# docker run --security-opt label=disable โฆ
42. ืื ืืชื ืฆืจืื ืืชืช ืืืืื ืืืฉื ืืืื ืืืขืจืืช:
- ืคืืืื:
# podman run --privileged โฆ
- ืืืงืจ:
# docker run --privileged โฆ
ืืขืืฉืื ืืชื ืืืจ ืืืืข ืืช ืืชืฉืืื. ืื ืืืงืฉื: ืื ืชืืืื ืืืคืขื ืืช SELinux.
ืงืืฉืืจืื:
SELinux byืื ืืืืฉ ืื ืืืืจืื ืืืืืชื ืฉืื ืืืืืคืช ืืืื ืืืช SELinux ืืืช ืื ืืืืฉLinux ืืฉืืคืจืช ืืืืืื ืขืืืจ ืื ื ืชืืืชื ืืืื byืชืืืืก ืงืืจืื ืกืคืจ ืืฆืืืขื SELinux byืืืืจืื ืืืคื ืืืจืื ืืืฉืชืืฉ ืืื ืื ืฉื SELinux - Red Hat Enterprise Linux 7
ืืงืืจ: www.habr.com