Kata Containers的实践(一)

  • A+
所属分类:安全开发

都说用了Kata Containers会对容器安全方案有很大影响,本周就通过实践来看看啥情况,

先安装Kata Containers环境,ubuntu18.04,

sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/katacontainers:/releases:/x86_64:/master/xUbuntu_$(lsb_release -rs)/ /' >> /etc/apt/sources.list.d/kata-containers.list",
curl -sL  https://download.opensuse.org/repositories/home:/katacontainers:/releases:/x86_64:/master/xUbuntu_$(lsb_release -rs)/Release.key | sudo apt-key add -,
sudo apt update,
sudo apt install kata-runtime kata-proxy kata-shim,

安装docker和qemu,sudo apt install docker.io qemu,

更改docker的配置,默认runtime是runc,可以指定kata为runtime,

{
  "default-runtime": "runc",
  "runtimes": {
    "kata": {
      "path": "/usr/bin/kata-runtime"
    }
  }
}

重启docker服务,

sudo systemctl daemon-reload,sudo systemctl restart docker,

下载我做实验最喜欢的docker镜像,

docker pull rastasheep/ubuntu-sshd:14.04,

启动runc的实例,

docker run -d -P --name sshd-runc rastasheep/ubuntu-sshd:14.04,

启动kata的实例,

docker run --runtime=kata -d -P --name sshd-kata rastasheep/ubuntu-sshd:14.04,

查看kata的实例,sudo kata-runtime list,

查看qemu进程,ps ax | grep qemu,

查看docker实例,docker ps,

查看实例进程id,docker inspect -f {{.State.Pid}} sshd-runc,

nsenter通过进程id查看容器实例信息,

网卡信息,sudo nsenter -m -u -i -n -p -t 17379 ifconfig,

操作系统信息,sudo nsenter -m -u -i -n -p -t 17379 uname -a,

进程信息,sudo nsenter -m -u -i -n -p -t 17379 ps -aux,

文件信息,sudo nsenter -m -u -i -n -p -t 17379 ls,

socket信息,sudo nsenter -m -u -i -n -p -t 17379 cat /proc/net/tcp,

通过以上实验证明,

runc的情况下,nsenter都能正常获取到容器实例的信息,

kata的情况下,nsenter基本上都不能正常获取到容器实例的信息(网卡信息除外),

想要正常获取到kata容器实例的各种信息,只能进入容器实例内部获取,

docker exec -it sshd-kata /bin/bash,

本周的实践就到这里,下周实践k8s用kata,欢迎关注。

本文始发于微信公众号(云计算和网络安全技术实践):Kata Containers的实践(一)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: