国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

活學(xué)活用RedHat 7 SELinux管理機(jī)制

2020-12-31 05:47:01河南劉京義
網(wǎng)絡(luò)安全和信息化 2020年6期
關(guān)鍵詞:命令端口規(guī)則

■ 河南 劉京義

利用SELin ux(即Securit y Enhanced Linux,安全性增強(qiáng)的Linux)這一安全管理機(jī)制,就可以讓系統(tǒng)變得更加穩(wěn)固。SELinux擁有靈活和強(qiáng)制性的訪問控制機(jī)制,可以對(duì)訪問進(jìn)行徹底控制,對(duì)所有的文件,目錄以及端口的訪問,都是基于策略設(shè)置的,這些策略由管理員設(shè)定,普通用戶無權(quán)更改。

管理SELinux的運(yùn)行狀態(tài)

SELinux提供了兩種關(guān)閉方法,其一是臨時(shí)關(guān)閉,所謂臨時(shí)關(guān)閉,指的是并沒有真正關(guān)閉SELinux,僅僅對(duì)非法訪問進(jìn)行記錄。執(zhí)行“setenforce 0”命令即可。其二是永久關(guān)閉,方法是執(zhí)行“vi/etc/sysconfig/selinux”命令,在其中輸入“SELINUX=disabled”行,之后重啟系統(tǒng)即可。如果將其設(shè)置為“enforcing”,表示啟用SELinux。執(zhí)行“getenforce”命令,會(huì)顯示SELinux的狀態(tài),包括“enforcing”“permissive”和“disabled”。

SELinux對(duì)于用戶只賦予最小權(quán)限,用戶被劃分為不同的角色,不同的角色擁有不同的權(quán)限。即使對(duì)于Root用戶來說,當(dāng)其不在Sysadm_r角色中,同樣是不能執(zhí)行Sysadm_t管理操作的,即其無法擁有管理員權(quán)限。與之類似,SELinux對(duì)進(jìn)程只賦予最小運(yùn)行權(quán)限,這在SELinux中是非常重要的,其特點(diǎn)是對(duì)文件賦予名為Type的文件類型標(biāo)簽,對(duì)于進(jìn)程賦予名為Domain的標(biāo)簽,這樣的話,可以規(guī)定某個(gè)進(jìn)程只能執(zhí)行某類文件。

SELinux安全上下文結(jié)構(gòu)

SELinux包括了的安全上下文(Security Conte、xt)和策略(Policy)組件,對(duì)于前者來說,由用戶,角色和類型構(gòu)成。對(duì)于后者來說,指的是控制規(guī)則,即允許哪些進(jìn)程可以訪問哪些資源。

安全上下文的格式由“user:role:type”三部分組成,其中的“user”用來提供身份識(shí)別,常見的“user”包括“user_u”(針對(duì)普通用戶),“system_u”(針對(duì)系統(tǒng)管理員)和“unconfined_u”(針對(duì)沒有做定義的用戶)。

文件與目錄的角色(role)通常稱之為“object_r”,程序的角色通常是“system_r”。

對(duì)于用戶的Role來說,不同的角色擁有不同的權(quán)限。用戶可以擁有多個(gè)Role,但是在同一時(shí)間內(nèi)只能扮演固定的Role。

類型(type)作用是將主體與客體劃分為不同的組,組的每個(gè)主體和系統(tǒng)中的客體定義了一個(gè)類型,為進(jìn)程運(yùn)行提供最低的權(quán)限環(huán)境。

例如,執(zhí)行“l(fā)s -Z test.txt”命令,可以查看指定文件的安全上下文信息。例如,返回“-rw-r--r--.root root unconfined_u:object_r:admin_home_t:s0 a.txt”,其中的“unconfined_u”表示的是預(yù)設(shè)的用戶,該參數(shù)主要用來確認(rèn)用戶身份類型,一般搭配角色使用。

“object_r”參數(shù)表示的是角色,普通文件和目錄都為該角色,“system_r”則一般為進(jìn)程的角色?!癮dmin_home_t”是SELinux中的類型信息,這里表示管理員的家目錄。

對(duì)于“user_home_dir_t”類型來說,表示普通用戶的家目錄。執(zhí)行“l(fā)s -Z -d/xxx/”命令,可以查看指定目錄的安全上下文信息,這里的目錄名為“xxx”。

根據(jù)SELinux的上下文信息,就可以確定標(biāo)文件的目錄能夠被哪些進(jìn)程和用戶進(jìn)行訪問。

設(shè)置SELinux安全上下文

要想修改SELinux上下文,可以使用“chcon”和“semanage”命令進(jìn)行修改,對(duì)于前者來說,雖然可以實(shí)現(xiàn)更改操作,但是對(duì)SELinux的規(guī)則庫沒有任何影響。例如,執(zhí)行“chcon -t var_t/etc/hosts”命令,可以對(duì)“/etc/hosts”文件的安全上下文進(jìn)行修改,將其類型由“net_conf_t”修改為“var_t”。執(zhí)行“chcon -R -t samba_share_t/tmp/data”命令,可以對(duì)“/tmp/data”目錄進(jìn)行遞歸操作,將其中的所有文件的安全上下文類型修改為“samba_share_t”,這樣“smb”進(jìn)程就可以訪問/tmp/data”目錄中的所有文件了。

例如,對(duì)于Apache服務(wù)來說,在“/var/www/html/”目錄下存在“test.html”這個(gè)文件,之后從“/root”目錄下將“hello.html”文件移動(dòng)到上述路徑下,進(jìn)入“/var/www/html/”,執(zhí)行“l(fā)l-Z hello.html test.html”命令,可以看到這兩個(gè)文件的安全上下文信息是不同的,分別為“admin_home_t”和“httpd_sys_content_t”。因?yàn)楫?dāng)執(zhí)行文件移動(dòng)操作時(shí),其安全上下文是不變的。對(duì)于“httpd_sys_content_t”類型的文件來說,允許httpd進(jìn)程對(duì)其進(jìn)行訪問。而對(duì)于“admin_home_t”類型的文件來說,httpd進(jìn)程是無法訪問的。

這樣,在開啟了SELinux的情況下,執(zhí)行“service httpd start”命令啟動(dòng)Web服務(wù)后,當(dāng)從瀏覽器輸入實(shí)際路徑來訪問這兩個(gè)文件時(shí),可以訪問“test.html”文件的內(nèi)容,但是卻無法訪問“hello.html”的內(nèi)容。執(zhí)行“chcon --reference=/var/www/html//var/www/html/hello.html”命令,將“hello.html”的安全上下文類型修改為“httpd_sys_content_t”,這樣就可以正常訪問“hello.html”文件了。

也可以執(zhí)行“chcon -t httpd_sys_content_t/var/www/html/hello.html”命令,也可以將其上下文標(biāo)簽修改為“httpd_sys_content_t”類型,實(shí)現(xiàn)同樣的效果。當(dāng)然,也可以執(zhí)行“chcon -t -r httpd_sys_content_t/webapp/”命令,將指定目錄下的所有文件的安全上下文類型修改為“httpd_sys_content_t”。如果使用CP命令,將“/root”目錄下的“welcome.html”文件復(fù)制到“/var/www/html/”目錄下,該文件的安全上下文會(huì)自動(dòng)會(huì)改變?yōu)槟繕?biāo)目錄的類型,這樣就可以順利進(jìn)行訪問了。

恢復(fù)SELinux上下文信息

在設(shè)置SELinux上下文信息時(shí),如果出現(xiàn)問題需要重新恢復(fù)的話,可以使用Restorecon命令來實(shí)現(xiàn),該命令用來恢復(fù)檔案目錄的預(yù)設(shè)的安全上下文。既然要進(jìn)行恢復(fù),就需要依據(jù)預(yù)設(shè)的規(guī)則。執(zhí)行“vim/etc/selinux/targeted/contexts/files/file_contexts”命令,在規(guī)則文件中顯示不同文件的目錄擁有的預(yù)置的安全上下文信息。在上述路徑中的“file_contexts.local”文件中也包含了預(yù)設(shè)的安全上下文信息,通過查看上述兩個(gè)文件,可以了解系統(tǒng)中保存好的規(guī)則。

例如,執(zhí)行“restorecon-R/webapp/”命令,來恢復(fù)制定目錄下所有文件的默認(rèn)的安全信息,例如“system_u:object_r:default_t:s0”等。之所以可以恢復(fù)默認(rèn)的上下文,說明使用“chcon”命令實(shí)際上無法真正更改SELinux的規(guī)則庫信息,為了防止隨意恢復(fù)SELinux安全上下文,可以使用semanage”命令來實(shí)現(xiàn)。

例如執(zhí)行“semanage fcontext -a -t httpd_sys_content_"/webapp(/.*)?"”命令,就可以將目標(biāo)目錄(例如“/webapp”)的安全上下文類型修改為“httpd_sys_content_t”。

當(dāng)然,按照這種格式,可以設(shè)置任意格式的SELinux安全上下文類型。之后執(zhí)行“restorecon -vvR/webapp/”命令,就可以讓上述修改動(dòng)作生效,讓指定目錄真正擁有指定的安全規(guī)則。

靈活更改SELinux安全規(guī)則

使用上面談到的方法,雖然可以更改SELinux安全規(guī)則,不過操作起來很麻煩。在RedHat7中,提供了一些布爾變量,可以快速啟用和禁用對(duì)應(yīng)的安全規(guī)則。執(zhí)行“getsebool -a |wc -l”命令,顯示布爾變量的數(shù)量信息。執(zhí)行“getsebool -a”命令,可以顯示所有的布爾變量。在對(duì)應(yīng)布爾變量的右側(cè)如果顯示為“off”,表示其處于禁用狀態(tài),顯示為“on”,表示處于激活狀態(tài)。

當(dāng)然,用戶可以根據(jù)需要來靈活調(diào)整。例如,執(zhí)行“getsebool -a | grep ftp”命令,可以查看和FTP相關(guān)的布爾變量。執(zhí)行“setsebool ftpd_use_nfs=1”命令,激活“ftpd_use_nfs”安全規(guī)則,允許FTP使用NFS網(wǎng)絡(luò)共享。

注意,這種修改方式只是臨時(shí)生效的。執(zhí)行“setsebool -P ftpd_use_nfs=1”命令,可以實(shí)現(xiàn)永久修改。

例如,當(dāng)啟用了FTP服務(wù)后,進(jìn)入“/etc/vsftpd”目錄,執(zhí)行“vim vsftpd.conf”命令,打開vsFTP配置文件。在“anonymous=”欄中可以設(shè)置是否開啟匿名用戶。在“anon_upload_enable=”欄中設(shè)置是否允許匿名用戶上傳文件。對(duì)該配置文件進(jìn)行修改,雖然可以允許匿名用戶進(jìn)行登錄并下載文件,但是是不允許上傳文件的。利用SELinux機(jī)制,可以打破這一限制。

執(zhí)行“chcon -t public_content_rw_t/var/ftp/pub/”命令,修改指定FTP目錄的安全上下文類型。

執(zhí)行“setsebool-P allow_ftpd_anon_write=on”命令,將“allow_ftpd_anon_write”的值設(shè)置為“on”,其中的“-P”參數(shù)表示執(zhí)行永久性設(shè)置,防止重啟系統(tǒng)之后恢復(fù)其預(yù)設(shè)值?!癮llow_ftpd_anon_write”是針對(duì)允許匿名FTP賬戶是否可以寫操作的項(xiàng)目,將其設(shè)置為“on”,可以讓FTP匿名用戶上傳文件。

另外,在默認(rèn)情況下,如果使用本地賬戶登錄FTP服務(wù),是可以自動(dòng)切換自己的Home目錄。但是當(dāng)開啟SELinux后,是不允許進(jìn)行切換和上傳文件的。執(zhí)行“setsebool -P ftp_home_dir=on”命令,可以解除這一限制。

快速排查SELinux故障

在使用SELinux保護(hù)系統(tǒng)時(shí),如果遇到問題的話,可以執(zhí)行“sealert -a/var/log/audit/audit.log”命令,對(duì)SELinux的活動(dòng)信息進(jìn)行分析,就可以找到解決策略,其中的“audit.log”為SELinux的審計(jì)日志文件。當(dāng)其分析完畢后,在返回信息的底部的“Raw Audit Message”欄中會(huì)顯示最近有關(guān)SELinux的警告信息。例如,因?yàn)锳pache的網(wǎng)頁目錄文件安全配置信息異常導(dǎo)致的錯(cuò)誤等。在該分析報(bào)告中會(huì)給出具體的解決方法,例如提示用戶執(zhí)行“grep httpd/var/log/audit/audit.log | audit2allow-M mypol”和“semodule -i mypol”命令,就可以解決問題。

使用SELinux保護(hù)端口安全

對(duì)于端口安全來說,不僅可以使用防火墻進(jìn)行控制,在RedHat7中還可以使用SeLinux,對(duì)端口打上安全標(biāo)簽,將端口配置信息固定下來,不允許隨意綁定端口。

例如,執(zhí)行“vi/etc/ssh/sshd/sshd_config”命令,將其中的“port”項(xiàng)的值修改為“9789”,將SSH連接端口進(jìn)行了調(diào)整。

之后執(zhí)行“systemctl restart sshd”命令,來重啟SSH服務(wù)。雖然系統(tǒng)沒有提示,但是該服務(wù)其實(shí)并沒有啟動(dòng)。

執(zhí)行“systemctl status sshd”命令,可以看到系統(tǒng)提示該服務(wù)沒有正常啟動(dòng)。執(zhí)行“tail/var/log/secure”命令,可以看到具體的錯(cuò)誤信息,提示沒有權(quán)限綁定修改后的端口。

執(zhí)行“journalctl -xn status sshd”命令,也可以看到相關(guān)的錯(cuò)誤信息。這其實(shí)就是SELinux在發(fā)揮作用,為了讓上述端口修改操作順利進(jìn)行,可以執(zhí)行“semanage port -a -t ssh_port_t -p tcp 9789”命令,就可以將TCP 9789定義為SSH的端口號(hào)。

之后執(zhí)行“systemctl restart sshd”命令,就可以順利啟動(dòng)SSH服務(wù)了。執(zhí)行“semanage port -l”命令,可以查看所有的端口對(duì)應(yīng)列表信息。

例如,執(zhí)行“semanage port -a -t http_port_t -p tcp 81”命令,可以將TCP 81端口添加為HTTP端口。執(zhí)行“semanage port--delete -p tcp 9789”命令,可以刪除指定端口的定義信息。

猜你喜歡
命令端口規(guī)則
只聽主人的命令
撐竿跳規(guī)則的制定
數(shù)獨(dú)的規(guī)則和演變
一種端口故障的解決方案
移防命令下達(dá)后
讓規(guī)則不規(guī)則
Coco薇(2017年11期)2018-01-03 20:59:57
端口阻塞與優(yōu)先級(jí)
TPP反腐敗規(guī)則對(duì)我國的啟示
這是人民的命令
初識(shí)電腦端口
電腦迷(2015年6期)2015-05-30 08:52:42
万载县| 平定县| 东乌珠穆沁旗| 柏乡县| 托克托县| 沭阳县| 二连浩特市| 石门县| 南汇区| 和顺县| 镇雄县| 色达县| 晋城| 灵宝市| 中卫市| 武平县| 喜德县| 奉新县| 德庆县| 涪陵区| 宁陕县| 新和县| 疏附县| 富川| 新源县| 岗巴县| 鞍山市| 太仓市| 格尔木市| 西畴县| 金湖县| 尼勒克县| 喀什市| 隆昌县| 满洲里市| 普定县| 寿宁县| 自治县| 清镇市| 巢湖市| 高碑店市|