了解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:使用者臨時檔案的,所有的程序都可以通路。