[TOC]
## 1. 作用
SELinux 主要作用就是最大限度地減小系統中服務進程可訪問的資源(最小權限原則)。
設想一下,如果一個以 root 身份運行的網絡服務存在 0day 漏洞,黑客就可以利用這個漏洞,以 root 的身份在您的服務器上為所欲為了。是不是很可怕?
## 2. selinux 如何工作
### 2.1 相關概念
> 1. 主體Subjects
> 2. 目標Objects
> 3. 策略Policy
> 4. 模式Mode
當一個主體Subject(如一個程序)嘗試訪問一個目標Object(如一個文件):
1. SELinux安全服務器SELinux Security Server(在內核中)從策略數據庫Policy Database中運行一個檢查。
2. 基于當前的模式mode,如果 SELinux 安全服務器授予權限,該主體就能夠訪問該目標。如果SELinux安全服務器拒絕了權限,**就會在/var/log/messages中記錄一條拒絕信息**.
3. /var/log/message保存系統日志信息
### 2.2 訪問控制模式
#### 2.2.1 訪問控制模式種類
SELinux 有三個模式(可以由用戶設置)。這些模式將規定 SELinux 在主體請求時如何應對。這些模式是:
> 1. Enforcing (對應1)強制— SELinux 策略強制執行,基于 SELinux 策略規則授予或拒絕主體對目標的訪問
> 2. Permissive(對應0)寬容— SELinux 策略不強制執行,不實際拒絕訪問,但會有拒絕信息寫入日志
> 3. Disabled 禁用— 完全禁用SELinux
#### 2.2.2 查看模式
執行命令:
~~~
getenforce
~~~
永遠不推薦關閉 SELinux。為什么?當你這么做了,就會出現這種可能性:你磁盤上的文件可能會被打上錯誤的權限標簽,需要你重新標記權限才能修復。而且你無法修改一個以 Disabled 模式啟動的系統的模式。你的最佳模式是Enforcing或者Permissive-對于我這種菜鳥,那還是Permissive好啊!
### 2.3 策略
#### 2.3.1 策略類型
SELinux策略有兩種:
> 1. Targeted目標:
> 只有目標網絡進程(dhcpd,httpd,named,nscd,ntpd,portmap,snmpd,squid,以及 syslogd)受保護
> 2. Strict嚴格:
> 對所有進程完全的SELinux保護
#### 2.3.2 配置策略
etc/selinux/config文件中修改策略類型
~~~
SELINUXTYPE=targeted
~~~
修改這個選項為targeted或strict以滿足你的需求。
## 3. 修改策略
~~~
# 臨時生效,重啟系統后失效
setenforce 0
# 修改配置(重啟后生效),永久生效,想要立即生效,執行上邊命令
vim /etc/selinux/config
SELINUX=Permissive
~~~
- Linux
- 高級
- 殺毒
- 記一次中毒事件
- clamav查毒軟件
- 處理挖礦病毒
- 定時任務
- kill
- chattr文件保護
- 運行級別
- Linux啟動
- 文件加密
- ssh免密登錄
- .ssh
- 問題
- 腳本
- 阿里云域名解析
- yum源
- 時間同步
- keepalived實現高可用
- dos字符與unix字符
- 大文件上傳
- 基礎
- proc目錄
- 設置宋體
- 基礎命令_01
- 基礎命令_02
- SELinux
- 文件描述符
- 基礎命令_03
- awk
- 系統日志
- date命令
- bc命令
- lsof
- vim快捷鍵
- shell
- 循環控制
- expr
- 執行腳本的方式
- declare
- shell腳本
- 控制啟停腳本
- 數值計算
- centos
- 配置網絡
- 環境
- 灰度環境
- ansible
- 模塊
- 語法
- file模塊
- setup模塊
- ping模塊
- copy模塊
- command模塊
- shell模塊
- service模塊
- cron模塊
- yum模塊
- user 模塊
- group模塊
- 指定用戶
- playbook
- 實例
- ansible安裝
- Jenkins
- shell部署
- 導入已有項目的配置
- 執行shell
- tungsten數據同步
- 防火墻
- netfilter