簡單點說,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是乙個強大的命令列工具,它可以通過網路將資訊傳遞給伺服器或者從伺服器獲取資...