Openssh 安全最佳实践
安全外壳协议或 SSH 是一种加密的网络协议,在 OSI 模型的第 7 层运行,允许远程登录和其他网络服务通过不安全的网络安全地运行。
OpenSSH 是使用 SSH 协议进行远程登录的主要连接工具。它加密所有流量以消除窃听、连接劫持和其他攻击。此外,OpenSSH 还提供大量安全隧道功能、多种身份验证方法和复杂的配置选项。本文介绍了保护您的 SSH 服务器设置的重要任务。
使用强密码
密码是由字符组成的字符串,人们可以使用它来登录并访问文件、程序和其他资源。密码有助于确保只有获得授权的人才能访问服务器。密码可以由字母、数字、符号和空格组成。它应该易于记忆且对您来说是唯一的,但对其他人来说不容易猜测。不要使用 `admin123` 或 `admin` 等。
更改 SSH 默认端口
SSH 管理的默认端口是 22,您应该更改它,使其更难以察觉您的服务器正在运行 SSH 管理。SSH 配置文件位于 /etc/sshd/ 目录中,您必须编辑配置文件 /etc/ssh/sshd_config。要编辑 sshd_config 文件,请使用以下命令:
$ nano /etc/ssh/sshd_config
搜索“Port”行,命令行应如下所示:
Port 22
将其更改为您喜欢的端口号,例如,我们使用端口号 1337,如下所示:
Port 1337
请选择尚未在服务器上使用的端口。要获取当前正在使用的端口列表,请使用以下命令:
$ netstat -ntap
始终使用 protocol2
SSH 有两个协议版本,旧的协议 1 不安全,新的协议 2 安全。因此,我们应该始终使用 protocol2,因为它具有强大的密码完整性检查。
禁用 root 登录
您应该禁用 root 用户的直接登录,因为针对 root 超级用户的名称有很多暴力攻击。或者,用户应该从命令行登录 root 用户。要禁用 root 登录,请在 ** /etc/ssh/sshd_config ** 文件中使用以下行。
PermitRootLogin no
限制用户
您应该添加一个新用户以登录您的服务器。假设您已创建用户 tutorialspoint 和 linux 以登录您的服务器,那么您可以在 ** /etc/ssh/sshd_config ** 文件中添加新行。
AllowUsers ruiko mikoto
使用基于密钥的身份验证
我们强烈推荐此选项来保护 openSSH,而不是使用基于密码的身份验证。首先,您必须在本地计算机上创建一个公钥-私钥对,如下所示:
$ssh-keygen -t rsa -b 4096
示例输出应如下所示:
Generating public/private rsa key pair. Enter file in which to save the key (/home/linux/.ssh/id_rsa): Created directory '/home/linux/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/linux/.ssh/id_rsa. Your public key has been saved in /home/linux/.ssh/id_rsa.pub. The key fingerprint is: 4a:a1:22:b4:e8:79:12:19:1e:a0:30:ee:93:db:cd:a1 linux@linux The key's randomart image is: +--[ RSA 4096]----+ |+ | |=. | |.= . | |= * . . | |oO. ... S | |..*.+... | | = E o. | | o | | | +-----------------+
它将在 ~/.ssh/ 目录中创建 2 个文件,**id_rsa** 作为私钥,**id_rsa.pub** 作为公钥。如果提示输入密码,您可以将其留空或键入您的密码。建议使用密码保护您的密钥。现在使用 **ssh-copy-id** 命令将公钥 **id_rsa.pub** 上传到您的服务器,如下所示:
$ssh-copy-id -i ~/.ssh/id_rsa.pub user@serverip
它将您的公钥写入服务器中的 ~/.ssh/authorized_keys/ 文件。现在打开 ** /etc/ssh/sshd_config ** 文件并取消注释以下行。
AuthorizedKeysFile %h/.ssh/authorized_keys
现在使用以下命令重新启动您的 ssh 服务器:
$sudo systemctl restart sshd
最后,使用以下命令连接到您的服务器:
$ssh -p '4422' 'user@serverIP'
恭喜!现在,您了解了“OpenSSH 安全最佳实践”。我们将在下一篇文章中学习更多关于这些命令类型的知识。继续关注!