溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

發(fā)布時(shí)間:2021-10-11 11:17:26 來(lái)源:億速云 閱讀:864 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、操作目的和應(yīng)用場(chǎng)景

(一)目的

CentOS 8系統(tǒng)啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制。

(二)簡(jiǎn)介

安全增強(qiáng)型 Linux(Security-Enhanced Linux)簡(jiǎn)稱 SELinux,它是一個(gè) Linux 內(nèi)核模塊,也是 Linux 的一個(gè)安全子系統(tǒng)。SELinux主要由美國(guó)國(guó)家安全局開發(fā)。2.6 及以上版本的 Linux 內(nèi)核都已經(jīng)集成了 SELinux 模塊。

SELinux 主要作用就是最大限度地減小系統(tǒng)中服務(wù)進(jìn)程可訪問(wèn)的資源(最小權(quán)限原則)。

設(shè)想一下,如果一個(gè)以 root 身份運(yùn)行的網(wǎng)絡(luò)服務(wù)存在 0day 漏洞,黑客就可以利用這個(gè)漏洞,以 root 的身份在您的服務(wù)器上為所欲為了。是不是很可怕?SELinux 就是來(lái)解決這個(gè)問(wèn)題的。

二、操作步驟

(一)selinux的工作模式

1、 selinux的三種工作模式

SELinux 有三種工作模式,分別是:

enforcing  //強(qiáng)制模式。違反 SELinux 規(guī)則的行為將被阻止并記錄到日志中

permissive  //寬容模式。違反 SELinux 規(guī)則的行為只會(huì)記錄到日志中。一般為調(diào)試用

disabled  //關(guān)閉 SELinux

SELinux 工作模式可以在/etc/selinux/config中設(shè)置。

如果想從disabled切換到enforcing或者permissive的話,需要重啟系統(tǒng)。反過(guò)來(lái)也一樣。

enforcing 和 permissive 模式可以通過(guò) setenforce 1|0 命令快速切換。

2、 啟用selinux

(1) 臨時(shí)啟用selinux

setenforce 1

(2) 永久啟用selinux

vi /etc/selinux/config  //編輯配置文件

SELINUX=disabled

改為

SELINUX=enforcing

保存退出。重啟后生效。

reboot  //重啟計(jì)算機(jī)

getenforce  //查看selinux工作模式

/usr/sbin/sestatus -v  //查看selinux工作狀態(tài)詳情

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

當(dāng)前selinux的狀態(tài)為enabled,工作模式為enforcing,策略為targeted,說(shuō)明selinux已經(jīng)正常工作了。

反之,如果要禁用selinux,臨時(shí)的方法是setenforce 0,持久化的方法是修改配置文件,設(shè)置SELINUX=disabled,并重啟使之生效。

(二)selinux的策略和規(guī)則

1、 selinux的策略

系統(tǒng)中通常有大量的文件和進(jìn)程,為了節(jié)省時(shí)間和開銷,通常我們只是選擇性地對(duì)某些進(jìn)程進(jìn)行管制。而哪些進(jìn)程需要管制、要怎么管制是由策略決定的。

在 CentOS系統(tǒng)中,有三套策略,分別是:

targeted  //對(duì)大部分網(wǎng)絡(luò)服務(wù)進(jìn)程進(jìn)行管制,是默認(rèn)的策略

minimum  //以targeted為基礎(chǔ),僅對(duì)選定的網(wǎng)絡(luò)服務(wù)進(jìn)程進(jìn)行管制。一般不用。

mls  //多級(jí)安全保護(hù)。對(duì)所有的進(jìn)程進(jìn)行管制,這是最嚴(yán)格的策略,配置難度非常大。一般不用,除非對(duì)安全性有極高的要求。

策略可以在/etc/selinux/config文件中指定。

2、 selinux的規(guī)則

一套策略里面有許多規(guī)則,其中部分規(guī)則可以按照需求啟用或禁用,這些規(guī)則稱為布爾型規(guī)則。規(guī)則是模塊化、可擴(kuò)展的。在安裝新的應(yīng)用程序時(shí),應(yīng)用程序可通過(guò)添加新的模塊來(lái)添加規(guī)則。用戶也可以手動(dòng)地增減規(guī)則。

3、 使用seinfo查看selinux的策略信息

seinfo - SELinux policy information tool

seinfo  //不加參數(shù)運(yùn)行,查看策略文件以及文件所包含的內(nèi)容

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

從輸出可以看到,策略中包含Users、Roles、Types、Boleans,它們分別是用戶、角色、類型和布爾型規(guī)則。下面分別查看:

seinfo -r  //查看selinux的所有角色(role)

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

當(dāng)前有14個(gè)selinux角色。

seinfo -u  //列出selinux的所有身份表示(user)

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

當(dāng)前有8個(gè)selinux用戶

seinfo -t  //查看selinux的所有類型(type)

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

可以看到,當(dāng)前系統(tǒng)中selinux的類型有4940個(gè)。

seinfo -b  //列出所有布爾型規(guī)則

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

當(dāng)前有330條布爾型selinux規(guī)則。

seinfo -b | grep nfs  //-b --bool,查看與nfs相關(guān)的布爾型規(guī)則

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

4、 使用sesearch查詢selinux策略的詳情

sesearch是SELinux的策略查詢工具,使用方法如下:

sesearch --allow | grep \ cluster_t\  //查看主體類型為cluster_t的allow規(guī)則

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

sesearch --allow | grep \ cluster_t:  //查看客體類型為cluster_d的allow規(guī)則

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

5、 使用setsebool開關(guān)一個(gè)布爾規(guī)則

setsebool [選項(xiàng)] <規(guī)則名稱> <on|off>

setsebool -P httpd_anon_write on

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

開關(guān)代表切換selinux規(guī)則的生效狀態(tài)。運(yùn)行成功后不顯示任何信息。

(三)selinux的安全上下文

1、 什么是安全上下文?

安全上下文分為“進(jìn)程安全上下文”和“文件安全上下文”。一個(gè)“進(jìn)程安全上下文”一般對(duì)應(yīng)多個(gè)“文件安全上下文”。只有兩者的安全上下文對(duì)應(yīng)上了,進(jìn)程才能訪問(wèn)文件。它們的對(duì)應(yīng)關(guān)系由策略中的規(guī)則決定。

文件安全上下文由文件創(chuàng)建的位置和創(chuàng)建文件的進(jìn)程所決定。而且系統(tǒng)有一套默認(rèn)值,用戶也可以對(duì)默認(rèn)值進(jìn)行設(shè)定。

需要注意的是,單純的移動(dòng)文件操作并不會(huì)改變文件的安全上下文。

2、 安全上下文間結(jié)構(gòu)和含義

安全上下文有四個(gè)字段,分別用冒號(hào)隔開。形如:system_u:object_r:admin_home_t:s0。

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

3、 查看安全上下文

(1) 查看文件的安全上下文

ls -Z /var/www/htmp  //查看目錄的安全上下文

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

可以看到/var/www/html/目錄的selinux類型為http_sys_content_t

(2) 查看進(jìn)程的安全上下文

ps auxZ | grep -v grep | grep httpd

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

可以看到,httpd進(jìn)程的selinux類型為http_t,且存在多個(gè)httpd進(jìn)程,具有相同的安全上下文。注意,進(jìn)程的安全上下文不同于其可執(zhí)行文件的安全上下文。

為什么httpd進(jìn)程可以訪問(wèn)/var/www/html目錄?因?yàn)楫?dāng)前存在著相應(yīng)的允許主體httpd_t訪問(wèn)客體http_sys_content_t進(jìn)行相關(guān)操作的的selinux規(guī)則。

4、 修改文件安全上下文

下面通過(guò)一個(gè)例子了解修改文件安全上下文的方法:

(1) 創(chuàng)建測(cè)試文件

//在/var/www/html目錄中創(chuàng)建測(cè)試文件:

echo index.html > /var/www/html/index.html

//查看文件的安全上下文

ls -Z /var/www/html/index.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

可以看到,文件的selinux type為httpd_sys_content_t

//在/root目錄創(chuàng)建另一個(gè)測(cè)試文件

echo index1.html > /root/index1.html

//將測(cè)試文件移動(dòng)到/var/www/html/目錄中

mv /root/index1.html /var/www/html/index1.html

//查看測(cè)試文件的安全上下文

ls -Z /var/www/html/index1.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制可以看到,index1.html文件的selinux類型為admin_home_t。這是因?yàn)槲募陌踩舷挛牟粫?huì)因?yàn)槲募灰苿?dòng)而發(fā)生變化。

//使用links遠(yuǎn)程訪問(wèn)index.html文件

links 192.168.242.164/index.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

訪問(wèn)成功。

//遠(yuǎn)程主機(jī)使用links訪問(wèn)index1.html文件

links 192.168.242.164/index1.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制提示沒(méi)有權(quán)限訪問(wèn)index1.html。

這是因?yàn)椴淮嬖谠试S類型為httpd_t的主體訪問(wèn)類型為admin_home_t的客體文件并進(jìn)行讀取操作的規(guī)則。可使用下面的命令查找符合條件的規(guī)則:

sesearch -s httpd_t -t admin_home_t -c file -p read --allow

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

找不到符合要求的規(guī)則條目。

要想解決這個(gè)問(wèn)題,要么修改/var/www/html/index1.html文件的安全上下文,將類型修改為httpd_sys_content_t或其它已經(jīng)被允許訪問(wèn)的類型;要么新建一條規(guī)則,允許httpd_t類型的主體對(duì)admin_home_t類型的客體文件進(jìn)行讀取操作。這里介紹第一種方式,即修改文件的安全上下文。

(2) 使用chcon修改文件的安全上下文

//使用chcon命令指定文件上下文中的類型,chcon命令的使用方法如下:

chcon <選項(xiàng)> <文件或目錄1> [<文件或目錄n>]

選項(xiàng)

功能

-u <值>

修改安全上下文的用戶字段

-r <值>

修改安全上下文的角色字段

-t <值>

修改安全上下文的類型字段

-l <值>

修改安全上下文的級(jí)別字段

--reference <文件或目錄>

將文件/目錄的安全上下文修改為與指定的文件/目錄一致

-R

遞歸操作

-h

修改符號(hào)鏈接的安全上下文,不加選項(xiàng)則修改符號(hào)鏈接所對(duì)應(yīng)的文件

//一種方法是使用-t選項(xiàng)直接指定類型

chcon -t httpd_sys_content_t /var/www/html/index1.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

//嘗試遠(yuǎn)程訪問(wèn)index1.html文件

links 192.168.242.164/index1.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制訪問(wèn)成功。說(shuō)明index1.html文件安全上下文的修改生效了。

另一種方法是使用--reference選項(xiàng)復(fù)制其它文件的安全上下文

//再次將index1.html文件的type修改為admin_home_t

chcon -t admin_home_t /var/www/html/index1.html

chcon --referece=/var/www/html/index.html /var/www/html/index1.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

文件的安全上下文修改成功。文件安全上下文中的類型設(shè)置成了httpd_sys_content_t,自然可以被httpd進(jìn)程訪問(wèn),因此不再使用links驗(yàn)證。

(3) 使用restorecon自動(dòng)為文件設(shè)置正確的安全上下文

ls -Z /var/www/html/index1.html  //查看安全上下文

restorecon /var/www/html/index1.html  //自動(dòng)設(shè)置安全上下文

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

文件安全上下文修改成功。

5、 修改目錄的安全上下文

通過(guò)一個(gè)例子了解修改目錄及其中文件的安全上下文的方法。

(1) 創(chuàng)建測(cè)試目錄和網(wǎng)頁(yè)

//在/root目錄創(chuàng)建目錄

mkdir /root/myweb/

//創(chuàng)建網(wǎng)頁(yè)

echo myweb > /root/myweb/myweb.html

//測(cè)試目錄移動(dòng)到/var/www/html/

mv /root/myweb /var/www/html/

//查看移動(dòng)后的測(cè)試目錄的安全上下文

ls -dZ /var/www/html/myweb/

//查看移動(dòng)后的測(cè)試目錄中網(wǎng)頁(yè)的安全上下文

ls -Z /var/www/html/myweb/myweb.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

//使用links遠(yuǎn)程訪問(wèn)index.html文件

links 192.168.242.164/myweb/myweb.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

產(chǎn)生錯(cuò)誤的原因和前面的例子一樣,都是因?yàn)闆](méi)有相應(yīng)的selinux規(guī)則。像上面一樣,我們修改文件的安全上下文中的類型。

chcon -t httpd_sys_content_t /var/www/html/myweb/myweb.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

成功。

//創(chuàng)建新的網(wǎng)頁(yè)文件

echo myweb1 > /var/www/html/myweb/myweb1.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制新建文件的安全上下文還是admin_home_t,這是因?yàn)槲募诘哪夸浀陌踩舷挛闹械念愋瓦€是admin_home_t,沒(méi)有被改變。因此我們需要修改目錄的安全上下文,這樣在此目錄中新建的文件將具有新的安全上下文。

chcon -t httpd_sys_content_t /var/www/html/myweb/

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

之后再創(chuàng)建新的文件,安全上下文的類型就變成httpd_sys_content_t了。

(2) 使用semanage命令修改目錄的默認(rèn)安全上下文

semanage-fcontext - SELinux Policy Management file context tool

看下面的例子:

//在/root目錄創(chuàng)建目錄

mkdir /root/newweb/

//創(chuàng)建網(wǎng)頁(yè)

echo newweb > /root/newweb/newweb.html

//測(cè)試目錄移動(dòng)到/var/www/html/

mv /root/newweb /var/www/html/

//查看移動(dòng)后的測(cè)試目錄的安全上下文

ls -dZ /var/www/html/newweb/

//查看移動(dòng)后的測(cè)試目錄中網(wǎng)頁(yè)的安全上下文

ls -Z /var/www/html/newweb/newweb.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

可以看到,移動(dòng)后目錄和其中的文件的安全上下文中的類型都是admin_home_t

//修改目錄及其中全部文件的安全上下文,添加httpd_sys_content_t類型

semanage fcontext -a -t httpd_sys_content_t "/var/www/html/newweb(/.*)?"

//修改之后的安全上下文并未生效,需要使用restorecon命令使其生效:

restorecon -Rv /var/www/html/newweb/

//查看目錄和文件的安全上下文

ls -dZ /var/www/html/newweb/ /var/www/html/newweb/newweb.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

安全上下文的修改生效了。

//查看測(cè)試目錄和文件的默認(rèn)安全上下文

semanage fcontext -l | grep /var/www/html/

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

可以看到,/var/www/html/newweb目錄和其中的文件又默認(rèn)的安全上下文,而前面的myweb目錄沒(méi)有設(shè)置默認(rèn)安全上下文,因此沒(méi)有處現(xiàn)在結(jié)果中。

默認(rèn)安全上下文的作用是什么?設(shè)置了默認(rèn)安全上下文后,不管如何修改安全上下文中的屬性,只要運(yùn)行restorecon命令,就可以將默認(rèn)安全上下文恢復(fù)到當(dāng)前配置中。

//使用chcon修改安全上下文

chcon -t admin_home_t /var/www/html/newweb/newweb.html

//使用restorecon命令恢復(fù)默認(rèn)安全上下文

restorecon /var/www/html/newweb/newweb.html

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

當(dāng)前的安全上下文已恢復(fù)為默認(rèn)。

(四)selinux的日志

1、 查看日志文件

selinux阻止進(jìn)程訪問(wèn)的記錄保存在/var/log/audit/audit.log文件中。

tail -n 3 /var/log/audit/audit.log

type=*VC msg=audit(1615342682.388:139): *vc:  denied  { getattr } for  pid=2632 comm="httpd" path="/var/www/html/index1.html" dev="sda1" ino=67619205 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=0

type=SYSCALL msg=audit(1615342682.388:139): arch=c000003e syscall=6 success=no exit=-13 a0=7f261c043dc8 a1=7f261b7fd8d0 a2=7f261b7fd8d0 a3=1 items=0 ppid=2307 pid=2632 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)ARCH=x86_64 SYSCALL=lstat AUID="unset" UID="apache" GID="apache" EUID="apache" SUID="apache" FSUID="apache" EGID="apache" SGID="apache" FSGID="apache"

type=PROCTITLE msg=audit(1615342682.388:139): proctitle=2F7573722F7362696E2F6874747064002D44464F524547524F554E44

在日志中詳細(xì)記錄了selinux的主體和客體的信息。

2、 使用sealert程序對(duì)日志進(jìn)行分析

將上面的日志信息復(fù)制到新建的文件中,之后使用sealert程序分析。

sealert -a se.txt  //-a參數(shù)指定文件

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

sealert給出了事件的解釋:

SELinux is preventing /usr/sbin/httpd from getattr access on the 文件 /var/www/html/index1.html.

之后給出了兩個(gè)修復(fù)建議,一個(gè)是使用restorecon插件進(jìn)行修復(fù),置信度為99.5:

/sbin/restorecon -v /var/www/html/index1.html

另一個(gè)是使用catchall插件進(jìn)行修復(fù),置信度為1.49:

ausearch -c 'httpd' --raw | audit2allow -M my-httpd

semodule -i my-httpd.pp

使用restorecon可以完美地解決問(wèn)題,但是使用catchall只能滿足讀取文件屬性的要求,無(wú)法讀取文件內(nèi)容。這樣還是會(huì)出現(xiàn)selinux的錯(cuò)誤日志:

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

日志內(nèi)容是拒絕讀取文件。

(五)為自定義程序創(chuàng)建selinux策略

1、 創(chuàng)建測(cè)試程序

在這個(gè)例子中,創(chuàng)建一個(gè)打開/var/log/messages文件并執(zhí)行寫入操作的程序。

//安裝policycoreutils-devel包

yum install policycoreutils-devel

vi mydaemon.c  //創(chuàng)建并編輯代碼文件,加入下面的內(nèi)容

#include <unistd.h>

#include <stdio.h>

FILE *f;

int main(void)

{

while(1) {

f = fopen("/var/log/messages","w");

sleep(5);

fclose(f);

}

}

保存退出




//編譯文件

gcc -o mydaemon mydaemon.c




vi mydaemon.service  //創(chuàng)建并編輯服務(wù)配置文件,加入下面的內(nèi)容

[Unit]

Description=Simple testing daemon




[Service]

Type=simple

ExecStart=/usr/local/bin/mydaemon




[Install]

WantedBy=multi-user.target

保存退出




//安裝為服務(wù)并啟動(dòng)

cp mydaemon /usr/local/bin/

cp mydaemon.service /usr/lib/systemd/system

systemctl start mydaemon

systemctl status mydaemon

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

//查看進(jìn)程

ps -efZ | grep mydaemon

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

可以看到,新的進(jìn)程尚未設(shè)置selinux安全上下文。

2、 生成自定義策略

sepolicy generate --init /usr/local/bin/mydaemon

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

生成了多個(gè)文件。

運(yùn)行生成的shell腳本,使用新的策略模塊重新構(gòu)建新的系統(tǒng)策略。

/mydaemon.sh

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

//設(shè)置可執(zhí)行文件的安全上下文

restorecon -v /usr/local/bin/mydaemon /usr/lib/systemd/system

//重啟進(jìn)程并查看安全上下文

systemctl restart mydaemon

ps -efZ | grep mydaemon

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

進(jìn)程的安全上下文已經(jīng)設(shè)置好了。

此進(jìn)程由于受到selinux的限制,無(wú)法寫入/var/log/messages文件。

//查看審計(jì)日志中記錄的錯(cuò)誤(將*VC中的*改為A)

ausearch -m *VC -ts recent  CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

返回了最近產(chǎn)生的錯(cuò)誤,mydaemon進(jìn)程作為主體無(wú)法open和write客體/var/log/messages文件。

//使用sealert命令查看更詳細(xì)的信息

sealert

//使用audit2allow提出整改建議(將*VC中的*改為A)

ausearch -m *VC -ts recent | audit2allow -R

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

返回的結(jié)果表示,需要將mydaemon_t作為參數(shù)帶入到logging_write_generic_logs接口中。

由于audit2allow輸出的結(jié)果可能不準(zhǔn)確,所以需要去找對(duì)應(yīng)的策略接口,確認(rèn)其存在:

grep -r "logging_write_generic_logs" /usr/share/selinux/devel/include/ | grep .if

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

找到了策略接口文件。

查看策略接口文件的內(nèi)容

cat /usr/share/selinux/devel/include/system/logging.if

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

上面是logging_write_generic_logs接口的配置,可以使用這個(gè)接口。

//將接口寫入te文件

echo "logging_write_generic_logs(mydaemon_t)" >> mydaemon.te

//重新執(zhí)行腳本,構(gòu)建新的selinux策略

./mydaemon.sh

//查看審計(jì)日志中記錄的錯(cuò)誤(將*VC中的*改為A)

ausearch -m *VC -ts recent

CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制

程序仍在運(yùn)行,但是沒(méi)有產(chǎn)生新的錯(cuò)誤,說(shuō)明新的selinux規(guī)則生效了

以上是“CentOS 8系統(tǒng)如何啟用selinux并實(shí)施強(qiáng)制訪問(wèn)控制”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI