ืืืืขืจืืขืฆืื ื ืคืื ืืขื ืึทืจืืืงื ืฆืืืขืืจืืื ืคึฟืึทืจ ืงืืจืก ืกืืืืขื ืื
SELinux ืึธืืขืจ Security Enhanced Linux ืืื ืึทื ืขื ืืึทื ืกื ืึทืงืกืขืก ืงืึธื ืืจืึธื ืืขืงืึทื ืืืึทื ืืขืืืขืืึธืคึผืขื ืืืจื ืื ืื. ืขืก. ื ืึทืฉืึทื ืึทื ืกืขืงืืจืืื ืึทืืขื ืกื (NSA) ืฆื ืคืึทืจืืืึทืื ืืืืืข ืื ืืจืืืฉืึทื ื. ืขืก ืืืคึผืืึทืืึทื ืฅ ืึท ืืขืฆืืืื ืืขื (ืึธืืขืจ ืืึทื ืืึทืืึธืจื) ืึทืงืกืขืก ืงืึธื ืืจืึธื ืืึธืืขื (ืขื ืืืืฉ ืืึทื ืืึทืืึธืจื ืึทืงืกืขืก ืงืึธื ืืจืึธื, MAC) ืืืืฃ ืฉืคึผืืฅ ืคืื ืื ืืืืืกืืื ื ืืืกืงืจืขืฉืึทื ืขืจื (ืึธืืขืจ ืกืขืืขืงืืืื) ืืึธืืขื (ืขื ืืืืฉ ืืืกืงืจืขืฉืึทื ืขืจื ืึทืงืกืขืก ืงืึธื ืืจืึธื, DAC), ืืึธืก ืืื, ืคึผืขืจืืืฉืึทื ื ืฆื ืืืืขื ืขื, ืฉืจืืึทืื, ืืืกืคืืจื.
SELinux ืืื ืืจืื ืืึธืืขืก:
- ืขื ืคืึธืจืกืื ื - ืฆืืืจืื ืึธืคึผืืืืงืขื ืื ื ืืืืืจื ืืืืฃ ืคึผืึธืืืืืง ืึผืืืื.
- ืคึผืขืจืืืกืืื - ืืึทืืื ืึท ืงืืึธืฅ ืคืื ืึทืงืฉืึทื ื ืืืึธืก ืึธื ืจืืจื ืื ืคึผืึธืืืืืง, ืืืึธืก ืืืึธืื ืืืื ืคึผืจืึธืืืืืึทืืึทื ืืื ืื ืขื ืคืึธืจืกืื ื ืืึธืืข.
- 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