Linux容器技术-LXC相关技术知识介绍

weihao 2012-07-27

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之外的其他文件系统的话,也可以通过以下两种方式来实现:

  1. sudo mkdir /srv/lxclib /srv/lxccache
  2. sudo rm -rf /var/lib/lxc /var/cache/lxc
  3. sudo ln -s /srv/lxclib /var/lib/lxc
  4. sudo ln -s /srv/lxccache /var/cache/lxc
或者:
  1. sudo mkdir /srv/lxclib /srv/lxccache
  2. sudo sed -i '$a \
  3. /srv/lxclib /var/lib/lxc none defaults,bind 0 0 \
  4. /srv/lxccache /var/cache/lxc none defaults,bind 0 0' /etc/fstab
  5. sudo mount -a
3. LXC的安全性 -- apparmor(应用程序访问控制系统)     AppArmor 是一个类似于selinux 的东东,主要的作用是设置某个可执行程序的访问控制权限,可以限制程序 读/写某个目录/文件,打开/读/写网络端口等等。
    默认情况下AppArmor已安装并载入。它使用每个程序的profiles来确定这个程序需要什么文件和权限。有些包会安装它们自己的profiles,额外的profiles可以在apparmor-profiles包里找到。
    下面简单介绍下AppArmor的使用:
(1)apparmor_status是用来查看AppArmor配置文件的当前状态的

  1. sudo apparmor_status
(2)aa-complain将一个程序置入complain模式。
  1. sudo aa-complain /path/to/bin   //可执行程序的路径
(3)aa-enforce将一个程序置入enforce模式
  1. sudo aa-enforce /path/to/bin    //可执行程序的路径
/etc/apparmor.d目录是AppArmor配置文件的所在之处。可用来操作所有配置文件的模式mode。
(4)要将所有配置文件置入complain模式,输入:
  1. sudo aa-complain /etc/apparmor.d/*
(5)要将所有配置文件置入enforce模式:
  1. sudo aa-enforce /etc/apparmor.d/*
(6)apparmor_parser用来将一个配置文件载入内核。它也可以通过使用-r选项来重新载入当前已载入的配置文件。要载入一个配置文件:
  1. cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
(7)要重新载入一个配置文件:
  1. cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
(8)/etc/init.d/apparmor可用来重新载入所有配置文件:
  1. sudo /etc/init.d/apparmor reload
(9)The /etc/apparmor.d/disable目录可以和apparmor_parser -R选项一起使用以禁用一个配置文件。
  1. sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/
  2. sudo apparmor_parser -R /etc/apparmor.d/profile.name
(10)要重新激活 一个已禁用的配置文件,请在 /etc/apparmor.d/disable/里删除到其配置文件的软链接。然后使用选项 -a载入配置文件。
  1. sudo rm /etc/apparmor.d/disable/profile.name
  2. cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
(11)AppArmor可以被禁用,其内核模块可以通过输入以下命令卸载:

  1. sudo /etc/init.d/apparmor stop
  2. sudo update-rc.d -f apparmor remove
(12)要重新启用AppArmor,输入:

  1. sudo /etc/init.d/apparmor start
  2. 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机制相关的内容!

相关推荐