APP下载

基于SSH的Linux系统远程登录研究

2016-08-16张倩莉乔治锡

计算机时代 2016年8期
关键词:口令密钥

张倩莉 乔治锡

摘 要: SSH是目前较为可靠,专门为远程登录会话和其他网络服务提供安全性的协议,利用SSH安全外壳协议可以有效防止远程管理过程中的信息泄露问题。通过对SSH远程登录技术的研究和实验,提出一种更安全可靠的服务器远程登录策略,为用户选用安全的远程登录方式提供参考依据。

关键词: SSH协议; 口令; 密钥; 远程登录

中图分类号:TP393.07 文献标志码:A 文章编号:1006-8228(2016)08-23-02

Abstract: SSH is currently a more reliable protocol, which provides security for the remote login session and other network services, the use of SSH security shell protocol can effectively prevent the information leakage in the remote management process. Through the research and experiment on the SSH remote login technology, a more secure and reliable server remote access policy is put forward, which provides a reference basis for the user to choose the safe remote login mode.

Key words: SSH protocol; password; key; remote login

0 引言

SSH是目前较为可靠,专门为远程登录会话和其他网络服务提供安全性的协议,利用SSH安全外壳协议可以有效防止远程管理过程中的信息泄露问题。网络早期,互联网都是明文通信,信息一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案。

1 基于口令的安全认证

用户输入账号和口令就可以登录到远程主机,所有传输的数据都会被加密。SSH远程登录的流程如下:

⑴ 双方协商SSH协议版本;

⑵ 远程主机收到用户的登录请求,生成公钥并将其发送给客户端;

⑶ 客户端使用该公钥,将登录密码加密后,发送给远程主机;

⑷ 远程主机用私钥解密登录密码,如果密码正确,就同意用户登录。

1.1 中间人攻击

上述过程本身是安全的,但是实施的时候也会存在风险。如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给客户端,那么客户端很难辨别真伪。比如在公共的wifi区域,攻击者冒充服务器用伪造的公钥发送给客户端,客户端就会将密码加密后发送给冒充的服务器,冒充的服务器便可以拿自己的私钥获取用户的登录密码了,然后再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。这种风险就是著名的“中间人攻击”(Man-in-the-middle attack)。

1.2 口令登录

为了避免上述风险,SSH在第一次登录远程主机的时候,会提示用户当前主机的“公钥指纹”,询问用户是否继续,选择继续后就可以输入密码进行登录,当远程的主机接受用户登录后,该台服务器的公钥就会保存到客户端的~/.ssh/known_hosts文件中。系统命令如下:

[root@ desktop15~]# ssh server15

The authenticity of host ' server15 (172.25.15.10)'

can't be established.

ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:

37:0c:78:2d:bc:b0:08.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ' server15,172.25.15.10'

(ECDSA) to the list of known hosts.

root@ server15's password:

Last login:Wed Jul 29 15:56:01 2015 from 172.25.15.2

ssh防止中间人攻击的测试如下:

[root@ desktop15 ~]# vim /etc/hosts #修改server15的IP地址

[root@ desktop15 ~]# ssh server15

@@@@@@@@@@@@@@@@@@@@@@@@@

@ WARNING:POSSIBLE DNS SPOOFING DETECTED! @

@@@@@@@@@@@@@@@@@@@@@@@@@

……

Host key verification failed.

远程登录并没有成功,原因是ssh连接的desktop15主机的IP地址与第一次连接成功生成的文件~/.ssh/known_hosts中存放的IP地址不一致。

2 基于密钥的安全认证

所谓“公钥登录”,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发送回远程主机。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许其登录shell,不再要求密码。因此,要实现密钥登录,必须先生成一对密钥,并把公用密匙放在需要访问的服务器上。

2.1 生成密钥

Linux中生成密钥的命令是ssh-keygen,操作如下:

[root@desktop15 ~]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

#此处如果输入密码,将对私钥设置口令

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

……

执行完成,~/.ssh/目录下会创建id_rsa、id_rsa.pub两个文件,这两文件就是生成的私钥和公钥。

2.2 传送密钥

将生成的密钥传送到远程主机上,操作如下:

[root@desktop15 ~]# ssh-copy-id c1@server15

……

c1@server15's password: #第一次登录需要输入密码

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'c1@server15'"

and check to make sure that only the key(s) you

wanted were added.

当再用c1用户登录远程主机时,就不需要输入密码了。这里不用root用户登录也是考虑到安全性,更好的办法是用普通用户进入系统后,在切换到root用户管理服务器,root用户的密码不用在网络上传输。

3 SSH安全登录远程主机策略

3.1 服务器安全设置

通过上述的登录方式,可以指定服务器只能由某一台主机的某个用户登录,并且禁止root用户账号远程登录。这样,可以将指定的某台主机作为“跳板”主机,通过密钥的方式登录到服务器上,而其他主机则不能通过ssh远程连接到服务器上了。服务器端的操作如下:

[root@server15 ~]# vim /etc/ssh/sshd_config

将如下两个参数设置为no:

PermitRootLogin no #禁止root用户ssh远程登录

PasswordAuthentication no #禁止用户输入密码

(禁止用户用口令登录)

[root@server15 ~]# systemctl restart sshd

3.2 验证

[root@desktop15 ~]# ssh root@server15

Permission denied(publickey,gssapi-keyex,gssapi-with-mic).

[root@desktop15 ~]# ssh student@server15

Permission denied(publickey,gssapi-keyex,gssapi-with-mic).

[root@desktop15 ~]# ssh -X c1@server15

Last login: Wed Jul 29 15:43:36 2015 from

desktop15.example.com

[c1@server15 ~]$ su root

Password:

[root@server15 c1]#

通过上述操作可以看出,root用户和其他普通用户都不能远程登录服务器了,只有c1用户能够登录进来,然后通过su命令将用户切换为root,管理服务器系统。

4 结束语

本文探讨了一种更安全的ssh远程登录服务器的方式,设定只能某台主机的某个用户能够远程登录到服务器。通常,可以将这台主机作为“跳板”主机,通过它和指定的用户来远程登录服务器。

参考文献(References):

[1] 张国防.基于SSH协议的Linux远程管理[J].计算机安全,2014.12:37-39

[2] 李珠峰.对SSH证书应用模式下的中间人攻击[J].计算机应用与软件,2013.11:313-315

[3] 曹江华.Red Hat Enterprise Linux 7.0系统管理[M].电子工业出版社,2015.

[4] 胡雯,李燕.基于Linux系统的远程控制技术研究[J].软件导刊,2013.12:152-154

[5] 陈明.基于OpenSSH实现安全传输的解决方案[J].计算机光盘软件与应用,2014.22:173-174

猜你喜欢

口令密钥
探索企业创新密钥
密码系统中密钥的状态与保护*
高矮胖瘦
口 令
TPM 2.0密钥迁移协议研究
一种对称密钥的密钥管理方法及系统
好玩的“反口令”游戏
基于ECC的智能家居密钥管理机制的实现
SNMP服务弱口令安全漏洞防范
健身气功·导引养生功十二法教学口令