LabHub
学习 学习路径 课程

面对陌生系统

侦察客户的环境

在 LabHub 中继续学习

目标

首次进入既没有文档也没有仪表板的客户服务器后,能够在 30 分钟内绘制一页环境地图。

为什么重要

在陌生环境中,代价最高的错误是随意打开某个日志。日志如同大海,在不知道大小和格式的情况下进入,只会浪费时间。侦察的目的不是寻找答案,而是确定探索范围。知道文件有多少行,就能估计一次 grep 要花几秒;知道采集区间,就能判断问题发生时刻的日志是否原本就存在。检查容量时必须同时查看两项——块和 inode 是不同资源,即使磁盘容量仍有剩余,inode 用尽后也无法创建文件。实际工作中,经常有人只看 df 就回复客户“磁盘空间充足”,随后问题再次出现。

步骤

  1. 创建 /root/recon 目录。
  2. 创建 /root/recon/os.txt,其中包含该系统的发行版名称。
  3. /opt/data 下的文件列表连同大小保存到 /root/recon/files.txt
  4. /opt/data 顶层容量最大的文件名写入 /root/recon/biggest.txt,只写文件名。
  5. /opt/data/web.log 的总行数以数字写入 /root/recon/weblog_lines.txt
  6. 将文件系统容量和 inode 使用量两者都保存到 /root/recon/disk.txt
  7. /opt/data/web.log 中最早和最晚的时间写入 /root/recon/timerange.txt
  8. 将上述信息整理成一页 /root/recon/map.md。必须包含发行版、最大文件名、web.log 行数和日志采集区间。

参考

创建侦察工作目录

创建 /root/recon 目录。

将产出物集中到一处,日后才能整合为报告。mkdir 添加 -p 后,即使目录已存在也不会报错。

确认发行版

创建 /root/recon/os.txt,其中包含该系统的发行版名称。

发行版信息以 key=value 形式保存在 /etc/os-release 中。该值决定日志路径和软件包命令。

创建数据清单

/opt/data 下的文件列表连同大小保存到 /root/recon/files.txt

列出 /opt/data 及其文件大小。可以直接将 ls -l 或 du 的输出重定向到文件。

找出最大文件

/opt/data 顶层容量最大的文件名写入 /root/recon/biggest.txt,只写文件名。

不要目视判断,应进行排序。ls 有按大小排序的选项,du 可与 sort 组合使用。只写文件名。

统计 Web 日志行数

/opt/data/web.log 的总行数以数字写入 /root/recon/weblog_lines.txt

知道行数,才能估计一次 grep 需要几秒。使用 wc 的行计数选项。

同时记录容量和 inode

将文件系统容量和 inode 使用量两者都保存到 /root/recon/disk.txt

df 默认只显示块信息。查看 inode 有单独的选项,两种输出都必须位于同一个文件中。

确定日志采集区间

/opt/data/web.log 中最早和最晚的时间写入 /root/recon/timerange.txt

web.log 的第二个字段是时间。只提取该字段并排序后,最早和最晚值会出现在两端。

整理成一页环境地图

将上述信息整理成一页 /root/recon/map.md。必须包含发行版、最大文件名、web.log 行数和日志采集区间。

将前面步骤得到的值汇总到一页 Markdown 中。必须包含发行版、最大文件、日志行数和采集区间。