构建基于Linux下支持ssl的IRC服务器

一、概述
关于技术讨论沟通,于是想到使用IRC。IRC是英文“Internet Relay Chat”的缩写,它是一种即时交谈工具,是目前全球最流行的在线聊天方式之一。它的特点是速度快,方便的自建和使用个人聊天室,同时开20多个小窗与人 聊天不影响速度,强大的聊天室管理、文件传送功能,是全球网友网上交流的最佳选择。所以我们决定使用开源的ircd-hybrid,最新发布的源代码

可以在http://sourceforge.net/ 网站获得。而IRC聊天则需要使用IRC专门的聊天软件在win下自然推荐mIRC,目前汉化版有6.2对

ssl支持的很不错。想mIRC支持SSL只需要下载安装Win32OpenSSL支持库,下载地址为

http://www.shininglightpro.com/download/Win32OpenSSL_Light-0_9_7m.exe

二、安装前的准备
首先,在服务器上推荐选择完全安装方式安装好Linux系统,推荐使用Redhat Linux 8和9以上的操作系统。
其次,获得ircd-hybrid软件包。
以root用户登陆Linux平台服务器,并下载最新的源代码到/home/irc目录
引用:#adduser ircadmin
#cd /home/ircadmin
#wget http://puzzle.dl.sourceforge.net ... cd-hybrid-7.2.3.tgz


三、安装配置的具体步骤
首先要确定系统中是否安装有以下基础包:
gcc libc-dev make openssl ssl-dev本文以irc.test.com域IRC服务器的建立为例,来详细介绍ircd-hybrid系统在Linux服务器上的构建。

PS:安装前要注意一个问题
因为Red Hat Linux 8.0/9.0 的 krb5-devel 套件把 kerberos 的 include file 放到了 /usr/kerberos/include 这里

,而不是一般位置的 /usr/include 这个目录。而 openssl 支援 kerberos,因此在 compile 使用到 openssl 的程序就很容易发

生找不到kerberos 的 include file 的错误。
而解决办法很简单,首先要确定krb5-devel 以及 krb5-libs等包必须安装在系统上,而不是根本没安装,接下来建立以下
symbolic links:
引用:ln -s /usr/kerberos/include/com_err.h /usr/include/
ln -s /usr/kerberos/include/profile.h /usr/include/
ln -s /usr/kerberos/include/krb5.h /usr/include/


装备编译安装ircd-hybrid:
引用:#cd /home/ircadmin/
#tar ircd-hybrid-7.2.3.tgz
#cd ircd-hybrid-7.2.3
#./configure --enable-openssl(为了起用支持ssl)
#make
#make install


以上为解压编译安装,约五分钟后可完成,接下来可根据需要配置ircd.conf文件。我们可以根据源代码压缩包提供的配置文件为实

例,在此文件基础上直接编辑修改,这样就可以省去很大的配置工作。

引用:cp etc/example.conf /usr/local/ircd/etc/ircd.conf


生成证书和key:
引用:#openssl genrsa -out /usr/local/ircd/etc/rsa.key 2048
Generating RSA private key, 2048 bit long modulus
.............................................................................+++
openssl rsa -in /usr/local/ircd/etc/rsa.key -pubout -out /usr/local/ircd/etc/rsa.pub
chmod 0600 /usr/local/ircd/etc/rsa.key
chmod 0644 /usr/local/ircd/etc/rsa.pub


生成ssl数字证书
引用:#openssl req -new -days 365 -x509 -key /usr/local/ircd/etc/rsa.key -out /usr/local/ircd/etc/cert.pem
/usr/local/ircd/etc/cert.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:MIS
Locality Name (eg, city) []:BeJing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:test001
Organizational Unit Name (eg, section) []:irc.test.com
Common Name (eg, YOUR name) []:irc.test.com
Email Address []:[email protected]

#chown -R ircadmin.ircadmin /usr/local/ircd/


修改配置文件
vi /usr/local/ircd/etc/ircd.conf
我就对配置文件关键设置做下简单说明:
引用:#44行修改如下
serverinfo {
       name = "ircd"; #你服务器名称
       sid = "1ST";    #必须按提示说明设置3个安符,其中第一个必须是数字1-9,后两个必须是字母组合,否则ircd服务不能正常启动。
network_name = "MyNet"; #网络信息
network_desc = "This is My Network"; #网络信息描述
       max_clients = 512;
};
#177行修改为如下:
listen {
       flags = ssl; #设置为ssl加密
     port = 7000;   #服务端口
};
#282行可修改为如下:
auth {
        user = "*@*"; #用户@主机允许连接

        password = "myirc"; #设置了话任何用户登陆irc服务器都需要提前输入此密码,也可以不设置,可为加密和非加密模式

        encrypted = no; #登陆密码是否起用加密模式

        spoof = "I.still.hate.packets"; #用语隐藏用户真实IP地址可以起用作为伪装地址
        class = "opers";  #默认即可
        flags = need_password, spoof_notice, exceed_limit, kline_exempt,  
                gline_exempt, resv_exempt, no_tilde, can_flood, can_idle;
};       #默认即可     


#353行可修改为
operator {

        name = "god";  #管理OP(关键)

        user = "*god@*"; #允许任何连接上来带god的名称帐号可切换成管理OP
#        user = "*@127.0.0.1"; #只允许本地连接的管理者

        password = "woshiadmin"; #管理OP的非加密密码

        encrypted = NO; #管理密码是否加密

        class = "opers"; #以下默认即可
        flags = global_kill, remote, kline, unkline, xline,
                die, rehash, nick_changes, admin, operwall;
};
#1133行必须修改
/* REMOVE ME.  The following line checks you've been reading. */
havent_read_conf = 1; #必须注销掉此行。否则不让你运行




以上为简略常用功能设置,详细设置可以根据/home/ircadmin/ircd-hybrid-7.2.3/etc/example.conf文档各项说明具体详细设置,这里不一一说明,以上配置可保证IRC服务器ssl版正常运行。
到这里,ircd-hybrid系统的IRC服务器安装设置已经完成,就可以运行启动ircd服务了。

引用:su - ircadmin
$/usr/local/ircd/bin/ircd
ircd: version hybrid-ru-7.2.3
ircd: pid 1513
ircd: running in background mode from /usr/local/ircd


其中ircd服务不能以root权限运行,必须切换非root用户状态,以上我们是创建了一个ircadmin的系统用户。运行正常后,可以通过ps -er|grep ircd 来查看服务进程。
1513 ?        00:00:00 ircd
这样,服务器就正常启动了ircd服务,开放7000加密端口,成功构建起一台IRC加密版服务器,提供一个交流平台。普通用户登陆IRC服务器,加入频 道后就可以与朋友聊天交流,传送文件等。频道管理员可以实施简单管理功能。同时管理员也可通过mIRC等客户端软件登陆所构建的IRC服务器,获得更为强 大的管理功能,具体使用方法不在这里赘述,大家可以参考相关文献。


本文详细了Linux平台下ircd-hybrid支持SSL加密通讯,提供了一个较完整与清晰的构建流程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章