遭受攻击后的处理流程

1. 断开网络

  • 99%的攻击源于网络,首要断开网络
  • 切断服务器与攻击源的连接
  • 保护网络中的其它服务器

2. 查找攻击源

  • 分析用户登录日志文件
# 登录记录
last -f /var/log/wtmp
# 失败登录记录
last -f /var/log/btmp

# 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里
# 查找登录成功的记录
cat /var/log/secure |grep Accepted
Apr  6 18:29:17 k8srancher sshd[13208]: Accepted password for root from 10.112.0.102 port 55519 ssh2
Apr  6 20:20:23 k8srancher sshd[16425]: Accepted password for root from 10.112.0.102 port 58263 ssh2
Apr  7 09:23:23 k8srancher sshd[4373]: Accepted password for root from 192.168.198.23 port 43704 ssh2
Apr  7 11:28:23 k8srancher sshd[8237]: Accepted password for root from 192.168.198.23 port 53022 ssh2
Apr  7 15:42:38 k8srancher sshd[19805]: Accepted password for root from 192.168.198.23 port 58957 ssh2
  • 查看是否有异常定时任务
# 查看定时任务执行日志
cat /var/log/cron
# 列出定时任务
crontab -l
  • 查看系统日志
# 包括整体系统信息,其中也包含系统启动期间的日志。
# 此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
# 从头输出前100行
head -n 100 /var/log/messages
  • 查看是否有可疑用户
# 检查/etc/passwd和/etc/shadow文件中是否有可疑用户
# nologin权限之外的用户
cat /etc/passwd |grep -v "/sbin/nologin"

# 查看哪些用户被设置密码
cat /etc/shadow
# 设置密码显示格式
root:$6$cO6Wp7CYPmvpYdL6$8V0WR5RMkSV7MbYCgk6q3u0sCro0Ubk4YWfC.XAZjrzuTb1rQyExxMrqicmsAvx9Br7mF/::0:99999:7:::
# 无密码显示格式
systemd-network:!!:18010::::::
mail:*:17834:0:99999:7:::
  • 查看用户历史命令
# 默认在每个用户目录下记录历史命令的文件.bash_history
# 查找异常的操作命令历史
cat /root/.bash_history
  • rootkit检查,推荐使用RKHunter

  • 查看可疑进程并关闭

# 通过ps、top查找可疑进程
top - 16:59:54 up 38 min,  1 user,  load average: 0.29, 0.32, 0.26
Tasks: 279 total,   1 running, 278 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.5 us,  0.4 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 24521024 total, 17621316 free,  1879020 used,  5020688 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 22219144 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
12690 root      20   0  771748 510392  42404 S   3.3  2.1   1:09.55 kube-apiserver --proxy-client-cert-file=/etc/kubernetes/ssl/kube-apiserve+
12452 root      20   0   10.3g 154036  20596 S   2.3  0.6   0:34.74 /usr/local/bin/etcd --initial-cluster-state=existing --cert-file=/etc/kub+
 1830 root      20   0 1694460 110852  30236 S   1.7  0.5   3:07.41 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
13355 root      20   0 1345696  87220  33768 S   1.7  0.4   0:21.87 kubelet --kubeconfig=/etc/kubernetes/ssl/kubecfg-kube-node.yaml --pod-inf+
18846 root      20   0 2002100  41240  17144 S   1.0  0.2   0:07.99 calico-node -felix

# 查看对应PID目录下exe文件信息,如果是容器进程,得到的路径是基于容器目录的
[root@node ~]# ls -al  /proc/12690/exe
lrwxrwxrwx 1 root root 0 Apr  7 16:43 /proc/12690/exe -> /usr/local/bin/kube-apiserver
[root@node ~]# ls -al /proc/18846/exe
lrwxrwxrwx 1 root root 0 Apr  7 17:00 /proc/18846/exe -> /usr/bin/calico-node

# 查找进程所在的容器id
docker inspect -f "{{.Id}} {{.State.Pid}}"  $(docker ps -q) |grep <PID>

# 以pid为12690为例,找到其容器id,然后验证上面查找出的exe路径
[root@node ~]# docker inspect -f "{{.Id}} {{.State.Pid}}"  $(docker ps -q) |grep 12690
17aed2e7494d8b1c6d24d473e8a2e6134afcd38d031b6c120c8afdf24ed451d2 12690
[root@node ~]# docker exec -it 17ae ls -al /usr/local/bin/kube-apiserver
-rwxr-xr-x 1 root root 118722560 Mar 12 21:00 /usr/local/bin/kube-apiserver
  • 查找可疑的监听端口
# 一般来说应用服务器都有其固定使用的端口,入侵者会伪装自己,避免和已有业务端口冲突造成暴露
# 查看tcp
netstat -ntlp
# 查看udp
netstat -nulp

3. 分析入侵原因和途径

  • 查找系统版本公开漏洞
  • 查找应用漏洞,分析应用日志

4. 备份用户数据

5. 重新安装系统

6. 修复程序或者系统漏洞

7. 恢复数据和连接网络

posted @ 2022-03-02 20:42  longtds  阅读(226)  评论(0编辑  收藏  举报