SSH 高级日志记录

SSH 高级日志记录

我已经在我的服务器上安装了 OpenSUSE,并且想要设置 ssh 来记录通过它发送到系统的每个命令。

我在我的 sshd_config 中发现了这一点:

# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
#LogLevel INFO

我猜这两个指令都应该取消注释,但我想记录每个命令,而不仅仅是授权(通过 SSH 登录/注销)。我只是想知道,如果有人闯入我的系统,他会做什么。

答案1

history自动执行此操作,以通过 ssh 登录的用户身份登录并执行:

history

它显示该特定用户执行的命令的历史记录。

history > command.log

将保存历史记录到文件“ command.log

更多关于historyhttp://en.wikipedia.org/wiki/History_%28Unix%29http://compute.cnr.berkeley.edu/cgi-bin/man-cgi?history

当(正确)使用 bash 时,命令行历史记录也应该存储在.bash_history(用户主目录中的文件中)。

答案2

最好的选择是安装失败禁止并忽略 SSH 日志。防止入侵比查看攻击者可能做了什么更有价值。特别是当你假设如果他入侵,他可以删除日志文件时。

答案3

如果有人能闯入您的系统,他/她可能足够聪明,可以删除历史文件并篡改日志。为了让坏人更难得逞:

  • 了解 SELinux / GRsecurity 和 Linux 审计功能
  • 设置一个集中式日志服务器,并让您的 syslog-daemon(我更喜欢 syslog-ng)将所有日志文件转发到那里。确保您的日志服务器位于严密的防火墙后面,只为传入连接打开日志端口(当尝试从另一台服务器连接时)。
  • 考虑使用根什或者与之相当的东西。

答案4

您说您想记录每个“命令”。我假设您的意思是用户(无论是否合法用户)在 shell 中输入的每个命令。以下链接中有许多工具可以以或多或少安全的方式执行此操作:

注意:就像@Janne-Pikkarainen 所说的那样,如果您想要拥有真正安全的日志,您应该将您的日志文件发送到另一台机器。

相关内容