構建基於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加密通訊,提供了一個較完整與清晰的構建流程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章