一直以来,网上即时传呼通讯工具都大受网友欢迎,AOL的Instant Messenger、ICQ、Yahoo!的Messenger、MSN的Messenger等都各有自己的用户网络,但由于AOL的商业考虑,令不同公司产品的用户不能互相通讯,甚至有公司投诉AOL妨碍竞争,虽然AOL表示公司希望不同服务间能彼此互操(Interoperate),并交由International Engineering Task Force协助制订业界标准,名为Instant Messenger and Presence Protocol(IMPP),但却迟迟未有定案,面对这个市场需要,一班开放程式人士组成Jabber.org,运用两年多时间发展开放程式的即时通讯系统,并推出伺服器软件。有关的软件更将整合在Mozilla.org的倾谈软件客端ChatZilla,相信会带来市场一定的冲击。
现时任何个人或机构也可以使用Jabber.org的开放程式软件架设即时通讯伺服器,由于使用分布运算形式,其运作原理和电邮伺服器相若,只要在人名后加上xxx@msn、xxx@yahoo、xxx@aol,它就把讯息传到有关的系统,突破以往的通讯界限,真正把即时通讯的市场全面开放。
Jabber是聊天界的一支生力军,可以和美国在线实时讯息工具、ICQ以及YAHOO通实现性能、操作兼容。在聊天工具的世界里,你也可以自己说了算。当然这不像给某个软件换皮肤那么简单,而是在程序技术允许范围内,你可以根据自己的要求和特点,大大修改程序,从而添加个性化的功能。Jabber的程序设计采用了XML语言,完全公开源代码,对于熟悉网络编辑语言的发烧友来说,用这个软件绝对乐趣无穷。
--------------------------------------------------------------------------------
Fun-FreeBSD 回复于:2003-05-30 17:40:11
[quote:92a28640b9]JABBERD管理指南
中文翻译:Fun-FreeBSD
版权所有 & 2000,2001,2002 Jabber软件基金会(Jabber Software Foundation)
这些资料只能在遵从开放源代码协议(Open Publication License),v1.0版本或之后的版本下发行(最新版本请察看http://www.opencontent.org/openpub/)。
概要
如何安装,配置和管理jabberd服务器。
--------------------------------------------------------------------------------
目录
介绍
背景
核心功能
规划Jabber应用
系统需求
操作系统
硬件
软件
带宽
DNS
端口和防火墙
服务器安装
基本配置
配置主机名
文件系统设置
管理功能
授予管理权限
察看在线用户
发送广播信息
企业内部互联网设置
禁用“服务器-服务器”通讯
禁用注册新用户功能
更新服务器
NAT设置
安全
使用SSL安全连接
安全认证
获得帮助
报告漏洞和提供补丁
介绍
这篇文章介绍如何安装,配置和管理jabberd.
Jabberd服务器是最早的基于Jabber协议的开放源代码服务器,是在一个公司内部或公用IM系统中最流行的Jabber服务器。然而,还有很多其他的Jabber服务器,包括一些开放源代码项目(参看http://www.jabberstudio.org/)和商业提供者,如i3connect, Jabber, Inc., Jabcast, and Tipic。作为Jabber协议的管理者,Jabber软件基金会(JSF)不会区分不同软件的实现方式。JSF注重 的是Jabber的发展,和Jabber技术的传播。
强烈推荐Jabberd相关支持人员,服务器管理员订阅JADMIN邮件列表。关于Jabber的更多信息,请参考Jabber Software Foundation网站。
背景
Jabber项目作为自由和开放源代码项目,是由Jeremie Miller在1998年开始开发的,并作为其它传统专有IM系统,像AIM,ICQ,MSN和YAHOO的替代品 ,1999年在Slashdot上发布了第一个公告。Jabber项目的核心是jabberd服务器,这个模块化服务器是用C写成,并使用GNU pth线程库。 经过一年的开发,Jabberd 1.0在2000年5月发布。2000年10月发布了1.2版,之后2001年1月发布1.4版,2001年4月发布1.4.1版,2002年2月发布1.4.2版。Jabberd开发小组正在积极修补1.5开发版,并将最终作为2.0版在2003年的某个时候发布。Jabberd服务器完全兼容于Jabber Software Foundation协议。
核心功能
总体上,Jabber服务器运行下面这些服务:
允许一个来自兼容的客户端或者服务器端组件的TCP连接
管理从客户端和组件进入和发出的XML流
分发核心Jabber数据类型(<message/>, <presence/>, and <iq/>)到认证客户和组件
为连接的客户维护会话信息(通常是IM用户)
如果需要,打开和其他服务器的合法连接,路由信息
为组件储存信息,尤其是IM用户,包括每一个用户的联系人和一些客户属性
附加属性--像群聊,用户目录,和与其他IM系统(AIM, ICQ, MSN, and Yahoo)交互-- 不是当前核心功能的一部分,因此没有写进这个HOWTO。 请察看“Jabber Component HOWTO”进一步获得关于如何添加这些属性到你的Jabber服务器的信息。
规划Jabber应用
在安装任何软件以前,尤其是一个重要的网络架构组件,像Jabber服务器,确定你的需求和规划你的应用是很重要的。 现在Jabber服务器可以被广泛应用于下列环境中,包括:
小的开发团队
小型到中型公司的企业内部网
大学和学院
基于web的团体
Internet提供商
大公司的企业内部网
如何使用你的Jabber服务器,将毫无疑问的影响你的决定,包括硬件,操作系统,带宽,网络配置,防火墙,安全,数据库连接,等等。 你要在开始的时候做出一个主要的决定,要在什么操作系统下运行Jabber。Jabberd被设计用来在Linux和其他多种不同风格的Unix (包括AIX, Solaris, HP-UX, BSD, 和 Mac OS X)上运行。虽然jabberd已经被移植到到了Windows上,但是这个移植版本运行的并不好,不提倡使用。 (这篇文章没有收录Windows的移植版本;要察看详细信息,请参考Jabberd Windows HOWTO.)
另外,考虑一下你要提供的服务的带宽也是很重要的。需要提供单一的点对点的系统,还是群聊系统?想让你的用户和外界传统的IM系统通讯吗?像AIM,ICQ,MSN,YAHOO。这些服务不是Jabberd缺省的一部分,你必须提供组件。 虽然这增加了用户的使用功能,但也使你的规划更复杂,管理更困难。 (详细信息,请参考Jabber Component HOWTO.)
最后,想一想如何把Jabber集成到已经存在的网络中。例如,你想每一个用户的账号使用他们的电子邮件地址或者网络登录名,或者你想用已经存在的用户数据库(例如,你们公司的LDAP数据库),而不是缺省的文件系统存贮方法。满足你的 这些需求,可能会带来更大的复杂性(详细信息,参考即将出炉的Jabberd Database Integration HOWTO.)
系统需求
这一部分HOWTO定义系统需求。
操作系统
虽然Jabberd主要是GNU/Linux下开发的,但是他已经在不同的操作系统下测试过了。 1.4.2版可以运行在以下系统中:
AIX
FreeBSD
HP-UX
IRIX
Linux
Mac OS X
NetBSD
OpenBSD
Solaris 2.6, 7, 8
上面列出的系统不像Linux使用得那么广泛,所以安装的时候可能会遇到一些麻烦。特殊的需求和说明,在这篇文章中会标出。通常,非GUN Unix系统需要GNU make,而不是你自己系统里的make。当你在非GNU系统上运行Jabberd时,GNU make将会解决你的大部分问题,.
注意: 这篇文章没有讲关于Windows版的jabberd 1.4.2。请参考Jabberd Windows Guide察看详细信息。
硬件
硬件需求决定于你所预期的用户数。 以作者的经验,大多数jabberd都是用在像导航项目,内部网站,开发平台,等等这些上面,大约100到1000人。 由于同时在线的人数不会超过50%(例如,jabber.org的服务器通常只有2%的用户在线),我们可以适当的评估出大概会有500人同时在线。 对于这种情况,硬件需求是最小的:也许一个奔腾级的工作站加512M内存就够了。
如果客户端数量巨大,那需要做一些调整。做过一个试验,jabberd服务器可以达到10,000个用户同时在线,它是被设计用来从概念上证明,一台非工业级的服务器也可以提供非常大数量的服务。 例如,根据你所使用的操作系统,你可能需要修改OS级别的设置来限制同一个IP的同时连接数量,或者操作系统的file descriptor. (对于Linux,缺省是限制到1024 file descriptors,这些可以通过proc设置)。 由于大量用户的情况在通常的规划之外,我不再讨论他们,但是我也希望在下一个修订版中添加更多关于可缩放服务器的信息。
软件
Jabberd需要下列软件:
GNU pth v1.4.0。请注意,GNU pth 1.4.1与jabberd 1.4.2是不不兼容的,所以如果 你的系统里已经安装了pth 1.4.1,请先删除它,然后安装pth 1.4.0!如果你的系统里没有安装GNU pth,jabberd安装程序会自动安装它 。
GNU make。GNU make是GNU/Linux操作系统标准的一部分,但是在非GNU系统中,像FreeBSD和Solaris中必须单独安装。不像GNU pth,你必须自己安装GNU make(jabberd不会为你安装它)。
OpenSSL。这是可选的。如果你想让你的客户使用SSL连接,你必须在安装jabberd 1.4.2以前安装它。
带宽
通常情况下,一个Jabber客户端连接需要大概15字节/秒。这意味着1000个用户将会消耗15kbs的带宽,10000个用户将会消耗150kbs的带宽, 依次类推。注意,这是指同时在线的用户数,不是注册的用户数(当前用户数取决于你自己的规划,但是一般对于ISP只有少于5%的用户同时在线,而在企业中只有少于50%的用户同时在线。请 以此为参考。
DNS
像下面描述的那样,也许你想用全称域名(FQDN)来运行jabberd服务器。这不是在每种情况下都是必需的,但是如果你想和其他jabber服务器通讯,或者 你想让局域网以外的用户访问服务器,那服务器的主机名(hostname)必须是一个全称域名(fully-qualified domain name)。这同样适用于你想用jabberd服务器提供 相关服务的子域(例如,一个Jabber用户的目录或会议服务)。因此你必须要求系统管理员在DNS域名表中添加你的主机名和相关的子域。
端口和防火墙
IANA规定了Jabber使用的两个端口:一个用于“客户-服务器”通讯(端口5222),另一个用于“服务器-服务器”通讯(端口5269)。 如果想让jabber客户端能够和服务器通讯,必须保证TCP 5222端口是开着的。 如果想让Jabber服务器能够向其他jabber服务器发送消息,必须保证TCP 5269端口是开着的。另外,如果需要为其他IM系统安装网关,需要打开指定的与其他系统通讯的端口。请参考README或者其他文档来确定所要安装的网关软件需要打开的端口(例如,MSN的网关端口1863是)。
一些Jabber服务器在公司内部网或者防火墙内使用,如果不想和组织外部的Jabber服务器通讯,你当然不想打开这些端口。 在其他情况下(例如,公司有远程雇员),可以打开标准jabber客户端端口5222(或者5223端口来使用SSL连接),这样防火墙之外的用户也可以和服务器通讯了。另外,如果想让用户和外部服务器用户通讯,需要打开标准jabber服务器端口5269来实现“服务器-服务器”的通讯。一种更复杂的配置是一个服务器在防火墙内部供内部用户使用,一个服务器在DMZ区供外部用户使用, 通过5269端口在两个服务器之间建立“服务器-服务器”的信任通道(通过在防火墙的“控制列表”中只打开这两个服务器之间的5269端口通讯).
如果在Jabber服务器和任何用户之间有防火墙,请保证防火墙和jabber服务器之间的超时设置是恰当的,这是很重要的,尤其在用户使用TCP 5222端口连接到服务器的时候。因为当用户打开一个会话的时候,要保证TCP端口是一直开着的,为了优化HTTP设置的防火墙超时设置可能过早的断开Jabber用户的连接。
服务器安装
1.4.2版可以从http://jabberd.jabberstudio.org/downloads/下载。这个路径包括其他平台的安装包(Solaris包,RPM包,deb包等等)。注意,这 些包只包括核心jabberd服务器 -- 附加组件在其他地方 (参考Jabber Component Admin Guide)。
因为一些管理员在安装这些包的时候遇到一些问题,所以我们推荐使用源代码包安装。你只需要下载这个文件http://jabberd.jabberstudio.org/downloads/jabber-1.4.2.tar.gz。然后按照下面的 步骤安装:
把文件保存到/tmp/ (或者任何你选择的目录)。
创建一个目录,作为你想安装jabber的路径/path/to/jabber/(通常使用/usr/local/jabber/)。注意:你可能需要作为root用户 登录才能创建这个目录
输入 mv /tmp/jabber-1.4.2.tar.gz /path/to/jabber/
输入 cd /path/to/jabber/
输入 gzip -d jabber-1.4.2.tar.gz
输入 tar -xvf jabber-1.4.2.tar (这会解压到jabber-1.4.2/目录,包括各种文件和子目录)
输入 cd jabber-1.4.2/
输入 ./configure
安全提示
如果想让客户使用SSL连接,需要重新编译:./configure --enable-ssl (注意,如果不是从源代码安装的,那就不能在SSL模式下运行)。
输入 make
操作系统提示
如果正在运行Solaris或其他非GNU系统,请保证使用GNU make编译,而不是原有的make。必须输入gmake,而不是make。
Jabberd 1.4.2应该已经安装到你的机器上了。如果安装过程中遇到什么困难,请发送消息到 JADMIN mailing list,描述你的问题。包括操作系统,相关软件版本等完整的信息。
测试#1
好,该测试jabber是不是安装到你的机器上,并能正常运行了。我们不是测试所有的功能,只是看看安装是否成功。为了测试,按照下面的步骤做:
输入 cd /path/to/jabber/ (你安装jabber的路径)
输入 ls -l jabberd/jabberd 察看jabber守护进程的权限。输出类似于:
-rwxr-xr-x 1 user group 675892 Feb 25 2002 jabberd/jabberd
输入 ./jabberd/jabberd 来启动jabber守护进程。这将用缺省的主机名“localhost”运行jabber服务。你应该看到 下面一行输出:
20020923T02:50:26: [notice] (-internal): initializing server
注意
如果在启动服务的时候,看到错误信息"Configuration parsing using jabber.xml failed",有两种原因导致这个错误。第一个原因是指定的 配置文件不存在;解决的办法是输入 ./jabberd/jabberd -c /path/to/jabber.xml 来指定配置文件的全路径。 另一个原因是虽然这个文件存在,但是包含错误的XML代码;解决办法是修复XML文件(例如,粘贴整个jabber.xml代码到xml.com网站的XML语法检查器)。
输入 telnet localhost 5222 连接到服务器,可以看到下面的信息:
Trying 127.0.0.1...
Connected to your-machine-name.
Escape character is '^]'.
现在打开XML流,粘贴下面的XML代码到telnet窗口:
<stream:stream
to='localhost'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'>
会立刻收到回复:
<?xml version='1.0'?> <stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='some-random-id' xmlns='jabber:client' from='localhost'>
祝贺你!你的jabber服务器已经能正常工作了。
关闭XML流,粘贴下面的XML代码到telnet窗口:</stream:stream>
杀死进程,或者只是简单的在控制台窗口输入^C来停止服务。
基本配置
现在Jabberd已经正确安装并能在你的机器上运行了。现在,我们将通过下面两步来检验服务器的即时消息功能:
配置服务器的主机名(hostname)。
为XML存贮设置存贮目录(spool)。
这两步在下面详细讨论。一旦你完成了这两步,我们将通过另一个测试程序验证你所作的是否正确。
配置主机名(hostname)
你可以通过编辑jabber.xml文件改变你的配置,这个文件在/path/to/jabber/目录下。jabber.xml文件包含详细的描述,帮助你明白每一个选项的作用。然而我们现在所要做的只是改变主机名。打开jabber.xml文件, 做如下编辑:
<host><jabberd:cmdline flag="h">localhost</jabberd:cmdline>
现在需要决定用什么样的主机名。可以有下面这些选择:
继续使用“localhost”不变。如果只是为了开发目的,这没有什么问题。但是不能从除了这台机器以外,其他任何机器上连接到这台服务器。
改为这台机器的IP地址。这在局域网里能很好的运行。但这也是不提倡的,尤其是需要连接到其他jabber服务器,或者运行附加组件。
改为全称域名(FQDN)。这是更可取的做法,因为这样jabber能更好的运行 -- 尤其是运行附加组件或者和其他jabber服务器连接。(“服务器-服务器”的通讯使用一种叫做“回叫”(dialback)的功能,来保证不被欺骗。“回叫”(dialback)协议依赖DNS, 所以如果主机名不使用FQDN,将不能和其他Jabber服务器通讯)。尽可能使用FQDN,例如,jabber.mycompany.com.
要配置Jabber服务器的主机名,只需要简单的把'localhost'改为'jabber.mycompany.com'或者任何想用的名字。然后保存jabber.xml文件。
文件系统设置
像上面提到那样,Jabber的一个核心功能是存储用户相关的的信息。这包括用户的认证信息(用户名和密码)和联系列表(在jabber中叫roster,名册的意思);有时候这些信息也包括用户的vCard和不同的客户属性。缺省这些信息存 放在/path/to/jabber/spool/的一个子目录中,目录名相对应上面设置的主机名。所以,如果配置jabber.xml,用主机名jabber.mycompany.com运行服务,那你必须创建一个/path/to/jabber/spool/jabber.mycompany.com/目录。另外,这个目录对于运行jabberd进程的用户必须是可写的。一旦完成了这些设置,Jabberd会在这个目录为每一个注册用户保存一个与用户同名的XML文件(类似‘username.xml’)。
好了,现在开始测试这些基本配置。
测试#2
因为已经配置了主机名(建议使用FQDN),而且配置了XML存储,现在可以做一些在测试#1中不能做的测试:(1) 从另一个机器连接上来;(2)注册一个账号;(3)给另一个用户发送消息。
为了测试,仍然telnet到客户端,这样你就明白XML是怎么向服务器发送消息的。
在/path/to/jabber/目录中,输入 ./jabberd/jabberd -D来启动Jabber守护进程调试模式。你将会看到很多调试信息在屏幕上滚过。
注意
现在已经配置了主机名使用FQDN,可能会收到一条错误信息"jabberd is unable to listen on ports 5222 and 5269"。为了纠正这个错误,需要配置服务器绑定一个指定的IP地址。首先,在jabber.xml文件<pthcsock/>段,把<ip port="5222"/>改为<ip port="5222">你的IP地址</ip>,然后,在<dialback>段,把<ip port="5269"/>改为<ip port="5269">你的IP地址</ip>。
在这台机器上打开一个终端,输入telnet 主机名 5222,这里'主机名'是指在jabber.xml文件中的主机名(建议使用FQDN)。你将再一次看到:
Trying 127.0.0.1...
Connected to your-machine-name.
Escape character is '^]'.
通过粘贴下面的XML代码段到telnet窗口,来打开一个XML数据流:
<stream:stream
to='yourhostname'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'>
应该马上从服务器收到回复:
<?xml version='1.0'?> <stream:stream xmlns:stream='http://etherx.jabber.org/streams' id='some-random-id' xmlns='jabber:client' from='yourhostname'>
发送下面的XML代码来看看需要为注册用户提供什么信息:
<iq id='reg1' type='get'>
<query xmlns='jabber:iq:register'/>
</iq>
应该收到下面的回复,告诉你要注册一个用户需要提供名字,email地址,帐号,和密码。
<iq id='reg1' type='result'>
<query xmlns='jabber:iq:register'>
<instructions>
Choose a username and password
to register with this server.
</instructions>
<name/>
<email/>
<username/>
<password/>
</query>
</iq>
接下来发送注册信息到服务器:
<iq id='reg2' type='set'>
<query xmlns='jabber:iq:register'>
<username>jabberuser</username>
<password>secret</password>
<name>myName</name>
<email>[email protected]</email>
</query>
</iq>
如果一切顺利,将会收到下面的XML代码表示注册成功:
<iq id='reg2' type='result'/>
如果spool存储目录设置得不正确,将会收到下面的XML代码:
<error code='500'>Password Storage Failed</error></iq>
同样的,如果账户已经存在,会收到下面的XML代码:
<error code='409'>Username Not Available</error></iq>
现在已经注册了一个账号,可以登录了。首先,问一下服务器登录需要什么信息:
<iq id='auth1' type='get'>
<query xmlns='jabber:iq:auth'>
<username>jabberuser</username>
</query>
</iq>
服务器会回答需要哪些认证信息:
<iq id='auth1' type='result'>
<query xmlns='jabber:iq:auth'>
<username>jabberuser</username>
<password/>
<digest/>
<resource/>
</query>
</iq>
可以选择"password" (明文密码)或"digest" (加密密码);为了方便,我们选择明文密码。还必须为这个连接指定"resource"(资源)。发送下面的XML代码:
<iq id='auth2' type='set'>
<query xmlns='jabber:iq:auth'>
<username>jabberuser</username>
<password>secret</password>
<resource>telnet</resource>
</query>
</iq>
服务器会发送信息,确认认证成功:
<iq id='auth2' type='result'/>
最后,发送'presence'信息,让服务器知道你已经在线并准备接收消息:
<presence/>
服务器将会马上发给你一个欢迎信息:
<message from='yourhostname' to='jabberuser@yourhostname'>
<subject>Welcome!<subject>
<body>
Welcome to the Jabber server at localhost -- we
hope you enjoy this service! For information about
how to use Jabber, visit the Jabber User's
Guide at http://docs.jabber.org/
</body>
</message>
如果需要,可以通过jabber.xml文件的<welcome/>段修改这个欢迎信息。
接下来,从另一台机器上重复第3步到第8步(确保使用"jabberuser"以外的用户!)。如果主机名和DNS配置正确,将会和你在这台服务器上一样能够正常运行。
测试结束,发送下面的XML代码到telnet窗口:
<message to='jabberuser@yourhostname'>
<body>hi!</body>
</message>
将会看到和第一个测试中相同的XML代码,只是多了一个"from"地址来标识这台服务器的Jabber ID。
恭喜!你的Jabber服务器已经运行得很好了!
注意
发送信息的时候,可能碰到错误信息"sending name is invalid",这是一个DNS错误.确认能从网络的其他地方PING通 这台Jabber服务器,并且这台服务器有一个合法的DNS记录。另外,也许可以在/etc/hosts文件里添加这台主机的记录。
现在已经通过了测试,在telnet窗口粘贴</stream:stream>关闭会话,杀死进程,停止服务器,或者直接在启动进程的窗口按^C。
管理功能
授予管理权限
Jabber服务器可以通过设置jabber.xml文件的<admin>部分,授予某些用户一定的管理权限。有三种主要的管理权限:
从特定的管理地址admin@yourjabberhostname读取消息的权限。
察看所有在线用户的权限。
向在线用户发送广播消息(比如,提醒用户服务器重新启动)或者给每一个登录用户发送“每日提示”的权限。
前两个权限可以通过在jabber.xml文件中<admin>段的<read>部分添加用户来实现,第三个权限可以通过在<write>部分实现。这里有个例子,使用skakespeare.com服务器:
<admin>
<read>[email protected]</read>
<read>[email protected]</read>
<write>[email protected]</write>
</admin>
在这个例子中,Hamlet, Macbeth, and King Lear都可以读取发送给管理地址的消息,察看在线用户,但是只有King Lear能够发送广播消息和每日提示("write"权限包括"read"权限)。
如果你想获得所有的管理功能,把Jabber ID添加到jabber.xml文件的<admin/>段。
察看在线用户
要想察看所有在线用户,作为管理员登录(在jabber.xml文件中定义的管理员),通过telnet或者可以发送XML代码的客户端,发送下面任何一段代码:
<iq type="get" to="yourhostname">
<query xmlns="jabber:iq:admin">
<who/>
</query>
</iq>
或:
<iq type='get' to='yourhostname/admin'>
<query xmlns='jabber:iq:browse'/>
</iq>
发送广播消息
要想给所有在线用户发送广播消息,作为管理员登录(在jabber.xml文件中定义的管理员),然后发送下面的XML代码:
<message to="yourserver.com/announce/online">
<body>This is a broadcast message!</body>
</message>
企业内部互联网设置
相对于那些传统的IM系统,在公共网络上传送敏感消息,Jabber是一个绝好的解决方案。很多公司可以通过在防火墙或NAT后面运行Jabber来限制访问。
禁用“服务器-服务器”通讯
可以通过禁用“服务器-服务器”之间的通讯,来关闭Jabber服务和Internet的连接。有很多方法可以达到这个目的:
在防火墙上关闭5269端口,这是Jabber的“服务器-服务器”通讯端口。(也可以关闭“客户-服务器”的端口5222。)
在jabber.xml文件中注释掉下面几行(这些代码段控制着DNS解析和“服务器-服务器”连接):
<service id="dnsrv">
<host/>
<load><dnsrv>dnsrv/dnsrv.so<dnsrv><load>
<dnsrv xmlns="jabber:config:dnsrv">
<resend service="_jabber._tcp">s2s<resend>
<resend>s2s<resend>
<dnsrv>
<service>
and:
<service id="s2s">
<load><dialback>dialback/dialback.so<dialback><load>
<dialback xmlns='jabber:config:dialback'>
<ip port="5269"/>
<dialback>
<service>
现在,Jabber服务器不能和其他服务器通讯了。
禁用注册新用户功能
默认情况下,任何人都可以在服务器上注册账号(账号注册被Jabber协议控制着,这和电子邮件的SMTP协议是不同的)。很多Jabber服务器管理员想禁止这个功能。为了做到这一点,在jabber.xml文件中注释掉 下面几行:
<!--
<register notify="yes">
<instructions>
Choose a username and password
to register with this server.
<instructions>
<name/>
<email/>
<register>
-->
and:
<!--
<mod_register>./jsm/jsm.so</mod_register>
-->
显然,如果禁用了新用户注册功能,你需要其他的账号生成功能,在下面的章节中将会讨论。
更新服务器
Jabberd服务器将会查找软件的更新版本。如果Jabber服务器在防火墙的后面,将会收到下面的错误信息:
<presence
from='[email protected]/1.4.2'
to='yourhostname'
type='error'
iperror=''>
<error code='502'>Unable to resolve hostname.</error>
</presence>
这个错误只是个警告;不意味着Jabberd服务器已经坏掉。只是不能连接到update.jabber.org。如果想禁用这个特性,把更新服务器改成你的主机名,或者注释掉下面这几行:
<!--
<update><jabberd:cmdline flag="h">localhost</jabberd:cmdline></update>
-->
NAT 设置
如果想让外部用户访问服务器,而且服务器放在NAT防火墙内,那么需要正确的配置jabberd和NAT,需要做以下几步:
在jabber.xml文件中,添加内部主机名和外部主机名(NAT上的),确保这两个主机名在一行里:
<host>internal-jabber-hostname<host><host>external-nat-hostname<host>
设置合适的防火墙规则,以便从外部可以看到jabber服务器,也可以从内部看到jabber服务器的外部地址。
安全
安全在Jabber通讯中是很重要的,Jabber开发队伍对安全也是格外重视的。在Jabber1.5/2.0版本中将会包含比现在1.4.2版本更多强有力的安全和认证机制。现阶段 ,出于安全考虑,可以做的就是使用SSL,使用digest或者zero-knowledge认证(或在LDAP中存储用户认证信息),以及使用支持端到端加密的PGP或者GPG。前两 者将会在这篇文章中讨论。
使用SSL安全连接
Jabberd 1.4.2 允许在客户和服务器之间使用SSL建立安全连接(“服务器-服务器”之间的SSL安全连接现在还不支持,但是会在1.5/2.0中添加这部分功能)。要做到这一点,首先必须安装OpenSSL,然后用./configure --enable-ssl从源文件重新编译。(如果已经运行jabberd一段时间了,你决定使用SSL,可以输入make clean,然后使用 --enable-ssl参数重新编译。)
下一步是生成证书和密钥。可以使用下面的shell脚本:
OPENSSL=/usr/bin/openssl
## This generates the cert and key
## The key will be valid for 3650 days.
## Be sure to enter the FQDN of your Jabber
## server as the "Common Name".
$OPENSSL req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out key.pem
## This will remove the passphrase
$OPENSSL rsa -in privkey.pem -out privkey.pem
## Put it all together
cat privkey.pem >> key.pem
## Cleanup
rm privkey.pem
最后,修改jabber.xml文件,添加SSL的配置信息,参照下面进行配置:
<pthcsock>
...
<ip port="5222"/>
<ssl port="5223">your-ip-address</ssl>
...
</pthcsock>
and:
<io>
...
<ssl>
<key ip="your-ip-address">/path/to/cert_and_key.pem</key>
</ssl>
...
</io>
安全认证
1.5/2.0版本的jabberd将会使用SASL支持更多的安全认证机制。在这之前,最安全的事是禁用明文密码。明文密码通常不会从客户端发送,但是最好在服务器上禁用明文密码。可以通过从jabber.xml文件中注释掉下面这一行达到这个目的:
<!--
<mod_auth_plain>./jsm/jsm.so</mod_plain>
-->
如果一些用户偶尔需要用明文密码,至少要保证明文密码是最后一个选项,可以通过改变Jabber会话管理器中认证模块的加载顺序做到这一点:
<mod_auth_0k>./jsm/jsm.so</mod_0k>
<mod_auth_digest>./jsm/jsm.so</mod_digest>
<mod_auth_plain>./jsm/jsm.so</mod_plain>
注意:为了增强安全性,禁用新用户注册功能。参看企业内部互联网的内容。
获得帮助
有两种方法可以获得安装和配置的帮助:
为了获得实时的帮助,打开你喜欢的Jabber客户端,加入到[email protected]聊天室(聊天室的名字是"jdev",会议服务器地址是"conference.jabber.org"),或其他jabber服务器,参加正在进行的讨论。
像上面提到的那样,订阅JADMIN mailing list邮件列表。
报告漏洞和提供补丁
如果发现了一个jabber服务器的漏洞,请到http://www.jabberstudio.org/projects/jabberd/bugs/报告漏洞。请详细描述所使用的平台和错误信息。
如果发现了一种解决漏洞的方法,请把补丁以及详细描述发送到邮件列表jabberd development mailing list。但是请注意,1.4.2版本已经停止开发了,请多提供1.5/2.0版本的帮助。
[/quote:92a28640b9]
|