跟踪用户 ssh 到另一个系统的准确时间的最简单方法是什么

跟踪用户 ssh 到另一个系统的准确时间的最简单方法是什么

env - centos/rhel
我有两个系统。堡垒和DEV。


堡垒 -

  • Bastion 有许多个人用户。 (appleorange... ETC)
  • 用户可以直接 ssh 到 Bastion。

开发-

  • DEV 只有一个用户。 ( fruit)
  • 只有 Bastion 用户可以从 Bastion ssh 到 DEV。

最终,我想追踪“谁在何时做了什么”

在 DEV 方面,我可以看到有人在 /var/etc/secure 和 /var/etc/audit/audit.log 中登录fruit,但看不到“由谁”登录。


apple我的问题:我如何收集连接到 DEV 的时间fruit以及他做了什么?

答案1

一个非常简单的方法是禁用密码登录并仅使用基于密钥的登录。

这样,您就有了命名的密钥auth.log,并且可以简单地将其与用户匹配(例如,在文件的“注释”字段中添加用户名authorized_keys)。登录后,您将获得一个进程 ID,该 ID 也会在注销事件中显示。

$cat /var/log/auth.log
Jun 21 14:42:11 DEV sshd[26510]: Accepted publickey for apple from 1234:5678:90ab:cdef:1234:5678:90ab:cdef port 58888 ssh2: RSA SHA256:abcdefghIJKLMNOPQ/1234567890
Jun 21 14:47:57 DEV sshd[26510]: pam_unix(sshd:session): session closed for user apple


$cat /home/fruit/.ssh/authorized_keys
ssh-rsa abcdefghIJKLMNOPQ/1234567890 apple@bastion

剩下的监控就是设置的问题了audit

答案2

这是一个糟糕的答案(因为identd不可靠且容易伪造,并且当用户连接到其他系统时可能会暴露有关用户的信息),但在过去,人们使用identd这样的东西。

你可以跑identd 在“堡垒”上(使用配置和防火墙规则来防止从“DEV”或内部网络之外的任何地方访问端口 113)。

sshd通常用libwrap, 和编译/etc/hosts.allow 在开发上可以配置为记录堡垒的 identd 报告的用户名,规则如下:

sshd : ALL : spawn = /usr/bin/logger -i --tag "sshd+identd" -p auth.notice "attempted login by %u@%h" &

这将导致记录如下行:

Jun 21 14:13:33 DEV sshd+identd[2128678]: attempted login by apple@bastion

紧接着是通常的 sshd 日志。

请注意,这可能会导致identd用户从未运行的其他主机identd(例如 LAN 上的客户端计算机)直接登录到 DEV 时出现延迟(在进行查询时和超时)。

另请注意,在记录远程用户名时,它仍然只是一个尝试登录因为在建立连接后,在 sshd 使用密码或公钥对登录进行身份验证之前,就会发生这种情况。

我不确定identdCentos 上仍在维护哪些版本,但 AFAIK Debian 上仍然可用的唯一版本是奥伊登德。这是一种几乎被遗忘、过时的技术,几乎没有人再使用它(一些 IRC 网络仍在使用它,一些 IRC 客户端可以选择侦听端口 113 并响应identd请求)。

相关内容