欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

在Linux宿主机审计docker进程和网络连接

来源:本站整理 作者:佚名 时间:2019-03-29 TAG: 我要投稿

一、引言
docker容器已经被广泛应用到各大公司线上、测试等各种环境,在宿主机如何识别出docker进程、docker网络连接就成为一个困扰的问题,如果容器内部署相同的crond或ssh服务,在宿主机上执行ps命令发现一大堆相同名字进程,根本无法区分属于宿主机还是具体某个container;不过docker提供docker top container_id命令能看到具体某个container在宿主机进程pid相关信息,但没有办法直接列出全部container进程。同时在网络连接方面,在宿主机执行netstat命令, 看不到container连接状态。
本文开发的docker_util工具能够在宿主机上全部审计和展示当前docker容器全部存活进程与网络连接信息。在上文通过Linux连接器能够实时审计宿主机进程,有兴趣可以看下:基于Linux连接器的审计进程事件实现方案
二、测试环境
在一台centos(ip 10.89.93.11)部署redis和tomcat两个container,其中reids开放默认6379, tomcat 开放默认80,8080,8085,同时宿主机部署nginx服务。
root@mytest:/home/zhouqiaozhouqiao$ docker ps
CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS              PORTS                                                                NAMES
51ec548386ef        docker.io/redis:latest                     "docker-entrypoint..."   3 days ago          Up 3 days           0.0.0.0:6379->6379/tcp                                               relaxed_bell
23f07e13e192        docker.io/tomcat                           "catalina.sh run"        7 weeks ago         Up 7 weeks          8080/tcp, 0.0.0.0:8089->80/tcp                                       hungry_bassi
在另一台centos(ip 10.89.93.12),使用redis-cli连接redis-server,构造一条真实连接。
root@mytest:/home/zhouqiaozhouqiao$ redis-cli -h 10.89.93.11
10.89.93.11:6379>
三、docker进程审计
docker进程是通过pid namespace技术,在不同pid namespace,进程pid是独立的,但docker是共享主机内核,在宿主机上都有相应的进程pid映射,所以在宿主机能够获取全部docker进程和宿主机进程信息。
ps命令能够扫描出全部宿主机进程, 遍历/proc/目录,结合进程目录下exe,cmdline等信息输出,但没有办法区分出docker进程。
下面分析docker进程与宿主机进程区分方式。
3.1 进程区分方式
对比宿主机进程nginx与docker进程redis各进程cgroup(/proc/pid/cgroup)信息文件,都协带container id信息。
非docker进程(nginx进程 pid:22982)
root@mytest:/home/zhouqiaozhouqiao$ cat /proc/22982/cgroup
10:freezer:/
9:perf_event:/
8:memory:/user.slice
7:cpuset:/
6:devices:/user.slice
5:net_cls:/
4:blkio:/user.slice
3:cpuacct,cpu:/user.slice
2:hugetlb:/
1:name=systemd:/user.slice/user-85001637.slice/session-3822015.scope
docker进程(redis进程 pid:17147)
root@mytest:/home/zhouqiaozhouqiao$ cat /proc/17147/cgroup
10:freezer:/system.slice/docker-51ec548386efd801fe28b3ce6b1905305841c997a3f7325ae6961a2cc7e88d14.scope
9:perf_event:/system.slice/docker-51ec548386efd801fe28b3ce6b1905305841c997a3f7325ae6961a2cc7e88d14.scope
8:memory:/system.slice/docker-51ec548386efd801fe28b3ce6b1905305841c997a3f7325ae6961a2cc7e88d14.scope
7:cpuset:/system.slice/docker-51ec548386efd801fe28b3ce6b1905305841c997a3f7325ae6961a2cc7e88d14.scope
6:devices:/system.slice/docker-51ec548386efd801fe28b3ce6b1905305841c997a3f7325ae6961a2cc7e88d14.scope
5:net_cls:/system.slice/docker-51ec548386efd801fe28b3ce6b1905305841c997a3f7325ae6961a2cc7e88d14.scope

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载