小智 13
如果您对此很担心,有几种方法可以解决这个问题。
我看到了两种获取此类信息的好方法。一种是通过 sshd 本身增加日志记录,另一种是通过对磁盘上的 git 存储库进行更深入的监视。由于没有一个单独为您提供您想要的信息,您可能希望同时使用外部日志分析引擎或使用人眼和时间戳按需关联日志数据。
默认情况下,正如您所看到的,您可以使用 ssh 身份验证日志查看用户何时登录以及从何处登录。您想要做的是在退出 sshd 时更改级别。所以编辑你的/etc/ssh/sshd_config
并找到看起来像的行
#LogLevel INFO
Run Code Online (Sandbox Code Playgroud)
并将其更改为
LogLevel VERBOSE
Run Code Online (Sandbox Code Playgroud)
然后重启sshd服务。这会将 sshd 的日志记录级别提高 1 步,从而提供更多信息。进行更改后,请查看我的远程访问的此日志片段。
Nov 2 08:37:09 node1 sshd[4859]: Connection from 10.10.10.5 port 50445
Nov 2 08:37:10 node1 sshd[4859]: Found matching RSA key: f2:9e:a1:ca:0c:33:02:37:9b:de:e7:63:d5:f4:25:06
Nov 2 08:37:10 node1 sshd[4860]: Postponed publickey for scott from 10.10.10.5 port 50445 ssh2
Nov 2 08:37:10 node1 sshd[4859]: Found matching RSA key: f2:9e:a1:ca:0c:33:02:37:9b:de:e7:63:d5:f4:25:06
Nov 2 08:37:10 node1 sshd[4859]: Accepted publickey for scott from 10.10.10.5 port 50445 ssh2
Nov 2 08:37:10 node1 sshd[4859]: pam_unix(sshd:session): session opened for user scott by (uid=0)
Nov 2 08:37:10 node1 sshd[4859]: User child is on pid 4862
Nov 2 08:40:27 node1 sshd[4862]: Connection closed by 10.10.10.5
Nov 2 08:40:27 node1 sshd[4862]: Transferred: sent 30632, received 7024 bytes
Nov 2 08:40:27 node1 sshd[4862]: Closing connection to 10.10.10.5 port 50445
Nov 2 08:40:27 node1 sshd[4859]: pam_unix(sshd:session): session closed for user scott
Run Code Online (Sandbox Code Playgroud)
这里要注意的重要事项有两个
使用默认的 LogLevel (INFO) sshd 不会记录这些项目。获取钥匙的指纹是一个额外的步骤。您必须authorized_keys
像这样使用 ssh-keygen处理适当的文件。
[root@node1 ssh]# ssh-keygen -l -f /home/scott/.ssh/authorized_keys
4096 f2:9e:a1:ca:0c:33:02:37:9b:de:e7:63:d5:f4:25:06 /home/scott/.ssh/authorized_keys (RSA)
Run Code Online (Sandbox Code Playgroud)
所以现在您知道以下信息:
现在我们有一种方法可以在特定时间归因于用户的操作,假设两个用户没有同时登录,我们可以开始查看对存储库所做的更改。
正如 sysadmin1138 所说,这可能是 auditd 子系统的绝佳用例。如果您没有使用基于 RedHat 的发行版,那么可能有一个类似版本,但您必须找到它。auditd 的配置非常密集,并且有大量的配置选项。要了解一些选项,请在我们的信息安全专业人员姊妹网站上查看此问题。
至少,我建议在包含相关 git 存储库的磁盘目录上设置所谓的“监视”。它的作用是指示内核模块报告对指向我们列出的文件或目录的文件句柄执行文件访问调用的尝试,例如open()
或creat()
。
这是一个可以执行此操作的示例配置,并且仅此而已。因此,请仔细阅读并理解您的现有内容/etc/audit/audit.rules
,以便适当地集成更改。
# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.
# First rule - delete all
-D
# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 1024
-w /path/to/git/repos-p wa
# Disable adding any additional rules - note that adding *new* rules will require a reboot
-e 2
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以采用的唯一技术方法是信任 ssh 连接的身份。然后,您可以强制每个用户仅通过验证每个新推送提交的提交者来推送他所做的提交。
为了保证这一点,您几乎肯定不想让您的用户不受限制地访问存储库所在的框;你会想要确保使用类似的东西,git-shell
否则这些限制很容易解决。
不过,用户仍然可以互相冒充作者。您也可以限制这一点,但这会丢失常见的工作流程,例如挑选和重新定位甚至可能分支(取决于您的钩子实现),因此您可能不想这样做。
在某些时候,在某种程度上,您需要信任您的开发人员。
归档时间: |
|
查看次数: |
3122 次 |
最近记录: |