SELinux安全

1、SELinux配置文件html

在CentOS 7系統中部署SELinux很是簡單,因爲SELinux已經做爲模塊集成到內核中,默認SELinux已經處於激活狀態。對管理員來講,更多的是須要配置與管理SELinux,CentOS 7系統中SELinux全局配置文件爲/etc/sysconfig/selinux,內容以下:linux

1web

2vim

3centos

4安全

5服務器

6app

7dom

8tcp

9

10

11

12

[root@centos7 ~]# vim /etc/sysconfig/selinux

 

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=enforcing

# SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

SELinux=enforcing爲SELinux總開關,有效值能夠是enforcing、permissive或disabled。

其中,disabled表明禁用SELinux功能,因爲SELinux是內核模塊功能,因此若是設置禁用,須要重啓計算機。permissive表明僅警告模式,處於此狀態下時,當主題程序試圖訪問無權限的資源時,SELinux會記錄日誌但不會攔截該訪問,也就是最終訪問是成功的,只是在SELinux日誌中記錄而已。enforcing模式表明強制開啓,SELinux會攔截非法的資源訪問並記錄相關日誌。

使用setenforce能夠臨時在enforcing模式與permissive模式之間切換,切換會被馬上應用於當前系統,計算機重啓後無效,永久修改模式須要修改配置文件。

1

2

[root@centos7 ~]# setenforce 0           #設置SELinux爲permissive模式

[root@centos7 ~]# setenforce 1           #設置SELinux爲enforcing模式

2、SELinux安全上下文

SELinux會爲進程與文件添加安全信息標籤,如:SELinux用戶、角色、類型以及可選的級別。當運行SELinux後全部這些信息都是訪問控制的依據。下面經過一個實例文件查看SELinux安全上下文,使用ls -Z命令就能夠看到文件或目錄的這些上下文信息,而ps aux –Z則能夠查看進程的安全上下文信息:

1

2

3

[root@centos7 ~]# ls -Z anaconda-ks.cfg 

-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

[root@centos7 ~]# ps aux -Z

SELinux的安全上下文包括

用戶:角色:類型:級別

3、SELinux排錯

無論SELinux策略是容許仍是拒絕資源的訪問請求行爲,都會記錄日誌,也就是AVC(Access Vector Cache)。全部SELinux拒絕的消息都會被記錄進日誌,根據系統中安裝運行的服務進程不一樣,拒絕日誌消息會被記錄到不一樣的文件中,表6-2列出了進程與日誌文件的關係。

表6-2

日誌文件                      進程

/var/log/audit/audit.log           auditd服務開啓

/var/log/messages                auditd服務關閉,rsyslogd服務開啓

/var/log/audit/audit.log,/var/log/messages安裝setroubleshoot相關軟件包

autitd與rsyslogd同時開啓

對於大多數生產環境中的服務器而言,更多的是沒有部署安裝圖形界面的Linux系統,咱們須要手動查看日誌文件。在此建議管理員安裝setroubleshoot相關的軟件包,這樣能夠將本來生澀的AVC拒絕日誌轉換爲可讀性比較高的setroubleshoot日誌。查看日誌能夠使用以下兩種方法:

1

2

[root@centos7 ~]# grep setroubleshoot /var/log/messages

[root@centos7 ~]# grep denied /var/log/audit/audit.log

查看messages日誌會提示,根據黑體字提示運行sealert命令才能夠看到人性化報錯信息。

setroubleshoot: SELinux is preventing /usr/sbin/httpd from read access on the file index.html. For complete SELinux messages. run sealert -l 7082b8b4-70f4-42fb-92ea-08a51299d080

1

[root@centos7 ~]# sealert -l 7082b8b4-70f4-42fb-92ea-08a51299d080

4、修改安全上下文

有多種方式能夠修改與管理SELinux安全上下文,如:chcon、semanage、fcontext以及restorecon命令。

1. chcon命令

描述:修改文件SELinux安全上下文。

用法:chcon [選項] [-u SELinux用戶] [-r 角色] [-l 範圍] [-t 類型] 文件

chcon [選項] --reference=參考文件 文件

選項:-u 修改用戶屬性

-r 修改角色屬性

-l 修改範圍屬性

-t 修改類型屬性

示例:

(1)修改文件安全上下文。

1

2

3

4

[root@centos7 ~]# cp --preserve=all /etc/passwd /root/ #複製文件(保留上下文信息)

[root@centos7 ~]# ls -Z /root/passwd             #查看文件SELinux安全上下文

[root@centos7 ~]# chcon -t admin_home_t /root/passwd #修改文件安全上下文中的類型

[root@centos7 ~]# ls -Z /root/passwd

(2)修改目錄安全上下文。

1

[root@centos7 ~]# chcon -R -t admin_home_t /root/   #遞歸修改目錄安全上下文

(3)根據參考文件修改目標文件安全上下文。

1

[root@centos7 ~]# chcon --reference=/etc/passwd /root/passwd

經過chcon修改的安全上下文並非SELinux預設的安全上下文,當文件系統重置SELinux安全標籤或使用restorecon命令重置指定目錄的安全標籤後,全部文件與目錄的安全標籤會被還原爲系統預設值,若是須要修改SELinux默認的預設安全上下文,須要使用semanage命令添加或修改。

5、semanage命令

描述:SELinux策略管理工具。

用法:semanage fcontext [-S store] -{a|d|m|l|n|D} [-frst] file_spec

選項:-a,--add添加預設安全上下文

-d,--delete刪除指定的預設安全上下文

-D,--deleteall    刪除全部的預設自定義上下文

-m,--modify修改指定的預設安全上下文

-l,--list     顯示預設安全上下文

-n,--noheading     不顯示頭部信息

示例:

(1)查看SELinux策略默認的預設安全上下文信息,系統將列出策略中定義的全部目錄與安全上下文信息。

1

[root@centos7 ~]#semanage fcontext -l

(2)修改策略,添加一條新的預設安全上下文信息。

1

2

3

[root@centos7 ~]# semanage fcontext -a -t samba_share_t /test/test.txt

[root@centos7 ~]# mkdir /test; touch /test/test.txt

[root@centos7 ~]# ls -Z /test/test.txt

(3)使用restorecon命令,還原test.txt文件的安全上下文爲預設值。

1

2

[root@centos7 ~]# restorecon /test/test.txt

[root@centos7 ~]# ls -Z /test/test.txt

(4)遞歸設置目錄的預設安全上下文。

1

2

3

4

5

[root@centos7 ~]# semanage fcontext -a -t httpd_sys_content_t "/site/www(/.*)?"

[root@centos7 ~]# mkdir -p /site/www/{web1,web2}

[root@centos7 ~]# touch /site/www/{web1,web2}/index.html

[root@centos7 ~]# ls -RZ /site/www

[root@centos7 ~]# restorecon -R /site/

(5)刪除預設安全上下文。

1

[root@centos7 ~]# semanage fcontext -d /test/ test.txt

(6)檢查預設SELinux安全上下文。

1

[root@centos7 ~]# matchpathcon /site/www/

6.2.6 查看與修改布爾值

SELinux布爾值能夠實時被修改。如,你能夠在不從新加載或編譯SELinux策略的狀況下容許服務訪問NFS文件系統。getsebool是用來查看SELinux布爾值的命令,用法比較簡單,-a選項用來查看全部的布爾值。通常建議管理員經過管道過濾本身須要的布爾值參數,如getsebool -a |grep ftp過濾與FTP相關的布爾值信息,顯示效果中左側爲關鍵詞,右側爲開關,on表明開,off表明關,具體命令以下。

1

2

3

4

5

6

7

8

9

10

[root@centos7 ~]# getsebool -a

abrt_anon_write  off

abrt_handle_event  off

allow_console_login  on

allow_cvs_read_shadow  off

allow_daemons_dump_core  on

allow_daemons_use_tcp_wrapper  off

allow_daemons_use_tty  on

allow_domain_fd_use  on

… …部份內容省略… …

修改SELinux布爾值狀態也很是簡單,使用setsebool name X便可實現。其中,name是布爾值名稱,X表明on或off。默認setsebool命令修改的布爾值參數會當即生效,但計算機重啓後會被還原,若是但願永久修改,須要使用-p參數。

1

2

[root@centos7 ~]# setsebool ftp_home_dir on

[root@centos7 ~]# setsebool -p ftp_home_dir on

本篇文章來自丁丁歷險博主的博客,若有侵權,請留言謝謝。
相關文章
相關標籤/搜索