ααΆαααααααα’αααααααααΌαααΆααααα
αααΆαα·ααααααααΆαααα·ααααααααααα·ααααΆ
αα
ααΈααα α’αααααΉαααα½αααΆαα
ααααΎαα
αααααααα½αααααΆαααα’αααΈααΈαα·α αααααα αα·αα’αααΈαααααααααΆααα
αααα»αααΈαα»α
ααΆαα½αααΉααα»ααααα·ααΆααααααΎαα‘αΎαα
βααΆααα·αααααΆαααααα’αααΈααα·ααααααααΌα α’αααΈααααα½αααα αΆααααΌα ααΆα ααααααΉαααΌαα β¦β
-ααα Douglas Adams, ααααα»ααααααααααα Hitchhiker αα ααΆαα Galaxy
αα»ααααα·ααΆαα αααααΎαααΆαααΏααΆααα ααΆαβααααΎαααααα ααααααααΆαα Horsemen αα½αααΆαααα Apocalypse sysadmin α ααααααααΈααΎαα·α
αα
ααΆααααα
αΆαααααααααααΎα - ααΆααααα½ααα·αα·ααα ααΆαααααα»ααα»α ααΆαα’αα»αααα ααΆαααααααα
ααΆαααααααα ααΆαααααΎαα
αα
α»ααααααααΆαααα - ααΎαααααα½ααα»αααααΌαα
αααααα»ααααα·ααΆαααααααααααααααααΎααααααα ααΌααααΈβααβααααααααβααΆααβαααβαααβα’αααβαααααβααΆααΈβααΈβααΈβααααΆαβααΆβααΎαβαα·αβαα»ααααα·ααΆαβαααβααΆαβαααααΉαα ααΆααΆαα’αΆααααααααΌα
ααΆααΆαααΆα
ααααααα»αααΉααααα αΆααα α’αααααααααααααααααααααα½αα
ααα½ααααααα
α
α·αααααα½ααα
αα
αααα»αααααΆαααΈαα The Hitchhiker's Guide to the Galaxy αααααΊααΆα
ααααΎαα
ααα½α 42 α
αααααααα½αααααΆαααα’αααΈααΆαααααααααα αα·αααΆαααααΎααααΆααα
1. SELinux ααΊααΆαααααααααααααααααααΆαα αΌααααααααα αααααΆααααααΆααΆααααααΎαααΆαααΆααα’ααααΆαααααΆααα½αα α―αααΆα αα αα·αααααα»ααααααααααΈαα½ααααααΆαααααΆααααααα α αααΆαααααααΆααααααααααααααΆαα αΌαααααΎαααΆαααααΎαααΆααααααΆαααΆααααααΆα αα·αααααα»α ααΊαααα’αα»ααααα αααΆααααΆαααααα
2. ααααααα·αααααΆααααΈαααΊα ααΆαααΆααααααΆαα - ααΆααααααΆαα (α―αααΆα ααααΎαααΆα α αααααα) αα·α ααααααααααΆαα’αα»αααα (ααααααααααΎαααΆαααΈααααΆαα αα·ααα αααααααα’ααααΎαααααα) α
3. ααααααααααΆαααααΉαααααΌαα user:role:type:level
(ααααα
α
α·ααα)α
4. αααααααααααΆααααααααααα·αα»ααα α»ααααα·α (ααααα·αα»ααα α»ααααα·α - MLS) ααΊααΎααααΈαααααααααααααΎαααΆα (ααα) αααααα’ααααΎααααα·ααα»ααααα·ααΆααααα·ααααααααααα½αααααΉαααααΎααααΆααα α§ααΆα ααα ααααΎαααΆααααααΆαααα·αα’αΆα α’αΆααα·αααααααααααΆααααααΌαααΆαααα
5. ααΆααΆαα»ααααα·ααΆαα αααΎααααααα (ααααα·αα»αα αααΎααααααα - MCS) ααΆαααΆαααααΎαααΆαααααααααααΆααΈααααΆαα αα·ααα αα (α§ααΆα ααα αααΆαααΈααα·αααα·α αααΆαααΈα OpenShift αααα’ααααααΆα α SELinux αα»αααα)α
6. αααααΎαααΊααααααααΆααααααΆααααααΌααααα SELinux αα αααα αΆααααααΎαα
autorelabel=1
β αααααΆαα±ααααααααααααααΎαααΆα relabelingselinux=0
β ααΊααααα·ααααα»αα αααααΆαα ααΆαααααααα SELinux αααenforcing=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 α’αααααααΌαααΉαααΆ HTTPD αααα»αααααΆαααα ααΎα ααα 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 α’αΆα ααΆαααα α»α αα½αααΆααα
- ααααΌαααΌααα·αααααααΆ
- ααΆαααααααα ααΆαααααααα
- αααααΌααααα stdout
- ααα ααααΆαα―αααΆααα·αααααΆ
- α’αααα αα αΆααααα’αΆα ααααα·ααααα·ααΆαα
- αααααΆααααααααΆαααααα·αααα’
ααΎααααα»ααα (αα»αααΆαααααΆαααΆααααα Bugzilla; Bugzilla αα·αααΆα 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α
# podman run --security-opt label=disable β¦
- α’αααα
α:
# docker run --security-opt label=disable β¦
42. ααααα·αααΎα’αααααααΌαααΆααααααα±αααα»αααΊαααα αΌαααααΎαααΆαααααααααααααααα
- Podmanα
# podman run --privileged β¦
- α’αααα
α:
# docker run --privileged β¦
α αΎαα₯α‘αΌααααα’αααααΉαα ααααΎααα½α α αΎαα ααΌα ααααααΌαα αα»ααααααααααααα α αΎαααΎα SELinux α
α―αααΆαααα:
SELinux byDan Walsh ααΆαααααΆαα’αααΈαααααααααΎαααΎαααααα’ααααααααΆααααΆαα’αα»ααααααααααααΆα SELinux αααααα ααα Dan WalshSecurity Enhanced Linux αααααΆααααααΆααααααΆααα»αααααααΆααααα»αααααα byααΌαααΆαααΆααααΌα ααααα ααα SELinux byαααΆααααΈααΈ ααααα»αααααααααααα’αααααααΎ αα·αα’αααααααααααα SELinux-Red Hat Enterprise Linux 7
ααααα: www.habr.com