OpenSSH安全最佳实践

SSH(安全Shell)是一种加密网络协议,用于以安全的方式在远程机器上启动基于文本的shell会话。 OpenSSH是一个连接...

SSH(Secure Shell)是一种加密网络协议,用于以安全的方式在远程计算机上启动基于文本的shell会话。

OpenSSH是大多数Linux发行版使用的标准SSH客户端和服务器。 它是大多数管理员依赖于在其Linux和* BSD服务器上工作的连接工具。 OpenSSH加密所有流量(包括密码),以有效地消除窃听,连接劫持和其他攻击。 所以换句话说,“OpenSSH确保与您的服务器的连接是安全的”。 有关SSH的详细信息,请参阅维基百科文章。

本教程介绍了安全地配置SSH服务器的最佳做法。

OpenSSH安全

这些是确保您的SSH服务器设置的六个最重要的任务:

  1. 使用强密码
  2. 更改SSH默认端口。
  3. 始终使用协议版本2。
  4. 禁用根登录。
  5. 限制用户访问。
  6. 使用基于密钥的身份验证。

使用强密码

密码是用于用户身份验证的字符或字符串,用于证明身份或访问批准以访问资源。 保持秘密,不允许访问服务器。 使用复杂和长密码应该很容易记住和独特的根据你,但不容易猜到他人 。 不要使用容易猜测,不使用生日,你妻子的名字的“admin123”或“admin”等。一个好的密码也应该包含特殊的字符,如'!!/'(不只是字符ac和0-9)。 在密码中使用大写和小写字符。

更改SSH默认端口

SSH服务的默认Post为22,您应该更改它,使您的服务器运行SSH服务不太明显。 SSH配置文件位于/ etc / sshd /目录中,您必须编辑配置文件/ etc / ssh / sshd_config

nano /etc/ssh/sshd_config

搜索“端口”行:

Port 22

并将其更改为您最喜欢的端口号,例如:1337

Port 1337

SSH Port Default

请选择您的服务器上尚未使用的端口。 您可以使用命令获取当前正在使用的端口列表:

netstat -ntap

此命令导致显示所有打开的端口和连接的相当长的列表。 如果您只想检查您所需的端口是否可用,请改用以下命令:

netstat -ntap | grep 4422

在这个例子中,我将检查端口4422是否可用。 如果命令没有返回结果,那么该端口可用,可以用于SSH。

始终使用协议2

SSH有两个协议版本,旧的协议1是不安全的,新的协议2.所以始终使用协议2为您的ssh服务器,它比协议1更安全。

Protocol 2 SSH

禁用root登录

您应该禁用root用户的直接登录,因为对root超级用户的名称有很多强力攻击。 重要信息:在禁用root帐户之前,请使用您计划用于ssh登录名的备用非root用户测试SSH登录名。

PermitRootLogin no

Disable root login

将“PermitRootLogin”设置为“否”后,您无法使用root用户登录,尽管您对root用户使用了正确的密码。

限制用户

您应该添加一个新用户登录到您的服务器。 假设您已经创建了用户ruikomikoto登录到您的服务器,那么您可以添加新行:

AllowUsers ruiko mikoto

Limit User

在/ etc / ssh / sshd_config中限制对这些用户的SSH访问。

使用基于密钥的身份验证

我建议您使用此选项,因为这是非常容易设置和比基于密码的身份验证更安全。 首先,您必须在本地(桌面)计算机上创建公钥 - 私钥对,我使用Linux创建它。

您可以使用此命令创建公钥/私钥对:

ssh-keygen -t rsa -b 4096

它将创建位于〜/ .ssh /目录中的2个文件,作为私钥的 id_rsa和作为公钥的 id_rsa.pub。 如果提示输入密码 ,可以将其留空,或输入密码。 建议使用密码来保护您的密钥。

Generate Key SSH

现在使用ssh-copy-id命令公钥id_rsa.pub上传到您的服务器。

ssh-copy-id -i ~/.ssh/id_rsa.pub user@serverip

它将自动将您的公钥写入服务器中的〜/ .ssh / authorized_keys /文件。

现在回到你的服务器,再次编辑你的ssh文件配置。

nano /etc/ssh/sshd_config

取消注释这一行:

AuthorizedKeysFile     %h/.ssh/authorized_keys

Add Public Key

最后重新启动你的ssh服务器:

systemctl restart sshd

现在尝试连接到您的服务器:

ssh -p '4422' 'user@serverIP'

结论

OpenSSH是用于安全远程访问* Unix的服务器的标准,替代未加密的telnet协议。 SSH(及其文件传输子协议SCP)确保从本地计算机到服务器的连接是加密和安全的。 OpenSSH的基础安装已经很安全了,但是我们可以通过以上指导来改进它。