十、訪問控制列表(ACL)html
標準的linux文件權限能夠知足絕大多數狀況的要求,但它也有侷限。限制訪問文件的權限僅限授予文件的全部者,單組成員或其餘任何人,進程可能不適合成爲文件所屬組成員,授予全部人權限是不現實的作法。linux
ACL容許向文件分配細化權限,除標準文件全部者組全部者和其餘文件權限外,還能夠向指定用戶或指定組,以及UID及GUID肯定的用戶和組授予權限,這些權限均應用相同的權限標誌r讀取w寫入x執行。web
文件全部者能夠在單個文件或目錄上使用ACL,新文件和子目錄能夠從父級默認ACL中繼承ACL權限,與常規文件的訪問規則類似,父目錄訪問結構須要至少設置其餘執行權限,以便啓用制定用戶和指定組的訪問權限。vim
文件系統掛載選項安全
文件系統需掛載以啓用的ACL支持,XFS文件系統內置有ACL支持。服務器
Ls -l 查看和解釋acl權限ide
若是十個字符組成的權限字符串的末尾是」+」,即表示文件有相關聯的ACL設置,對於用戶,組和其餘的’rwx‘標誌解釋以下:spa
用戶: 顯示用戶acl設置,與其標準用戶文件設置相同;rwx。rest
組:實現當前acl掩碼設置,而不是組全部者設置,rw。htm
其餘:顯示其餘acl設置,其與標準文件設置相同,無訪問權限。
若是使用chmod更改具備acl的文件的組權限,則不會更改組全部者權限,而是更改acl掩碼,若是目的是更改文件組全部者的權限須要使用setfacl -m g::perms file
getfacl 查看文件acl
Setfacl 添加,修改或刪除文件和目錄的標準acl
Setfacl -m u:user:執行權限 file 修改指定用戶對文件的訪問權限
Setfacl -m g:group:執行權限 file 修改指定組對文件的訪問權限
Setfacl -m o::執行權限 file 修改指定其餘對文件的訪問權限
Chmod g+(-)執行權限 file 修改mask(acl掩碼)值。
Default:m::執行權限 file 修改默認掩碼值
Setfacl -R -m 使用遞歸的方式將acl應用到目錄結構的文件中
Setfacl -x 刪除特定的acl條目
Setfacl -b 刪除文件和目錄的全部acl
setfacl -m d:u:user:執行權限 file 修改默認的acl權限。
Setfacl x d:u:user:執行權限 file 刪除acl默認條目。
三、啓用和監控SELINUX(security enhanced linux)
Selinux 安全的基本概念
Selinux是一個額外的系統安全層,它的主要目的是防止已遭泄露的系統服務訪問用戶數據,大多數linux用戶都熟悉標準的用戶/組/其餘權限安全模型。這種基於用戶和組的模型成爲自由決定的訪問控制,selinux提供另外一層安全,他基於對象並有更加複雜的規則控制,稱爲強制訪問控制。
要容許遠程web訪問服務器,必須打開防火牆端口,然而惡意人員卻有辦法經過安全漏洞侵入系統,並且若是他們破壞web服務進程,還會取得其權限。
Selinux是肯定哪些進程哪些組能夠訪問哪些文件,目錄,和端口的一組安全規則。每一個進程和端口都具備特別的安全標籤,成爲selinux的上下文。Selinux策略使用它來肯定某個進程可否訪問文件,目錄和端口。除非顯示規則授予訪問權限,不然,在默認狀況下,策略不容許有任何交互,若是沒有容許規則,則不容許訪問。
Selinux有多種上下文:用戶,角色,類型和敏感度。目標策略(linux啓用的默認策略)會根據第三個上下文來指定本身的規則。類型上下文會以_t結尾。Web類型的上下文是httpd_t,一般位於/var/www/html中的文件和目錄類型的上下文是httpd_sys_content_t。一般位於/tmp和/var/tmp中的文件類型上下文是tmp_t,web服務器端口的文件類型上下文是http_port_t。
許多處理文件的命令有一個用於顯示或者設置selinux上下文的選項,一般是-Z,例如ps,ls,cp,和mkdir等
Selinux模式;
強制模式:selinux主動拒絕訪問嘗試讀取類型上下文爲tmp_t的文件的web服務器。在強制模式中,selinux不只記錄並且提供保護。
許可模式:一般用於對問題進行故障排錯,在此模式中既沒有顯示規則,selinux也會容許全部交互,並且會記錄她在強制模式中拒絕的那些交互,可以使用此模式來暫時容許訪問selinux的限制內容,無需從新啓動便可在強制模式和容許模式之間轉換。
禁用模式,會徹底禁用selinux,須要完全禁用selinux,或是從禁用模式轉換爲強制模式,或許可模式。
最好使用許可模式,而不是完全關閉selinux,緣由之一在於即便在許可模式中,內核也將根據須要自動維護selinux文件系統標籤,從而避免爲了啓動selinux而重啓系統時,從新標記系統所帶來的昂貴費用。
Getenforce 顯示當前使用有效的selinux模式。
Selinux 布爾值:是更改selinux策略的開關。Selinux布爾值是能夠啓動或禁用的規則。安全管理員是可使用selinux布爾值來有選擇地調整策略。
更改selinux的模式:
若處於故障排錯目的,可以使用selinux模式暫時禁用selinux保護。
Setenforce o 暫時修改成permissive許可模式
Setenforce 1 暫時修改成enforcing強制模式
設置默認的selinux模式:
Vim /etc/selinux/config
將SELINUX=permissive 修改成SELINUX=enforcing
:wq
Systemctl reboot
更改selinux上下文
Ls -Zd 查看查看當前目錄的selinux上下文
一般文件父目錄的上下文決定該文件初始的selinux上下文。父目錄的上下文會分配給新建文件,適用於vim,cp,touch等文件,若是文件是在其餘位置建立並權限得以保留如mv,cp -a 等,那麼原始selinux上下文不會發生更改。
用chcon和restorecon,能夠更改原始selinux上下文。Chcon將文件的上下文更改爲已指定參數的上下文,chcon -t 只用於指定上下文類型。
Restorecon -v 是更改文件和目錄的首選方法,不一樣於chcon,它不會明確指定上下文,它使用selinux策略來肯定應該是那種文件的上下文。
更改selinux布爾值
Selinux布爾值是更改selinux策略行爲的開關,selinux布爾值是能夠禁用或啓用的規則。安全管理員可使用selinux布爾值來有選擇的調整策略。
Getsebool -a 顯示selinux布爾值
Setsebool 上下文 on/off 修改selinux布爾值
Setsebool -P 上下文 on/off 修改selinuxcelue,並永久保存
Semanage boolean -l 將會顯示布爾值是否爲永久值,並提供簡短描述。
Semanage boolean -l -C 僅列出本地修改的selinux布爾值狀態。