SELinux·

SELinux介紹

  • SELinux: Secure Enhanced Linux,是美國(guó)國(guó)家安全局(NSA=The National Security Agency)和SCC(Secure Computing Corporation)開發(fā)的Linux的一個(gè)強(qiáng)制訪問(wèn) 控制的安全模塊。2000年以GNU GPL 發(fā)布,Linux 內(nèi)核2.6版本后集成在內(nèi)核中
  • DAC:Discretionary Access Control 自由訪問(wèn)控制
  • MAC:Mandatory Access Control 強(qiáng)制訪問(wèn)控制
DAC 環(huán)境下進(jìn)程是無(wú)束縛的
MAC 環(huán)境下策略的規(guī)則決定控制的嚴(yán)格程度
MAC 環(huán)境下進(jìn)程可以被限制的
策略被用來(lái)定義被限制的進(jìn)程能夠使用那些資源(文件和端口)
默認(rèn)情況下,沒(méi)有被明確允許的行為將被拒絕

SELinux 工作類型

  • SELinux 有四種工作類型:
strict:centos5,每個(gè)進(jìn)程都受到selinux 的控制
targeted:用來(lái)保護(hù)常見的網(wǎng)絡(luò)服務(wù), 僅有限進(jìn)程受到selinux 控制,只監(jiān)控容易被入侵的進(jìn)程,centos4只保護(hù)13個(gè)服務(wù),centos5保護(hù)88個(gè)服務(wù)
minimum:centos7, 修改的targeted ,只對(duì)選擇的網(wǎng)絡(luò)服務(wù)
mls: 提供MLS(多級(jí)安全)機(jī)制的安全性
  • targeted為默認(rèn)類型,minimum和mls 穩(wěn)定性不足,未加以應(yīng)用,strict以不在使用

SELinux 安全上下文

  • 傳統(tǒng)Linux,一切皆文件,由用戶,組,權(quán)限控制訪問(wèn)
  • 在SELinux中,一切皆對(duì)象(object),由存放在inode的擴(kuò)展屬性域的安全元素所控制其訪問(wèn)
  • 所有文件和端口資源和進(jìn)程都具備安全標(biāo)簽:安全上下文(security context)
  • 安全上下文有五個(gè)元素組成:
user:role:type:sensitivity:category
user_u:object_r:tmp_t:s0:c0
  • 實(shí)際上下文:存放在文件系統(tǒng)中
ls –Z ;ps –Z
  • 期望( 默認(rèn))上下文:存放在二進(jìn)制的SELinux 策略庫(kù)(映射目錄和期望安全上下文)中
semanage fcontext –l

五個(gè)安全元素

  • User: 指示登錄系統(tǒng)的用戶類型,如root,user_u,system_u,多數(shù)本地進(jìn)程都屬于自由(unconfined )進(jìn)程
  • Role: 定義文件,進(jìn)程和用戶的用途:文件:object_r ,進(jìn)程和用戶:system_r
  • Type: 指定數(shù)據(jù)類型,規(guī)則中定義何種進(jìn)程類型訪問(wèn)何種文件Target策略基于type實(shí)現(xiàn), 多服務(wù)共用:public_content_t
  • Sensitivity:限制訪問(wèn)的需要,由組織定義的分層安全級(jí)別,如unclassified, secret,top,secret,一個(gè)對(duì)象有且只有一個(gè)sensitivity,分0-15級(jí),s0最低,Target 策略默認(rèn)使用s0
  • Category:對(duì)于特定組織劃分不分層的分類,如FBI Secret,NSA secret,一個(gè)對(duì)象可以有多個(gè)categroy,c0-c1023共1024個(gè)分類,Target策略不使用category

SELinux 策略

  • 對(duì)象(object):所有可以讀取的對(duì)象,包括文件、目錄和進(jìn)程,端口等

  • 主體:進(jìn)程稱為主體(subject)

  • SELinux 中對(duì)所有的文件都賦予一個(gè)type的文件類型標(biāo)簽,對(duì)于所有的進(jìn)程也賦予各自的一個(gè)domain的標(biāo)簽。domain 標(biāo)簽?zāi)軌驁?zhí)行的操作由安全策略里定義

  • 當(dāng)一個(gè)subject 試圖訪問(wèn)一個(gè)object ,Kernel 中的策略執(zhí)行服務(wù)器將檢查AVC ( 訪問(wèn)矢量緩存Access Vector Cache), 在AVC中,subject和object的權(quán)限被緩存(cached) ,查找“應(yīng)用+文件”的安全環(huán)境。然后根據(jù)查詢結(jié)果允許或拒絕訪問(wèn)

  • 安全策略:定義主體讀取對(duì)象的規(guī)則數(shù)據(jù)庫(kù),規(guī)則中記錄了哪個(gè)類型的主體使用哪個(gè)方法讀取哪一個(gè)對(duì)象是允許還是拒絕的,并且定義了哪種行為是充許或拒絕

  • 文件移動(dòng)的時(shí)候,會(huì)保留文件的context值,cp復(fù)制文件時(shí),會(huì)繼承目標(biāo)文件的context值

圖1
圖1
  • SELinux規(guī)則庫(kù):
    規(guī)則:哪種域能訪問(wèn)或哪些種類型內(nèi)文件;

設(shè)置SELinux

  • 配置SELinux:
SELinux是否啟用
給文件重新打安全標(biāo)簽
給端口設(shè)置安全標(biāo)簽
設(shè)定某些操作的布爾型開關(guān)
SELinux的日志管理
  • SELinux的狀態(tài):
enforcing:強(qiáng)制,每個(gè)受限的進(jìn)程都必然受限
permissive:啟用,每個(gè)受限的進(jìn)程違規(guī)操作不會(huì)被禁止,但會(huì)被記錄于審計(jì)日志
disabled:禁用關(guān)閉 
  • 相關(guān)命令:
getenforce:獲取selinux當(dāng)前狀態(tài)
sestatus:查看selinux狀態(tài)
setenforce 0|1
    0:設(shè)置為permissive
    1:設(shè)置為enforcing
  • 配置文件:
/boot/grub/grub.conf
    使用selinux=0禁用SELinux
/etc/selinux/config
/etc/sysconfig/selinux
SELINUX={disabled|enforcing|permissive}

修改SELinux 安全標(biāo)簽

  • 給文件重新打安全標(biāo)簽:
chcon [OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE...
chcon [OPTION]... --reference=RFILE FILE...
-R:遞歸打標(biāo);
圖2
圖2
  • 恢復(fù)目錄或文件默認(rèn)的安全 上下文:
restorecon [-R] /path/to/somewhere

默認(rèn)安全上下文查詢與修改

  • Semanage:來(lái)自policycoreutils-python包
  • 查看默認(rèn)的安全上下文
semanage fcontext –l
  • 添加安全上下文
semanage fcontext -a –t httpd_sys_content_t ‘/testdir(/.*)?’
restorecon –Rv /testdir
  • 刪除安全上下文
semanage fcontext -d –t httpd_sys_content_t ‘/testdir(/.*)?’

Selinux端口標(biāo)簽

  • 查看端口標(biāo)簽
semanage port –l
  • 添加端口
semanage port -a -t port_label -p tcp|udp PORT
semanage port -a -t http_port_t -p tcp 9527
圖3
圖3
  • 刪除端口
semanage port -d -t port_label -p tcp|udp PORT
semanage port -d -t http_port_t -p tcp 9527
圖4
圖4
  • 修改現(xiàn)有端口為新標(biāo)簽
semanage port -m -t port_label -p tcp|udp PORT
semanage port -m -t http_port_t -p tcp 9527
圖5
圖5

SELinux 布爾值

  • 布爾型規(guī)則:
getsebool  查看布爾值
setsebool  設(shè)置布爾值
  • 查看bool命令:
getsebool [-a] [boolean]
semanage boolean –l
semanage boolean -l –C  查看修改過(guò)的布爾值   
圖6
圖6
  • 設(shè)置bool值命令:
setsebool [-P] boolean value (on,off)
setsebool [-P] boolean=value (0 ,1)
    -P 修改bool值并保存磁盤,永久生效 
圖7
圖7

SELinux日志管理

yum install setroubleshoot(重啟生效)
    將錯(cuò)誤的信息寫入/var/log/message

grep setroubleshoot /var/log/messages
sealert -l UUID(UUID為message文件中的日志報(bào)錯(cuò)事件的UUID)
    查看安全事件日志說(shuō)明

sealert -a /var/log/audit/audit.log
    掃描并分析日志

SELinux幫助

 yum –y install selinux-policy-devel ( centos7.2)
yum –y install selinux-policy-doc
mandb | makewhatis   更新數(shù)據(jù)庫(kù)
man -k _selinux   查看幫助

yum install setroubleshoot*

安裝圖形化SELinux故障排錯(cuò)包

練習(xí)

1、啟用SELinux 策略并安裝httpd 服務(wù),改變網(wǎng)站的默認(rèn)主目錄為/website,添加SELinux文件標(biāo)簽規(guī)則,使網(wǎng)站可訪問(wèn)
2、修改上述網(wǎng)站的http端口為9527 ,增加SELinux端口標(biāo)簽,使網(wǎng)站可訪問(wèn)
3、啟用相關(guān)的SELinux布爾值,使上述網(wǎng)站的用戶student的家目錄可通過(guò)http訪問(wèn)
4、編寫腳本selinux.sh,實(shí)現(xiàn)開啟或禁用SELinux功能
    sed -ri.bak 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config
    sed -ri.bak  '/^SELINUX=/s/.*/SELINUX=disabled/' /etc/selinux/config
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SELinux的基本概念設(shè)置SELinux 一、SELinux的基本概念 (一)定義: SELinux:Secur...
    哈嘍別樣閱讀 664評(píng)論 0 1
  • 1.SELinux: Secure Enhanced Linux ? DAC:Discretionary Acce...
    尛尛大尹閱讀 800評(píng)論 0 1
  • SELinux介紹 SELinux: Secure Enhanced Linux, 是美國(guó)國(guó)家安全局(NSA=Th...
    頑媃啊閱讀 685評(píng)論 0 0
  • 一個(gè)程序被加載到內(nèi)存當(dāng)中運(yùn)行,那么在內(nèi)存內(nèi)的那個(gè)數(shù)據(jù)就被稱為進(jìn)程(process)。進(jìn)程是操作系統(tǒng)上非常重要的概念...
    Zhang21閱讀 2,112評(píng)論 0 12
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,694評(píng)論 19 139

友情鏈接更多精彩內(nèi)容