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 17:24
下一篇 2018-05-15 19:59

相關推薦

  • systemd及awk簡介

    systemd及awk簡介

    Linux筆記 2018-04-20
  • 轉義字符Escape character在正則中的用法

    通過()的在基本正則和擴展正則中的不同使用,詳細介紹了轉義字符的使用注意事項

    Linux筆記 2018-04-13
  • linux練氣篇

    1、描述計算機的組成及其功能。
    2、按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。
    3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述。
    4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。
    5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。
    6、請羅列Linux發行版的基礎目錄名稱命名法則及功用規定

    Linux筆記 2018-05-12
  • linux基礎2

    1.文件管理常用命令: <1>mkdir,rmdir mkdir:make directory mkdir [OPTION]… DIRECTORY… -p:自動按需創建父目錄; -v:verbose,顯示詳細過程; -m MODE;直接給定權限; 注意:路徑基名方為命令的作用對象;基名之前的路徑必須存在; rmdir:re…

    Linux筆記 2018-07-01
欧美性久久久久