SElinux是基於內核開發出來的一種安全機制,被稱之爲內核級加強型防火牆,有力的提升了系統的安全性。
SElinux的作用分爲兩方面:1.在服務上面加上標籤; 2.在功能上面限制功能
在linux系統中使用getenforce命令可以查看selinux的狀態:
Disabled爲關閉狀態,對服務和功能都沒有限制
Enforcing爲強制狀態,對服務和功能都進行限制
Permissive爲警告狀態,服務和功能可以使用,但會收到警告信息,可視爲對安全的提示
在selinux開啓狀態時,可使用setenforce 0|1 來調整selinux的狀態,0爲警告狀態,1爲強制狀態,如下圖所示:
selinux的狀態在配置文件/etc/sysconfig/selinux中也可以設置:
由於selinux是基於內核開發的,所以改變狀態以後,需要重啓內核,也就是關機以後才能夠生效
在selinux開啓的狀態下,可以看到文件的安全上下文的標籤:
輸入ls -Z 可以看到目錄下的文件和目錄的安全上下文標籤:
輸入 ls -dZ 可以看到目錄的上下文標籤:
這個時候,匿名用戶登陸本機的ftp,是可以看到目錄中的文件的:
如果修改了目錄的安全上下文,匿名用戶在訪問的時候便不能看到其中的內容:
將目錄/pub的安全上下文修改:
匿名用戶訪問時的狀態:
所有說只有通過selinux認證的標籤才能夠讓匿名用戶訪問
上面用chcon命令修改的標籤,在系統重啓之後,又會變會原來可見的標籤,這說明這個命令對標籤的修改只是暫時的
想要永久修改文件或者目錄的標籤就要用到 semanage命令:
semanage fcontext -a -t public_content_t '/var/ftp/pub(/.*)?'
restorecon -FvvR /var/ftp/pub/ 將標籤修改進行刷新,即同步
可以將/pub目錄和目錄中的文件都修改爲public_content_t標籤,也就是匿名用戶訪問ftp時可見的標籤:
再用匿名用戶訪問時,便可看見/pub目錄中的內容:
selinux對功能的限制:
輸入命令 getsebool -a | grep ftp 可以看到selinux對服務的限制狀態:
命令setsebool -P 可以開啓和關閉指定功能:
比如開啓匿名用戶上傳功能:ftpd_anon_write
然後配置文件中也設置了可以讓匿名用戶又上傳權限:
然後匿名用戶上傳卻被拒絕了:
這個時候不要忘記修改目錄的安全上下文,除了可見之外,還要加上rw權限:
然後再用匿名用戶上傳,上傳成功: