ααΆαααααααα’ααααααααααΆααααα
ααααααΆαααα·αααα·ααααααα·ααααΆ
SELinux α¬ Security Enhanced Linux ααΊααΆααααααΆααααα½ααα·αα·αααααΆαα
αΌαααααΎαααααααΌαααΆααααααα’αααααααΌαααΆααααααΎαα‘αΎααααααΈααααΆααααΆαααααα·αα»αααΆαα·αα ααααα’αΆαααα·α (NSA) ααΎααααΈααΆαααΆαααΆαααααΆαααΆααααααΆααααα·αα’αΆαααααα ααΆα’αα»ααααααααΌαααα½ααα·αα·αααααΆαα
αΌαααααΎαααααααα (α¬ααΆααΆαααααα·α
αα
) (ααΆααΆα’αααααααααΆααΆαααααα·α
αα
ααΆααααααααααααΆαα
αΌαααααΎααΆα
αΆαααΆα
α MAC) αα
ααΎααααΌαααααααΌαααααΆαααααΆαα (α¬ααααΎαααΎα) (ααΆααΆα’ααααααα ααΆααααααααααααΆαα
αΌαααααΎααΆαααααα
α
α·ααα DAC) αααααΊααΆαα’αα»ααααΆαα±ααα’αΆα ααααα ααααα·ααααα·α
SELinux ααΆαααΈααααα
- ααΆαα’αα»αααα - ααΆαααα·αααααΆαα αΌαααααΎαααααα’ααααΎα αααΆααααααααααΆαα
- ααΆαα’αα»ααααΆα - αααααΆαααααα ααα»αααααααααΆααααααααΆααααααΆααα αααααΉαααααΌαααΆαα αΆαααΆαααα αααα»αααααα’αα»ααααα
- αααα·ααΆα - ααΆααα·αααΆαααααα»ααα SELinux α
ααΆαααααΆαααΎαααΆααααααααΊαα
αααα»α /etc/selinux/config
ααΆαααααΆααααααΌααααα SELinux
ααΎααααΈααααααααααΈαααααα αα α»αααααα ααΌαααααΎαααΆα
$ getenforce
ααΎααααΈααααΌααααααα α’αα»ααααΆα αααααΆααααααααΆααΆαααααα
$ setenforce 0
α¬ααααΌαααααααΈ α’αα»ααααΆα αα ααΎ α’αα»αααα, vypolnite
$ setenforce 1
ααααα·αααΎα’αααααααΌαααΆααα·α SELinux ααΆαααααα»αααα ααΆα’αΆα ααααΎααΆαααααΆααααα―αααΆαααααααα ααΆααααααααααα»αααααα
$ vi /etc/selinux/config
ααΎααααΈαα·α ααααΆααααααΌααααΆαααΆαααααα SELINUX ααΌα ααΆααααααα
SELINUX=disabled
ααΆαααα‘αΎα SELinux
α―αααΆα αα·αααααΎαααΆαααΈαα½ααααααΌαααΆααααααΆαααααααα·αα SELinux αααααΆαααααααΆαααααααααΌα ααΆ α’αααααααΎααααΆαα αα½ααΆααΈ ααααααααΆααΎαα ααααα·αααΎαααααΆααΎαααΈαα½αααααα’ααααααααΎα SELinux ααααΌαα’αααααααΌαααααααα ααΆααααααααααα·αα αα·αααααΆαα ααααΎαααΆαααααΆααααααααααΆα αα·αααα·ααααααΌαααΆαααααααΆααααΆααΆααΆαααΆααααααΆαα ααΎααααΈα αΆααααααΎααααααΆαα αα αααα»αα―αααΆαααααααα ααΆαααααααα ααΎαααααΌααααααα α’αα»ααααΆα.
$ vi /etc/selinux/config
SELINUX=permissive
αααααΆααααΈααααααααα α’αα»ααααΆααααααΎαα―αααΆαααΆααααααα½ααα
αααα»α root αααααααΎααααα 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 α‘αΎααα·αα
α§ααΆα ααα:
α§αααΆααΆααΎαα
ααα
ααααααα home directory ααααα’αααααααΎααΆαααα FTP read/write α αΎαααΎαααΆαα
αααααααααΆαα½α
α αΎα ααα»αααααα
ααααααααΎαααααΆααΆαα
αΌαααααΎ ααΎααα·αααΎαα’αααΈαααααα αααααΊαααααΆααααααααΆααα 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 ααααααΎαααΉαα’αΆα
α
αΌαααααΎααααααααααα’αααααααΎααΆαα
α
αααΆαα α’αααααα’αΆα
ααα½αααΆααααααΈα§αααααααααΌααααααΆααααααααΆαααΆααα·αααααΆαααααααΎ getsebool -a
2. ααααΆα αα·αααα·αα
αααααΊααΆαα·ααΈααΆαααααααα»ααααα»αααΆαα’αα»ααααααααααααΆα SELinux α ααΆααα―αααΆα ααα―αααΆα ααααΎαααΆα αα·αα αααααααΌαααΆααααααΆαααααααα·αα SELinuxα
- αααααΆααα―αααΆα αα·αααα―αααΆα ααααΆαααααΌαααΆααααααΆαα»αααΆαα»ααααααααααααααα
ααΎααααααααα―αααΆα α αΎαα’αΆα
ααΎαααΆααααααααΎααΆααααααααΆααΆααααααα
$ ls -Z /etc/httpd
- αααααΆααααααΎαααΆα αα·αα ααα ααΆαααΆααααααΆαααααΌαααΆαααααααααααααααΊααα α αΎαα’αααα’αΆα ααΎαααααΆαααΆαααααααΌα ααΆααααααα
ααααΎαααΆα
$ ps βauxZ | grep httpd
α ααα
$ netstat -anpZ | grep httpd
α§ααΆα ααα:
α₯α‘αΌαααα ααΌααααα‘ααααΎαα§ααΆα ααα ααΎααααΈαααααΆααααα
αααΆααα’αααΈααααΆα αα·αααα·ααα α§αααΆααΆααΎαααΆα web server ααααααα½αα±αααα /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) ααΎααα·αα·αααααα α»α αα·ααααααΎααααααΆααααααααΆαααα½αααα
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