远程管理是系统管理员必须掌握的一门诀窍。如果每次服务器出现故障系统管理员都要跑到服务器前面才能够修理的话,那是一件很头疼的事情。通常情况下,Telnet或者SSH都可以实现远程连接。但是这两个协议具有很大的不同。
Telnet服务虽然也属于客户机/服务器模型的服务,但它更大的意义在于实现了基于Telnet协议的远程登录即远程交互式计算。远程登陆是指用户使用Telnet命令,使自己的计算机暂时成为远程主机的一个仿真终端的过程。仿真终端等效于一个非智能的机器,它只负责把用户输入的每个字符传递给主机,再将主机输出的每个信息回显在屏幕上。但是这个协议有一个弱点,就是其在互联网上进行数据传输都是通过明文的形式传输的,即不会对传输的数据(包括帐户与密码)进行加密。如此的话,非法攻击者只要有网络侦听的工具就可以轻而易举的截获帐户名与密码,为下一步的攻击做好准备。故像Telnet这类传统的网络服务程序在本质上都是不安全的,因为它们在网络上用明文传送口令和数据。非法攻击者非常容易就可以截获这些口令和数据。另外,这些服务程序的安全验证方式也有比较大的缺陷,很容易受到攻击。如中间人这种方式的攻击。所谓中间人的攻击方式,就是中间人冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被中间人一转手做了手脚之后,就会出现很严重的安全问题。
而SSH协议真实像Telnet这些不安全的远程登录程序的替代程序。SSH协议采用了很强的加密算法加密所需要传送的数据,包括帐户、密码、命令代码等等,以保证数据传输的安全性。故它比起Telnet这些远程登录程序来说,其安全级别要比他们高。另外如果要进一步提高SSH协议的安全性,则可以把Linux操作系统配置成TCP-Wrappers模式,来取得额外的安全保障。TCP-Wrappers为由inetd生成的服务提供了增强的安全性。TCP Wrappers 是一种对使用 /etc/inetd.sec 的替换方法。TCP-Wrappers提供防止主机名和主机地址欺骗的保护。欺骗是一种伪装成有效用户或主机以获得对系统进行未经授权的访问的方法。同时TCP-Wrappers使用访问控制列表来防止欺骗。访问控制列表是Linux文件中的系统列表。在配置为验证主机名到 IP 地址映射,以及拒绝使用 IP 源路由的软件包时,TCP Wrappers 提供某些防止 IP 欺骗的保护。但是,TCP Wrappers 不提供口令验证或数据加密。与 inetd 类似,信息是以明文形式传递的。而其与SSH结合使用,则可以起到互相补充的效果。因为SSH可以提供加密传输,而TCP-Wrappers可以解决欺骗的问题。故这可以让远程登录、远程维护更加安全。
一、 SSH协议的安装。
默认情况下,在安装Linxu过程中,会同时安装SSH协议。不过有时候可能SSH协议会损坏需要重新安装。或者在系统安装的过程中没有安装SSH协议而后来又要用到时就需要手工来安装SSH协议。
系统管理员可以直接从http://www.ssh.fi/网站中下载SSH软件包,或者从其他的网站中可以下载到。然后进行安装即可。这个软件包的安装难度不大,笔者不重复说明了。不过笔者要强调的一点是,为了后续维护的方便,最好在软件包编译安装之前都做一张系统中所有文件的列表,然后利用diff命令去比较他们的差异。也就是说,在软件包编译安装之前先利用find /*>test1命令做一张系统中所有文件的列表。然后这个软件包安装编译完成之后,再利用这个命令(find /*>test2)建立一张系统中现在所有文件的列表。然后再通过diff test1 test2>test3命令让系统查询出这个软件包编译安装前后系统文件的变化。系统管理员掌握这个变化,有利于其后面操作系统的维护。
二、 SSH应用的配置。
插图:SSH相关配置文件。
如上图,安装完SSH协议之后,会在系统的/etc/ssh目录下出现几个文件。其中ssh_config与sshd_config是其两个主要的配置文件。SSH应用的配置工作主要在这个两个文件中完成。作为Linux系统工程师必须要懂得这个两个文件的配置。其中ssh_config配置文件主要用来对普通的ssh协议进行配置。在这个配置文件中,允许设置一些选项来改变客户端程序的运行方式。这个配置文件中每一行都是关键词-值的格式。值得注意的是,这个关键词(笔者喜欢称之为参数)跟Linux命令有很大的不同。这里的关键词是不区分大小写的。而普通的Linux命令或者文件名字都区分大小写。故在编写这个关键词的时候,可以考虑可读性而利用大写字母来对单词进行分割。笔者下面就对这个文件的主要参数进行一些介绍,告诉大家如何来配置这个文件。
1、Linux管理员在建立SSH连接的时候,是否需要凭帐户与口令才能够建立连接呢?通常情况下,为了系统的安全笔者建议大家不要怕麻烦,还是要利用口令验证来提高SSH连接的安全性。如果需要SSH连接提供密码验证的话,则需要采用这个参数PasswordAuthentication。如果把这个参数设置为yes的话,则管理员在建立SSH连接时必须提供口令,否则的话SSH服务器有权拒绝客户端的连接请求。如果不需要的话,只要把这个参数的值设置为no即可。这里再说明一下,参数在这个配置文件中是不区分大小写。故为了参数的可读性考虑,最好采用大小写混合的格式来提高其可读性。
2、SSH协议主要用来进行远程连接。为此其反映速度就很关键。有时候我们可以通过对通信数据进行压缩来提高网络传输的速度,从而加快服务器的反映速度。如果要对通信数据进行压缩的话,可以采用Compression参数。如果设置为yes,则表示采用压缩技术提高通信速度。如果设置为no,则表示不压缩。是否需要采用这个参数要根据实际情况来处理。如果管理员只是在企业内部进行远程登录(即SSH客户端与服务器同处于一个局域网)则没有必要采用压缩,因为此时局域网的网速可以满足管理员远程管理的需要。但是若管理员是通过互联网来远程管理Linux服务器的话,则最好采用这个压缩功能,以提高网络通信的速度。
3、SSH是一种加密传输的协议。系统管理员可以选择是否需要采用RSA加密算法来加密数据。RSA是第一个既能够用于数字加密也能够用于数字签名的算法。它也是SSH协议推荐的加密算法。这个加密算法易于理解和操作,也很流行,安全性也很高。这个协议从出现到现在,经历了各种攻击,但是到现在为止还没有被完全攻破。不过这个RSA加密算法有一个缺陷,即RSA加密算法速度会比较慢。RSA进行的都是大数计算,这使得RSA加密算法的速度比其他加密算法要慢得多。由于这个速度的限制,通常情况下其只用来进行少量数据的加密。一般来说,如果只用SSH协议进行远程维护,即传输代码之类的,这个缺陷并不会影响其应用。但是如果管理员要利用SSH协议来传输文件,如从FTP服务器上下载软件等等涉及到大量数据传输的,则不推荐采用这个RSA加密算法。RSA加密算法普遍认为是当前最优秀的公钥方案之一。为此,管理员还需要根据实际应用来判断是否要采用这个RSA加密算法。如果管理员通过互联网来远程管理Linux服务器的话,则笔者建议采用这个加密算法。如要启用这个加密算法的话,则可以通过下面这个参数来控制。管理员之需要把参数RSAAuthentication的值设置为yes即可。
4、当SSH连接出现错误的时候,是否启用其他的远程连接方式。通常情况下,Linux不仅支持SSH远程连接协议,还支持RSH等连接方式。但是RSH连接协议是不安全的。rsh命令将在远程Linux服务器上执行一个命令并把结果显示到您的系统中。当然,前期式管理员的系统名和注册名必须在远程系统的.rhosts文件中。不过这个协议安全性不高,通常情况下不建议采用这个协议进行远程连接。如果管理员在SSH连接不成功的情况下,自动采用RSH连接的话,则可以把参数FallBackToRsh设置为no。如此设置之后,如果SSH连接出现错误的话将自动使用RSH连接。
以上几个是SSH应用配置中的几个主要参数。如要管理员要了解更详细的信息,可以采用man ssh命令来查看具体的帮助信息。
知识补充:
安全外壳协议(SSH)是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议。Secure Shell,又可记为S S H,最初是U N I X系统上的一个程序,后来又迅速扩展到其他操作平台。S S H是一个好的应用程序,在正确使用时,它可以弥补网络中的漏洞。除此以外, S S H之所以酷,还有以下原因:S S H客户端适用于多种平台。几乎所有的U N I X平台—包括H P - U X、L i n u x、A I X、S o l a r i s、Digital UNIX、I r i x、S C O,以及其他平台—都可以运行S S H。而且,已经有一些客户端(其中有些为测试版)可以运行于U N I X操作平台以外,包括O S / 2、V M S、B e O S、J a v a、Wi n d o w s 9 5 / 9 8和Windows NT。这样,你就可以在几乎所有的平台上运行S S H客户端程序了。对非商业用途它是免费的。许多S S H版本可以获得源代码,并且只要不用于商业目的,都可以免费得到。而且,U N I X版本也提供了源代码,这就意味着任何人都可以对它进行修改。但是,如果你选择它用于商业目的,那么无论使用何种版本的S S H,你都得确认已经注册并获得了相应权限。绝大多数S S H的客户端和守护进程都有一些注册限制。惟一的S S H通用公共注册(General Public License,G P L )版本是l s h,它目前还是测试版。通过I n t e r n e t传送密码安全可靠。这是S S H被认可的优点之一。如果你考察一下接入ISP(Internet Service Provider,I n t e r n e t服务供应商)或大学的方法,一般都是采用Te l n e t或P O P邮件客户进程。因此,每当要进入自己的账号时,你输入的密码将会以明码方式发送(即没有保护,直接可读),这就给攻击者一个盗用你账号的机会—最终你将为他的行为负责。对应用的支持。由于S S H的源代码是公开的,所以在U N I X世界里它获得了广泛的认可。L i n u x,其源代码也是公开的,大众可以免费获得,并同时获得了类似的认可。这就使得所有开发者(或任何人)都可以通过补丁程序或b u g修补来提高其性能,甚至还可以增加功能。这也第一部分获得并安装S S H意味着其性能可以不断得到提高而无须得到来自原始创作者的直接技术支持。S S H替代了不安全的远程应用程序。S S H是设计用来替代伯克利版本的r命令集的;它同时继承了类似的语法。其结果是,使用者注意不到使用S S H和r命令集的区别。利用它,你还可以干一些很酷的事。通过使用S S H,你在不安全的网络中发送信息时不必担心会被监听。你也可以使用P O P通道和Te l n e t方式,通过S S H可以利用P P P通道创建一个虚拟个人网络( Virtual Private Network, V P N )。S S H也支持一些其他的身份认证方法,如K e r b e r o s和安全I D卡等。
但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。 OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越 来越多的人使用它而不是SSH。
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。 用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。