云安全日志日志分析

在分析事件的攻击模式和行为路径时,查看日志是快速而高效的方法。获取容器日志、件服务日志、是应急响应的关键步骤之一。以下将详细阐述在这种情况下查看日志的方法、每个日志的作用和日志检查要点。

一、Docker

日志查看命令

docker的日志可以使用docker  log查看

docker logs <docker_id> #查看指定容器id的日志
[root@paas-controller1:/home/pict]$ docker logs 3187a352b267 
2023-10-10 10:50:48,470 INFO supervisord started with pid 1
2023-10-10 10:50:49,473 INFO spawned: 'posd-api' with pid 8
2023-10-10 10:50:49,475 INFO spawned: 'posd-conductor' with pid 9
2023-10-10 10:50:49,476 INFO spawned: 'posd-dbsync' with pid 10
......

可关键字定位异常信息位置。例如,通过特征关键字找到可疑的jndi请求。

image.png

如图,在容器08ff中发现了jndi请求,可能是jndi注入

日志存储位置

具体的日志文件记录在/var/log/containers下,除了docker log展示应用程序的输出以外, /var/log/containers 中的日志文件包含更多 Docker 系统级别的信息,比如容器的创建、启动、停止等事件。

[root@paas-controller1:/var/log/containers]$ cd /var/log/containers/   
[root@paas-controller1:/var/log/containers]$
[root@paas-controller1:/var/log/containers]$ ls
k8sopapiserver-6fd6b4f547-t2wmv_admin_init-logpath-a53fb2789cce2130001b35.log
k8sopapiserver-6fd6b4f547-t2wmv_admin_k8sopapiserver-c9b906b8901365689a1.log
kube-apiserver-172.20.0.2_kube-system_kube-apiserver-980283aa01fc40862bce2cb47.log
kube-controller-manager-172.20.0.2_kube-system_kube-controller-manager-b86d71b03d27c088162.log
kube-proxy-172.20.0.2_kube-system_kube-proxy-783bc09bfd903c2dea9fa5ba6ca029527fda82b442.log
kube-scheduler-172.20.0.2_kube-system_kube-scheduler-c90874214e5382856830fd61f3998646671e.log
op-asm-operator-689c47fb9-lmg2n_admin_op-asm-operator-2f6faa56c0ea123cc1123.log
op-asm-webhook-7dd4695996-rqhh5_admin_op-asm-webhook-af8be37b65eb071d62311328ec06e2ea6d.log
op-cnrm-hook-65fc9d7ccc-nrt7h_admin_init-logpath-afd09553db0577e6bcfc786c70.log
......

查看docker 守护程序日志,主要是Docker 服务的启动和停止信息,容器的创建和销毁信息, 守护程序的运行状态和配置信息,Docker 网络和存储的相关事件,Docker 容器的日志输出

[root@paas-controller1:/home/pict]$ journalctl -u docker.service            
-- Logs begin at 三 2023-12-06 03:45:31 CST, end at 三 2023-12-06 16:50:44 CST. --
三 2023-12-06 10:00:00 hostname systemd[1]: Starting Docker Application Container Engine...
三 2023-12-06 10:00:01 hostname docker[1234]: time="2023-12-06T10:00:01.123456789Z" level=info msg="Starting up"
三 2023-12-06 10:00:01 hostname docker[1234]: time="2023-12-06T10:00:01.987654321Z" level=info msg="API listen on /var/run/docker.sock"
三 2023-12-06 10:00:01 hostname systemd[1]: Started Docker Application Container Engine.
三 2023-12-06 14:30:00 hostname docker[1234]: time="2023-12-06T14:30:00.111222333Z" level=info msg="Container abcdef123456 started"
三 2023-12-06 14:35:00 hostname docker[1234]: time="2023-12-06T14:35:00.444555666Z" level=info msg="Container abcdef123456 stopped"
......

二、kubernetes日志

是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。在 Kubernetes 集群遭受攻击时,通过日志检查可以了解攻击的状况、追踪攻击者活动以及恢复受影响系统。

日志基本命令

使用kubectl logs命令查看日志,例如:

kubectl logs <pod_name> #获取名为nginx的pod日志
[root@paas-controller1:/home/pict]$ kubectl logs op-containers-k8sconfig-1-mmz98         
I1010 11:08:38.464729       1 leaderelection.go:248] attempting to acquire leader lease kube-system/k8sconfig...
E1010 11:08:38.484006       1 controller.go:270] Metrics controller - error update localcache: not found node 172.20.0.2 kubelet metrics config from patched
I1010 11:08:38.506713       1 leaderelection.go:258] successfully acquired lease kube-system/k8sconfig

获取Pod内的特定容器中的日志

kubectl logs -p <pod_name> -c <container_name>

当pod中有多个容器时,需要使用-c参数指定容器打印内容

[root@paas-controller1:/home/pict]$kubectl logs -p sysslb -c apiroute #获取sysslb的pod中名为apiroute容器的日志
### Starting apiroute
@RUNHOME@ /opt/application/zenap-msb-apigateway/apiroute
### Starting apiroute-go
/opt/application/zenap-msb-apigateway/apiroute
/opt/application/zenap-msb-apigateway/apiroute
......

该方法只能读取最近写入的内容。如果 Pod 写入 40 MiB 的日志,并且 kubelet 在 10 MiB 之后轮转日志, 则kubectl logs 将最多返回 10 MiB 的数据。如果要查看更多信息,可进入日志目录查看。kubectl不提供直接的选项获取全部日志,因为可能导致大量数据传输,在某些情况下是不安全的

组件服务日志

k8s涉及的日志有很多,如图,包括kube-apiserver、controller-manager、scheduler、kube-proxy、etcd等

下表列出了Kubernetes集群中主要组件的日志,以及它们的主要功能:

组件日志位置(请根据具体部署方式确定)功能
kube-apiserver/var/log/kube-apiserver.log提供Kubernetes API服务,接受和处理API请求。
kube-controller-manager/var/log/kube-controller-manager.log控制器的核心组件,负责维护系统的期望状态。
kube-scheduler/var/log/kube-scheduler.log负责决定将Pod调度到哪个节点上,根据资源和策略进行调度。
kube-proxy/var/log/kube-proxy.log负责维护网络规则,使得Pod可以相互通信。
etcdetcd服务器本身的日志提供分布式键值存储,存储整个集群的状态信息。
kubelet/var/log/kubelet.log在每个节点上运行,负责维护Pod的生命周期,与容器运行时交互。
container runtime依赖于具体容器运行时,比如Docker依赖于具体容器运行时,比如Docker | 负责管理和运行容器,记录容器的启动、停止等事件。
​kube-dns可能在CoreDNS中,也可能在其他地方负责为Pod提供DNS服务,实现Pod名称到IP地址的解析。

例如,在某节点目录下存在多个日志

image.png

近两年挖矿木马广泛利用的Kube-apiserver未授权访问漏洞为例,攻击者使用Kubectl -s远程删除了pod,可以在上图的apiserver.log中看到12月11号上午10点10分删除了nginx pod

image.png

查看audit日志

image.png

audit日志是 kube-apiserver 记录的所有 API 调用的详细信息,包括请求者、时间戳、操作类型、资源类型、请求参数、响应状态等。值得注意的信息有:

sourceIP显示了操作的IP来源,

user显示了操作者的身份和所在的用户组, group显示该用户隶属的组

requestReceivedTimestamp显示请求的时间戳,格式为UTC+0,与一般日志记录内容不同

组件服务日志存储位置:

以服务运行:

在使用 systemd 的 Linux 节点上,kubelet 和容器运行时默认写入 journald。 使用 journalctl  -u指定服务单元查看服务日志;例如:

journalctl -u kubelet/kube-apiserver/kube-scheduler

具体存储位置可以通过/etc/manifests/kube-apiserver.yaml里搜索log查看。其他组件存储位置同理。例如,在目录下查看kube-apiserver的配置文件

image.png

image.png

参数--log-file和--audit-log-path指定了常规日志(General Log)和审计日志(Audit Log)的输出路径。

常规日志包含了 kube-apiserver 运行过程中产生的调试信息、错误信息以及其他重要事件的信息。但是不包括api细节

audit日志记录了api请求的详细信息

组件以静态pod运行:

如果 systemd 不存在,kube-apiserver等服务以pod方式运行,可以使用kube-system命名空间下的pod日志查看组件活动:

例如:

[root@paas-controller-1:/paasdata/op-log/k8s]$ kubectl get pod -n kube-system
NAME                                               READY   STATUS    RESTARTS      AGE
kube-apiserver-192.168.85.3                        1/1     Running   0             38d
kube-controller-manager-192.168.85.3               1/1     Running   0             38d
kube-proxy-192.168.85.25                           1/1     Running   1 (27d ago)   38d
kube-proxy-192.168.85.3                            1/1     Running   0             38d

日志可能写入到 /var/log 目录中的 .log 文件。例如/var/log/containers/kube-apiserver.log

Windows服务日志:

默认情况下,kubelet 将日志写入目录 C:\var\logs 中的文件(注意不是 C:\var\log)。这是kubelet的默认目录,但是一些集群部署工具会将 Windows 节点设置为将日志放到 C:\var\log\kubelet。

kubelet 总是指示容器运行时在目录 C:\var\log\pods 中写入日志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值