強制訪問控制 (MAC) 、對任意訪問控制(DAC)
規則集稱呼為策略,它決定了如何限制控制
進程可以是限制的或為定義的
策略定義了什麼資源限制了進程可以訪問到
任何沒有顯式的動作,缺省都是拒絕的
所有文件和進程都有一個安全上下文屬性
這個上下文屬性有多個元素, 取決於安全的需求
user:role:type:sensitivity:
category
用戶:角色:類型:敏感度:分類
user_u:object_r:tmp_t:s0:c0
第一個字段:用戶
第二個字段:角色
第三個字段:類型
第四個字段:與MLS,MCS有關
說明:SEliunx目標策略只於第三個字段有關,即類型字段(TYPE);有待完善。
不是所有的系統都顯示 s0:c0
查看SElinux上下文
使用命令 ps–Z 和 ls –Z
每個進程都屬於個SElinux域;
每個文件都被賦予一個SElinux上下文。
相關的域和上下文可以使用ls(scontext)和ps(scontext)命令的命令選項 –Z 來顯示
例:
[root@station31 ~]# ls -lZ /etc/syslog.conf
-rw-r--r-- root root system_u:object_r:syslog_conf_t /etc/syslog.conf
[root@station31 ~]# ps aux -Z | grep syslog | grep -v grep
system_u:system_r:syslogd_t root 2496 0.0 0.1 1728 580 ? Ss 22:13 0:00 syslogd -m 0
進程目標策略scontext、目的目標策略dcontext之間關系記錄在一個特定
數據庫。修改目標策略使程序功能不能正常使用
測試:
[root@station31 ~]# chcon -t tmp_t /etc/syslog.conf 更改類型
[root@station31 ~]# service vsftpd restart
[root@station31 ~]# tail -f /var/log/secure
登錄信息不記錄
[root@station31 ~]# ls -lZ /etc/syslog.conf
-rw-r--r-- root root system_u:object_r:tmp_t /etc/syslog.conf
[root@station31 ~]# restorecon /etc/syslog.conf 還原類型,因為數據庫中記錄
[root@station31 ~]# ls -lZ /etc/syslog.conf
-rw-r--r-- root root system_u:object_r:syslog_conf_t /etc/syslog.conf
強制(enforcing): 任何違法SElinux的操作都被禁止。
允許(permissive):任何違反SElinux的操作都會受到一個警告信息。但是行動可以繼續。
停用(disabled): 不啟用SElinux策略。
不要隨便頻繁停用開啟selinux,若頻繁該系統啟動時將更改全盤屬性,開機時間長
setenforce和getenforce命令
setenforce 0/1 0 表示允許;1 表示強制(臨時該)
getenforce 查看當前SElinux的狀態。
可在 GRUB 中使用 selinux=0(kernel後)關閉
目標策略在安裝時就裝載了
· 多數本地進程為 unconfined
· 對於類型強制性使用類型元素
· 安全上下文屬性可以通過 chcon 改變
chcon -t tmp_t /etc/hosts
· 可以使用 restorecon 恢復
restorecon /var/ftp/pub
配置文件:
/etc/sysconfig/selinux 鏈接文件
/etc/selinux/config 源文件
selinux文件類型
管理的服務類型稱呼為域
在策略中的允許規則定義了什麼文件類型在什麼域下可以訪問
策略是以二進制格式保存的, 不易被查看到其中的規則
可以通過 semanage 查看類型
semanage fcontext -l 查看定義規則
·表示任意字符 *表示次數 ?0次或1次 ^/除”/”
semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?" 添加規則,只能在末尾
public_content_t
public_content_rw_t
布爾值
開啟selinux強制模式、ftp,且設置匿名可讀寫、目錄有寫權限,但是匿名不能寫,為什麼?
[root@station31 ~]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_
tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off
tftpd_disable_trans --> off
[root@station31 ~]# setsebool -P allow_ftpd_anon_write=1 設置永久生效(-P)
[root@station31 ~]# chcon -t public_content_rw_t /var/ftp/pub
排錯方法:
網絡→iptables→配置文件→權限→selinux