Chinaunix首页 | 论坛 | 博客
  • 博客访问: 514956
  • 博文数量: 484
  • 博客积分: 10145
  • 博客等级: 上将
  • 技术积分: 5805
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-27 18:34
文章分类

全部博文(484)

文章存档

2011年(52)

2010年(107)

2009年(287)

2008年(38)

我的朋友

分类: LINUX

2009-05-16 17:25:00

Linux课堂:在Linux操作系统上部署SSH应用

   2009-3-19 10:02:00      浏览数:82

  远程管理是系统管理员必须掌握的一门诀窍。如果每次服务器出现故障系统管理员都要跑到服务器前面才能够修理的话,那是一件很头疼的事情。通常情况下,Telnet或者SSH都可以实现远程连接。但是这两个协议具有很大的不同。

  远程管理是员必须掌握的一门诀窍。如果每次出现故障管理员都要跑到服务器前面才能够修理的话,那是一件很头疼的事情。通常情况下,Telnet或者SSH都可以实现远程连接。但是这两个协议具有很大的不同。

  Telnet服务虽然也属于客户机/服务器模型的服务,但它更大的意义在于实现了基于Telnet协议的远程登录即远程交互式计算。远程登陆是指用户使用Telnet命令,使自己的暂时成为远程的一个仿真的过程。仿真终端等效于一个非智能的机器,它只负责把用户输入的每个传递给主机,再将主机输出的每个信息回显在屏幕上。但是这个协议有一个弱点,就是其在上进行数据传输都是通过明文的形式传输的,即不会对传输的数据(包括帐户与密码)进行。如此的话,非法攻击者只要有侦听的工具就可以轻而易举的截获帐户名与密码,为下一步的攻击做好准备。故像Telnet这传统的网络服务在 本质上都是不安全的,因为它们在网络上用明文传送口令和数据。非法攻击者非常容易就可以截获这些口令和数据。另外,这些服务程序的安全验证方式也有比较大 的缺陷,很容易受到攻击。如中间人这种方式的攻击。所谓中间人的攻击方式,就是中间人冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给 真正的服务器。服务器和你之间的数据传送被中间人一转手做了手脚之后,就会出现很严重的安全问题。

  而SSH协议真实像Telnet这些不安全的远程登录程序的替代程序。SSH协议采用了很强的加密算法加 密所需要传送的数据,包括帐户、密码、命令代码等等,以保证数据传输的安全性。故它比起Telnet这些远程登录程序来说,其安全级别要比他们高。另外如 果要进一步提高SSH协议的安全性,则可以把配置成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协议。

  系统管理员可以直接从://中SSH包, 或者从其他的网站中可以下载到。然后进行安装即可。这个软件包的安装难度不大,笔者不重复说明了。不过笔者要强调的一点是,为了后续维护的方便,最好在软 件包编译安装之前都做一张系统中所有文件的列表,然后利用diff命令去比较他们的差异。也就是说,在软件包编译安装之前先利用find /*>test1命令做一张系统中所有文件的列表。然后这个软件包安装编译完成之后,再利用这个命令(find /*>test2)建立一张系统中现在所有文件的列表。然后再通过diff test1 test2>test3命令让系统查询出这个软件包编译安装前后系统文件的变化。系统管理员掌握这个变化,有利于其后面操作系统的维护。

  二、 SSH应用的配置。

  

  插图:SSH相关配置文件。

  如上图,安装完SSH协议之后,会在系统的/etsh 目录下出现几个文件。其中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协议来传输文件,如从上 下载软件等等涉及到大量数据传输的,则不推荐采用这个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,又可记为SSH,最初是系统上的一个程序,后来又迅速扩展到其他操作平台。SSH是一个好的, 在正确使用时,它可以弥补网络中的漏洞。除此以外,SSH之所以酷,还有以下原因:SSH客户端适用于多种平台。几乎所有的UNIX平台—包括HP- UX、Linux、AIX、Solaris、Digital UNIX、Irix、SCO,以及其他平台—都可以运行SSH。而且,已经有一些客户端(其中有些为版)可以运行于UNIX操作平台以外,包括、VMS、、Java、95/98和Windows NT。这样,你就可以在几乎所有的平台上运行SSH客户端程序了。对非商业用途它是免费的。许多SSH版本可以获得, 并且只要不用于商业目的,都可以免费得到。而且,UNIX版本也提供了源代码,这就意味着任何人都可以对它进行修改。但是,如果你选择它用于商业目的,那 么无论使用何种版本的SSH,你都得确认已经注册并获得了相应权限。绝大多数SSH的客户端和守护进程都有一些注册限制。惟一的SSH通用公共注册 (General Public License,GPL)版本是lsh,它目前还是测试版。通过Internet传送密码安全可靠。这是SSH被认可的优点之一。如果你考察一下接入 ISP(Internet Service Provider,Internet服务供应商)或大学的方法,一般都是采用Telnet或POP邮件客户进程。因此,每当要进入自己的账号时,你输入的 密码将会以明码方式发送(即没有保护,直接可读),这就给攻击者一个盗用你账号的机会—最终你将为他的行为负责。对应用的支持。由于SSH的源代码是公开 的,所以在UNIX世界里它获得了广泛的认可。Linux,其源代码也是公开的,大众可以免费获得,并同时获得了类似的认可。这就使得所有开发者(或任何 人)都可以通过补丁程序或修 补来提高其性能,甚至还可以增加功能。这也第一部分获得并安装SSH意味着其性能可以不断得到提高而无须得到来自原始创作者的直接技术支持。SSH替代了 不安全的远程应用程序。SSH是设计用来替代伯克利版本的r命令集的;它同时继承了类似的语法。其结果是,使用者注意不到使用SSH和r命令集的区别。利 用它,你还可以干一些很酷的事。通过使用SSH,你在不安全的网络中发送信息时不必担心会被监听。你也可以使用POP通道和Telnet方式,通过SSH 可以利用PPP通道创建一个虚拟个人网络( Virtual Private Network, )。SSH也支持一些其他的身份认证方法,如Kerberos和安全ID卡等。

  但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。 OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越 来越多的人使用它而不是SSH。

  SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。 用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。

阅读(226) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~