- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
在過往實(shí)驗(yàn)中,為圖便捷曾關(guān)閉 SELinux 安全機(jī)制,但不可否認(rèn),SELinux 對于對外發(fā)布業(yè)務(wù)的服務(wù)器而言,是極為關(guān)鍵的安全防護(hù)屏障,開啟狀態(tài)才是最佳實(shí)踐。
下面就帶大家一起學(xué)習(xí)一下什么SELinux以及如何使用它。
1. SELinux概述
SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對于強(qiáng)制訪問控制的實(shí)現(xiàn),是 Linux歷史上最杰出的新安全子系統(tǒng)。NSA是在Linux社區(qū)的幫助下開發(fā)了一種訪問控制體系,在這種訪問控制體系的限制下,進(jìn)程只能訪問那些在他的任務(wù)中所需要文件。SELinux 默認(rèn)安裝在 Fedora 和 Red Hat Enterprise Linux 上,也可以作為其他發(fā)行版上容易安裝的包得到。
2. 實(shí)驗(yàn)環(huán)境
Linux系統(tǒng)版本:Centos 7.4最小化安裝
3. SELinux狀態(tài)
三種配置狀態(tài):
enforcing:強(qiáng)制模式,SELinux已經(jīng)啟動permissive:寬容模式,SELinux已經(jīng)啟動,但不會禁止,只是會提出警告信息disabled:關(guān)閉模式,關(guān)閉SELinux
3.1 查看當(dāng)前SELinux狀態(tài)
getenforce
SELinux默認(rèn)狀態(tài)為enforcing。
3.2 修改SELinux狀態(tài)
3.2.1 臨時(shí)關(guān)閉,permissive狀態(tài)
語法:
setenforce 0
3.2.2 永久關(guān)閉
vi /etc/selinux/config
將:SELINUX=enforcing
改為:SELINUX=disabled
或者在命令行使關(guān)閉SELinux:
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
臨時(shí)關(guān)閉不需要重啟服務(wù)器,永久關(guān)閉SELinux必須重啟服務(wù)器。
4. SELinux類型
SELinux有三種類型:
targeted - Targeted processes are protected,
minimum - Modification of targeted policy. Only selected processes are protected.
mls - Multi Level Security protection.
系統(tǒng)默認(rèn)是targeted類型,可以更改類型:
vi /etc/selinux/config
SELINUXTYPE=targeted
5. 實(shí)驗(yàn)操作
接下來我們通過一個(gè)實(shí)驗(yàn)來講解SELinux的作用。
5.1 安裝Apache
yum install httpd
5.2 編輯測試頁
echo 'HTML TEST SELinux !' > /var/www/html/index.html
注意,新創(chuàng)建的index.html存儲在Apache默認(rèn)路徑下。
5.3 啟動Apache測試
systemctl start httpd #啟動服務(wù)
打開網(wǎng)頁測試,前提是配置好防火墻。
防火墻配置:
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
網(wǎng)頁測試:
可以看到SELinux在開啟狀態(tài)下訪問正常。
5.4 建立別名
什么是別名?就是在本地建立文件夾和網(wǎng)站根目錄,不直接把index.html創(chuàng)建到/var/www/html文件夾中,如下操作:
5.4.1 創(chuàng)建文件夾
mkdir /local
5.4.2 創(chuàng)建測試頁
echo 'HTML LOCAL TEST SELinux!' > /local/index.html
5.4.3 創(chuàng)建軟鏈接
ln -s /local /var/www/html/local
5.4.4 重啟Apache測試
注意是在SELinux開啟的情況下。
重啟Apache:
systemctl restart httpd
網(wǎng)頁測試:
訪問被拒絕。
5.4.5 關(guān)閉SELinux再測試
setenforce 0
網(wǎng)頁測試:
訪問正常。
6. 配置SELinux文件上下文
我們還是有Apache為例,接著第5點(diǎn)繼續(xù)操作。
6.1 查看上下文
6.1.1 查看Apache默認(rèn)文件上下文
ls -lZ /var/www/html/index.html
上下文屬性為:httpd_sys_content_t
6.1.2 查看軟鏈接的文件上下文
ls -lZ /var/www/html/local/index.html
上下文屬性為:default_t
6.1.3 區(qū)別
可以清楚的看到,Apache默認(rèn)的文件目錄上下文是httpd_sys_content_t,而在系統(tǒng)本地新建文件目錄的上下文是default_t。
6.2 修改上下文
方法一:
chcon -R -t httpd_sys_content_t /local
或是
chcon -R --reference /var/www/html /local
說明:
-R:遞歸的意思
-t:類型
httpd_sys_content_t:在SELinux中代表Apache目錄的類型,所以要設(shè)置成這個(gè)
--reference:參數(shù)一個(gè)目錄設(shè)置另一個(gè)目錄的類型
注意,以上兩種方式都是臨時(shí)修改,重啟服務(wù)器后會失效,我們需要的是永久生效,把配置寫入內(nèi)核,需要使用到semanage命令工具。需要先安裝一下:
安裝:
yum install policycoreutils-python
配置:
semanage fcontext -a -t httpd_sys_content_t "/local(/.*)?"
restorecon -R -v -F /local #刷新完才能生效
說明:
-R:遞歸的意思
-v:可視化
-F:強(qiáng)制
7. 測試SELinux基于端口上下文
在第6節(jié)中配置完了文件級別的SELinux配置,接下來我們再說一下基于端口的上下文。
7.1 創(chuàng)建測試頁
echo 'HTML TEST PORT 80 !' > /var/www/html/index.html
mkdir /var/www/8899
echo 'HTML TEST PORT 8899 !' > /var/www/8899/index.html
7.2 配置Apache虛擬主機(jī)
vi /etc/httpd/conf.d/0.conf
<virtualhost 192.168.64.138:80>
servername 192.168.64.138
documentroot /var/www/html</virtualhost>
vi /etc/httpd/conf.d/8899.conf
<virtualhost 192.168.64.138:8899>
servername 192.168.64.138
documentroot /var/www/8899</virtualhost>
vi /etc/httpd/conf/httpd.conf
#增加一個(gè)監(jiān)聽端口8899
Listen 8899
7.3 配置防火墻
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=8899/tcp
firewall-cmd --reload
7.4 查看SELinux端口上下文
semanage port -l | grep http
我們自定義的8899端口默認(rèn)不是SELinux端口上下文中。
7.5 配置SELinux端口上下文
semanage port -a -t http_port_t -p tcp 8899
7.6 重啟Apache測試
在沒有配置SELinux之前(7.5小節(jié))是無法重啟的HTTP服務(wù),可以自行測試一下。
systemctl restart httpd
測試80端口:
測試8899端口:
8. 總結(jié)
到此,SELinux基本的配置及使用就差不多了,更多的配置在用到時(shí)再使用。
SELinux日志默認(rèn)存儲文件:/var/log/audit/audit.log;
提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!
這條文檔是否有幫助解決問題?
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP