国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux內核強制訪問控制Apparmor

2024-08-27 23:55:22
字體:
來源:轉載
供稿:網友
  AppArmor(Application Armor)是Linux內核的一個安全模塊,AppArmor允許系統管理員將每個程序與一個安全配置文件關聯,從而限制程序的功能。簡單的說,AppArmor是與SELinux類似的一個訪問控制系統,通過它你可以指定程序可以讀、寫或運行哪些文件,是否可以打開網絡端口等。作為對傳統Unix的自主訪問控制模塊的補充,AppArmor提供了強制訪問控制機制,它已經被整合到2.6版本的Linux內核中.
 
  目前Ubuntu已自帶了Apparmor, 可以在手冊中獲得相應的資料。文章是從很多英文資料中整理總結出來的,可能會有不準確的地方,請各位見諒。
 
  一、與程序綁定的訪問控制
 
  Apparmor提供的訪問控制是與程序綁定的:
 
  AppArmor's unique security model is to bind access control attributes to programs rather than to users.
 
  假設有一個可執行文件的路徑為/home/361way/demoexe,如果要用Apparmor對其進行訪問控制的話,就要新建一個配置文件(后面我再講怎么寫這個配置文件),文件名為home.361way.demoexe,并把這個配置文件放到Apparmor專門放置配置文件的目錄下(/etc/apparmor.d)。所以每一個可執行文件都是與一個配置文件綁定的,因此如果修改demoexe的文件名的話,配置文件將失效。
 
  二、兩種工作模式:
 
  Apparmor有兩種工作模式:enforcement、complain/learning
 
  Enforcement – 在這種模式下,配置文件里列出的限制條件都會得到執行,并且對于違反這些限制條件的程序會進行日志記錄。
 
  Complain – 在這種模式下,配置文件里的限制條件不會得到執行,Apparmor只是對程序的行為進行記錄。例如程序可以寫一個在配置文件里注明只讀的文件,但Apparmor不會對程序的行為進行限制,只是進行記錄。
 
  那既然complain不能限制程序,為什么還需要這種模式呢,因為——如果某個程序的行為不符合其配置文件的限制,可以將其行為記錄到系統日志,并且可以根據程序的行為,將日志轉換成配置文件。
 
  當然我們可以隨時對配置文件進行修改,選擇自己需要的模式。
 
  三、訪問控制與資源限制等
 
  Apparmor可以對程序進行多方面的限制,這里我只介紹部分常用到的.
 
  1).文件系統的訪問控制
 
  Apparmor可以對某一個文件,或者某一個目錄下的文件進行訪問控制,包括以下幾種訪問模式:
 
  可讀、可寫、可擴展、可鏈接等(還有可執行x在表中沒有列出)……在配置文件中的寫法,如 /tmp r, (表示可對/tmp目錄下的文件進行讀取)
 
  注意一點,沒在配置文件中列出的文件,程序是不能訪問的,這有點像白名單。
 
  2).資源限制
 
  Apparmor可以提供類似系統調用setrlimit一樣的方式來限制程序可以使用的資源。要限制資源,可在配置文件中這樣寫:set rlimit [resource] <= [value],其resource代表某一種資源,value代表某一個值,要對程序可以使用的虛擬內存做限制時,可以這樣寫:set rlimit as<=1M, (可以使用的虛擬內存最大為1M)
 
  注意:Apparmor可以對程序要使用多種資源進行限制(fsize,data,stack,core,rss,as,memlock,msgqueue等),但暫不支持對程序可以使用CPU時間進行限制。(現在OJ一般都對ACMer提交的程序的運行時間有嚴格的限制,所以要將Apparmor用于OJ后臺安全模塊,必須自己另外實現對CPU時間的限制。)
 
  3)訪問網絡
 
  Apparmor可以程序是否可以訪問網絡進行限制,在配置文件里的語法是:
 
  network [ [domain] [type] [protocol] ]
 
  了解網絡編程的應該知道domain、type和protocol是什么。要讓程序可以進行所有的網絡操作,只需在配置文件中寫:network, 要允許程序使用在IPv4下使用TCP協議,可以這樣寫:network inet tcp.
 
  4)capability條目
 
  在linux的手冊頁里面有一個capablities列表,apparmor可以限制程序是否可以進行列表里的操作,如:capability setgid,(允許程序進行setgid操作)
 
  Capability statements are simply the word capability followed by the name of the POSIX.1e capability as defined in the capabilities(7) man page.
 
  題外話:這些功能,有沒有想到/proc/pid/下的文件,還有python的resource模塊相關的東西,只不過apparmor管理更加簡潔和靈活。
 
  四、配置文件的編寫
 
  前面提到,編寫完配置文件后,要把文件放到/etc/apparmor.d這個目錄下,其實有更方便的方法,直接在命令行里面用:sudo genprof [filename],就可以為指定的程序創建一個配置文件,并把它放到該目錄。如:sudo genprof '/home/361way/apparmor-helper/demoexe'.
 
  建立的配置文件內容如下:
 
  #include <tunables/global>
  home/361way/apparmor-helper/demoexe {
    #include <abstractions/base>
  注意,該文件默認使用enforcement模式,要修改模式,只需將配置文件改為:
 
  #include <tunables/global>
   /home/361way/apparmor-helper/demoexe  flags=(complain){
      #include <abstractions/base>
   }
  flags=(complain)前面的部分是文件的路徑,作用是為這個配置文件綁定某個程序,那接下來就可以在配置文件中添加相應的內容,在大括號中加上:
 
  /home/361way/apparmor-helper/data rw,
      set rlimit stack<=1M,  --phpfensi.com
  然后再執行命令:sudo /etc/init.d/apparmor reload,就可以重新加載配置文件,使配置文件生效.
 
  總結與擴展:
 
  在docker/lxc的相關文檔中,也會找到apparmor相關的部分,如 online judge 這些應用也和apparmor/SElinux扯上關系 ,提到上面這些就不得不提下沙盒(sandbox),沙盒不僅在安全上有用,還可以在很多場合取代基于虛擬機的應用隔離方案(沙盒化的進程是效率最高的虛擬機),而linux上的沙盒應用基本上都是基于apparmor/SElinux的.

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西宁市| 沈阳市| 左贡县| 中阳县| 东源县| 屯门区| 东兴市| 元氏县| 婺源县| 徐汇区| 巩留县| 天峨县| 涞源县| 咸丰县| 根河市| 铁力市| 通许县| 莎车县| 荣昌县| 桐梓县| 湾仔区| 栖霞市| 霸州市| 安远县| 乐平市| 台南市| 芦溪县| 上高县| 舟山市| 江永县| 桃源县| 孟村| 沛县| 新沂市| 河西区| 岳池县| 武威市| 长宁区| 浠水县| 石林| 柳江县|