你怎么知道服务器实际上做了什么?

Biz*_*ark 43 linux redhat linux-networking client-server

我收到了 3 个 Linux 机器,1 个正面装有 apache,另外 2 个,据我所知,并没有做太多事情。全部在 Redhat 上运行。

问题很简单:我如何知道服务器实际上在做什么?零文档可从创建者处获得。

Jos*_*but 43

拔下以太网电缆,看看谁不高兴。

不过说真的,像这样的神秘机器会给团队带来很多精神开销,而且通常绝对没有商业价值。和你的老板谈谈,如果没人知道它在做什么,也许没人关心它做什么。

  • **不要关闭它。**如果您想进行尖叫测试,请拔下以太网电缆。如果您从未有过两年正常运行时间无法重新启动的机器,那么在某些时候您会。现在不是在混合中添加这种挫败感的时候。(复制这里,因为它需要阅读。) (44认同)
  • 在拔掉网络之前,最好在每个服务器上保存一个正在运行的进程和打开的套接字列表 - 以防万一某事依赖于服务器之间的 TCP 连接,该连接碰巧已经建立了好几个月而没有任何人考虑自动化在第一种情况下打开它所需的任何步骤。(例如,如果有人暂时需要 ssh 端口转发,然后又忘记了。) (8认同)
  • 不要这样做。多么可笑的建议。愚蠢的、轻率的 IT 人员这样做花费了我太多的时间和工作。先问。如果你不知道该问谁,_ASK EVERYONE_。 (4认同)
  • 确保你有足够的时间让别人尖叫——有一次我在服务器机房机架上用一台布满灰尘或台式机的机器做这件事——没人知道它做了什么,当我们拔掉它时,有人花了整整一个月的时间才注意到它. 原来它是工资单系统的一部分,如果没有该服务器,会计就无法生成每月工资单。它已经在无人看管的情况下运行了至少 3 年,没有人注意到它——所以“尖叫测试”是成功的,如果我们不这样做,服务器最终会自行死亡。我们最终将它 p2v 放入我们的 vmware 集群中。 (4认同)
  • 你 100% 正确,我已经编辑了帖子以反映这一点。我有点开玩笑,但我仍然可以在不宣传灾难的情况下开玩笑。 (3认同)
  • 是的,关掉它,虽然从本能的角度来看很有趣,但可能并不聪明,[可能会让你喝很多热水](http://arstechnica.com/information-technology/2014/10/it-came -from-the-server-room-halloween-tales-of-tech-terror/?comments=1&post=27873759) (2认同)

Aar*_*ley 31

这是 Serverfault 格式的一个相当广泛的问题,但这是一个好的开始:

  • 检查正在运行的进程和计划在系统启动时运行的进程。
    • 查看每个的运行配置。
    • 查看任何定义的数据目录。(也许有人安装了 MySQL 并打开了它,但没有数据库。)
  • 检查计划任务。
  • 检查日志以查看;
    • 谁最近登录(并询问他们)
    • 并了解正在运行的内容。

你没有提到版本,所以我省略了细节。

  • 有一些比系统启动时配置哪些服务启动更重要的事情。哪些服务正在运行?启动服务并忘记将其配置为在启动时启动并不是一个很难犯的错误。在相关说明中,最好查看其他系统状态,例如:挂载点、路由表、iptables 规则。所有这些都可以在系统运行时轻松更改,而无需记住更新启动期间使用的配置文件。 (8认同)

Ita*_*not 19

您可以采取一些措施来尝试确定系统上正在运行的内容。

您可以检查您的服务器正在侦听哪些端口,以了解那里的内容。一个好的使用命令是:

 [root@server ~]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             Stat    e       PID/Program name
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LIST    EN      1880/smbd
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LIST    EN      1911/nrpe
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LIST    EN      1759/sshd
Run Code Online (Sandbox Code Playgroud)

正如您从上面的示例输出中看到的那样,它向您展示了协议版本(tcp 或 udp)、正在侦听的地址、打开的端口和正在侦听的程序。

在上面截断的示例(服务器机器)中,您可以看到 tcp 端口 139、5666 和 22 正在侦听。这些分别解析为 samba、nrpe(Nagios 代理)和 ssh,并在您检查在该端口上侦听的程序时确认。

此外,您可以检查配置为在引导时启动的守护程序列表,为此,请运行: chkconfig --list | grep "3:on"

例子:

[root@server ~]# chkconfig --list | grep "3:on"
NetworkManager  0:off   1:off   2:on    3:on    4:on    5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
sysstat         0:off   1:on    2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:on    4:on    5:on    6:off
vncserver       0:off   1:off   2:on    3:on    4:on    5:on    6:off
webmin          0:off   1:off   2:on    3:on    4:off   5:on    6:off
x2gocleansessions       0:off   1:off   2:on    3:on    4:on    5:on    6:off
.
.
.
Run Code Online (Sandbox Code Playgroud)

或者 :

service --status-all

  • 我发现 `netstat -plunt` 更容易记住。 (5认同)
  • 此外,`tcpdump` 可能有助于确定谁在实际使用每个服务。 (2认同)

Kon*_*ski 18

另一种方法涉及检查/etc目录并查看修改日期。全新安装后,此目录中的所有文件应具有大致相同的日期/时间。而且由于安装通常会安装很多人们通常不使用的东西,因此只有修改日期较晚文件才能反映服务器的实际用途。如果这是 ext4,您还应该能够提取目录的出生日期,因此该任务可能非常简单。

另一种方法是检查.bash_history文件以了解管理员在做什么。这个文件可以提供丰富的知识。


MSa*_*ers 7

检查防火墙规则。幸运的是,它被配置为默认拒绝。这意味着每个允许的服务都有明确的规则。

这会更好,netstat因为它还可以显示打开的端口,例如用于夜间备份。


Jay*_*Tee 6

我还没有看到的一个答案:检查最近修改的文件。日志、数据库文件、其他输出文件等可能会被写入仍然可以提供线索:

find . -mtime -3 
Run Code Online (Sandbox Code Playgroud)

这将在当前目录中找到修改过的文件,并且在过去 3 天内更改过更深的文件。将数字 3 增加到有根据的猜测,直到获得一些可以调查的输出。

并非万无一失,因为这些盒子可能只是处理一些 Web 服务调用,返回一些数据而无需写入任何内容。但加上上面提到的伟大组合,它可能只会产生一些线索。