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

Rad*_*Hex 30 server ssh security

我的服务器遇到了一些安全问题,一些 SSH 用户一直在设置火灾,也就是出现问题。

我想要:

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

我不是一个系统管理员,我在这方面经验不足,所以任何类型的建议都会非常受欢迎并且非常有帮助。:)

Jav*_*era 28

既然我们在谈论 SSH 服务器,我会给你命令行解决方案。

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

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

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

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


Nli*_*tis 6

[免责声明]我知道我迟到了,但我想粘贴我在另一个问题上的答案,因为我觉得它可以为读者提供一些很好的见解,而这个问题似乎是首选基本 ssh 信息的地方。

在 AskUbuntu 上阅读了这个问题并检查了我的 VPS 后,有一个类似的问题让我震惊,结果却看到了无数的蛮力尝试。那是我决定采取行动的时候。

现在根据我链接到的问题,如果您想通过 ssh 在您的机器上看到失败的登录尝试(可能是蛮力尝试或任何东西),请尝试输入:

grep sshd.\*Failed /var/log/auth.log | less
Run Code Online (Sandbox Code Playgroud)

如果输出包含多行,即多次蛮力尝试,尤其是在很短的间隔之间发生的情况下,您可能需要执行以下操作:

更改 ssh 配置文件

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

1. 尝试从端口 22 移动 ssh:现在找到以下行:

# What ports, IPs and protocols we listen for
Port 22
Run Code Online (Sandbox Code Playgroud)

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

# What ports, IPs and protocols we listen for
# Port 22
Port 28934
Run Code Online (Sandbox Code Playgroud)

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

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

PermitRootLogin no
Run Code Online (Sandbox Code Playgroud)

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

PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)

!警告!在此之前,请参阅此处的本指南,了解如何设置证书身份验证。

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

设置防火墙

请查看本指南,了解如何设置集成到 Linux IPTables 中的极其强大和有效的防火墙。

设置脚本以帮助您确保安全

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

通过 ssh 检查命令历史记录

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

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

列出SSH毕竟命令fc -l ssh

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

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

注意:如果您不喜欢该命令,history那么您的主目录 ( cd ~) 中还有一个名为.bash_history 的文件(如果您使用的是 bash),您可以cat通过它查看在 bash shell 中输入的所有内容。