it-swarm.cn

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

我的服务器有一些安全问题,一些SSH用户已经设置火灾,也就是提出问题。

我想要:

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

我不是一个系统管理员,我对这个问题很缺乏经验,所以任何建议都会非常受欢迎,非常有帮助。 :)

28
RadiantHex

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

  • 跟踪用户登录和注销。这很简单,文件/var/log/auth.log应该有这个信息。

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

  • 阻止用户删除日志:用户不应该触摸auth.log。为了阻止他们玩.bash_history你需要做几个 技巧

  • 如果用户设法获得root访问权限怎么办? : 你完蛋了。除非他们犯了错误,否则他们将能够隐藏所有的脚步声。

27
Javier Rivera

[免责声明]我发现我迟到了,但我想粘贴一个我给的答案 对另一个问题 =,因为我觉得它可以为读者提供一些好的见解,这个问题似乎是基本ssh信息的首选。

阅读之后有一个类似的问题让我印象深刻 这个 在AskUbuntu上问这个问题并查看我的VPS,只看到了数以万计的蛮力企图。那是我决定采取行动的时候。

现在根据我链接的问题,如果您希望通过ssh看到您的计算机上的登录尝试失败(可能是强力尝试或任何事情),请尝试键入:

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

如果输出包含多行,那就是许多强力尝试,特别是如果它们发生在短时间间隔内,您可能需要执行以下操作:

更改ssh配置文件

要执行此操作,请使用您喜欢的编辑器打开位于/ etc/ssh/sshd_config的文件,例如vim /etc/ssh/sshd_config

1。尝试从端口22移动ssh:现在找到读取的行:

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

并注释掉22号港口,并使用你可能喜欢的任何人。例:

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

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

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

PermitRootLogin no

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

PasswordAuthentication no

!警告!在此之前,请参考本指南 在这里 关于如何设置证书身份验证。

注意:完成更改后,使用Sudo /etc/init.d/ssh restart。要通过ssh连接到另一个端口,请使用:ssh [email protected] -p <port_number>

设置防火墙

请查看 本指南 关于如何设置极其强大有效的防火墙,它集成到Linux,IPTables

设置脚本以帮助您获得安全性

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

通过ssh检查命令历史记录

有一个名为history的linux命令,它允许您查看在此之前已输入的命令。尝试在终端中键入history以查看到该点为止的所有命令。如果你是root,它会有所帮助。

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

To列出ssh​​之后的所有命令fc -l ssh

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

你也可以删除历史history -c

注意:如果你不是命令history的粉丝,你的主目录(cd ~)中也有一个文件,叫做。bash_history(如果你正在使用bash)你可以cat来查看在bash Shell中输入的所有内容。

6
NlightNFotis

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

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

4
Kees Cook
  1. 哈维尔已经回答了这个问题:/var/log/auth.log
  2. 我找到了一篇关于这个的好文章 这里
  3. 如果您的用户无权访问root,那么您的日志文件应该是安全的。您可以尝试在sudoers文件中构建一些自定义规则,以限制用户可以访问的内容以及方式。您还可以增加sshd守护程序的日志级别。
3
Radu Cotescu

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

相反,你应该保守提供ssh访问,他们真的需要吗?除非您在壳牌提供业务,否则授予ssh访问权限并不常见。

3
João Pinto