现在
,安全外壳协议几乎已经完全成为进行远程登录操作时的必备选择
。对于很多管理员来说
,使用它已经属于默认的要求
。但问题的关键是,情况也并不是象大家想象的那么肯定,
安全外壳协议提供的安全性也需要进行设置增加效果。现在,有很多种方法可以将安全措施提升到更高的级别,但哪些是最容易部署,安全性最高的呢?下面,就让我们来了解认识一下。
基于ssh的密钥认证
不论用户怎样降低使用频度,但只要还是使用密码登录的话,就可能出现被破解的情况。这是一个永远存在的安全
漏洞。但是,通过使用基于ssh的密钥认证,问题就可以获得解决。只要设定一个密钥,然后将密钥复制到指定机器上,就可以完成设置,下面给出的就是具体实施步骤(请注意:这些步骤针对的是基于Ubuntu的客户机和
服务器):
本地系统
打开一个终端窗口并输入命令ssh-keygen -t dsa。该命令将生成一个公钥,接下来要做的就是利用ssh-copy-id -i ~/.ssh/id_dsa.pub 用户名@目标地址命令将其复制到
服务器上,在这里,用户名指的是远程计算机上实际使用的用户名,目标地址指的是远程计算机的实际地址。
现在,当使用者尝试利用远程计算机进行登录的话,将被要求提供证书而不是用户密码。
对于使用图形界面系统的用户来说,可以选择点击打开系统|首选项|密码和加密密钥设置。从该图形界面(参见图A)中选择个人密钥栏,点击文件|新建|安全外壳协议密钥项,按照创建指南的提示完成设置。
一旦密钥得以创建,就可以通过右键单击打开,进行安全外壳协议密钥的设置。在新窗口中,使用者可以键入计算机的名称(远程系统)和登录名。请注意:这么做之前,务必确保在远程计算机上已经存在登录名。
如果使用者采用的是Windows来登录ssh功能服务器的话,可以选择使用密钥对生成工具PuTTYgen。下载并启动PuTTYgen,点击生成按键,将鼠标移动到其它位置(在创建阶段),保存公共密钥,并将其复制到ssh服务器上。
请注意:为了以防万一,大家应该选择始终对密钥进行强制密码保护。因为,如果在设置的时间选择容许密钥认证模式的话,可能会发现一些用户选择创建无密码密钥(基于易用性的考虑)。这种做法属于不安全的。
阻止对根的访问
对于所有系统来说,容许基于安全外壳协议的访问属于关键之一。打开文件/etc/ssh/sshd_config,查找这一行:
PermitRootLogin
确保上面的行设置为否定。正确的行应该是:
PermitRootLogin no
一旦对文件的更改和保存操作完成,就可以输入命令:
sudo /etc/init.d/ssh restart
现在,如果出现尝试利用ssh作为根用户登录到服务器上情况的话,访问就会被直接拒绝。
调整端口号
我相信将安全模糊化并不能带来真正的安全。但是针对安全外壳协议的情况,设置越多安全性就越高。因此,我非常支持将安全外壳协议的默认22号端口调整为非标准端口。为了做到这一点,需要打开/ etc/ssh/sshd_config文件,并查找此行(靠近顶部):
Port 22
将端口号调整为没有使用的其它非标准端口。需要注意的是,所有连接到该系统上的用户都应该了解到端口号方面的调整。在进行了调整之后,也需要重新启动ssh服务。
利用命令行连接非标准端口时间,需要使用这样的命令:
ssh -p 端口_数字 -v -l 用户名 网络地址
在这里端口_数字就是非标准端口,用户名就是连接时使用的用户名,网络地址就是远程系统的地址。
最后的思考
总体而言,对于远程系统来说,安全外壳协议是一种相当安全的连接方式。但是,只要在默认的基础上进行小小的调整,就可以达到非常安全的状态......花费少量时间就可以换来安全方面的极大提高。作为一条标准的重要经验,使用者应该牢记,在任何情况下,都应该禁止根登录......所有超过这一限度的行为都是众所周知的糖衣炮弹。