5 个最佳 OpenSSH 服务器最佳安全实践
SSH(Secure Shell)是一种开源网络协议,用于连接本地或远程 Linux 服务器,以便在通过网络的安全通道连接的两个服务器之间通过scp 命令或sftp 命令传输文件、进行远程备份、远程命令执行和其他与网络相关的任务。
在本文中,我将向您展示一些简单的工具和技巧,它们将帮助您加强ssh 服务器的安全性。在这里,您将找到一些有关如何保护 ssh 服务器并防止其遭受暴力和字典攻击的有用信息。
1. DenyHosts
DenyHosts是一个用于 SSH 服务器的开源基于日志的入侵防御安全脚本,它是用 Python 编程语言编写的,旨在由 Linux 系统管理员和用户运行,以监视和分析 SSH 服务器访问日志中存在的失败登录尝试(称为基于字典的攻击和暴力攻击)。
该脚本的工作原理是在一定次数的登录尝试失败后禁止IP地址,并防止此类攻击访问服务器。
DenyHosts 功能
- 跟踪/var/log/secure以查找所有成功和失败的登录尝试并过滤它们。
- 关注用户和违规主机的所有失败登录尝试。
- 当登录尝试失败时,持续监视每个现有和不存在的用户(例如xyz )。
- 通过在/etc/hosts.deny文件中添加条目来跟踪每个违规用户、主机和可疑的登录尝试(如果多次登录失败),禁止该主机IP地址。
- 可选择发送有关新阻止的主机和可疑登录的电子邮件通知。
- 还将所有有效和无效的失败用户登录尝试保存在单独的文件中,以便轻松识别哪些有效或无效用户受到攻击。这样,我们就可以删除该帐户或更改密码,或禁用该用户的 shell。
[ 你可能还喜欢:如何使用 DenyHosts 阻止 SSH 暴力攻击]
2.Fail2Ban
Fail2ban是最流行的开源入侵检测/预防框架之一,用Python编程语言编写。它通过扫描日志文件(例如/var/log/secure、/var/log/auth.log、/var/log/pwdfail等)来检测登录尝试失败次数。
Fail2ban 用于更新Netfilter/iptables或 TCP Wrapper 的hosts.deny文件,以在一定时间内拒绝攻击者的IP地址。它还能够在管理员设置的一段时间内解禁被阻止的 IP 地址。但是,一定时间的解禁足以阻止此类恶意攻击。
Fail2Ban功能
- 多线程且高度可配置。
- 支持日志文件轮换并能处理多种服务如(sshd、vsftpd、apache等)。
- 监视日志文件并寻找已知和未知的模式。
- 使用Netfilter/Iptables和TCP Wrapper(/etc/hosts.deny)表来禁止攻击者 IP。
- 当针对同一 IP 地址识别出给定模式超过X次时运行脚本。
[ 你可能还喜欢:如何使用 Fail2ban 保护你的 Linux 服务器]
3.禁用Root登录
默认情况下,Linux 系统已预先配置为允许所有人(包括root用户本身)进行 ssh 远程登录,这允许所有人直接登录系统并获得 root 访问权限。尽管 ssh 服务器允许以更安全的方式禁用或启用 root 登录,但禁用 root 访问权限始终是一个好主意,可以让服务器更安全一些。
许多人试图通过SSH 攻击来暴力破解 root 帐户,只需一个接一个地提供不同的帐户名和密码即可。如果您是系统管理员,您可以检查 ssh 服务器日志,您会在其中找到许多失败的登录尝试。大量登录尝试失败的主要原因是密码太弱,这对黑客/攻击者来说是有道理的。
如果您使用了强密码,那么您可能很安全,但是,最好禁用 root 登录并使用单独的常规帐户登录,然后在需要时使用sudo或su来获取 root 访问权限。
[您可能还喜欢:如何在 Linux 中禁用 SSH 根登录并限制 SSH 访问]
4.显示 SSH 横幅
这是ssh 项目开始时提供的最古老的功能之一,但我几乎没见过有人使用它。无论如何,我觉得这是一个重要且非常有用的功能,我已将其用于我的所有 Linux 服务器。
这不是出于任何安全目的,但此横幅的最大好处是它用于在密码提示之前和用户登录后向未经授权的访问显示 ssh警告消息,并向授权用户显示欢迎消息。
[ 你可能还喜欢:如何使用 SSH 和 MOTD 横幅消息保护 SSH 登录]
5. SSH 无密码登录
使用SSH密钥生成器进行 SSH无密码登录将在两个Linux 服务器之间建立信任关系,从而使文件传输和同步变得更加容易。
如果您处理远程自动备份、远程脚本执行、文件传输、远程脚本管理等而不需要每次都输入密码,这非常有用。
[ 你可能还喜欢:如何在 Linux 中设置 SSH 无密码登录 [3 个简单步骤] ]
为了进一步保护你的 SSH 服务器,请阅读我们的文章《如何保护和强化 OpenSSH 服务器》