Linux之強大的selinux

2021-09-02 05:47:09 字數 3534 閱讀 8547

簡單點說,selinux就是用來加強系統安全性的。它給一些特定程式(這些程式也在不斷增加)做了乙個沙箱,它將檔案打上了乙個安全標籤,這些標籤屬於不同的類,也只能執行特定的操作,也就是規定了某個應用程式設定了你可以訪問那些檔案或目錄。

這裡比較重要的知識點有:

檢視selinux當前狀態:

一、工作原理

二、工作模式(執行狀態)

enforcing、permissive、disabled

1、獲取當前selinux執行狀態

getenforce

可能返回結果有三種:enforcing、permissive 和 disabled。

disabled 代表 selinux 被禁用,permissive 代表僅記錄安全警告但不阻止可疑行為,enforcing 代表記錄警告且阻止可疑行為。

2、改變 selinux 執行狀態

setenforce [ 1 | 0 ]
切換disabled狀態或者從disabled狀態切換至別的狀態都需要重啟且只能修改配置檔案。而enforceing(1)和permissive(0)兩種狀態間切換不需要重啟,重啟時會為整個檔案系統重新建立安全標籤(touch /.autorelabel && reboot)。

/boot/grub/grub.conf下修改狀態優先順序比/etc/selinux/config高

若是想要永久變更系統 selinux 執行環境,可以通過更改配置檔案 /etc/sysconfig/selinux或/etc/selinux/config實現。

工作型別(或策略):

預設targeted型別,用來保護常見的網路服務,僅有限程序收到selinux控制,只監控容易被入侵的程序,centos5保護88個服務。

布林規則:

selinux根據不同的工作型別對這些規則開啟或關閉(on|off《布林值1|0>),然後通過規則的開啟與關閉具體地限制不同程序對檔案的讀取。

getsebool -a 或者 sestatus -b      # 檢視當前工作型別下各個規則的開啟與否

setsebool -p 規則名稱 [0|1]    # 修改當前工作型別下指定規則的開啟關閉,-p表示同時修改檔案使永久生效

三、安全上下文

安全上下文存在於程序與檔案中,context隨程序一起存入記憶體中,檔案的context存放在其對應的inode中,因此程序在訪問檔案時,要先讀取inode,再判斷是否能夠訪問該檔案。

ls -z   file # 顯示檔案的安全上下文
ps -ez   # 顯示所有程序的安全上下文

semanage來自policycoreutils-python包,centos 6上預設沒安裝.

系統中的每個檔案都會有context,使用ls -z查詢出來的context就是當前context,系統把每個檔案的預設context記錄下來並儲存,這樣系統記錄下來的就是期望context。semanage命令可以管理每個檔案的期望context,也叫期望標籤。

安全上下文(當前context):

semanage fcontext -l                     # 檢視所有的期望selinux標籤
semanage fcontext -l                     # 檢視所有的期望selinux標籤
semanage fcontext -a -t type 目標目錄     # 新增期望selinux標籤
semanage fcontext -m -t type 目標目錄     # 修改期望selinux標籤
semanage fcontext -d -t type 目標目錄     # 刪除期望selinux標籤
修改規範:

semanage fcontext -a -t type 目錄(/.*)?
安全標籤(期望context):標籤錯誤將導致啟動異常,檔案不可用等故障。

給檔案重新打安全標籤: 

chcon [option]... [-u user] [-r role] [-t type] file... 

chcon [option]... --reference=rfile file... 

-r:遞迴打標; 

恢復目錄或檔案預設的安全上下文: 

restorecon [-r] /path/to/somewhere 

埠標籤:

雖然聽起來是修改埠號的,但是到底還是修改安全上下文的,我們用semanage工具,命令為semanage port

查詢某個服務的context type欄位

語法:semanage port -l |grep 服務名
新增某個埠為指定服務的訪問埠        

語法:semanage port -a -t type -p 協議 埠號(不要與常用埠重複)
例如新增ssh服務的埠號,預設為22

四、selinux日誌管理

yum install setroublesshoot*(重啟生效)

將錯誤的資訊寫入/var/log/message

grep setroubleshoot/var/log/messages

sealert-l uuid

檢視安全事件日誌說明

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

掃瞄並分析日誌

Linux命令之curl 強大的網路傳輸工具

curl命令使用了libcurl庫來實現,libcurl庫常用在c程式中用來處理http請求,curlpp是libcurl的乙個c 封裝,這幾個東西可以用在抓取網頁 網路監控等方面的開發,而curl命令可以幫助來解決開發過程中遇到的問題。curl命令引數很多,這裡只列出我曾經用過 特別是在shell...

Linux的man很強大

linux的man很強大,該手冊分成很多section,使用man時可以指定不同的section來瀏覽,各個section意義如下 1 commands 2 system calls 3 library calls 4 special files 5 file formats and convert...

Linux 強大的 curl 命令

最近看 http權威指南 一直看到書上面說的客戶端構造http報文去請求服務端,於是乎,一直想我在linux下面如何去模擬http請求呢?後台在網上查,原來是可以通過curl命令請求的,先貼一下curl命令的強大功能 curl是乙個強大的命令列工具,它可以通過網路將資訊傳遞給伺服器或者從伺服器獲取資...