为什么 uname -a 不返回有用的标识符

为什么 uname -a 不返回有用的标识符

uname -a我在大学的服务器中输入命令并得到:

2.6.18-274.3.1.el5 #1 SMP Tue Sep 6 20:14:03 EDT 2011 i686 i686 i386 GNU/Linux

他们是否试图隐藏服务器运行的 Linux 版本?或者它显示的内核是否意味着它们不是?因为当我uname -a在 Linux 机器上打字时,它显示我正在运行 Ubuntu。我只是想知道出于安全原因他们是否愿意保守秘密。

答案1

的输出uname并未被设计为神秘的;它不显示您认为有用的信息的原因是它的目的是显示机器和内核标识,而不是操作系统标识。您仍然可以大致猜测 Linux 发行版,因为编译内核的人往往会在内核版本名称 ( uname -r) 或版本 ( uname -v) 中包含一些信息,以便支持人员可以判断您是否正在运行官方内核以及运行哪个内核。例如,这里.el使用的是RHEL,版本包含编译日期。

没有POSIX-级别操作系统标识,因为大多数unices在内核版本和操作系统版本之间具有一对一的映射关系。 Linux 上的情况并非如此,在 Linux 上,同一内核在多个发行版之间共享,甚至在多个操作系统之间共享(GNU/X11/Apache/Linux/TeX/Perl/Python/FreeCiv,俗称“Linux”,简称“Linux”,但也安卓其他不太知名的系统)。

Linux 标准库指定一个lsb_release命令返回有关分布的信息。lsb_release -irlsb_release -d显示您想要的分发信息。

lsb_release现在大多数 Linux 发行版都有这个命令。如果您的不这样做,则不是出于安全目的:尝试隐藏发行版是没有意义的;如果您可以看到系统上的文件,您可以通过各种方式进行判断(通过检查已安装的软件包、将系统文件与已知值进行比较等)。对攻击者特别有用的唯一信息是知道存在哪些安全漏洞,这实际上并不是发行版的函数,而是已应用或尚未应用安全更新的函数(这可以再次在各种方式 - 包括启动漏洞并希望它起作用,因此尝试隐藏它没有任何意义)。缺乏lsb_release可能是由于缺乏标准化:每个发行版以不同的方式存储其版本号。

答案2

如果他们试图隐藏 Linux 的版本,那他们的工作就很糟糕。这可能是基于内核版本的 RedHat Enterprise Linux(“el5”给出了它)。

在 uname 中隐藏发行版的名称并不能真正提高安全性。我敢打赌,有一个 /etc/rehat-version 文件可以为您提供特定版本。

答案3

那么显然这不是 ubuntu ;)

看起来像 CentOS 5.7 32 位。它运行的是相当旧的内核,他们需要应用一些安全更新。

相关内容