Linux 的泄密之心,第 4 部分
是的,又到了系统管理员专栏的另一期,这里是关于 Linux 的一切。好吧,不是所有的事情,只是那些在某种程度上是技术性的,并且在某种程度上与运行、维护和以其他方式管理您的 Linux 系统相关的事情。(这听起来仍然相当多。)今天,我们再次深入 Linux 系统的核心和灵魂,以 выяснить 它到底想告诉我们什么。是的,这就是精彩的 日志 和 日志文件 的世界。
在上周关于 PortSentry 的文章之后,我收到了几封电子邮件,询问如何根据通常是数字地址来识别潜在的黑客的 ISP。在我们开始今天的专栏之前,我想花一点时间就此提供一些建议。找出黑客来自何处的一种方法是在地址上执行 traceroute。格式很简单
traceroute xxx.xxx.xxx.xxx -i ppp0
-i 标志指定发生 traceroute 的接口。如果您没有多个接口,这意味着您是伪装网络上的单台 PC(或类似情况),那么您可以跳过 -i 标志。拨号连接将遵循上述格式。虽然 traceroute 输出可能非常有趣,有时会产生 ISP 的身份(在链的末尾附近),但在大多数情况下,您会发现自己挠头。如果黑客的 IP 地址无法通过简单的 host XXX.XXX.XXX.XXX 命令解析,那么我会通过访问 ARIN(美国互联网号码注册机构)whois 数据库 http://www.arin.net/whois/index.html 来搜索谁拥有该 IP 地址的地址空间。
在搜索表单中输入 IP 地址将返回与您刚刚输入的地址对应的 块 IP 地址,包括该块的 所有者。然后,您可以单击所有者并找到该个人或组织的域名记录,以及联系信息等等。即使掌握了技术联系人的姓名,我通常也会向 abuse@thedomain.com(其中“thedomain”很奇怪,就是域名)以及 postmaster@thedomain.com 发送邮件。您很可能会找到正确的人。
您不会在 ARIN 数据库中找到 所有内容。例如,军用 IP 未在 ARIN 中列出。但是,您将能够找到几乎所有其他内容;要么在那里,要么通过指向其他 whois 数据库的链接。
让我们简要地将注意力从潜在的黑客身上移开,检查另一组大量的日志。如果您正在运行 Web 服务器,您可能已经注意到您的日志可能有点繁忙。每次有人请求页面时,您都会在 Web 服务器的日志文件中至少获得一个条目。为什么是“至少”一个,而不是只有一个?在所有可能性中,您的页面都不是简单的文本文档。除了实际文本之外,您可能还有六个图形和一个 Web 计数器。其中每一个都会生成一个日志条目。也许您的网页是使用框架设计的,甚至会产生更多日志条目。
在您可以检查这些丰富的信息之前,您需要知道在哪里查找。对于 Red Hat RPM 安装,请查看 /etc/httpd/logs。如果像我一样,您从源代码构建了自己的 Apache 服务器,那么您可能应该在 /usr/local/apache/logs 目录中查找。无论哪种方式,要查看的文件都是 access_log。另一种可以产生您需要的信息的方法,无论您运行的是什么系统,都是命令
httpd -V
这将打印出您的 Web 服务器二进制文件的配置设置。您想要的信息将如下所示
-D DEFAULT_XFERLOG="/path_to/your/access_log"
正如我在前面几段中提到的,每个链接、图像或文本片段都在该文件中,以及单击它的站点的地址。这是大量的信息,但是您如何判断哪个页面最受欢迎?访问者在您的网站上寻找什么?这里有一个有趣的想法……如果您可以统计访问您网站的浏览器类型,您可能会对页面布局进行一些更改以适应大多数访问者。使用 cat、more 或 less 等命令查看这些日志不会让您的工作变得更容易。
您需要像 Analog 这样的工具,它来自剑桥大学统计实验室的 Stephen Turner。Analog 的网页自豪地宣称它是“世界上最受欢迎的日志文件分析器”。虽然我无法确认或否认这一说法,但我可以提供该网站地址,以便您可以获取自己的副本。(对于那些想要自己检查这些数字的人,Stephen 还提供了指向研究的链接。)
http://www.statslab.cam.ac.uk/~sret1/analog/
Analog 可以筛选数千个网站日志条目,并在很短的时间内生成易于阅读的报告。我从我的网站上获取了一个旧的 access_log 文件,让 Analog 完成它的工作。在我的旧 150MHz Pentium 笔记本电脑上,Analog 在 1 分钟 39 秒 内处理了 800,000 行日志。这相当令人印象深刻。在我下载副本时,最新版本是 4.11。对于那些运行 Linux 以外的其他架构(可能是 Solaris 或 BSD Web 服务器)的人,此程序将在许多不同的 UNIX 平台上编译。
您应该将 Analog 解压到您最终想要它所在的目录结构中。通常,您会执行“make”和“make install”,然后删除安装目录。这里不是这样。如果我想让 Analog 位于 /usr/local/analog-4.11 中,我可以切换到 /usr/local 目录并执行以下步骤
cd /usr/local tar -xzvf analog-4.11.tar.gz cd analog-4.11
在继续键入“make”之前,您需要编辑 anlghead.h 文件。最明显的更改是以下几行
#define HOSTNAME "[my organization]" #define HOSTURL "none" #define ANALOGDIR "/usr/local/analog-4.11/" #define LOGFILE "/usr/local/apache/logs/access_log"
HOSTNAME 变量指的是将显示在您的 HTML 报告顶部的横幅。这几乎可以是任何东西;如果您只有一个 Web 服务器,那么您的公司或组织名称是一个明显的选择。如果您有多个 Web 服务器,您可能需要标识特定的主机。接下来是 HOSTURL,它只是在报告头中放置一个返回您主页(或您想要的任何页面)的链接。ANALOGDIR 是 Analog 程序和支持文件的路径。我们是在解压程序时确定这一点的。最后,LOGFILE 是您的 Web 服务器日志文件的完整路径;在我的情况下,路径是 /usr/local/apache/logs/access_log。现在您可以准备制作程序了。
make
在第一次运行程序之前,您将要再编辑一个东西。这一个位于程序的安装目录中,名为 analog.cfg。examples 目录包含“cfg”文件的变体,其中包含关于如何设置您的文件的想法。可以在 analog.cfg 中设置相当多的参数,这将允许您自定义生成的报告,以更好地适应您的站点。下面列出了这些参数及其含义的(非常小的)示例。
LANGUAGE ENGLISH (My choice, although I did try FRENCH) HOST ON (The hostname of their system) DOMAIN ON (Country codes get listed) REFERRER ON (What page did they come from to find you) SEARCHQUERY ON (Search terms used to find you) BROWSER ON (What kind of browsers were they using) OSREP ON (What were they running, Linux, Windows, etc)
如果您查看 examples 目录中的 big.cfg 文件,您会发现更多内容,因为它几乎包含您可能想要考虑的任何内容。我应该指出,为了让 Analog 报告某些内容,您必须确保您的 Web 服务器实际上正在收集此信息。例如,我的服务器收集访问者的 IP 地址,并且不对每个连接执行 DNS 查找。这是如今默认的 Apache 配置,这样做是为了提高速度。因此,我不会在我的系统上获得 HOSTNAME 或 DOMAIN 报告。如果您好奇,该参数在您的 Apache 配置文件中是“HostnameLookups on”。但要注意成本。默认设置为“off”是有充分理由的。
无论如何,我跑题了。要运行 Analog 程序,请键入命令的完整路径,或从安装目录执行它。
cd /usr/local/analog-4.11 ./analog
稍等片刻,您将获得报告。然后您可以在您喜欢的 Web 浏览器中查看它。如果您在系统本地运行此程序,您只需在浏览器的位置栏中键入报告的路径名即可。如果您想查看 Analog 报告的示例(在安装之前),请单击 Analog 主页上的 查看示例报告 链接。
Analog 很酷。它速度很快。它是免费的(虽然不是 GPL - 阅读随附的许可证了解详细信息)。
好了,各位,又到了本周结束的时候了。下次,我将向您展示如何在原本平淡的日志文件和系统分析世界中添加一点色彩,一点闪光。如果 USA Today 风格的彩色图表对您有用,那么请确保下次我们在系统管理员专栏重新聚会时来到这里。与此同时,请记住您的 Linux 系统正在与您对话。您在听吗?
电子邮件:ljeditors@ssc.com