使用capability加強Linux系統的安全(轉)
使用capability加強Linux系統的安全(轉)[@more@]1.簡介
UNIX是一種安全作業系統,它給普通使用者儘可能低的許可權,而把全部的系統許可權賦予一個單一的帳戶--root。root帳戶用來管理系統、安裝軟體、管理帳戶、執行某些服務、安裝/解除安裝檔案系統、管理使用者、安裝軟體等。另外,普通使用者的很多操作也需要root許可權,這透過setuid實現。
這種依賴單一帳戶執行特權操作的方式加大了系統的面臨風險,而需要root許可權的程式可能只是為了一個單一的操作,例如:繫結到特權埠、開啟一個只有root許可權可以訪問的檔案。某些程式可能有安全漏洞,而如果程式不是以root的許可權執行,其存在的漏洞就不可能對系統造成什麼威脅。
從2.1版開始,核心開發人員在Linux核心中加入了能力(capability)的概念。其目標是消除需要執行某些操作的程式對root帳戶的依賴。從2.2版本的核心開始,這些代基本可以使用了,雖然還存在一些問題,但是方向是正確的。
2.Linux核心能力詳解
傳統UNIX的信任狀模型非常簡單,就是“超級使用者對普通使用者”模型。在這種模型中,一個程式要麼什麼都能做,要麼幾乎什麼也不能做,這取決於程式的UID。如果一個程式需要執行繫結到私有埠、載入/解除安裝核心模組以及管理檔案系統等操作時,就需要完全的root許可權。很顯然這樣做對系統安全存在很大的威脅。UNIX系統中的SUID問題就是由這種信任狀模型造成的。例如,一個普通使用者需要使用ping命令。這是一個SUID命令,會以root的許可權執行。而實際上這個程式只是需要RAW套接字建立必要ICMP資料包,除此之外的其它root許可權對這個程式都是沒有必要的。如果程式編寫不好,就可能被攻擊者利用,獲得系統的控制權。
使用能力(capability)可以減小這種風險。系統管理員為了系統的安全可以剝奪root使用者的能力,這樣即使root使用者也將無法進行某些操作。而這個過程又是不可逆的,也就是說如果一種能力被刪除,除非重新啟動系統,否則即使root使用者也無法重新新增被刪除的能力。
2.1.能力的概念
Linux核心中使用的能力(capability)概念非常容易被混淆。電腦科學中定義了很多種能力(capability)。能力就是一個程式能夠對某個物件進行的操作,它標誌物件以及允許在這個物件上進行的操作。檔案描述符就是一種能力,你使用open系統呼叫請求獲得讀或者寫的許可權,如果open系統呼叫成功,系統的核心就會建立一個檔案描述符。然後,如果收到讀或者寫的請求,核心就使用這個檔案描述符作為一個資料結構的索引,檢索相關的操作是否允許。這是一種檢查許可權的有效方式,在執行open系統呼叫是,核心一次性建立必要的資料結構,然後的讀寫等操作檢查只需要在資料結構中梭梭即可。對能力的操作包括:複製能力、程式間的遷移能力、修改一個能力以及撤消一個能力等。修改一個能力類似與把一個可以讀寫的檔案描述符改為只讀。目前,各種系統對能力的應用程度並不相同。
POSIX 1003.1e中也提出了一種能力定義,通常稱為POSIX能力(POSIX capabilities),Linux中的定義不大一樣。核心使用這些能力分割root的許可權,因為傳統*NIX系統中root的許可權過於強大了。
2.2.Linux是如何使用POSIX capabilities代替傳統的信任狀模型的
每個程式有三個和能力有關的點陣圖:inheritable(I)、permitted(P)和effective(E),對應程式描述符task_struct(include/linux/sched.h)裡面的cap_effective, cap_inheritable, cap_permitted。每種能力由一位表示,1表示具有某種能力,0表示沒有。當一個程式要進行某個特權操作時,作業系統會檢查cap_effective的對應位是否有效,而不再是檢查程式的有效UID是否為0。例如,如果一個程式要設定系統的時鐘,Linux的核心就會檢查cap_effective的CAP_SYS_TIME位(第25位)是否有效,
cap_permitted表示程式能夠使用的能力。在cap_permitted中可以包含cap_effective中沒有的能力,這些能力是被程式自己臨時放棄的,也可以說cap_effective是cap_permitted的一個子集。程式放棄沒有必要的能力對於提高安全性大有助益。例如,ping只需要CAP_NET_RAW,如果它放棄除這個能力之外的其它能力,即使存在安全缺陷,也不會對系統造成太大的損害。cap_inheritable表示能夠被當前程式執行的程式繼承的能力。
3.Linux支援的能力
Linux實現了7個POSIX 1003.1e規定的能力,還有21個(截止到2.4.7-10版本的核心)Linux所特有的,這些能力在/usr/src/linux/include/linux/capability.h檔案中定義。其細節如下:
能力名 數字 描述
UNIX是一種安全作業系統,它給普通使用者儘可能低的許可權,而把全部的系統許可權賦予一個單一的帳戶--root。root帳戶用來管理系統、安裝軟體、管理帳戶、執行某些服務、安裝/解除安裝檔案系統、管理使用者、安裝軟體等。另外,普通使用者的很多操作也需要root許可權,這透過setuid實現。
這種依賴單一帳戶執行特權操作的方式加大了系統的面臨風險,而需要root許可權的程式可能只是為了一個單一的操作,例如:繫結到特權埠、開啟一個只有root許可權可以訪問的檔案。某些程式可能有安全漏洞,而如果程式不是以root的許可權執行,其存在的漏洞就不可能對系統造成什麼威脅。
從2.1版開始,核心開發人員在Linux核心中加入了能力(capability)的概念。其目標是消除需要執行某些操作的程式對root帳戶的依賴。從2.2版本的核心開始,這些代基本可以使用了,雖然還存在一些問題,但是方向是正確的。
2.Linux核心能力詳解
傳統UNIX的信任狀模型非常簡單,就是“超級使用者對普通使用者”模型。在這種模型中,一個程式要麼什麼都能做,要麼幾乎什麼也不能做,這取決於程式的UID。如果一個程式需要執行繫結到私有埠、載入/解除安裝核心模組以及管理檔案系統等操作時,就需要完全的root許可權。很顯然這樣做對系統安全存在很大的威脅。UNIX系統中的SUID問題就是由這種信任狀模型造成的。例如,一個普通使用者需要使用ping命令。這是一個SUID命令,會以root的許可權執行。而實際上這個程式只是需要RAW套接字建立必要ICMP資料包,除此之外的其它root許可權對這個程式都是沒有必要的。如果程式編寫不好,就可能被攻擊者利用,獲得系統的控制權。
使用能力(capability)可以減小這種風險。系統管理員為了系統的安全可以剝奪root使用者的能力,這樣即使root使用者也將無法進行某些操作。而這個過程又是不可逆的,也就是說如果一種能力被刪除,除非重新啟動系統,否則即使root使用者也無法重新新增被刪除的能力。
2.1.能力的概念
Linux核心中使用的能力(capability)概念非常容易被混淆。電腦科學中定義了很多種能力(capability)。能力就是一個程式能夠對某個物件進行的操作,它標誌物件以及允許在這個物件上進行的操作。檔案描述符就是一種能力,你使用open系統呼叫請求獲得讀或者寫的許可權,如果open系統呼叫成功,系統的核心就會建立一個檔案描述符。然後,如果收到讀或者寫的請求,核心就使用這個檔案描述符作為一個資料結構的索引,檢索相關的操作是否允許。這是一種檢查許可權的有效方式,在執行open系統呼叫是,核心一次性建立必要的資料結構,然後的讀寫等操作檢查只需要在資料結構中梭梭即可。對能力的操作包括:複製能力、程式間的遷移能力、修改一個能力以及撤消一個能力等。修改一個能力類似與把一個可以讀寫的檔案描述符改為只讀。目前,各種系統對能力的應用程度並不相同。
POSIX 1003.1e中也提出了一種能力定義,通常稱為POSIX能力(POSIX capabilities),Linux中的定義不大一樣。核心使用這些能力分割root的許可權,因為傳統*NIX系統中root的許可權過於強大了。
2.2.Linux是如何使用POSIX capabilities代替傳統的信任狀模型的
每個程式有三個和能力有關的點陣圖:inheritable(I)、permitted(P)和effective(E),對應程式描述符task_struct(include/linux/sched.h)裡面的cap_effective, cap_inheritable, cap_permitted。每種能力由一位表示,1表示具有某種能力,0表示沒有。當一個程式要進行某個特權操作時,作業系統會檢查cap_effective的對應位是否有效,而不再是檢查程式的有效UID是否為0。例如,如果一個程式要設定系統的時鐘,Linux的核心就會檢查cap_effective的CAP_SYS_TIME位(第25位)是否有效,
cap_permitted表示程式能夠使用的能力。在cap_permitted中可以包含cap_effective中沒有的能力,這些能力是被程式自己臨時放棄的,也可以說cap_effective是cap_permitted的一個子集。程式放棄沒有必要的能力對於提高安全性大有助益。例如,ping只需要CAP_NET_RAW,如果它放棄除這個能力之外的其它能力,即使存在安全缺陷,也不會對系統造成太大的損害。cap_inheritable表示能夠被當前程式執行的程式繼承的能力。
3.Linux支援的能力
Linux實現了7個POSIX 1003.1e規定的能力,還有21個(截止到2.4.7-10版本的核心)Linux所特有的,這些能力在/usr/src/linux/include/linux/capability.h檔案中定義。其細節如下:
能力名 數字 描述
QUOTE:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947735/,如需轉載,請註明出處,否則將追究法律責任。
請登入後發表評論
登入
全部評論
|
相關文章
- 用capability 特徵加強Linux系統安全(轉)特徵Linux
- 加強redhat linux系統安全的方法(轉)RedhatLinux
- 安裝和配置Tripwire,加強你的Linux系統安全 (轉)Linux
- 用LIDS增強Linux系統安全(轉)Linux
- 安全使用RedHat Linux系統(轉)RedhatLinux
- 加強企業的變化管理系統(轉)
- 新版加強Linux檔案系統Ext4即將推出(轉)Linux
- 加強 Nginx 的 SSL 安全Nginx
- nginx加強安全模組Nginx
- 配置安全的Linux作業系統(轉)Linux作業系統
- Linux下加掛檔案系統的小結(轉)Linux
- 加強資訊系統的時間觀念
- 工信部通知要求加強域名系統安全保障工作
- 在Linux下使用TCP封裝器來加強網路服務安全LinuxTCP封裝
- 在 Linux 下使用 TCP 封裝器來加強網路服務安全LinuxTCP封裝
- 用Apache的CGI封裝器來加強安全性(轉)Apache封裝
- CRM系統加強醫療機構資訊化建設?
- 安全團隊如何加強終端使用者的意識
- 四招助你加強Windows 2003的安全性(轉)Windows
- Linux核心即時入侵檢測安全增強-系統呼叫執行步驟(轉)Linux
- 強烈推薦大家使用LInux系統,簡直是讓人痴狂!(轉)Linux
- 提高Linux系統安全性的十招<4>(轉)Linux
- 提高Linux系統安全性的十招<3>(轉)Linux
- 提高Linux系統安全性的十招<1>(轉)Linux
- 通過google身份驗證器加強linux帳戶安全GoLinux
- Linux系統與安全學習筆記(轉)Linux筆記
- 構建安全Linux系統十二守則(轉)Linux
- 深入分析Linux系統深度安全加固(轉)Linux
- (轉)使用 Nmon 監控 Linux 的系統效能Linux
- UNIX系統安全(轉)
- Linux的系統的安全如何保障?保護Linux系統安全的九個常用方法Linux
- Linux增強系統安全性:防止單使用者模式(single)修改密碼Linux模式密碼
- Linux系統上不安全的程式及替代程式(轉)Linux
- 安全運維之:Linux系統賬戶和登入安全(轉)運維Linux
- 從啟動開始保障LINUX系統安全(轉)Linux
- 關於加強MYSQL安全的幾點建議MySql
- CRM系統怎麼加強醫療機構資訊化建設?
- 北約與歐盟加強網路安全合作