了解陌生系统的命令

Ale*_*der 19 linux command-line shell root

您登录到一个不熟悉的 UNIX 或 Linux 系统(以 root 身份)。您运行哪些命令来定位自己并弄清楚您使用的是哪种系统?您如何确定正在使用的硬件类型、正在运行的操作系统类型以及权限和安全性方面的当前情况?

您键入的第一个和第二个命令是什么?

Bru*_*ger 22

两用问题!软件考古学家或邪恶的黑客都可以使用这个问题的答案!现在,我是谁?

我总是用ps -efvsps -augxww来找出我在做什么。Linux 和 System V 机器倾向于喜欢“-ef”和“-augxww”上的错误,对于 BSD 和旧的 SunOS 机器反之亦然。的输出也ps可以让你知道很多。

如果你能以root身份登录,这是一台Linux机器,你应该做的lsusblspci-这将让你的方式80%对知道硬件是个什么情况。dmesg | more可以帮助您了解任何当前的问题。

它开始被淘汰,但这样做ifconfig -a通常可以告诉你很多关于网络接口和网络的信息。运行mii-tool和/或ethtool在您在ifconfig输出中看到的看起来像有线以太网的接口上也可以为您提供一些信息。

Runninip routenetstat -r可以提供有关 Internet 协议路由的信息,也可能是有关正在使用的网络接口的信息。

一个mount调用可以告诉你的磁盘(S)和他们是如何安装。

运行uptime,然后last | more可以告诉您有关当前维护状态的信息。100 多天的正常运行时间可能意味着“是时候更换机油和液体了”,打个比方。跑步who也是

查看/etc/resolv.conf/etc/hosts可以告诉您该机器的 DNS 设置。也许做nslookup google.comdig bing.com看看DNS是否主要功能。

始终值得关注哪些错误(“未找到命令”)和哪些命令变体(“ps -ef”与“ps augxww”)可以确定您最终使用的是哪种 Unix 或 Linux 或 BSD 变体。

C 编译器的存在与否以及它的位置很重要。做which cc或更好,which -a cc找到他们。


Ale*_*der 10

cat /etc/*release* 是一个很好的命令,用于了解正在运行的发行版。


thr*_*rig 9

http://bhami.com/rosetta.html可能便于查看,否则我通常会在/etc(帐户、初始化内容、操作系统风格的提示等)下浏览crontab -l并查看ps列表以了解要了解的内容。

此外,“以 root 身份”也非常可怕,因为我不得不修复系统,其中 Linux 管理员进行此类调查时将所有 Solaris 主机名设置为-f.

也是df一个危险的命令,是一个很好的方式来解决阻塞 I/O 的问题。所以永远不要运行它,直到你至少调查了坐骑,或者知道你可以以某种方式打开另一个会话。

使用非常简单的命令 ( uname, cd /etc; ls, cat, $PAGER) 直到您弄清楚主机是什么,如果您不熟悉它,请检查 rosetta 或始终阅读手册页,然后再假设某个命令或命令的标志执行它的功能更受欢迎的系统。

  • @Bratchley 哦,从未有过无法发送控制字符的控制台连接?嗯,那个 zmodem 手册在哪里,或者哦,天哪,我们如何通过有问题的 Java 东西将它们发送到其他有问题的东西啊,天哪,谁有物理访问权限? (3认同)
  • 为什么“df”是危险的?是否有系统除了显示文件系统使用情况之外还执行其他操作? (2认同)

Bra*_*ley 5

dmidecode并且lspci通常会让您对系统上运行的硬件有一个很好的了解。如果这是通常运行的服务器,netstat -tlpn则会泄露服务器的用途。df -hP是检查系统上当前存储的好命令。lsb_release -a应该让您知道您在使用什么发行版:

[root@vle02 ~]# lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 6.7 (Santiago)
Release:        6.7
Codename:       Santiago
Run Code Online (Sandbox Code Playgroud)

运行last应该让您知道谁在使用该系统。假设您已合法访问此服务器,通常您只需向登录该服务器的其中一位人员询问有关它的更多信息。

对于供应商中立的安全检查:通常防火墙将具有唯一的配置数据,因此运行 aiptables -nvL很有用。您还应该查看发行版的 pam 配置文件,看看您是只使用本地用户还是配置为使用 ldap/kerberos/winbind/sssd/whatever。

您还可以检查netstat -tlpn. 例如,如果您看到 apache,您可以查看/etc/http/conf/httpd.conf(在 RHEL 上,/etc/apache2在 Ubuntu 上)并尝试查看正在运行的网站。或者,您可以执行 aapachectl -S来获取所有配置的虚拟主机的列表。它有点从那里出来,所以我真正能做的就是提供 apache 作为一个例子,如果它是别的东西,就说验证守护进程的配置。

在 RHEL 上,我还会检查rpm -qa --last | head他们上次进行系统更新的时间。我还会检查是否通过以下方式启用了 SELinuxgetenforce