更改 ssh 配置文件

更改 ssh 配置文件

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

我想:

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

我不是一名系统管理员,而且在这方面也缺乏经验,所以任何建议都会受到欢迎,并且非常有帮助。:)

答案1

因为我们正在讨论 SSH 服务器,所以我将为您提供命令行解决方案。

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

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

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

  • 如果用户成功获得 root 访问权限怎么办?:你就完蛋了。除非他们犯了错误,否则他们将能够隐藏所有行踪。

答案2

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

读完这篇文章后,我突然想到了一个类似的问题我在 AskUbuntu 上提问并检查我的 VPS,结果发现有无数次暴力破解尝试。就在那时,我决定采取行动。

现在根据我链接的问题,如果您想查看通过 ssh 在您的机器上登录失败的尝试(可能是暴力破解尝试或其他什么),请尝试输入以下内容:

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

如果输出包含多行,即存在多次暴力破解尝试,尤其是如果它们发生在短时间间隔内,您可能需要执行以下操作:

更改 ssh 配置文件

为此,请打开位于的文件/etc/ssh/sshd_config使用你最喜欢的编辑器,就像这样vim /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 以下的端口需要特殊(root)权限。我不知道这会有什么干扰,但我只是说说而已。

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

PermitRootLogin no

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

PasswordAuthentication no

!警告!在执行此操作之前,请查阅本指南在这里关于如何设置证书认证。

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

设置防火墙

请查看本指南关于如何设置 Linux 中集成的极其强大和有效的防火墙,IP表

设置脚本来帮助你保证安全

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

通过 ssh 检查命令历史记录

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

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

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

你也可以使用 vi 编辑命令(还没有尝试过 vim,不过我认为它也能很好地工作):fc -e vi

你也可以删除历史记录history -c

笔记:如果你不喜欢这个命令,那么在你的主目录 ( )history中还有一个名为cd ~.bash_history(如果您使用 bash)您可以cat看到在 bash shell 中输入的所有内容。

答案3

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

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

答案4

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

相反,您应该谨慎提供 ssh 访问权限,他们真的需要它吗?除非您是提供业务的 shell,否则授予 ssh 访问权限并不常见。

相关内容