SELinux簡介

SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對于強制訪問控制的實現,是Linux歷史上最杰出的新安全子系統。NSA是在Linux社區的幫助下開發了一種訪問控制體系,在這種訪問控制體系的限制下,進程只能訪問那些在他的任務中所需要文件。

本節索引:

一、SELinux介紹

二、SELinux安全上下文

三、SELinux相關操作

四、操作:SELinux環境下遷移httpd服務默認目錄

 

6G33]]IW}_CZCSWFBY_2}EK

一、SELinux介紹:

SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對于強制訪問控制的實現,是

Linux歷史上最杰出的新安全子系統。NSA是在Linux社區的幫助下開發了一種訪問控制體系,在

這種訪問控制體系的限制下,進程只能訪問那些在他的任務中所需要文件

 

SELinux是一種基于 域-類型 模型(domain-type)的強制訪問控制(MAC)安全系統,它由NSA

編寫并設計成內核模塊包含到內核中,相應的某些安全相關的應用也被打了SELinux的補丁,最

后還有一個相應的安全策略。任何程序對其資源享有完全的控制權。假設某個程序打算把含有潛

在重要信息的文件扔到/tmp目錄下,那么在DAC情況下沒人能阻止他。SELinux提供了比傳統的

UNIX權限更好的訪問控制。

 

 

傳統UNIX系統使用的安全系統:自由訪問控制(DAC:Discretionary Access Control

SELinx采用的安全系統:強制訪問控制(MAC:Mandatory Access Control

DAC環境下進程是無束縛的

MAC環境下策略的規則決定控制的嚴格程度

MAC環境下進程可以被限制的

策略被用來定義被限制的進程能夠使用那些資源(文件和端口)

默認情況下,沒有被明確允許的行為將被拒絕

 

SElinux的工作類型:

使用cat /etc/selinux/config 可以查看當前SELinux類型和系統支持的所有SELinux類型,不同系統版本支持類型有所不同

SELinux共有四種工作類型:

(1)strict:centos5,每個進程都受到selinux的控制,不識別的進程將拒絕

(2)targeted: 用來保護常見的網絡服務,僅有限進程受到selinux控制,只監控容易

被入侵的進程,centos4只保護13個服務,centos5保護88個服務,不識別的服務將允許

(3)minimum:centos7,修改的targeted,只對選擇的網絡服務

(4)mls:提供MLS(多級安全)機制的安全性

 

targeted現為CentOS系統默認SElinux類型,minimum和mls穩定性不足,未加以應用,strict現已不存在

 

SELinux的優點與缺點:

優點:

(1)通過MAC對訪問的控制徹底化

(2)對于進程只賦予最小的權限

(3)防止權限升級

(4)對于用戶只賦予最小的權限

缺點:

(1)存在特權用戶root

(2)對于文件的訪問權劃分不夠細

(3)SUID程序的權限升級

(4)DAC(Discretionary Access Control)問題

 

二、SELinux安全上下文

傳統Linux,一切皆文件,由用戶,組,權限控制訪問

在SELinux中,一切皆對象(object),由存放在inode的擴展屬性域的

安全元素所控制其訪問

所有文件和端口資源和進程都具備安全標簽:安全上下文(security?context)

 

安全上下文有五個元素組成:

user:role:type:sensitivity:category

user_u:object_r:tmp_t:s0:c0

 

user:指示登錄系統的用戶類型

role:定義文件,進程和用戶的用途

type:指定了數據類別,type類別改變可能導致進程無法訪問文件

sensitivity:限制訪問的需要,由組織定義的分層安全級別。s0最低,Target策略默認使用s0

category:對于特定組織劃分不分層的分類,Target策略默認不使用category

 

其中最重要的一項為文件的type標簽,如httpd進程只能在httpd_t 里運行,/etc/passwd只有type

為passwd_file_t才能起作用,/var/log/messages文件如果不是var_log_t類型將無法記錄日志等,

在SELinux安全策略中,修改了type類型,可能導致文件無法正常使用。

 

三、SElinux相關操作:

1.SELinux啟用、禁用

SElinux共有三種運行模式:

SELINUX=enforcing???????????????? 啟用SELinux

SELINUX=disabled?? ? ? ? ? ? ? ? ? 徹底禁用SELinux

SELINUX=permissive?????????????? 禁用,但違反SELinux策略會產生告警

 

getenforce??????????????????????? 顯示當前SEliunx運行模式

 

a)利用命令臨時修改:

setenforce 0???????????????????? 臨時切換到permissive

setenforce 1???????????????????? 臨時切換到enforcing

 

b)修改配置文件:

/etc/selinux/config

/etc/sysconfig/selinux??????????? SELINUX={disabled|enforcing|permissive}

/boot/grub/grub.conf???????????? 使用selinux=0禁用SElinux

注:grub.conf優先級高于/etc/selinux/config

 

 

2.修改SELinix安全標簽:

給文件重新打安全標簽:

chcon [OPTION]… [-u USER] [-r ROLE] [-t TYPE] FILE…

chcon [OPTION]… –reference=RFILE FILE…

-R:遞歸打標;

恢復目錄或文件默認的安全上下文:

restorecon [-R] /path/to/somewhere

 

SELinux端口標簽:

semanage port -l|grep http?? 查看http允許使用的端口

semanage port -a -t http_port_t -t tcp 9527??????? 添加http允許使用的端口包含9527

 

3.SELinux默認數據庫查詢與修改

查看SELinux默認數據庫:

semanage fcontext -l

查看某文件放入默認SElinux類型:

semanage fcontext -l | grep /path/file

添加到SELinux默認數據庫:

semanage fcontext -a –t httpd_sys_content_t ‘/testdir(/.*)?’

restorecon –Rv /testdir

從SElinux默認數據庫中刪除:(type類型將變回default_t)

semanage fcontext -d –t httpdsyscontentt ‘/testdir(/.*)?’

 

4.SELinux端口標簽

在SELinux安全策略中,定義了服務具體可使用的端口號,如果服務未使用對應的端口號,將會

導致無法使用,semanage命令也可以用來修改這些默認端口。

查看端口標簽:

semanage port –l

添加指定端口到指定服務:

semanage port -a -t port_label -p tcp|udp PORT

semanage port -a -t http_port_t -p tcp 9527

從指定服務刪除指定端口:

semanage port -d -t port_label -p tcp|udp PORT

semanage port -d -t http_port_t -p tcp 9527

修改現有端口為新標簽:

semanage port -m -t port_label -p tcp|udp PORT

semanage port -m -t http_port_t -p tcp 9527

 

 

5.SElinux布爾值

布爾型規則:

getsebool

setsebool

查看bool命令:

getsebool [-a] [boolean]

semanage boolean –l

semanage boolean -l –C 查看修改過的布爾值

設置bool值命令:

setsebool [-P] boolean value(on,off)?????????????? 不加-P只修改內存,臨時生效

setsebool [-P] Boolean=value(0,1)??????????????? 加-P同時修改內存和配置bool

 

6.SELinux日志管理:

將錯誤的信息寫入/var/log/message

yum install setroubleshoot(重啟生效)

查看安全事件日志說明

grep setroubleshoot /var/log/messages

sealert -l UUID

掃描并分析日志

sealert -a /var/log/audit/audit.log

 

7.SELinux幫助:

yum –y install selinux-policy-devel ( centos7.2)

yum –y install selinux-policy-doc (centos7.3/7.4)

mandb | makewhatis

man -k _selinux

 

 

四、操作:SELinux環境下遷移httpd服務默認目錄

將默認目錄/var/www/html遷移至/data/website/html目錄

一、創建/data/html目錄:

mkdir ? /data/html

二、修改httpd服務配置文件

cat ?/etc/httpd/conf/httpd.conf

#DocumentRoot “/var/www/html” ? ? ? ?加上注釋

DocumentRoot “/data/website/html”

#<Directory “/var/www/html”> ? ? ? ? ? ? 加上注釋

<Directory “/data/website/html”>

配置

三、修改目錄type類型:

semanage fcontext -l |grep /var/www/html ? ? ? ? ? ? ? ? ? ? ? ? ?查看默認目錄的文件type類型

chcon -R -t httpd_sys_content_t /data/website/html

selinux數據庫

或:

修改安全上下文數據庫

semanage fcontext -a ?-t ?httpd_sys_content_t ? /data/html(/.*)?

restorecon -R /data/html ? ? ? ? ? ? ? ? ? ? ? ? ? ?同步數據庫type類型

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/98614

(0)
wangxczwangxcz
上一篇 2018-05-15
下一篇 2018-05-15

相關推薦

  • SAMBA服務介紹及相關實驗

    Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。

    2018-06-29
  • d3基本命令總結

    ltrace ls 跟蹤進程調用庫函數的情況 strace ls 跟蹤一個進程的系統調用或信號產生的情況 安裝:yum -y install ltrace   hex   兼容分時系統 同一個時間,CPU只能處理終端的請求,綁定task和cpu。   80年代 GNU (GNU Not is UNIX)單一處理 AIX HP I…

    Linux筆記 2018-07-30
  • 用戶管理練習

    用戶管理練習: 1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d’ ‘ -f1 | sort -u liulian root 2、取出最后登錄到當前系統的用戶的相關信息。 [root@localhost ~]# last | h…

    2018-05-28
  • 第三周作業20180528

    1、 列出登錄用戶 登錄用戶去重 2、 顯示最后登錄用戶信息 3、 查看使用最多的SHELL 4、 5 6 7、 8、 9、 10、    

    2018-05-28
  • 文件權限

    介紹了修改文件權限的方法,umask和三種特殊權限以及acl控制訪問表

    2018-04-04
欧美性久久久久