SELinux

SELinux:
  SELinux(Secure Enhanced Linux-安全加強Linux)是由NSA針對計算機基礎結構安全開發的一個全新的Linux安全策略機制。SELinux容許管理員更加靈活的定義安全策略。NSA是在Linux社區的幫助下開發,2000年以GNU GPL發佈,Linux內核2.6版本後集成在內核中;node

DAC:Discretionary Access Control自由訪問控制
  Linux上傳統的訪問控制標準是自主訪問控制DAC;在這種形式下,一個軟件或守護進程以User ID(UID)或Set owner User ID(SUID)的身份運行,而且擁有該用戶的目標(文件、套接字、以及其它進程)權限。這使得惡意代碼很容易運行在特定權限之下,從而取得訪問關鍵的子系統的權限。linux

MAC:Mandatory Access Control 強制訪問控制
  MAC環境下進程能夠被限制;MAC環境下策略被用來定義被限制的進程可以使用那些資源(文件、套接字、以及其它進程);策略的規則決定控制的嚴格程度;默認狀況下,沒有被明確容許的行爲將被拒絕數據庫

SELinux四種工做類型:
  strict:每一個進程都受到SELinux的控制
  targeted: 用來保護常見的網絡服務,僅有限進程受到SELinux控制(默認類型),只監控容易被攻擊的進程;RHEL4只保護13個服務,RHEL5保護88個服務
  minimum:Centos7,修改過的targeted,用戶本身選擇的網絡服務受到SELinux控制
  mls:提供MLS(多級安全)機制的安全性
  注意:minimum和mls穩定性不足,未加以應用緩存

SElinux的安全上下文:
  全部的安全機制都是對兩樣東西作出限制:進程和系統資源(文件,網絡套接字,系統調用等)SELinux針對這兩種類型定義了兩個基本概念:域(domain)和上下文(context)
  域用來對進程限制
  上下文用來對系統資源進行限制
  傳統Linux一切皆文件,由用戶、組、權限控制訪問;在SELinux中一切皆對象,由存放在Inode的擴展屬性域的安全元素所控制其訪問。全部文件、套接字、進程都具有安全標籤:"安全上下文"(security context);安全上下文有五個元素組成:
  user:role:type:sensitivity:sensitivity:category
  用戶:角色:類型:MLS:MCS安全

  實際上下文:存放在文件系統中,
  ls -Z  查看文件的安全上下文
  ps -Z  查看進程的安全上下文
  指望(默認)上下文:存放在二進制的SELinux策略庫(映射目錄和指望安全上下文)中
  semanage fcontext -l服務器

五個安全因素:
  SElinux 爲每一個文件提供了安全標籤,也爲進程提供了安全標籤
  User:指示登陸系統的用戶類型,如root、user_u、system_u多數本地進程都屬於自由(unconfined)進程;
  Role:定義文件,進程和用戶的用途:文件:object_r,進程和用戶:system_r
  Type:指定數據類型,規則中定義何種進程類型訪問何種文件;Targeted策略基於type實現,多服務共用:public_content_t
  Sensitivity:限制訪問的須要,由組織定義的分層安全級別,如unclassified、secret、top、secret,一個對象有且只有一個sensitivity,分0-15級,s0最低,Target策略默認使用s0
  Category:對於特定組織劃分不分層的分類,如FBI Secret,NSA secret, 一個對象能夠有多個categroy,c0-c1023共1024個分類,Target 策略不使用cateaory網絡

SElinux的安全策略:
  哪一種域能訪問哪一種或者哪些種類型的文件
  主體(subject):進程稱爲主體(域用來對進程限制)
  對象(object):全部能夠讀取的對象,包括文件、進程、網絡套接字等(上下文用來對系統資源進行限制)dom

  SELinux中對全部的文件都賦予一個type的文件類型標籤,對於全部的進程也賦予各自的一個domain的標籤。Domain標籤可以執行的操做由安全策略裏定義。
  當一個subject試圖訪問一個object,Kernel中的策略執行服務器將檢查AVC (訪問矢量緩存Access Vector Cache), 在AVC中,subject和object的權限被緩存(cached),查找「應用+文件」的安全環境。而後根據查詢結果容許或拒絕訪問
  安全策略:定義主體讀取對象的規則數據庫,規則中記錄了哪一個類型的主體使用哪一個方法讀取哪個對象是容許仍是拒絕的,而且定義了哪一種行爲是充許或拒絕spa

設置SElinux:
  設置SELinux是否啓用
  給文件從新打安全標籤
  給端口設置安全標籤
  設定某些操做的布爾型開關
  SELinux的日誌管理rest

SElinux的狀態,命令及配置文件
  SElinux狀態設置
  enforcing:違反策略的行動都被禁止,並做爲內核信息記錄
  permissive:違反策略的行動都不被禁止,可是會產生告警信息記錄日誌
  disabled:禁用,關閉SELinux功能

  相關命令和配置文件
  getenforce 獲取SELinux當前狀態
  sestatus  查SELinux狀態
  setenforce 0|1 設置SELinux狀態(此設定重啓系統後無效)
    0:設置爲 permissive
    1:設置爲 enforcing

  配置文件
  /boot/grub/grub.conf  在grub文件中指定selinux=0禁用SELinux功能
  /etc/selinux/config <— /etc/sysconfig/selinux  (軟連接)
  修改配置文件
  SELINUX={disabled|enforcing|permissive}
  注意:修改配置文件以後必定要重啓系統才能生效

  給文件從新打標籤:
  chcon命令
  chcon[OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE...
  chcon[OPTION]... --reference=RFILE FILE...
    -R 遞歸修改

  還原文件的默認標籤:
  restorecon命令
  restorecon[-R] /path/to/somewhere

  SElinux布爾型規則
  查看bool值命令:
  getsebool[-a] [boolean]
  semanage boolean -l
  semanage boolean -l -C 查看修改過的布爾值

  設置bool值命令:
  setsebool[-P] boolean=value
  -P 永久設置重啓也會生效

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息