linux容器技術-LXC相關技術知識介紹
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的功能。
www.2cto.com
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 \ www.2cto.com
/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/* www.2cto.com
(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可以被禁用,其內核模塊可以通過輸入以下命令卸載:
www.2cto.com
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機制相關的內容!
作者 ustc_dylan