当前位置: 首页>>技术教程>>正文


如何审核用户并访问服务器上的SSH尝试?

, ,

问题描述

我的服务器遇到了一些安全性问题,一些SSH用户一直在设置火种,也给他们带来了问题。

我想要:

  • 跟踪用户登录和注销

  • 跟踪这些SSH的活动,以发现任何恶意活动

  • 防止用户删除日志


我不是系统管理员,我对此事没有经验,所以任何建议都将非常受欢迎并且非常有帮助。 🙂

最佳办法

由于我们在谈论SSH服务器,因此我将为您提供命令行解决方案。

  • 跟踪用户登录和注销。这很容易,文件/var/log/auth.log应该具有此信息。

  • 跟踪这些用户的活动:如果他们非常纯洁,则可以在其主目录中检查文件.bash_history。您将看到它们执行的命令的列表。问题当然是他们可以删除或编辑此文件。

  • 防止用户删除日志:用户不应触摸auth.log。为了阻止它们与.bash_history一起玩,您需要执行几个tricks

  • 如果用户设法获得root访问权限怎么办? : 你完蛋了。除非他们犯错,否则他们将能够掩盖其所有足迹。

次佳办法

[免责声明]我知道我参加晚会很晚,但是我想粘贴一个我给to another question的答案,因为我觉得它可以为读者提供一些很好的见识,而且这个问题似乎是基本ssh的go-to地方信息。

在AskUbuntu上阅读this问题并检查我的VPS之后,遇到了类似的问题,结果却看到无数次蛮力尝试。那是我决定采取行动的时候。

现在根据我链接到的问题,如果您希望通过ssh在计算机上尝试登录失败(可能是蛮力尝试或其他尝试),请尝试输入以下命令:

grep sshd.\*Failed /var/log/auth.log | less

如果输出由多行组成,那就是多次蛮力尝试,特别是如果它们发生在较短的时间间隔之间,那么您可能需要执行以下操作:

更改ssh配置文件

为此,请使用您喜欢的编辑器(如vim /etc/ssh/sshd_config)打开位于/etc /ssh /sshd_config的文件。

1.尝试将ssh从端口22中移出:现在,找到以下行:

# What ports, IPs and protocols we listen for
Port 22

并注释掉端口22,并使用任何您喜欢的人。例:

# What ports, IPs and protocols we listen for
# Port 22
Port 28934

请记住,低于1024的端口需要特殊(根)权限。我不知道这会如何干扰它,但我只是说。

2.禁用通过ssh的root登录:由于root用户名是可预测的并且可以提供对系统的完全访问权限,因此通过SSH提供对该帐户的不受限制的访问是不明智的。找到读PermitRootLogin的行并将其设置为no。

PermitRootLogin no

3.禁用密码身份验证:生成并使用SSH密钥登录系统。如果未启用密码,攻击者将需要猜测(或窃取)您的SSH私钥才能访问您的服务器。这是非常非常困难的事情。继续查找读取PasswordAuthentication的行并将其设置为no

PasswordAuthentication no

!警告!在执行此操作之前,请参阅本指南over here,以了解如何设置证书身份验证。

注意:进行更改后,请使用sudo /etc/init.d/ssh restart。要通过ssh连接到另一个端口,请使用:ssh username@hostname.com -p <port_number>

设置防火墙

请查看this guide,了解如何设置功能强大且有效的防火墙,该防火墙已集成到Linux IPTables中。

设置脚本可帮助您提高安全性

我个人很快想到的一个就是Fail2Ban。 Fail2ban将监视您的日志文件以查找失败的登录尝试。 IP地址超过最大身份验证尝试次数后,它将在网络级别被阻止,并且该事件将记录在/var/log/fail2ban.log中。要安装它:sudo apt-get install fail2ban

通过SSH检查命令历史记录

有一个名为history的linux命令,它使您可以查看到那时为止已经输入了哪些命令。尝试在终端中键入history,以查看到目前为止的所有命令。如果您是root,这可能会有所帮助。

要搜索特定命令,请尝试:history | grep command-name

要在ssh之后列出所有命令:fc -l ssh

您也可以使用vi编辑命令(虽然我认为vim也可以运行,但没有尝试过vim):fc -e vi

您还可以删除历史记录:history -c

注意:如果您不是命令history的粉丝,则您的主目录(cd ~)中还有一个文件名为.bash_history(如果您使用的是bash),则可以cat查看在bash shell中键入的所有文件。 。

第三种办法

有点矫kill过正,但是您可以使用“进程事件连接器”查看系统上运行的所有内容:

http://www.outflux.net/blog/archives/2010/07/01/reporting-all-execs/

第四种办法

  1. 哈维尔已经回答了这个问题:/var/log/auth.log

  2. 我找到了有关here的精彩文章。

  3. 如果您的用户无权访问root,那么您的日志文件应该是安全的。您可以尝试在sudoers文件中构建一些自定义规则,以限制用户可以访问的内容以及访问方式。您也可以增加sshd守护程序的日志级别。

第五种办法

除了登录本身之外,假设他们具有Linux的基本知识,他们将能够禁用Shell日志记录或仅运行来自其他Shell(例如python)的命令,就没有安全的方法来跟踪/记录用户登录后的操作。

相反,您应该在提供ssh访问时保持保守,他们真的需要它吗?除非您在提供业务的Shell上,否则授予ssh访问权限不是很常见。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9984.html,未经允许,请勿转载。