LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2541|回复: 0

[原创]给明文协议加把锁

[复制链接]
发表于 2003-12-7 17:19:02 | 显示全部楼层 |阅读模式
欢迎转载,请保留作者信息
包子@郑州大学网络安全园
http://secu.zzu.edu.cn


大家都知道,ftp,telnet,pop,smtp等都是明文协议,也就是说,他们在传输数据的时候,数据都是没有被加密的,这样一些敏感数据就会很容易被sniffer截获。虽然现在已经普遍使用交换机来代替HUB了,但是随着新一代的ARP sniffer的出现,在交换环境下窃取数据也是很简单的事情,至于ARP sniffer的原理这里就不赘述了。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。


现在的目的就是在服务端和客户端做些手脚,让敌人拿不到明文的数据,我们下面会使用到以下几个软件

FlashFXP 2.0 (一个Windows下很优秀的FTP客户端,支持多种SSL认证方式)
SERV-U 4.1 (一个Windows下最强的FTP服务器)
VANDYKE VShell 2.03 (Windows下配置起来最方便最简单的SSH服务器)
VANDYKE Entunnel 1.0.2 (Windows下的一个很专业的SSH隧道加密工具)

以上的工具你都可以很容易的在郑州大学网络安全园下载的到 http://secu.zzu.edu.cn

在动手之前,先解释两个概念

SSL:Secure socket layer(SSL)协议是由Netscape Communication公司设计开发,主要用于提高应用程序之间数据的安全性。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装数字证书,或服务器证书就可以激活服务器功能了。

他的功能如下:

A:机密性。这是通过对数据进行加密实现的,在进行SSL握手时,SSL选择一种对称算法对数据进行加密,然后才在网络上传输数据。SSL使用的加密算法有好多种,如果某种算法被新的网络攻击方法识破,它只要选择另外的算法就可以了。

B:消息的完整性。SSL使用一种很健壮的信息验证码(Message Authentication Code),例如:SHA-1,验证码被放在数据包的后部,并且和数据一块被加密。这样,如果数据被修改,其散列值就无法和原来的验证码匹配,从而能够检测出数据是否被修改。MAC同时也被用于保护SSL连接免受干扰。

1:保护数据免受重放攻击(replay-attack)
  SSL使用序列号来保护通讯方免受报文重放攻击。这个序列号被加密后作为数据包的负载。在整个SSL握手中中,都有一个唯一的随机数来标记这个SSL握手,这样重放便无机可乘。

2:免受recorder攻击(reorder-attack)
  上面所说的序列号也可以防止攻击者记录数据包并以不同的次序发送。

C:端点验证
  使用X509(当前版本是3)证书,SSL支持客户和服务器的验证。

SSH:SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就比较难实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,更加方便的就是他可以为其他明文传输提供一个安全的隧道。

OK,现在我们首先解决FTP的问题,在这里,我们需要配置让SERV-U支持SSL,很简单,在对他做完一些基本的配置之后,运行ServUadmin,找到你需要加密的那个域,在"Security"选项那选择"Allow SSL/TLS and regular sessions",然后"Apply"一下。这样FTP服务器对SSL的支持就已经启用了。

接下来就是配置FlashFXP让他支持SSL了,也很简单,在"站点管理器"或者"快速连接"处选"SSL",然后再选"Auth SSL",现在你就可以连接支持SSL的服务器了,接受并保存来自服务器的证书,这样,你和服务器之间的数据都会被加密,不再怕Sniffer了。

最后,关于FTP的SSL有点要补充的是,如果你在SERV-U配置的时候选择的是"Allow SSL/TLS and regular sessions"(支持SSL和普通的FTP会话),那么在FlashFXP的SSL选项中就要选择"Auth SSL",如果你选择的是"Aloow only SSL/TLS sessions"(只支持SSL会话)的话,那么在FlashFXP的SSL选项中就要选择"implicit SSL"(隐含SSL),否则在连接的时候会出问题的。

下面我们开始为pop,smtp,telnet等协议上锁,在上面,我们已经介绍了SSH,他除了可以用来替代telnet和FTP之外,他更加重要的功能就是tunnel(隧道)功能,他可以把明文的数据通过隧道的方法转发到目标地址去。下面我们就使用VANDYKE的VShell和Entunnel来方便的实现这个功能。

首先,我们先用VShell在本地做一个SSH服务器,安装之后,如果没有特殊的要求,基本上不用设置就可以使用了,方便吧
重新启动之后,telnet 127.0.0.1 22,你会发现"SSH-2.0-VShell_2.03 VShell"这个banner,如果没有得到这个信息,请查看VShell的帮助。

接着,我们配置Entunnel,安装之后,在程序的主窗口先创建一个新的Session(左起第三个键),先为Connection取个名字,并写上hostname:127.0.0.1,username:administrator,然后在Port Forwarding那"add"一个规则并给他命名,我们就写"smtp"吧,接着分别在Local写上IP:127.0.0.1和Remote那写上smtp服务器地址,并在两个port栏写上"25",这样一个smtp转发规则就设置好了。接着再添加一个pop转发规则,配置和smtp的差不多,把端口改成110就OK了。

最后,点Connect输入你的administrator密码并保存,如果密码没错的话,我们可以看到他的"status"是"connected"的,并且任务栏的图标变成了绿色,如果你的结果不一样,请检查密码是否错误并且在"Details"检查出错信息或者查看Entunnel的帮助文档。

现在,只要我们对邮件客户端进行少少的改动就大功告成了,把他的pop和smtp服务器都设置为127.0.0.1,这样,你收发邮件的任何动作都是被加密了的。当然,这个方法同样可以用在telnet等其他协议上的,而且可以在"remote"那设置远程转发,这些就留给读者自己尝试了。


最后,在服务端做个ssh转发就是了,具体怎么做自己看着办吧,学会看man是linux必经之路
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表