OpenSSH为保障Client(客户端)与服务器端(Server)的安全通信提供了一整套的工具,这些工具允许用户为任何类型的Client与Server的通信创建安全通道,包括检查/发送电子邮件或Web浏览。
OpenSSH
在通过Internet登录到一个远程系统时,总会存在一种危险,即用户的口令如果以明文方式传输,就可能会被监视字节流的黑客中间截获并加以滥用。多数用户实际上都清楚这种风险,并通过使用所谓的“安全外壳”(secure shell)程序来减轻风险,这种“安全外壳”程序的设计目的是在用户通过互联网传输数字证书之前对证书进行加密。目前这类程序最流行、最通用的就是OpenSSH,这是一个OpenBSD的项目。
不过,许多OpenSSH用户并没有认识到,这个程序不仅允许用户加密用户的(远程登录)telnet会话,它还提供了一整套用以保障客户端/服务器通信安全的工具,而且允许用户为任何类型的C/S通信创建安全“通道”,其中包含检查/发送电子邮件或Web浏览。使用这些通道可以极大改善系统的安全性,特别是机密性成为一个关键要素的时候。
本文将通过一个具体的例子向您展示如何通过这个OpenSSH来创建加密通道,用于检查一个POP3邮箱,从而使我们进一步理解并掌握OpenSSH的安全通道特性。
第一步:下载并安装OpenSSH
用户可从http://www.openssh.com/下载源代码,用户从多种平台的版本中选择所需要的版本。其文件已被数字化签名,从而可以避免损害用户的安全。本文例子使用的是OpenSSH 4.3。
一旦用户下载了程序包,将它解到一个临时目录并执行标准的“配置─生成─安装”循环:
shell> tar -xzvf openssh-4.3p2.tar.gz
shell> cd openssh-4.3p2/
shell> ./configure
shell> make
shell> make install
第二步:生成主机密钥并启动OpenSSH进程
安装过程的最后一步就是生成一对主机密钥,即特定系统的唯一标识符。这些密钥,包含一个私有密钥和一个公有密钥,分别存储在诸如 /etc/ssh_host_key and /etc/ssh_host_key.pub,的文件中:
shell> make install
…
Generating public/private rsa1 key pair
Your identification has been saved in /etc/ssh_host_key
Your public key has been saved in /etc/ssh_host_key.pub
…
Generating public/private dsa key pair
Your identification has been saved in /etc/ssh_host_dsa_key
Your public key has been saved in /etc/ssh_host_dsa_key.pub
…
Generating public/private rsa key pair
Your identification has been saved in /etc/ssh_host_rsa_key
Your public key has been saved in /etc/ssh_host_rsa_key.pub
一旦密钥创建完成,通过执行“sshd”启动OpenSSH进程:(以超级用户身份):
shell> /sbin/sshd
通过打开一个Telnet连接到22号端口确认服务正在运行:
shell> telnet localhost 22
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
SSH-1.99-OpenSSH_4.3
第三步:创建一个到用户的POP3服务器的安全通道
现在让我们假定用户的本地系统名为localbox,主管用户的目标POP3邮箱的主机名为remotebox。下一步就是在remotebox主机上的110端口(POP3连接的标准端口)与localbox计算机上的一个未用的端口之间创建一个加密的SSH通道。这个过程称为TCP转发,用OpenSSH完成这个操作是相当简单的,只需要运行如下的命令:
shell> ssh -L 2110:localbox:110 remotebox
root@localbox''s password: ****
这个命令意思是说:将localbox上未用端口2110上的所有连接转发到remotebox上的POP3端口110上,并在通道上加密。此命令的结果是:所有到localbox上2110端口的连接企图都被自动加密,并被发送到remotebox上的110端口上。
现在如果用户在localbox上打开了telnet连接到端口2110,例如:
shell> telnet localbox 2110
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
+OK DPOP ready
用户的连接会被自动转发到remotebox上的110端口─POP3邮件服务,并且加上高质量的加密以确保任何人都无法“窃听”用户与远程服务器的数据通信。
在这里要注意两个重要的问题:如果你正使用一个特权端口,必须要有对转发端口的超级用户权限;此外,你不应试图使用已经在用的端口号。
第四步:改变你的POP3客户端设置
一旦你的安全通道能够运作,你需要将所做的改变告诉你的邮件客户端,对于前向通道,你的邮件客户端可能直接连接到remotebox以检索电子邮件-一个让用户的电子邮件口令以一种非加密的格式沿着线路传输,需要对客户端作类似如下的设置:
Server: remotebox
Port: 110
User: john
Password: guessme
对于后向通道,你的邮件客户端应该被重置,直接连接到本地系统上的2110端口,用OpenSSH实现将连接转发到远程服务器并实现线路加密。新的设置应看起来是如下的样子:
Server: localbox
Port: 2110
User: john
Password: guessme
经过这四步安装设置之后,你已经拥有了一个邮件客户端与邮件服务器之间的安全通道,你的口令和数据对他人来说将是不可见的。很明显,这仅仅是一个例子,可以说是仅仅展示了OpenSSH强大功能的冰山之一角。用户还可以设置OpenSSH用以加密SMTP、FTP、IRC或者任何类型的客户端/服务器的连接,或者创建通过防火墙的加密通道。为了您的数据传输的安全性,请用OpenSSH为您的传输保驾护航!