1. lxcbr0
當/etc/default/lxc中的USE_LXC_BRIDGE="true"的時候,橋lxcbr0會在lxc啟動的時候自動建立,並且被賦予10.0.3.1的ip地址,使用這個橋的lxc執行個體可以從10.0.3.0/24中分配ip。一個dnsmasq執行個體在後台運行用來監聽lxcbr0,用來實現dns和dhcp的功能。
2. 使用隔離的檔案系統作為lxc執行個體的儲存
lxc執行個體的配置資訊以及根檔案系統都存放在/var/lib/lxc目錄下,另外,沒建立一個執行個體也會將其cache到/var/lib/lxc目錄下。如果你想使用除/var之外的其他檔案系統的話,也可以通過以下兩種方式來實現:
- sudo mkdir /srv/lxclib /srv/lxccache
- sudo rm -rf /var/lib/lxc /var/cache/lxc
- sudo ln -s /srv/lxclib /var/lib/lxc
- sudo ln -s /srv/lxccache /var/cache/lxc
或者:
- sudo mkdir /srv/lxclib /srv/lxccache
- sudo sed -i '$a \
- /srv/lxclib /var/lib/lxc none defaults,bind 0 0 \
- /srv/lxccache /var/cache/lxc none defaults,bind 0 0' /etc/fstab
- sudo mount -a
3. LXC的安全性 -- apparmor(應用程式存取控制系統)
AppArmor 是一個類似於selinux 的東東,主要的作用是設定某個可執行程式的存取控制許可權,可以限制程式 讀/寫某個目錄/檔案,開啟/讀/寫網路連接埠等等。 預設情況下AppArmor已安裝並載入。它使用每個程式的profiles來確定這個程式需要什麼檔案和許可權。有些包會安裝它們自己的profiles,額外的profiles可以在apparmor-profiles包裡找到。 下面簡單介紹下AppArmor的使用:(1)apparmor_status是用來查看AppArmor設定檔的目前狀態的
- sudo apparmor_status
(2)aa-complain將一個程式置入complain模式。
- sudo aa-complain /path/to/bin //可執行程式的路徑
(3)aa-enforce將一個程式置入enforce模式
- sudo aa-enforce /path/to/bin //可執行程式的路徑
/etc/apparmor.d目錄是AppArmor設定檔的所在之處。可用來操作所有設定檔的模式mode。
(4)要將所有設定檔置入complain模式,輸入:
- sudo aa-complain /etc/apparmor.d/*
(5)要將所有設定檔置入enforce模式:
- sudo aa-enforce /etc/apparmor.d/*
(6)apparmor_parser用來將一個設定檔載入核心。它也可以通過使用-r選項來重新載入當前已載入的設定檔。要載入一個設定檔:
- cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
(7)要重新載入一個設定檔:
- cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
(8)/etc/init.d/apparmor可用來重新載入所有設定檔:
- sudo /etc/init.d/apparmor reload
(9)The /etc/apparmor.d/disable目錄可以和apparmor_parser -R選項一起使用以禁用一個設定檔。
- sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/
- sudo apparmor_parser -R /etc/apparmor.d/profile.name
(10)要重新啟用 一個已禁用的設定檔,請在 /etc/apparmor.d/disable/裡刪除到其設定檔的軟連結。然後使用選項 -a載入設定檔。
- sudo rm /etc/apparmor.d/disable/profile.name
- cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
(11)AppArmor可以被禁用,其核心模組可以通過輸入以下命令卸載:
- sudo /etc/init.d/apparmor stop
- sudo update-rc.d -f apparmor remove
(12)要重新啟用AppArmor,輸入:
- sudo /etc/init.d/apparmor start
- sudo update-rc.d apparmor defaults
至於如何編寫AppArmor的設定檔,將會在後面的文章中介紹!
言歸正傳,重新回到lxc中的AppArmor上來。 LXC利用AppArmor設定檔來保護主機不受容器內執行個體的惡意行為,比如:容器內的執行個體對/proc/sysrq-tigger以及/sys目錄下的絕大部分檔案不具有寫入權限。另外,usr.bin.lxc-start設定檔用來防止lxc-start掛載除了容器根目錄下列出的其他檔案。在執行容器執行個體的init進程之前,還回去/etc/apparmor.d/lxc/lxc-default進行許可權的檢查,禁止init訪問一些危險的資源。
在接下來的文章中將會重點介紹cgroup機制相關的內容!