csatblogspotdotcom

Sunday, August 22, 2010

IRC连接遇到的问题

2010-08-16 18:15

这两天调研了下IRC,发现windows下最好的客户端还是firefox的插件chatzilla,免费而且方便,它设置可以直接在firefox的地址栏里输入地址就行;而像mIRC这之类的并不是说它的易用性不好,它最大的缺点就在于只能试用30天,之后还想用就要交钱。
可能是学计算机的缘故,对系统的安全性比较敏感,使用过程中就想看能不能使用加密后的IRC,发现需要支持ircs协议的IRC服务器。连接时,碰到了一个问题:
[ERROR]ircs://irc.et8.net/ has an invalid security certificate. If you trust this server, [add an exception].
于是搜索了下,找到了如下两种方法:
1. 在firefox中输入
chrome://pippki/content/certManager.xul
选中servers这个tab,加入对这个网址的证书的信任:
ircs://irc.tty2.org:6697
这样就可以正常访问ircs://irc.tty2.org:6697/#kefwchess了。
同样加入对ircs://irc.et8.net:9999的信任,就可以访问ircs://irc.et8.net:9999/software了。
2. 在firefox中输入
https://irc.et8.net:9999/
浏览器会提示是否添加信任,直接添加就可以了
(在添加后,再次访问,就会提示:“You have connected to an IRC server as if it were a web server”)
添加后就可以正常访问了

在这个过程中我明白了三点:
1. SSL,一个基于TCP的协议,它为应用程序提供服务,提供API,让应用层协议能够加密的传输。所以如果想用IRC的加密版,需要服务端配置相应的加密服务ircs。而相应的应用程序如果要支持ssl也需要利用ssl提供的API编写相应的模块。各种不同的服务,各种不同的应用程序都可以利用ssl,例如irc和http。
2. ssl和ssh不同。ssh是应用层的,ssl是在传输层和应用层之间的。应用程序可以利用ssl,达到应用程序之间加密传输的目的,而ssh也可以为其它应用程序提供加密传输,但ssh程序和应用程序之间并不属于加密通道的一部分,这也就是说,ssl更底层,和应用程序的耦合性更高,而利用ssh的话,耦合性并不高。
3. sftp和ftp over ssh的不同之处就在于,sftp是利用了ssl的ftp,而ftp over ssh是一个应用程序利用了另一个应用程序。





后记:
第三点里面有误。sftp并不是ssl over ftp。
参考:
http://www.codeguru.com/csharp/.net/net_general/internet/article.php/c14329
http://blog.csdn.net/xiliuhu/archive/2010/01/30/5270465.aspx
http://en.wikipedia.org/wiki/Ftps
http://en.wikipedia.org/wiki/Simple_File_Transfer_Protocol
http://en.wikipedia.org/wiki/FTP_over_SSH
http://en.wikipedia.org/wiki/Sftp
http://en.wikipedia.org/wiki/FTP_over_SSH#FTP_over_SSH_.28not_SFTP.29
http://en.wikipedia.org/wiki/SSH_file_transfer_protocol
http://en.wikipedia.org/wiki/Secure_copy
http://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol
http://en.wikipedia.org/wiki/Rcp_(Unix)
下面简单记下这些协议的区别。

FTP--File Transfer Protocol,是用于传送文件的一个协议,服务端用端口21和客户端建立TCP连接,而对于要传输的数据,服务器用端口20来和客户端传送数据。

TFTP--Trivial File Transfer Protocol,FTP的简化版本,只是从服务端读写文件而已,它甚至都不能列出目录里的内容。它使用的是UDP协议。连接的端口69,但并不是必须的。数据传输初始化为69,但服务端和客户端可以在初始化时选择,并不一定要69。它占用的内存很小,所以可以用于启动时的路由器等这些没有多少资源的场合。

Simple File Transfer Protocol,复杂程度介于FTP和TFTP之间,现在已经很少用了。

以上的协议都是没有加密的,不安全。为了增强安全性,出现了以下的协议。

FTPS,也叫FTP Secure或FTP-SSL,是增加了对SSL和TLS支持的FTP,它分为两种:explicit(显式)和implicit(隐式)。explicit型的就是对客户端来说,需要显式的请求服务端建立安全连接。客户端用FTP命令:AUTH来建立安全连接,用命令:FEAT结束安全连接回到普通的FTP连接。这样的话,普通的FTP客户端一样可以连到FTPS服务端;implicit型的需要客户端支持FTPS才行,用新的端口990(数据端口为989)来建立TCP连接。直接一连上就是FTPS协议。
FTPS和HTTPS类似。

SFTP--SSH File Transfer Protocol,也被叫做Secure File Transfer Protocol,是能文件访问、文件传送、文件管理功能的网络协议。在SSH 2.0里面描述了该协议,但该协议是可以独立于SSH-2的。SFTP服务端使用端口22。

SCP--Secure Copy,和SFTP一样都是基于SSH的协议,它支持文件传送。SCP是在Unix上的RCP基础上的协议,它可以被看成是RCP与SSH的结合--RCP完成文件传送而SSH实现认证和加密。SCP使用端口22。SCP已经被同样基于SSH的SFTP所取代。
比较SCP和SFTP,二者同样基于SSH,都用到了同样的SSH加密算法,文件传送的开销差不多大,传送的速度差不多。SFTP支持的操作更多,例如支持断点续传、列出目录、远程文件删除,更容易开发相应的图形界面,SFTP在各方面都优于SCP。而有些SCP客户端实质上用的是SFTP,只有服务端不支持SFTP时才改用SCP。

FTP over SSH,也被叫做secure FTP,是建立在SSH隧道上的FTP。由于FTP传送时用到了两个TCP连接,这样在SSH上建立隧道就很难,所以这种被用的很少。21端口的控制连接建立在SSH隧道上后,传送时需要建立新的连接,这样就绕过了安全的SSH隧道。

rlogin--remote login、rsh--remote shell、rcp--remote copy,BSD系统里的。rlogin用于远程登录,rsh用于远程执行命令而无需登录,rcp用于远程拷贝。这一套r开头的工具(不止这三个)由于是明文传输,不安全,已经被其它工具替代:scp代替rcp,ssh代替rlogin和rsh。

以上基本是文件传送类的命令,还有远程登录类的,上面也有部分提到。telnet、rlogin、rsh、ssh等。这四个只有ssh是加密的。

顺便说一句,加密到底有无必要。首先要考虑是否需要加密,如果不是重要场合,加密反而画蛇添足。另外如果传送的文件已经加密过,再加密的话就是多余的了。还有,在SSL和TLS层面加密有时候也达不到加密的要求。

Labels: ,

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home