2006年9月24日星期日

第二节 安全网络连接

  加密是保证网络连接安全的一种重要手段,如果能在数据发送前利用特定的算法对其进行加密,那么数据的机密性将更有保证。SSH 使用经过加密后的连接在两台计算机间进行通信,这样任何人想利用网络嗅探器来监视通信过程都将变得非常困难,因为所有数据都是经过加密处理的。
 
1、认识安全网络连接
 
  如果只能用一句话来描述安全的网络连接,那么就是要确保数据在从一个主机发送到另一个主机时,与通信无关的第三方无法读取。使用嗅探器虽然还是同样能中途截取数据包,但这些加密后的数据都是不可读的。经过加密处理之后,黑客们就无法轻松地获取诸如用户口令这类敏感数据,因而所有在网络上传输的数据都将是安全可靠的。
 
  安全网络连接常用于需要发送机密数据的场合。由于 Internet 是一个全世界所有人都可以使用的公共网络,因此数据加密显得尤为重要,毕竟像电子商务这类应用,首先考虑的就是如何确保信用卡及用户信息的机密性。
 
  传统的 rlogin、rsh 和 Telnet 是三个臭名昭著的不安全典型,它们不经过加密就进行系统登陆和数据传输。假如你是一名 root 用户并有使用 Telnet 登录系统进行管理的嗜好,那么你的用户我和密码实际上都是通过纯文本方式在网络中传递的。如果被黑客盯上,并通过网络嗅探器截获了数据包,那么整个系统离发生灾难的那一天也就不远了。
 
  SSH(Secure Shell)可以很好地解决这些令人头疼的问题。它能够对在网络上传输的数据进行加密,这样就为重要信息提供了较高的保密性和安全性。SSH 最初由芬兰一家公司开发,但由于受版权和加密算法的限制,现在使用更广的是其免费的替代产品 OpenSSH。与传统的远程登陆软件(如Telnet和rlogin)相比,OpenSSH 是一个更加安全的解决方案。它能对远程登录过程中的数据包进行加密,从而确保用户名和密码不至于泄密,即便是登录成功之后,所有在网络中传输的数据包仍将继续被加密。
 
  OpenSSH 的许多特性都确保了数据在网络中的安全性,如果你的 Linux 系统是运行在一个不怎么安全的网络环境中,那就该动手升级到 OpenSSH。
 
2、安装 OpenSSH
 
  OpenSSH 是一个用于实现安全网络连接的软件包套件,它包含如下几个组成部分:
 
  SSH 客户工具(SSH):远程登录程序,能够实现安全的远程登录和会话加密,是 rlogin 和 Telnet 的安全替代;
 
  安全拷贝工具(scp):远程文件拷贝工具,用于在网络内的计算机间安全地复制文件,支持用户名和密码;
 
  安全传输工具(sftp):用于进行安全的文件传输,是 ftp 的安全替代;
 
  OpenSSH服务器(sshd):OpenSSH 的后台服务进程。
 
  由于 OpenSSH 在 Linux 操作系统上的应用已经相当普遍了,因此许多发行版(包括 Red Hat Linux AS 4)都自带了 OpenSSH 软件包套件。OpenSSH 通常是默认安装的,可以在命令行方式下用 rpm 命令查询一下是否已经安装了 OpenSSH:
 
  [root@kevin rpm]#rpm -qalgrep openssh
  openssh-3.5p1-6
  openssh-clients-3.5p1-6
  openssh-server-3.5p1-6
  openssh-askpass-3.5p1-6
  openssh-askpass-gnone-3.5p1-6
 
  Red Hat Linux AS 4 提供的 OpenSSH 套件由 openssh-3.5p1-6.i386.rpm、openssh-clients-3.5p1-6.i386.rpm、 openssh-server-3.5p1-6.i386.rpm、 openssh-askpass-3.5p1-6.i386.rpm 和 openssh-askpass-gnome-3.5p1-6.i386.rpm 五个 RPM 包组成。如果当前 Linux 系统还没有安装 OpenSSH,那么可以执行下面的命令来手工安装它。
 
  [root@kevin ~]#mount /dev/cdrom /mnt/cdrom/
  [root@kevin ~]#cd /mnt/cdrom/RedHat/RPMS/
  [root@kevin RPMS]#rpm -Uvh openssh-3.5p1-6.i386.rpm
  [root@kevin RPMS]#rpm -Uvh openssh-clients-3.5p1-6.i386.rpm
  [root@kevin RPMS]#rpm -Uvh openssh-server-3.5p1-6.i386.rpm
  [root@kevin RPMS]#rpm -Uvh openssh-askpass-3.5p1-6.i386.rpm
  [root@kevin RPMS]#rpm -Uvh openssh-askpass-gnome-3.5p1-6.i386.rpm
 
3、配置 OpenSSH 服务器
 
  由于涉及到 Linux 系统的安全性,要管理好 OpenSSH 服务器可不是件轻松的差事,而如何安全有效地设置 OpenSSH 的配置文件则是管理员面临的第一个大难题。OpenSSH 服务器的配置文件位于 /etc/ssh/ 目录下面,你可以直接手工修改它们,不过刚开始时建议还是先用 Webmin 来代劳。打开浏览器并登录 Webmin 后,单击『服务』图标进入服务管理页面,在这里可以对 OpenSSH 服务器进行配置,如图8-2-1 所示。
 
图 8-2-1 OpenSSH 服务器
 
  单击『SSH Server』图标,进入『SSH Server』页面,Webmin 允许对 OpenSSH服务器的各种参数进行设置,这样就不用与那些枯燥乏味的配置文件纠缠不清了,如图 8-2-2 所示。
 
图 8-2-2 OpenSSH 服务器配置
 
  在『SSH Server』页面中单击『Authentication』图标,进入『Authentication』页面,此处的参数都是与用户登录或身份认证相关的。在『Allowauthentication by password』和『Allow RSA authentication』区域中,可以设置是否允许在 SSH 登录过程中使用口令验证和 RSA 安全验证这两种身份验证方式。有时为了方便起见,系统中某些用户的口令是空的,在『Permit logins with empty passwords』区域中,可以选择是否允许这类用户通过 SSH 远程登录,如图8-2-3 所示。
 
图 8-2-3 口令验证
 
  Linux 系统中的最高统治者是 root,他拥有至高无上的权力,可以随心所欲地做任何事情,这也是为什么那么多黑客都将获得 root 用户权限作为攻击系统时的首要目标。虽然 SSH 在登录过程中对用户名和密码都作了加密,但为了更好地保护好系统,建议还是在『Allow login by root』下拉框中选择『否』,拒绝 root 用户使用 SSH 进行远程登录,如图 8-2-4 所示。
 
图 8-2-4 拒绝 root 用户远程登录
 
  早在使用 rlogin 和 rsh 的年代,人们就想出了通过在 /etc/hosts.equiv 和$HOME/.rhosts 两个文件中指定“等价”主机的办法,来简化登录过程,但前提是这些主机间必须是互相信任的。在『Authentication』页面中的『Allow login just by hosts.equiv and .rhosts』区域中,可以指明是否只使用 hosts.equiv 和 .rhosts 进行安全验证就足够了;而在『Check hosts.equiv and .rhosts forRSA authentication』区域中,可以指明是否应该用 hosts.equiv 和 .rhosts 并加上 RSA 进行安全验证;如果希望在验证过程中忽略 hosts.equiv 和 .rhosts,则可以在『Ignore .rhosts files』区域中进行选择,如图 8-2-5 所示。
 
图 8-2-5 可信任主机
 
  在设置好 OpenSSH 服务器的身份认证参数后,单击『保存』按钮返回到『SSHServer』页面。接下去就该对 OpenSSH 服务器的网络参数进行设置了,单击『Networking』图标进入页面后,可以在『Listen on addresses』区域中指定OpenSSH 服务器监听的地址,还可以在『Listen on port』区域中指定 OpenSSH 服务器监听的端口,如图 8-2-6 所示。
 
图 8-2-6 监听地址和端口
 
  OpenSSH 能够支持 SSH v1 和 SSH v2 两种协议,可以在『Networking』页面中的『Accept protocols』区域中选择 OpenSSH 服务器所使用的 SSH 协议版本,如图 8-2-7 所示。同时将『SSH v1』和『SSH v2』两个复选框选中,能够最大限度地同 SSH 客户端保持协议上的兼容。
 
图 8-2-7 SSH 协议版本
 
  其实黑客有时采用的攻击手段并不是那么高明。例如为了成功地登录系统,他们可以在一个称为“字典”的数据库中事先保存好所有可能出现的用户名和密码的组合,然后借助一些工具的帮助一个接一个地尝试,直至找到某个匹配的用户名和密码为止。这种穷举的办法虽然看起来有点笨,但却令不少黑客屡屡得手。究其原因在于人们通常设置的用户名和密码并不是很复杂,大部分都逃不出黑客手中的那本“字典”。
 
  OpenSSH 服务器采用了一个很简单的策略来避免这类现象的发生,那就是要求用户必须在指定的时间内完成登录,否则连接将被中断。在『Networking』页面中的『Time to wait for login』区域中,可以指定 OpenSSH 服务器能够容忍的登录时间,如图 8-2-8 所示。注意,如果将该值设为0,则表示没有时间限制。
 
图 8-2-8 允许的登录时间
 
  在为 OpenSSH 服务器设置好网络参数后,单击『保存』按钮返回到『SSHServer』页面。默认情况下,OpenSSH 服务器会允许系统中的所有用户通过 SSH 进行远程登录。如果觉得这样不是很安全,则可以单击『SSH Server』页面中的『Access Control』图标,进入『Access Control』页面,然后在『Only allow users』和『Only allow members of groups』区域中指定允许通过 SSH 远程登录的用户和组,或在『Deny users』和『Deny members of groups』区域中指定拒绝通过 SSH 远程登录的用户和组,如图 8-2-9 所示。
 
图 8-2-9 访问控制
 
  注意,只有用户及其所属的组都被允许时,才可以成功地登录到 OpenSSH 服务器。设置好 OpenSSH 服务器的访问控制规则后,单击『保存』按钮保存设置。
 
  单击『SSH Server』页面中的『Miscellaneous Options』图标,可以对OpenSSH 服务的其它一些杂项参数进行设置。在『Miscellaneous Options』页面中的『System log facility』区域中,可以指定在记录系统日志时所使用的助记代码。在阅读系统日志时,助记代码可以帮助管理员区分不同的记录。而日志记录级别则可以从『Logging level』区域中选择,如图 8-2-10 所示。日志级别会影响到将被记录信息的多少和种类,对大我数场合来说,『INFO』是一个较好的选择。
 
图 8-2-10 系统日志
 
  在『Miscellaneous Options』页面中还有两个很重要的设置项,那就是在『Server key size』区域中定义服务器端密钥位数的『bits』,以及『Server keyregeneration interval』区域中定义的服务器自动重新生成密钥的时间间隔,如图 8-2-11 所示。
 
图 8-2-11 密钥和度和生存期
 
  密钥的位数将影响到 OpenSSH 服务器的安全级别,而定时重新生成密钥则是为了防止黑客用盗用的密码来解密被截获的信息。设置好服务器端密钥的长度和生存期后,单击『保存』按钮确认。
 
  除了可以对 OpenSSH 服务器进行配置外,使用 Webmin 还可以对 OpenSSH 客户端进行配置,如图 8-2-12 所示。
 
图 8-2-12 配置 OpenSSH 客户端
 
  为了能够正确地通过 SSH 登录 OpenSSH 服务器,不仅需要在服务器端对OpenSSH 服务器进行配置,还需要在客户端对 OpenSSH 的客户机进行配置。当然,这些都可以借助 Webmin 来完成。
 
  单击『SSH Server』页面中的『Client Host Options』图标,进入『Client Host Options』页面,在『SSH Client Hosts』区域中可以看到能够进行配置的SSH 客户,如图 8-2-13 所示。
 
图 8-2-13 SSH 客户
 
  单击『ALL Hosts』图标,可以对所有 SSH 客户进行配置,如图 8-2-14 所示。
 
图 8-2-14 设置 SSH 客户参数
 
  如果没有什么特殊需要,除了在『Add host to known_hosts file』和『CheckIP addresses in known_hosts file』区域中选择『是』单选框外,其它参数都使用默认值一般就可以满足绝大部分场合的需要了。
 
  OpenSSH 客户端的参数保存在配置文件 /etc/ssh/ssh_config 中,如果想知道该文件中各个参数的具体含义,可以查看 OpenSSH 的联机手册:
 
  [root@kevin ~]#man ssh_config
 
4、启动 OpenSSH 服务器
 
  OpenSSH 服务器配置好之后,就可以启动它了。在 Webmin 的『SSH Server』页面中,有一个『Start Server』按钮,单击它可以启动 OpenSSH 服务器,如图8-2-15 所示。
 
  如果此时 OpenSSH 服务器已经启动了,则将看到一个『Apply Changes』按钮,单击它可以按新的配置值重新加载 OpenSSH 服务器。
 
图 8-2-15 启动 OpenSSH 服务器
 
  当然,也可以将 OpenSSH 服务器设置成开机自动启动。单击 Webmin 的『系统』图标,进入系统管理页面,接着单击『引导和关机』图标,打开『引导和关机』页面,在服务列表中找到 OpenSSH 对应的服务 sshd。
 
  单击『sshd』链接,进入『编辑操作』页面,选择『是』单选框,就可以在系统启动时自动运行 OpenSSH 服务器了。

没有评论: