用户
搜索

该用户从未签到

i春秋-脚本小子

Rank: 2

8

主题

8

帖子

165

魔法币
收听
0
粉丝
2
注册时间
2020-9-9
发表于 2021-9-14 21:22:46 02277
本帖最后由 xiehudie 于 2021-9-19 10:35 编辑

本篇文章作者邪色蝴蝶,本篇文章参与i春秋作家连载计划所属邪色蝴蝶个人,未经许可,禁止转载。

0X00:前言
各位表哥们,大家好,这是我连载的第八篇文章,有不足之处请大家多多指出。
本篇是写Linux-配置和保护SSH

0X01:使用SSH访问远程命令行
首先,我们需要了解一下什么是SSH,以及SSH有什么用处。
简单一点来说,SSH就是一种网络中的协议,用来加密计算机之间的登陆。在Linux中,SSH协议能使系统能够通过不安全的网络以加密和安全的方式进行通信。当然我们可以使用ssh命令来创建与远程系统的安全连接、以特定用户身份进行身份验证,并以该用户身份在远程系统上获取交互式shell会话。我们也可以使用ssh命令在远程系统上运行单个命令,而不运行交互式shell。下面将通过一些例子来说明SSH的安全性和重要性。

使用ssh登录远程系统需要我们输入该用户的密码来进行身份验证
QQ截图20210907204500.png

使用exit退出则不需要验证
QQ截图20210907204638.png

user01用户上使用用户名为user02的账户登录服务器则需要输入该用户的密码进行验证

QQ截图20210907205009.png

使用w命令可以显示当前登录到计算机的用户列表,可以显示出来哪些用户从哪些远程位置进行了登录以及执行了任何操作。

QQ截图20210912141313.png

如上面显示,use0r2用户在今天的16:13ip172.25.250.10的主机登录了伪终端0上的系统,并且在shell提示符下闲置了7分钟半。而user01用户登录了伪终端1上的系统,并且自执行了w命令后三秒一直处于闲置状态。


0X02SSH主机密匙
SSH通过公钥加密技术来保持通信安全。当某一SSH客户端连接到SSH服务器时,在该客户端登录之前,服务器会向其发送公钥副本。这可以用于设置通信渠道的安全加密,并可验证客户端的服务器。当用户使用ssh命令连接到SSH服务器时,该命令会检查它在本地已知主机文件中是否有该服务器的公钥副本,一般情况下,用户的主目录里面会有一个包含公钥的~/.ssh/known_hosts的文件。
如果客户端有公钥的副本,ssh就会将该服务器已知主机的公钥与它所收到的公钥进行比较。如果公钥不匹配,客户端会假定服务器的网络流量已遭劫持或服务器已被入侵,并且请求用户确认要继续连接。
如果客户端的已知主机文件中没有公钥的副本,ssh命令会询问我们是否仍要登录。如果仍进行登录,公钥的副本就会保存到我们的~/.ssh/known_hosts文件中,以便将来能自动确认服务器的身份。(如下图所示)
QQ截图20210912142853.png



如果由于硬盘驱动器故障而导致公钥丢失或由于某些正当理由而导致公钥被换,并由此更改了服务器的公钥,我们需要编辑已知的主机文件以确保旧公钥条目被替换成新公钥条目,从而确保登录时不会产生错误。
公钥存储在/etc/ssh/ssh_known_hostsSSH客户端上每个用户的~/.ssh/known_hosts文件中。每个公钥各占一行,第一个字段是共享该公钥的主机名和IP地址的列表,第二个字段是公钥的加密算法,最后一个字段是公钥本身。
QQ截图20210912143456.png


我们所连接的每个远程SSH服务器都将其公钥存储在/etc/ssh目录下拓展名为.pub的文件中。

QQ截图20210912143615.png

0X03:配置基于SSH密钥的身份验证
我们可以配置SSH服务器,以便能通过基于密钥的身份验证在不使用密码的情况下进行身份验证,这种身份验证基于私钥-公钥方案。
为此,我们需要生成加密密钥文件的一个匹配对,一个是私钥,另一个是匹配的公钥。私钥文件用作身份验证凭据,就像密码一样,必须妥善保管。公钥复制到用户希望连接到的系统,用于验证私钥,公钥并不需要保密。
首先,我们将公钥的副本放在服务器的账户上,在尝试登录时,SSH服务器可使用公钥发出一个只能用私钥正确解答的难题,然后我们的ssh客户可利用私钥的唯一副本自动验证我们的服务器登录,最后,我们就不必每次访问系统时以交互的方式输入密码,而安全性仍能得到保证。
要创建用于身份验证的私钥和匹配的公钥,我们可以用ssh-keygen命令。默认情况下,私钥和公钥分别保存在~/.ssh/id_rsa~/.ssh/id_rsa.oub文件中。

QQ截图20210912144617.png

如果我们未在ssh-keygen提示时指定密语,则生产的私钥不受保护,在这种情况下,任何拥有我们公钥文件的人都可以使用它进行身份验证。如果我们设置了密码,则在使用私钥进行身份验证时需要输入此密语。
我们在可以使用基于密钥的身份验证之前,需要将公钥复制到目标系统上,ssh-copy-id命令可将SSH密钥对的公钥复制到目标系统,如果在运行ssh-copy-id时省略了公钥文件的路径,它会使用默认的/home/user/.ssh/id_rsa.oub文件。

QQ截图20210912145431.png

将公钥成功传输到远程系统后,我们可以使用对应的私钥对远程系统进行身份验证,同时通过SSH登录远程系统。如果在运行ssh命令省略了私钥文件的路径,它会使用默认的/home/user/.ssh/id_rsa文件。
QQ截图20210912145616.png





QQ截图20210912145616.png
发新帖
您需要登录后才可以回帖 登录 | 立即注册