IT狗工作室渗透Linux学习|Gentoo/Arch/FreeBSD

第5篇:Linux网络安全 SSH加固

2020-02-24  本文已影响0人  铁甲万能狗

SSH协议是一种将一台服务器远程登录到另一台服务器的安全方法。 它提供了多种用于进行强身份验证的选项,并通过强加密来保护通信安全性和完整性。 它是其他协议(例如telnet和文件传输协议FTP)的安全替代。

更改默认端口

22端口是一个总所周知的标准ssh端口,因此ssh服务就不能使用该端口,而是使用一个最起码大于1024之后的一个随机端口。

Port 7193

仅使用2代的SSH协议

较早的协议SSH 1包含许多安全漏洞。 因此您应该使用SSH 2而不是SSH1。默认情况下,SSH 2应该设置为2。 如果没有,您可以使用

禁止root的ssh登录

允许直接root登录是您可能遇到的最危险的安全漏洞之一。 不允许任何服务器通过SSH定向root登录。要禁用直接root登录,请将PermitRootLogin从yes更改为no

使用公匙认证代替密码认证

公钥/私钥身份验证肯定比密码身份验证更安全,并且是更好的解决方案。每个键都是具有不同数学属性的大量键。私钥存储在您登录的计算机上,而公钥存储在您要登录的每台计算机上的.ssh / authorized_keys文件中。

如果计算机在Internet上可见,这尤其重要。使用加密密钥进行身份验证非常有用,因为您无需再输入密码。一旦在服务器上配置了公钥/私钥对身份验证,就可以完全禁用密码身份验证;这意味着没有授权密钥的任何人都无法获得访问权限。即使是最有创造力的黑客也将无法干预或潜入会话,也不会再尝试破解密码。关联的公钥可以自由共享,没有任何负面后果。公钥可用于加密只有私钥才能解密的消息。此属性用作使用密钥对进行身份验证的一种方式。

公钥已上载到您希望能够使用SSH登录的远程服务器。 密钥已添加到您要登录的用户帐户内的特殊文件中,称为〜/ .ssh / authorized_keys。

当客户端尝试使用SSH密钥进行身份验证时,服务器可以测试客户端是否拥有私钥。如果客户端可以证明它拥有私钥,则会生成一个shell会话或执行所请求的命令。

创建ssh密钥

向服务器配置SSH密钥身份验证的第一步是在本地计算机上生成SSH密钥对。为此,我们可以使用一个名为ssh-keygen的特殊实用程序,它包含在标准的OpenSSH工具套件中。默认情况下,这将创建2048位RSA密钥对,这适用于大多数用途。

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):

该实用程序将提示您选择将要生成的密钥的位置。 默认情况下,密钥将存储在用户主目录下的〜/ .ssh目录中。 私钥将称为id_rsa,关联的公钥将称为id_rsa.pub。

通常,最好在此阶段坚持使用默认位置。 这样做将允许您的SSH客户端在尝试进行身份验证时自动找到您的SSH密钥。 如果要选择非标准路径,请立即输入,否则,请按Enter以接受默认路径。

接下来,系统将提示您输入密钥的密码。 这是一个可选的密码,可用于加密磁盘上的私钥文件。您可能想知道,如果仍然需要输入密码,SSH密钥会提供什么优势。 一些优点是:

由于私钥永远不会向网络公开,并通过文件权限进行保护,因此除了您(和root用户)之外,任何人都不应该访问此文件。密码短语用作额外的保护层,以防这些条件受到危害。密码短语是可选添加的。如果输入一个密钥,则每次使用此密钥时都必须提供该密钥(除非您运行的是存储解密密钥的SSH代理软件)。我们建议使用密码短语,但如果您不想设置密码短语,只需按Enter键即可跳过此提示。

Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Qhg5X9GeuihfgjlrjgoirjgergeeerrEDJTGWQ0ouEPIss username@localh
The key's randomart image is:
+---[RSA 3072]----+
|    .=o+.*o oo.. |
|    =++ B .+ o. .|
|    .+.* .+ + o+ |
|     .o .= o o .=|
|      . S o o o B|
|       .   o o *.|
|        . . +   .|
|       . o . o   |
|        E     .  |
+----[SHA256]-----+

现在,您拥有了可用于身份验证的公钥和私钥。下一步是将公钥放在您本地计算机上,以便您可以使用SSH密钥身份验证进行登录。我们可以使用如下命令查看

[username@localhost ~]$ ls -al ~/.ssh
total 12
drwx------. 2 username username   57 Feb 24 08:24 .
drwx------. 3 username username   95 Feb 24 06:51 ..
-rw-------. 1 username username 2675 Feb 24 08:24 id_rsa
-rw-r--r--. 1 username username  582 Feb 24 08:24 id_rsa.pub
-rw-r--r--. 1 username username  183 Feb 24 06:23 known_hosts

将公匙上传到远程的Linux/Unix主机

可以使用如下命令

ssh-copy-id <用户名>@<你远程的主机ip或域名>

如果你之前创建的私匙没有设定密码短语的话,可以使用无密码登录

ssh -p <端口号> <用户名>@<你远程的主机ip或域名>

此时,我们不妨查看一些远程Linux/Unix主机

[yening@localhost ~]$ ls -al ~/.ssh
总用量 8
drwx------. 2 user user48 2月  24 09:43 .
drwx------. 3 user user  95 2月  24 06:51 ..
-rw-------. 1 user user 399 2月  24 09:14 authorized_keys
-rw-r--r--. 1 user user 183 2月  24 06:23 known_hosts

稍微细心的Linux用户应该对远程主机~/.ssh进行更细化的权限设定,这个设定是公匙只能被当前ssh登录的用户只读。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

authorized_keys就是我们刚才上传到远程主机的公匙

禁用密码验证

PasswordAuthentication no
上一篇 下一篇

猜你喜欢

热点阅读