linux上安全軟件SElinux

selinux簡介

SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對于強制訪問控制的 實現,是 Linux歷史上最杰出的新安全子系統。NSA是在Linux社區的幫助下開發了一種訪問控制體系,在這種訪問控制體系的限制下,進程只能訪問那些在他的 任務中所需要文件。SELinux 默認安裝在 Fedora Red Hat Enterprise Linux 上,也可以作為其他發行版上容易安裝的包得到,2000年以GNU GPL發布,Linux內核2.6版本后集成在內核中

DACDiscretionary Access Control自由訪問控制

MACMandatory Access Control 強制訪問控制

DAC環境下進程是無束縛的

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

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

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

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

 

 

selinux的工作類型

selinux一共有四種工作類型

strict:每個進程都受到selinux的控制

targeted:用來保護常見的網絡服務,僅有限進程受到selinux控制,系統當中默認設置類型

minimum:這個模式在centos7上,是targeted的修改版,只對選擇的網絡服務,僅對選中的進程生效

mls:提供mls機制的安全性,國防級別的

 

 

selinux安全上下文

傳統的linux,一切皆文件,由用戶、組、權限來進行訪問控制,這當中有很多的缺陷

selinux中,一切皆對象(進程),有存放在inode的擴展屬性域的安全元素所控制其訪問

所有文件和端口資源和進程都具備安全標簽,這就是安全上下文

 

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

system_u:object_r:admin_home_t:s0

userroletypesensitivitycategory

user:指示登錄系統的用戶類型,如root,user_u,system_u,多數本地進程都屬于自由進程

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

type:指定數據類型,規則重定義何種進程類型訪問何種文件,target策略基于type實現,多服務功用,public_content_t

sensitivity:限制訪問的需要,由組織定義的分層安全級別,如unclassifiedsecret,top,一個對象有且只有一個sensitivity,分0-15個級別,s0最低,target策略默認使用是s0

category:對于特定組織劃分不分層的分類,如FBI secret,NSA secret,一個對象可以有多個category, c0-c10231024個分類,target策略不適用category

 

查看安全上下文

ls –Z ; ps  -Z

期望(默認)上下文:存放在二進制的selinux策略庫中

 

semanage  fcontext –l  查看系統中的默認安全上下文

 @font-face {
font-family: “宋體”;
}@font-face {
font-family: “Cambria Math”;
}@font-face {
font-family: “Calibri”;
}@font-face {
font-family: “@宋體”;
}p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0cm 0cm 0.0001pt; text-align: justify; font-size: 10.5pt; font-family: “Calibri”,”sans-serif”; }.MsoChpDefault { font-family: “Calibri”,”sans-serif”; }div.WordSection1 { } 1.jpg

selinux策略

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

主體:進程稱為主題(subject

selinux中對所有的文件都賦予一個type的文件類型標簽,對于所有的進程也賦予各自的一個domain標簽。domain標簽能夠執行的操作由安全策略里定義

當一個subject視圖訪問一個objectkernel中的粗略執行服務器將檢查AVC,在AVC中,subjectobject的權限被緩存,查找應用+文件的安全環境,然后根據查詢結果允許或拒絕訪問

安全策略:定義主體讀取對象的規則數據庫,規則中記錄了那個類型的主體使用了那個方法讀取哪一個對象是允許還是拒絕的,并且定義了那種行為是允許或拒絕

 

設置selinux

配置selinux

selinux是否啟用

給文件重新打安全標簽

給端口設置安全標簽

設定某些操作的布爾型開關

selinux的日志管理

 

selinux的狀態

enforcing:強制,每個受限的進程都必然受限

permissive:允許;每個受限的進程違規操作不會被禁止,但會被記錄與審計日志

disabled:禁用,允許任何操作

 

getenforce:獲取selinux當前狀態

sestatus:查看selinux狀態

setenforce  0|1

         0:設置為permissive

         1:設置為enforcing

 

配置文件

/etc/sysconfig/selinux鏈接文件鏈接到/etc/selinux/config

/etc/selinux/config 

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#       enforcing – SELinux security policy is enforced.

#       permissive – SELinux prints warnings instead of enforcing.

#       disabled – SELinux is fully disabled.

SELINUX=enforcing

# SELINUXTYPE= type of policy in use. Possible values are:

#       targeted – Only targeted network daemons are protected.

#       strict – Full SELinux protection.

SELINUXTYPE=targeted

 

SELINUX=enforcing 設置selinux的狀態

SELINUXTYPE=targeted 設置selinux的工作類型

 

設置selinux也可以在開機的時候設定,在/boot/grub/grub.conf文件內核那一行后面設定selinux的狀態selinux=0|1,只要配置文件或內核設定為禁用,最后selinux的狀態為禁用

注意:在從disabled狀態切換至enforcingpermissive狀態需要重啟系統,這時候系統會對每一個文件一一重打標簽,需要花費一定的時間。

 

修改selinux 的安全標簽

給文件重新打安全標簽

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

chcon [OPTION]… –reference=RFILE FILE..

   -R:遞歸打標,對目錄而言

例如我想給自己定義的web文檔根目錄自定義為/htdocs

chcon -R   httpd_sys_content_t   /htdocs

 

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

resotrecon  [-R]  /path/to/somewhere

 

例如:我又將web的文檔根目錄改為原來的目錄,這時候自定義的目錄的標簽需要還原

restorecon  -R   /htdocs     

恢復是根據策略庫當中的策略進行還原

 

默認安全上下文查詢與修改

semanage來自policycoreutils-python包,有些系統默認沒有安裝,安裝次包即可使用semanage命令

 

查看默認的安全上下文

semanage fcontext –l

2.jpg

添加安全上下文

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

restorecon –Rv  /home/hadoop  此步驟一定不能忘記,它從策略庫進行還原安全上下文,執行此命令才會生效

 

刪除安全上下文

semanage fcontext –d –t httpd_sys_content_t ‘/home/hadoop(/.*)?’

 

selinux端口標簽

查看端口標簽

semanage  port  -l

3.jpg

 

添加端口

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

semanage port –a  -t htt_port_t   -p tcp   8080

 

刪除端口

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

semanage port  -d  -t  htt_port_t  -p tcp 8080

 

修改現有(已存在)端口為新標簽

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

semanage port –m –t  ssh_port_t –p tcp 8080   ssh服務的端口改為8080

 

selinux布爾值

查看布爾值命令

getsebool [-a] [boolean]

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

4.jpg

 

 

設置bool值命令

setsebool [-P] boolean  value on|off|1|0 

setsebool  httpd_enable_homedirs  on|1  開啟httpd家目錄訪問,但不會寫入策略庫中

setsebool  -P   httpd_enable_homedirs  on|1

 

修改bool值時后面的值可以對布爾值類型后跟=加值的設置方法

setsebool  httpd_enable_homedirs=on

 

 

selinux的日志管理

需要安裝settroublesshoot*安裝此包需要重啟系統才能生效,它會將錯誤日志記錄到/var/log/message

grep setroubleshoot  /var/log/message

sealer  -l  UUID

查看安全事件日志說明

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

5.png

掃描并分析日志

yum -y install selinux-policy-develcentos7

yum –y install selinux-policy-doc centos6

mandb | makewhatis 需要更新man幫助的數據才能查詢

man -k _selinux

 

例如man  httpd_selinux

 6.png

總結:selinux在安全防護上確實起到了一定的作用,它是在內核層面來工作,往往有許多的漏洞,一旦黑客利用漏洞入侵系統后果不堪設想,還有其操作的繁瑣和穩定性的欠缺的導致很多企業不愿意用到selinux ,一般都會使用硬件的安全防護設備,所以我們只需要作為了解,知道有這么個東西,如何開關閉及一些簡單的操作即可。

 

 

 

原創文章,作者:fszxxxks,如若轉載,請注明出處:http://www.www58058.com/47073

(0)
fszxxxksfszxxxks
上一篇 2016-09-19
下一篇 2016-09-19

相關推薦

  • B-樹和B+樹的應用:數據搜索和數據庫索引

    B-樹 1 .B-樹定義 B-樹是一種平衡的多路查找樹,它在文件系統中很有用。 定義:一棵m 階的B-樹,或者為空樹,或為滿足下列特性的m 叉樹:⑴樹中每個結點至多有m 棵子樹;⑵若根結點不是葉子結點,則至少有兩棵子樹; ⑶除根結點之外的所有非終端結點至少有[m/2] 棵子樹;⑷所有的非終端結點中包含以下信息數據:    &nb…

    Linux干貨 2015-07-30
  • redis/twemproxy 客戶端連接異常

    對于一個DBA,客戶端連接異常問題可以說是家常便飯的事情,處理多了都想吐。 root cause無疑發生在三個地方,先找自身的原因,依次排查下去: 1)服務器端db的負載,如果負載太高,創建socket太慢引起超時。另外服務器端socket的個數太多,也可以導致創建連接需要很長的時間或者創建連接不成功。 2)網絡是夠有抖動,包括lvs/twemproxy重啟…

    Linux干貨 2015-04-03
  • Net25 第二周作業

    一、Linux上的文件管理類命令,其常用的使用方法和相關示例 1、ls:查看文件與目錄 作用:ls命令用于顯示目錄內容,類似于DOS下的dir命令,它的使用權限是所有用戶。 用法:ls [選項]…[文件]… 主要選項如下: -a:全部的文件,連同隱藏文件(開頭為 .的文件)一起列出來 -A:列出全部的文件(連同隱藏文件,但不…

    系統運維 2016-12-11
  • find命令簡單總結

     find     字符串類查詢:            -type   //根據文件類型查找       &…

    Linux干貨 2015-09-14
  • LVM-邏輯盤卷管理

    LVM   一、簡介         LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。   二、原理   &nb…

    Linux干貨 2016-04-12
  • Apache Httpd負載均衡Tomcat并實現Session Sticky和Session Cluster

    Apache Httpd負載均衡Tomcat并實現Session Sticky和Session Cluster 前言 實驗拓撲 實驗步驟 安裝配置tomcat 安裝配置Apache Httpd并測試 實現session sticky 實現Session Cluster 總結 前言 上篇文章我們介紹如何構建一個LANMT平臺并搭建一個jspxcms, 這次我們…

    2016-04-22
欧美性久久久久