天天看點

linux安全---selinux安全控制

了解selinux,設定給檔案selinux的安全上下檔案,複制、移動對selinux規則的影響,設定apache、vsftpd的selinux規則

1.了解selinux

1)DAC:指使用者通路資源的控制,即權限

MAC:selinux标簽,限制程序通路資源,程序歸使用者所有;當使用者調用程序去通路資源(file)時,檢查selinux安全标簽,比對了才能通路。

selinux使用selinux使用者、角色、類型和級别控制程序通路資源。

selinux屬性的格式:user:role:type:level

ls  -Z  install.log

-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log

2)selinux使用者:不同于系統使用者,selinux使用者使用selinux政策的一部分,和系統使用者有映射關系,一個系統使用者對應一個selinux映射。semange檢視關系。

semanage user -l

3)角色role:使用者空間,程序的通路範圍标記,如object_r

4)類型或者安全上下文,資源的标記,admin_home_t

5)安全級别:s0最常用

檢視:程序、使用者、檔案的selinux屬性

ps  -eZ  |grep http   ##檢視http程序的selinux

id  -Z   ##目前使用者的selinux設定

ls  -ldZ  /var/www/html  ##檢視http網頁跟目錄的selinux屬性

2.設定檔案的selinux屬性中安全上下文(type)

1)臨時設定

echo 123123  >/var/www/html/index.html

cd  /var/www/html

ls  -Z  index.html   ##TYPE:httpd_sys_content_t,隻允許apache的程序通路,通路測試

chcon -t admin_home_t  index.html   ##通路測試,無法通路到檔案

restorecon  -F  -v  index.html   ##還原selinux屬性,-F表示強制,-v詳細

目錄的selinux設定,在檔案的基礎上加“-R”選項即可。

2)永久生效

文法:semanage  fcontext  -{a|d|m} 檔案  ##-a表示增加,-d删除,-l顯示,-m修改

注意檔案、目錄使用絕對路徑

檔案:

semanage fcontext -a -t httpd_sys_content_t  /web/a.file  ##添加

cat /etc/selinux/targeted/contexts/files/file_contexts.local   ##發現a.file的selinux屬性

restorecon  -v  /web/a.file  ##立即生效,restorecon恢複的依據就是file_contexts.local檔案中的規則。

semanage fcontext -d -t httpd_sys_content_t  /web/a.file  ##删除a.file的selinux屬性,相當于删除了file_contexts.local中的規則,不能使用vi等删除。

restorecon  -F -v  /web/a.file   ##立即生效

目錄:

semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"    ##如果隻寫目錄,目錄下的内容的selinux屬性不會被修改,使用正則比對目錄下的所有内容,"/web(/.*)"

restorecon -R -F -v  /web/  ##立即生效

semanage fcontext -d  -t httpd_sys_content_t "/web(/.*)?"  ##删除

restorecon  -R -F -v  /web/

3.複制、移動對selinux規則的影響

移動:selinux不變,覆寫時會覆寫selinux屬性

mv  /root/index.html  /var/www/html/ 

ls  -Z /var/www/html/index.html   ##selinux未發生變化

cd  /home/

touch index.html

ls -Z /home/index.html   ##檔案的type:home_root_t

mv  /home/index.html  /var/www/html/   

ls  -Z  /var/www/html/index.html   ##selinux被覆寫,type變為home_root_t

複制:使用目标selinux的屬性,覆寫時selinux屬性不變

cp  /root/install.log  /var/www/html  

ls  -Z /var/www/html/install.log  ##selinux的type:httpd_sys_content_t

cp  /root/install.log  /var/www/html/   ##覆寫,selinux屬性不變

注意:對比移動和複制,複制更有利于保持selinux屬性、推薦使用。

4.tar打包備份與selinux;特殊selinux type:file_t,default_t,user_tmp_t

tar打包時預設selinux丢失,使用“--selinux|--xattrs”可以保持selinux屬性。

tar -zcvf /tmp/test-sel.tar.gz /var/www/html/ --selinux

特殊type:

file_t:檔案沒有selinux屬性

default_t:檔案或目錄的selinux與file-context配置檔案定義模式不比對。

兩種類型檔案,設定了selinux屬性的程序都不能通路。

user_tmp_t:使用者臨時檔案的,所有的程序都可以通路。

繼續閱讀