我如何记录 SSH 访问尝试并跟踪 SSH 用户最终在我的服务器上执行的操作?

我如何记录 SSH 访问尝试并跟踪 SSH 用户最终在我的服务器上执行的操作?

我的服务器出现了一些安全问题,因为一些 SSH 用户造成了问题。

因此我想:

  • 跟踪用户登录和注销
  • 跟踪这些 SSH 用户的活动,以便发现任何恶意活动
  • 防止用户删除日志

答案1

ssh 守护进程sshd已内置并启用了其中的大部分功能。以下是/var/log/secure我机器上的一些示例行(名称和 IP 地址已更改):

Sep  7 08:34:25 myhost sshd[6127]: Failed password for illegal user root from 62.75.999.999 port 52663 ssh2
Sep  7 08:34:26 myhost sshd[7253]: User root not allowed because listed in DenyUsers
Sep  7 08:34:28 myhost sshd[7253]: Failed password for illegal user root from 62.75.999.999 port 53393 ssh2
Sep  7 11:55:18 myhost sshd[11672]: Accepted password for gooduser from 98.999.26.41 port 43104 ssh2
Sep  7 23:01:28 myhost sshd[22438]: Did not receive identification string from 999.56.32.999
Sep  8 06:31:30 myhost sshd[21814]: Accepted password for gooduser from 98.999.26.41 port 5978 ssh2

此示例显示某人以 root 身份通过 ssh 进入此计算机的几次尝试 - 两次尝试均被拒绝,因为 root 被禁止。它还显示了名为“gooduser”的用户成功登录。

进行微调什么你会看到哪个文件,详情请阅读sshd_配置手册页——特别是 LogLevel 和 SyslogFacility 的选项。

答案2

按照 Doug Harris 的回答(并且只回答了您问题的一部分 - 这似乎是我的工作方式),Logwatch 包将通过电子邮件向您发送大量服务器日志(包括 SSHd 日志)的每日摘要。我会收到一份摘要,其中列出了哪些人通过 SSH 成功登录、登录了多少次、从哪里登录,以及哪些 IP 尝试登录失败以及他们使用了哪些凭据。如果有人试图对我允许密码验证的主机进行暴力 SSH 攻击,那么这个过程会很长(我尽量避免这种情况,而是使用 RSA 密钥,但客户永远是对的,他们并不总是理解公钥验证。无论如何。)

要在 Ubuntu 上安装 Logwatch(它基本上只是一组用于消化各种日志格式的 Perl 过滤器),请使用apt-get install logwatch,然后编辑/etc/cron.daily/00logwatch,将 替换--output mail为。您每天会收到一个。您可以添加更多标志来调整 Logwatch 实际读取的日志。--mailto [email protected]

答案3

跟踪用户的一个非常完整的方法是使用审计。这是内核级的跟踪审计所需内容的方法。它应该与 Ubuntu Server 捆绑在一起,如果尚未运行,则应该可以使用 启动sudo service auditd start

有很多配置示例/usr/share/doc/auditd/或类似的东西,当然如果你用 Google 搜索 auditd tutorial,你会得到很多很多的教程。

auditd 生成的报告存储在/var/日志/审计/目录。它们还可以使用以下工具解析为更易于阅读的形式:奥雷波特澳搜,也应该已经与 Ubuntu Server 捆绑在一起。

答案4

我不会泄露 ssh 帐户,尤其是对于发行版组类型的人。

这里有几件事:

bash 中历史文件可以统一吗?

Insert the command shopt -s histappend in your .bashrc. 
This will append to the history file instead of overwriting it.
Also in your .bashrc, insert

PROMPT_COMMAND="$PROMPT_COMMAND;history -a; history -n"

and the history file will be re-written and re-read each time
bash shows the prompt.

相关内容