1. 程式人生 > >Linux最後章:selinux

Linux最後章:selinux

基本 SELINUX 安全性概念

SELINUX ( 安全增強型 Linux ) 是可保護你係統安全性的額外機制在某種程度上 , 它可以被看作是與標準許可權系統並行的許可權系統。在常規模式中 , 以使用者身份執行程序 , 並且系統上的檔案和其他資源都設定了許可權 ( 控制哪些使用者對哪些檔案具有哪些訪問權 SELINUX 的另一個不同之處在於 , 若要訪問檔案 ,
你必須具有普通訪問許可權和 SELINUX 訪問許可權。因此 , 即使以超級使用者身份
root 執行程序 , 根據程序以及檔案或資源的 SELinux 安全性上下文可能拒絕訪問檔案或資源限 ) 標籤。

selinux 安全上下文訪問規則
WEB 伺服器的 HTTPD 程序設定了 SELINUX 上下文
system_u:system_r:httpd_t 標籤。該上下文的重要部分是第三個用冒號分隔的欄位 SELINUX 型別 : httpd_t系統上的檔案和資源也設定了 SELINUX 上下文標籤 , 並且重要的部分是 SELINUX 型別。例如 , /var/www/html 中的檔案具有型別 httpd_sys_content_t 。 /tmp 和 /var/tmp 中的檔案通常具有型別 tmp_tSeliux 策略具有允許以 httpd_t 身份執行的程序訪問標記為
httpd_sys_content_t 的檔案的規則。沒有規則允許這些程序訪問標記有 tmp_t 的檔案 , 因此將拒絕這些訪問 , 即使常規檔案許可權指出應該允許這些訪問。

vim /etc/sysconfig/selinux
在這裡插入圖片描述

disabled:

touch /mnt/westos
mv /mnt/westos /var/ftp
ls -Z /var/ftp
ps auxZ | grep vsftpd

在這裡插入圖片描述
在這裡插入圖片描述
lftp 172.25.254.100 -u student #測試:可以上傳,可以刪除

disable–>enforcing核心型加強防火牆
在這裡插入圖片描述
在這裡插入圖片描述
對檔案:

touch /mnt/westos1
mv /mnt/westos1 /var/ftp
ls -Z /var/ftp
ps auxZ | grep vsftpd 
setenforce 0
permissive
cat /var/log/audit/audit.log #檢視警告,還可以訪問但是看不到,有警告

在這裡插入圖片描述在這裡插入圖片描述
不顯示westos1這個目錄,因為安全上下文不匹配,westos1的安全上下文為mnt_t:s0
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

chcon -t public_content_t /var/ftp/westos1 #臨時修改安全上下文為public_content_t 

在這裡插入圖片描述
對目錄

mkdir /westos
touch /westos/westosfile{1..5}
ls -Zd /westos/*
vim /etc/vsftpd/vsftpd.conf
anon_root=/westos
lftp 172.25.254.100 ##不能訪問
sentenforce 0 #permissive時可以訪問
chcon -t public_content_t /westos -R	#更改安全上下文
ls -Zd /westos
lftp 172.25.254.100	#可以訪問

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

#把selinux重啟一次,安全上下文變回default_t
在這裡插入圖片描述
在這裡插入圖片描述
永久更改目錄的安全上下文:

semanage fcontext -l | grep /var/ftp
semanage fcontext -l | grep /westos

semanage fcontext -a -t public_content_t /westos
semanage fcontext -l | grep /westos	##發現只改變了westos目錄的安全上下文
restorencon -RvvF /westos
semanage fcontext -d -t public_content_t /westos
rm -rf /westos
mkdir /westos
touch /westos/file{1..5}

(永久更改目錄的安全上下文)
semanage fcontext -a -t public_content_t '/westos(/.*)?' #-a新增 -t型別
restorecon -RvvF /westos	#  同步 R遞迴 vv顯示過程 F重新整理

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

#sebool 外掛
getsebool -a | grep ftp
ftp_home_dir -->on

setsebool -P ftp_home_dir on 開啟對加目錄控制 本地使用者可以寫可以刪除

full_access 總開關開啟
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

selinux排錯
enforecing狀態下將file1移動到ftp目錄裡,登陸lftp不顯示
在這裡插入圖片描述

vim /var/log/messages
*****  Plugin catchall_boolean (57.6 confidence) suggests   ******************

If you want to allow ftpd to full access
Then you must tell SELinux about this by enabling the 'ftpd_full_access' boolean.

Do
setsebool -P ftpd_full_access 1

*****  Plugin catchall_labels (36.2 confidence) suggests   *******************

If you want to allow vsftpd to have getattr access on the  file
Then you need to change the label on $FIX_TARGET_PATH
Do
# semanage fcontext -a -t FILE_TYPE '$FIX_TARGET_PATH'
#


Then execute:
restorecon -v '$FIX_TARGET_PATH'


*****  Plugin catchall (7.64 confidence) suggests   **************************

If you believe that vsftpd should be allowed getattr access on the  file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
grep vsftpd /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.pp

rpm -qa | grep setroubleshoot
在這裡插入圖片描述
排錯軟體:
setroubleshoot-server-3.2.17-2.el7.x86_64
setroubleshoot-3.2.17-2.el7.x86_64
setroubleshoot-plugins-3.0.59-1.el7.noarch