![SSH 高级日志记录](https://linux22.com/image/1707109/SSH%20%E9%AB%98%E7%BA%A7%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95.png)
我已经在我的服务器上安装了 OpenSUSE,并且想要设置 ssh 来记录通过它发送到系统的每个命令。
我在我的 sshd_config 中发现了这一点:
# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
#LogLevel INFO
我猜这两个指令都应该取消注释,但我想记录每个命令,而不仅仅是授权(通过 SSH 登录/注销)。我只是想知道,如果有人闯入我的系统,他会做什么。
答案1
history
自动执行此操作,以通过 ssh 登录的用户身份登录并执行:
history
它显示该特定用户执行的命令的历史记录。
history > command.log
将保存历史记录到文件“ command.log
”
更多关于history
:http://en.wikipedia.org/wiki/History_%28Unix%29和http://compute.cnr.berkeley.edu/cgi-bin/man-cgi?history
当(正确)使用 bash 时,命令行历史记录也应该存储在.bash_history
(用户主目录中的文件中)。
答案2
最好的选择是安装失败禁止并忽略 SSH 日志。防止入侵比查看攻击者可能做了什么更有价值。特别是当你假设如果他入侵,他可以删除日志文件时。
答案3
如果有人能闯入您的系统,他/她可能足够聪明,可以删除历史文件并篡改日志。为了让坏人更难得逞:
- 了解 SELinux / GRsecurity 和 Linux 审计功能
- 设置一个集中式日志服务器,并让您的 syslog-daemon(我更喜欢 syslog-ng)将所有日志文件转发到那里。确保您的日志服务器位于严密的防火墙后面,只为传入连接打开日志端口(当尝试从另一台服务器连接时)。
- 考虑使用根什或者与之相当的东西。
答案4
您说您想记录每个“命令”。我假设您的意思是用户(无论是否合法用户)在 shell 中输入的每个命令。以下链接中有许多工具可以以或多或少安全的方式执行此操作:
- https://serverfault.com/questions/40011/how-can-i-log-users-bash-commands
- https://serverfault.com/questions/8851/live-view-of-linux-shell-commands-executed-by-another-user
- https://serverfault.com/questions/25595/bash-shell-session-logging-on-remote-host
注意:就像@Janne-Pikkarainen 所说的那样,如果您想要拥有真正安全的日志,您应该将您的日志文件发送到另一台机器。