Linux中用SSH进行安全的连接
您肯定希望用 ssh 从远程站点使用您的服务器,但是要让这个过程进展顺利还得用到一些技巧。
MindTerm、socat 还有 VNC,哦,天哪!虽然能够远程工作一直都是系统程序员和管理员最喜欢的 Linux 优点之一,但设置远程访问却不是一件简单的事情。
选择合适的远程服务
每个月, 服务器诊所都要描述如何最大程度地使用服务器室中的硬件。本专栏经常涉及使用 Linux 的方法,这些方法并不象理所应当的那样众所周知:将 Linux 用于 Fortran 程序、将 Linux 用于专为旧操作系统设计的应用程序等等。
紧接着的第二个话题便是本篇专栏文章的主题:安全性。
您的服务器在物理上应当是被隔离的,应当禁用所有不必要的联网访问,并且只能通过 ssh 或更好的方式访问服务器。特别值得一提的是,尽可能少使用实时的 telnet 、 ftp 、 rlogin 和 rsh 以及相关服务;它们实在是太危险了。
假设您已经做了所有这些事。现在您出门在外 - 可能在演示产品,或者在与新客户协商讨论需求,或者在结束一个会议(这已归入您的培训预算之中)。您需要调出公司中的某些材料。那么该怎么办呢?
首先,您当然应该尝试一番。程序员和管理员本可以在正常的上班时间里在自己比较安静的工作场所工作,但是他们却喜欢强迫自己突击完成这些工作,这可是出了名的。您可别让自己成为这种行为的牺牲品!确信您进行的连接具有合法的业务目的,并非违规行为。
但是,如果您过去有这些组织问题,那么连接问题的答案便是“使用 ssh”。即使您原则上更依赖于虚拟专用网(VPN)而非 ssh,我还是认为出现紧急情况时,如若不能使用常规方法,那么设置 ssh 访问会比较谨慎些。VPN 仍然有些难以处理,并且需要依靠特别的硬件配置。如果您是通过客户机的网络(多半是使用普通桌面机器)“呼叫主机”的,则您可以进行的选择是极其有限的。
ssh 满足需要
好消息是 ssh 在这些限制的夹缝之中通常还能满足需要。即使您外出办事,但在公共接入点(比如“网吧”),您还是可能有足够的资源使 ssh 工作。
您或许不能依赖于自己的设备。说得严重些,带着任何比手持设备大的设备到处走,是另一个安全性风险;更糟的是,许多地方不准插入外来的硬件。您通常必须使用提供给您的硬件。
但是下载 puTTY、ssh 或 MindTerm 客户机一般都很快。而且我也喜欢那样做。任何具有足够的网络栈、可以连接到您的服务器室的主机,都可能有准许进行下载的 Web 浏览器。使用已经安装好的客户机要小心;对于某些人而言,将客户机替换成经过修改的、能捕获击键信息(或更糟的情况)的客户机实在是太容易了。
另一种方式是构造嵌入了 MindTerm 客户机作为 applet 的 Web 页面,这表面上看起来挺吸引人的。而我的经验告诉自己这种方法没什么用处。大多数地方都禁用 Java、或提供只具有旧的 Java 运行时引擎(JRE)的浏览器,或者采用别的方式来降低 applet 的便利性。如果我要使用 MindTerm,则只想下载和安装该客户机以及兼容的 JRE。对于构造针对最终用户的应用程序,applet 通常是一种好技术。applet 还适合进行只读配置。但是,我发现这种用法非常少。因此,为使自己的工作具有效率,不值得花时间去解决 applet 环境中可能存在的难题。我一直觉得,找到一个兆字节的空闲大容量存储器并在上面安装 ssh 客户机会更加方便。
您坐下一会后就应当安装新的 ssh 客户机并启动它。但是,这可能还不够。某些地方防火墙关闭了大多数端口,或者至少关闭了包括 ssh 的标准端口 22 在内的许多端口。
这里有另一种准备提供帮助的方法。在我的至少一台主机上,我希望让 sshd(ssh 守护程序)在通常被指派给常见因特网服务(比如 ftp、http、smtp 或 pop3)的端口上运行。即使是最严密的防火墙也要打开端口 21、8080、25 和 110 中的一个。将您的一台机器设置为“捕获”这样的通信,您就可以使它穿过大多数的防火墙。
这听起来是否象是“非法闯入者”在说话呀?我 不赞成滥用网络。经常有其它公司的雇员 邀请我使用他们的网络,虽然他们也知道,用敏感的方式(比如临时打开端口 22)更改他们的防火墙就公司制度而言是不可行的。我逐渐接受了这种认识:准备采用“旁门左道”也是当前专业实践的一部分,但我需要确保自己只以一种负责任的方式完成这个工作。
当然,随着 ssh 通道的打开,我就拥有像坐在服务器室中控制台前的几乎所有功能。如果需要有图形显示,我可以通过通道使用 X 或 VNC,也可以从命令行访问其它所有常见活动。
这样就启动了我的工作会话,然后:我下载引用 ssh 客户机,快速安装并启动它们,然后用 SSL 保护的密码往回验证我留在服务器室中运行的某个 sshd。
请注意,我仍然容易受到篡改过的主机的攻击。一个经过充分修改的桌面机器或一个警惕的“窥视狂”可以在击键信息到达 SSL 库之前将其记入日志。 这种情况的解决方案就是使用一次性密码(OTP)系统。到目前为止,在我看来 OTP 带来的麻烦多于安全性。OTP 给您自己带来的代价和收益肯定至少会略微有所不同。无论如何,回到日常的工作场所可能是更新密码的好时机。