SSH(Secure Shell)是一种加密网络协议,用于以安全的方式在远程计算机上启动基于文本的shell会话。
OpenSSH是大多数Linux发行版使用的标准SSH客户端和服务器。 它是大多数管理员依赖于在其Linux和* BSD服务器上工作的连接工具。 OpenSSH加密所有流量(包括密码),以有效地消除窃听,连接劫持和其他攻击。 所以换句话说,“OpenSSH确保与您的服务器的连接是安全的”。 有关SSH的详细信息,请参阅维基百科文章。
本教程介绍了安全地配置SSH服务器的最佳做法。
OpenSSH安全
这些是确保您的SSH服务器设置的六个最重要的任务:
- 使用强密码
- 更改SSH默认端口。
- 始终使用协议版本2。
- 禁用根登录。
- 限制用户访问。
- 使用基于密钥的身份验证。
使用强密码
密码是用于用户身份验证的字符或字符串,用于证明身份或访问批准以访问资源。 保持秘密,不允许访问服务器。 使用复杂和长密码 , 应该很容易记住和独特的根据你,但不容易猜到他人 。 不要使用容易猜测,不使用生日,你妻子的名字的“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
请选择您的服务器上尚未使用的端口。 您可以使用命令获取当前正在使用的端口列表:
netstat -ntap
此命令导致显示所有打开的端口和连接的相当长的列表。 如果您只想检查您所需的端口是否可用,请改用以下命令:
netstat -ntap | grep 4422
在这个例子中,我将检查端口4422是否可用。 如果命令没有返回结果,那么该端口可用,可以用于SSH。
始终使用协议2
SSH有两个协议版本,旧的协议1是不安全的,新的协议2.所以始终使用协议2为您的ssh服务器,它比协议1更安全。
禁用root登录
您应该禁用root
用户的直接登录,因为对root超级
用户的名称有很多强力攻击。 重要信息:在禁用root帐户之前,请使用您计划用于ssh登录名的备用非root用户测试SSH登录名。
PermitRootLogin no
将“PermitRootLogin”设置为“否”后,您无法使用root用户登录,尽管您对root
用户使用了正确的密码。
限制用户
您应该添加一个新用户登录到您的服务器。 假设您已经创建了用户ruiko
和mikoto
登录到您的服务器,那么您可以添加新行:
AllowUsers ruiko mikoto
在/ etc / ssh / sshd_config中限制对这些用户的SSH访问。
使用基于密钥的身份验证
我建议您使用此选项,因为这是非常容易设置和比基于密码的身份验证更安全。 首先,您必须在本地(桌面)计算机上创建公钥 - 私钥对,我使用Linux创建它。
您可以使用此命令创建公钥/私钥对:
ssh-keygen -t rsa -b 4096
它将创建位于〜/ .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 /
文件。
现在回到你的服务器,再次编辑你的ssh文件配置。
nano /etc/ssh/sshd_config
取消注释这一行:
AuthorizedKeysFile %h/.ssh/authorized_keys
最后重新启动你的ssh服务器:
systemctl restart sshd
现在尝试连接到您的服务器:
ssh -p '4422' 'user@serverIP'
结论
OpenSSH是用于安全远程访问* Unix的服务器的标准,替代未加密的telnet协议。 SSH(及其文件传输子协议SCP)确保从本地计算机到服务器的连接是加密和安全的。 OpenSSH的基础安装已经很安全了,但是我们可以通过以上指导来改进它。