Linux中的SELinux与chcon以及Samba实现【转】
一、SELinux
SElinux的前身是NSA(美國國家安全局)發(fā)起的一個項目。它的目的是將系統(tǒng)加固到可以達(dá)到軍方級別。
為什么NSA選擇Linux呢?
在目前市面上大多數(shù)操作系統(tǒng)都是商用閉源的,只有Linux是開源的,這樣修改并加入這項功能就方便許多,而且沒有版權(quán)糾紛。所以,現(xiàn)在selinux就成為了Linux內(nèi)核的一部分。
在了解selinux之間,我們需要知道DAC和CS的概念,它們是linux系統(tǒng)本身的安全機制。
DAC:自主訪問控制
每一個用戶為了能夠?qū)崿F(xiàn)和其他用戶共享文件,在使用ACL之前,只能通過改變這個文件其他用戶的權(quán)限,但是這中方法給系統(tǒng)安全帶來了無窮的隱患。
CS(安全上下文):取決于發(fā)起用戶的權(quán)限和文本本身的權(quán)限?
CS+DAC給系統(tǒng)的安全機制帶來了漏洞,事想apache用戶可以查看/etc/passwd,如果它有寫權(quán)限,就可能被利用進(jìn)而就修改passwd文件,危害系統(tǒng)安全。
所有才又了MAC強制訪問控制的概念
MAC: Mandatory Access Control? 強制訪問控制,它是selinux實現(xiàn)訪問控制的基礎(chǔ)
還通過httpd服務(wù)來說明它的原理:
SELINUX通過type enforce (TE)強制類型策略將httpd的工作目錄定義在一個特定的目錄/var/www用戶如果在定義其他目錄,將不允許訪問,從而實現(xiàn)mac的強制訪問控制。
selinux是怎么工作的
它通過operation (操作)的主和賓打一個“標(biāo)簽”,在一個“類型”里只能由特定的目錄或用戶執(zhí)行。這樣可以限定一個進(jìn)程的執(zhí)行范圍只能在一個“沙箱”(sandbox)內(nèi)了(最小權(quán)限法則)
###operation: 讀,寫,執(zhí)行,等。其實是一個主謂賓的結(jié)構(gòu) Subject Operation Object
###最小權(quán)限法則:例如定義Sbjiect httpd?? 的目錄/var/www 為public_content_t類型,這樣,httpd只能訪問有這個特定類型的文件或目錄,這些文件就叫沙箱“sendbox”
使用selinx,必須精心設(shè)計一套訪問法則
給不同的進(jìn)程打上不同的“域”,給不同的目錄打上不同的”類型“通過定義“類型”和“域”的對應(yīng)規(guī)則,來實現(xiàn)。selinx需要域和標(biāo)簽的對應(yīng)關(guān)系,一對一對應(yīng)???? 。但是系統(tǒng)上有上千個進(jìn)程,實現(xiàn)起來很麻煩,所以一般情況下,并不是用selinx作為安全防范。??????????????????
selinux的實現(xiàn)機制有兩種
strict:?????? 任何進(jìn)程都受selinux的控制,一般不用,太難設(shè)定
targeted:?? 紅帽開發(fā),指定選定的進(jìn)程來受SELINUX,這種機制使得selinx更加容易受到控制?
policy: 規(guī)則組合起來就叫策略
規(guī)則通常是以二進(jìn)制文件存在的(編輯完轉(zhuǎn)換成二進(jìn)制),這樣可以降低系統(tǒng)資源占用
ll /etc/selinxu/policy
MLS? muiti level scurity
?
selinxu把一些規(guī)則里面可以方便控制的功能設(shè)定為on或者off,這些都成為布爾類型
getsebool -a?? 可以顯示這些布爾型的內(nèi)容
fcontext 規(guī)定目錄屬于哪個進(jìn)程的范圍
啟動使用selinux
1.啟用selinux
1.vim /etc/sysconfig/selinux?
2.SELINUX=enforcing????? #任何進(jìn)程都受selinux控制?
3.???????????????????????????????????? permissive??? #仍然受控制,但是進(jìn)程進(jìn)入了別的目錄會記錄到日志?
4.???????????????????????????????????? disable?????????? #干凈徹底的關(guān)閉?
5.setenforce?
6.genenforce?
2.顯示標(biāo)簽
1.ls -Z?????????? 顯示文件的標(biāo)簽?
2.?????????????????? 一共五段???? 角色:selinux里另外定義的用戶?
3.????????????????????????????????????????????????????????? object_r: 有點類似于組?
4.????????????????????????????????????????????????????????? user_home_t: 域或者類型(最重要)通過改變它可以控制訪問。類型強制的機制就是通過它實現(xiàn)的?
5.ps -Z????????? 顯示進(jìn)程的標(biāo)簽?
6.所有顯示unconfined_t都表示不受selinux控制?
7.ps auxZ | grep httpd?
8.ls -dZ?
在不同的目錄建立的文件類型是不一樣的,歸不同的進(jìn)程管理。
3.改變一個類型的標(biāo)簽
1.chcon???? chage contex? 改變上下文?
2.chcon -t??? 改類型,指定為特定類型?
3.??????????????? -u????
4.??????????????? -R?? 遞歸修改,可以改變目錄下所有目錄?
5.????????????????????? --reference=?? 以某個文件的標(biāo)簽為參照改變成一樣的標(biāo)簽?
6.chcon -R --reference=/var/www/html /www?
7.chcon -t default_t /www/index.html?
4.恢復(fù)默認(rèn)安全上下文及修改
1.restorecon?
2.?????????????????? -R?????????????????? 遞歸?
3.?????????????????? -F?????????????????????????????????????????? 強制?
4.?????????????????? -v?????????????????????????????????????????? 顯示詳細(xì)信息????
5.restorecon -R -v -F /www???????????? # 顯示/www目錄的詳細(xì)CS信息??????????????????????
6.semange?
7.?????????????????? -d????????????????? 刪除?
8.?????????????????? -m???????????????? 修改?
9.?????????????????? -r?
10.????????????????? -a?????????????????? 附加?
11.?????????????????? -t??????????????????? 類型?
12.??
6.開啟布爾類型
1.getsebool -a? | grep httpd?????????????????? #查看某個對應(yīng)的布爾類型的值?
2.setsebool httpd_enable_cgi=on????????? # 加上-p選項永久有效?
?
二、實現(xiàn)samba來測試selinux控制
?1.添加tools文件夾
1.vim /etc/samba/smb.conf?
2.[tools]?
3.?????? path = /share??????????????????????? #沒有的話事前創(chuàng)建一個?
4.?????? public = yes? 5.??????? write list = @mygrp???????????????? #只允許mygrp組具有創(chuàng)建文件的權(quán)限?
6.?????? browseable = yes?
7.service smb start?
2.添加用戶gentoo,并設(shè)置samba密碼,允許器登陸samba服務(wù)器在tools下創(chuàng)建文件
1.</pre><pre class="cpp" name="code">groupadd mygrp?
2.useradd gentoo -g mygrp?
3.[root@station32 var]# smbpasswd -a gentoo?
4.New SMB password:?
5.Retype new SMB password:? 6.Added user gentoo.?
7.smbclient -L 192.168.0.32 -U gentoo????????? # 查看samba服務(wù)器的內(nèi)容?
3.我們查看下/shared目錄的CS,并且開啟selinux
1.ls -dZ /share/?
2.drwxrwxr-x root mygrp root:object_r:default_t????????? /share/?
3.setenforce 1?
4.開啟selinux后,再使用smbclient命令就會報錯,我們看下配置文件里面有這樣一行 # To set a label use the following: chcon-t samba_share_t /path ,所以我們必須把/shared文件夾的CS修改后才能正常使用samba
1.chcon -t samba_share_t? /share?
?
?
5.我們關(guān)閉samba里關(guān)于訪問家目錄的布爾類型
1.setsebool samba_enable_home_dirs off??
這個時候使用win網(wǎng)絡(luò)鄰居,以用戶gentoo登陸后,就不能進(jìn)入gentoo家目錄了
?
6.我們將它開啟就又能訪問了,命令如下:
1.setsebool samba_enable_home_dirs on?
本篇文章來源于 Linux公社網(wǎng)站(www.linuxidc.com)? 原文鏈接:http://www.linuxidc.com/Linux/2011-09/42783.htm
轉(zhuǎn)載于:https://www.cnblogs.com/Totems/p/3246533.html
總結(jié)
以上是生活随笔為你收集整理的Linux中的SELinux与chcon以及Samba实现【转】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “伪基站”任意冒用手机号短信诈骗
- 下一篇: python豆瓣mysql_python