在对现有 Linux 服务器进行审计时,最好的第一步是找出正在运行的发行版以及服务器是运行 32 位还是 64 位架构。
要找出服务器正在运行的架构,您可以运行uname命令,该命令将打印出某些系统信息。这必须与 -a 标志一起提供,以便打印出尽可能多的信息。
uname -a
这将在 Ubuntu 系统上打印出类似于以下内容的行。
Linux vlad 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
这可以一点一点地分解,并将包含以下信息。
Linux - 这是内核名称。这也可以使用 -s 或 --kernel-name 标志自行打印。
vlad - 这是网络节点主机名,也可以使用“主机名”命令返回。使用 -n 或 --nodename 标志打印。
3.2.0-23-generic - 这是内核版本。使用 -r 或 --kernel-release 标志打印。
#36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 - 这是内核版本。使用 -v 或 --kernel-version 标志打印。
x86_64 - 这是机器硬件名称。使用 -m 或 --machine 标志打印。
x86_64 - 这是处理器类型,可以是处理器类型或“未知”。使用 -p 或 --processor 标志打印。
x86_64 - 这是硬件平台,可以是硬件平台的类型或“未知”。使用 -i 或 --hardware-platform 标志打印。
GNU/Linux - 这是操作系统。使用 -o 或 --operating-system 标志打印。
机器硬件名称和硬件平台用于确定系统架构。在上面的示例中,这是 64 位(由 x86_64 表示)。如果这些值读取 i686 或 i386,则架构为 32 位。
除了使用 'uname -a',另一种方法是使用 'arch' 命令,或者查看文件 /sbin/init 文件的内容。无论哪种方式都可以,但我发现 uname 命令会打印出我需要的信息。
您会从上面注意到我们仍然不知道发行版,尽管我们可以看出它是一个 Ubuntu 盒子。要找出您正在运行的系统的发行版和版本,您可以查看 /etc/ 目录中以“release”结尾的文件。这些文件在每个系统上都不同,因此另一种方法是打印任何以“release”结尾的文件的内容。这将以人类可读的格式打印分发。
cat /etc/*release
您可以通过用双与号 (&&) 分隔来连续运行这两个命令。
$uname -a && cat /etc/*release
在 Ubuntu 12.04 系统上运行上述命令时,您将看到类似于以下内容的输出。
$ uname -a && cat /etc/*release Linux vlad 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS"
这是在 CentOS 6.5 服务器上运行上述命令的示例。
$ uname -a && cat /etc/*release Linux webserver2 2.6.32-358.23.2.el6.x86_64 #1 SMP Wed Oct 16 18:37:12 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux CentOS release 6.5 (Final) CentOS release 6.5 (Final) CentOS release 6.5 (Final)
这三行重复是因为,在 CentOS 中,/etc/redhat-release 和 /etc/system-release 文件实际上是文件 /etc/centos-release 的符号链接。