Linux – HowTo – IRC-Server mit LDAP-Authentifikation und SSL installieren

Der IRC-Server InspIRCd ist für diesen Einsatz bestens geeignet. InspIRCd ist der einzige IRC-Server, der von Haus aus ein Modul besitzt mit dem sich nur LDAP-User, also Benutzer mit einem Active Directory Account, am IRC-Server anmelden können. Das Modul trägt den Namen m_ldapauth. Während der Installation hat mir das gut geführte Wiki von InspIRCd oft weitergeholfen, aber dennoch will ich euch eine kleine HowTo nicht vorenthalten.

Zuerst installieren wir uns ein wenig Kernelzubehör, …

aptitude install linux-headers-`uname-r` make gcc bzip2 build-essential

… und fügen den User irc hinzu …

useradd -s /bin/false irc

… damit unser IRC-Server nicht unter dem Benutzer root läuft.

Jetzt laden wir den Sourcecode von unserem zukünftigen IRC-Deamon und aktivieren das SSL (m_ssl_gnutls) und LDAP (m_ldapauth) Modul.

cd /usr/src
wget "http://www.inspircd.org/?p=download"
tar xvjf InspIRCd-2.0.0.tar.bz2
cd inspircd
./configure --enable-extras=m_ldapauth.cpp --enable-extras=m_ssl_gnutls.cpp
m_geoip.cpp       = disabled
m_ldapauth.cpp    = enabled
m_ldapoper.cpp    = disabled
m_mssql.cpp       = disabled
m_mysql.cpp       = disabled
m_pgsql.cpp       = disabled
m_regex_pcre.cpp  = disabled
m_regex_posix.cpp = disabled
m_regex_tre.cpp   = disabled
m_sqlite3.cpp     = disabled
m_ssl_gnutls.cpp  = enabled
m_ssl_openssl.cpp = disabled

Nun müssen wir noch ein paar Bibliotheken nachinstallieren, die wir beim Kompilieren benötigen.

aptitude install libssl-dev openssl libldap2-dev ldap-utils gnutls-bin gnutls-dev pkg-config

Mit ./configure erstellen wir das Makefile

./configure
Detecting modules ...............................................
Ok, 142 modules.
Checking for cache from previous configure... not found
Checking operating system version... linux
Checking if stdint.h exists... yes
Checking if strlcpy exists... no
Checking if kqueue exists... no
Checking for epoll support... yes
Checking for eventfd support... no
Checking if Solaris I/O completion ports are available... no
Checking for libgnutls... yes
Checking for openssl... yes
Checking if you are running an ancient, unsupported OS... no (linux)

Welcome to the InspIRCd Configuration program! (interactive mode)
Package maintainers: Type ./configure --help for non-interactive help

*** If you are unsure of any of these values, leave it blank for    ***
*** standard settings that will work, and your server will run      ***
*** using them. Please consult your IRC network admin if in doubt.  ***

Press <RETURN> to accept the default for any option, or enter
a new value. Please note: You will HAVE to read the docs
dir, otherwise you won't have a config file!

Your operating system is: linux (linux)
Your InspIRCd revision ID is r0
.

I have detected the following compiler: g++ (version 4.3)

In what directory do you wish to install the InspIRCd base?
[/usr/src/inspircd/run] -> /usr/local/bin/inspircd
/usr/local/bin/inspircd does not exist. Create it?
[y] y

In what directory are the configuration files?
[/usr/local/bin/inspircd/conf] -> /etc/inspircd

In what directory are the modules to be compiled to?
[/usr/local/bin/inspircd/modules] -> /usr/local/bin/inspircd/modules
/usr/local/bin/inspircd/modules does not exist. Create it?
[y] y

In what directory is the IRCd binary to be placed?
[/usr/local/bin/inspircd/bin] -> /usr/local/bin/inspircd/bin
/usr/local/bin/inspircd/bin does not exist. Create it?
[y] y

In what directory do you want the build to take place?
[/usr/src/inspircd/build] -> /usr/src/inspircd/build
/usr/src/inspircd/build does not exist. Create it?
[y] y

You are running a Linux 2.6+ operating system, and epoll
was detected. Would you like to enable epoll support?
This is likely to increase performance.
If you are unsure, answer yes.

Enable epoll? [y] -> y

Detected GnuTLS version: 2.4
Detected OpenSSL version: 0.9.8g

One or more SSL libraries detected. Would you like to enable SSL support? [n] -> y
Would you like to enable SSL with m_ssl_gnutls? (recommended) [n] -> y

Using GnuTLS SSL module.
Would you like to enable SSL with m_ssl_openssl? [n] -> n
Would you like to check for updates to third-party modules? [n] ->

Pre-build configuration is complete!

Base install path:		/usr/local/bin/inspircd
Config path:			/etc/inspircd
Module path:			/usr/local/bin/inspircd/modules
GCC Version Found:	4.3
Compiler program:		g++
GnuTLS Support:		y
OpenSSL Support:		n

Important note: The maximum length values are now configured in the
	configuration file, not in ./configure! See the <limits>
	tag in the configuration file for more information.

Would you like generate SSL certificates now? [y] -> y
SSL Certificates Not found, Generating..

*************************************************************
* Generating the Private Key may take some time, go grab a  *
* Coffee. Even better, to generate some more entropy if it  *
* is taking a while, open another console and type du / a   *
* few times and get that HD going... Then answer the        *
* Questions which follow. If you are unsure, just hit enter *
*************************************************************

Please enter the organization name
[My IRC Network] -> FooBar IRC-Netzwork

Please enter the unit Name
[Server Admins] -> Foo, Bar

Pleae enter your state (two letter code)
[CA] -> DE

Please enter your country
[Oompa Loompa Land] -> Germany

Please enter the certificate common name (hostname)
[irc.mynetwork.com] -> foo.bar.de

Please enter a contact email address
[oompa@loompa.com] -> foo@bar.de

Generating a 2048 bit RSA private key...
Generating a self signed certificate...
X.509 Certificate Information:
Version: 3
Serial Number (hex): 4c89ce2d
Validity:
Not Before: Fri Sep 10 06:21:53 UTC 2010
Not After: Fri Aug 10 06:21:53 UTC 2012
Subject: C=Germany,O=foo.bar.de,OU=Foo\, Bar,ST=DE,CN=foo.bar.de
Subject Public Key Algorithm: RSA
Modulus (bits 2048):
...
cd:2c:2d:e9:e3:0d:bf:3b:be:6a:d6:fa:dc:27:2a:bb
c1:f8:81:92:e7:41:7f:5d:48:05:cb:00:7e:03:0e:69
5c:24:b3:4a:bb:2d:e1:ff:4b:13:d8:0f:32:59:ea:22
90:f5:4a:09:46:5f:76:73:9a:b3:c0:8e:25:03:27:7b
8b:09:d2:6f:52:3e:f2:8a:3b:21:bc:dc:7f:c1:05:d1
...
Exponent:
01:00:01
Extensions:
Basic Constraints (critical):
Certificate Authority (CA): FALSE
Key Purpose (not critical):
TLS WWW Client.
TLS WWW Server.
Key Usage (critical):
Digital signature.
Key encipherment.
Subject Key Identifier (not critical):
5c:24:b3:4a:bb:2d:e1:ff:4b:13:d8:0f:32:59:ea:22
Other Information:
Public Key Id:
8b:09:d2:6f:52:3e:f2:8a:3b:21:bc:dc:7f:c1:05:d1

Signing certificate...

Certificate generation complete, copying to config directory... Done.

Detecting modules ............................................
Ok, 143 modules.
Locating include directory for package gnutls for module m_ssl_gnutls.cpp... -DVERSION_GNUTLS="2.4.2" (version 2.4.2)
Locating library directory for package gnutls for module m_ssl_gnutls.cpp... -lgnutls   (version 2.4.2)
Writing inspircd_config.h
Writing GNUmakefile ...
Writing BSDmakefile ...
Writing inspircd ...
Writing cache file for future ./configures ...

To build your server with these settings, please run 'make' now.
Please note: for SSL support you will need to load required
modules in your config. This configure script has added those modules to the
build process. For more info please refer to:
https://docs.inspircd.org/
*** Remember to edit your configuration files!!! ***

… und nun kompilieren und installieren wir InspIRCd.

make && make INSTUID=irc install
*************************************
*       BUILDING INSPIRCD           *
*                                   *
*   This will take a *long* time.   *
*     Why not read our wiki at      *
*     https://docs.inspircd.org/      *
*  while you wait for make to run?  *
*************************************
BUILD:              bancache.cpp
BUILD:              base.cpp
BUILD:              channelmanager.cpp
BUILD:              channels.cpp
BUILD:              cidr.cpp
BUILD:              command_parse.cpp
BUILD:              commands.cpp
BUILD:              configparser.cpp
BUILD:              configreader.cpp
BUILD:              cull_list.cpp
BUILD:              dns.cpp
BUILD:              dynamic.cpp
BUILD:              filelogger.cpp
BUILD:              hashcomp.cpp
BUILD:              helperfuncs.cpp
BUILD:              inspircd.cpp
BUILD:              inspsocket.cpp
BUILD:              inspstring.cpp
BUILD:              listensocket.cpp
BUILD:              logger.cpp
BUILD:              mode.cpp
BUILD:              modmanager_dynamic.cpp
BUILD:              modmanager_static.cpp
BUILD:              modules.cpp
BUILD:              server.cpp
BUILD:              snomasks.cpp
BUILD:              socket.cpp
BUILD:              socketengine.cpp
BUILD:              stats.cpp
BUILD:              testsuite.cpp
BUILD:              threadengine.cpp
BUILD:              timer.cpp
BUILD:              user_resolver.cpp
BUILD:              usermanager.cpp
BUILD:              userprocess.cpp
BUILD:              users.cpp
BUILD:              whois.cpp
BUILD:              wildcard.cpp
BUILD:              xline.cpp
BUILD:              modes/cmode_b.cpp
BUILD:              modes/cmode_i.cpp
BUILD:              modes/cmode_k.cpp
BUILD:              modes/cmode_l.cpp
BUILD:              modes/cmode_m.cpp
BUILD:              modes/cmode_n.cpp
BUILD:              modes/cmode_o.cpp
BUILD:              modes/cmode_p.cpp
BUILD:              modes/cmode_s.cpp
BUILD:              modes/cmode_t.cpp
BUILD:              modes/cmode_v.cpp
BUILD:              modes/umode_i.cpp
BUILD:              modes/umode_o.cpp
BUILD:              modes/umode_s.cpp
BUILD:              modes/umode_w.cpp
BUILD:              socketengines/socketengine_epoll.cpp
BUILD:              threadengines/threadengine_pthread.cpp
LINK:               bin/inspircd
BUILD:              commands/cmd_admin.cpp
BUILD:              commands/cmd_away.cpp
BUILD:              commands/cmd_clearcache.cpp
BUILD:              commands/cmd_commands.cpp
BUILD:              commands/cmd_connect.cpp
BUILD:              commands/cmd_die.cpp
BUILD:              commands/cmd_eline.cpp
BUILD:              commands/cmd_gline.cpp
BUILD:              commands/cmd_info.cpp
BUILD:              commands/cmd_invite.cpp
BUILD:              commands/cmd_ison.cpp
BUILD:              commands/cmd_join.cpp
BUILD:              commands/cmd_kick.cpp
BUILD:              commands/cmd_kill.cpp
BUILD:              commands/cmd_kline.cpp
BUILD:              commands/cmd_links.cpp
BUILD:              commands/cmd_list.cpp
BUILD:              commands/cmd_loadmodule.cpp
BUILD:              commands/cmd_lusers.cpp
BUILD:              commands/cmd_map.cpp
BUILD:              commands/cmd_mode.cpp
BUILD:              commands/cmd_modenotice.cpp
BUILD:              commands/cmd_modules.cpp
BUILD:              commands/cmd_motd.cpp
BUILD:              commands/cmd_names.cpp
BUILD:              commands/cmd_nick.cpp
BUILD:              commands/cmd_notice.cpp
BUILD:              commands/cmd_oper.cpp
BUILD:              commands/cmd_part.cpp
BUILD:              commands/cmd_pass.cpp
BUILD:              commands/cmd_ping.cpp
BUILD:              commands/cmd_pong.cpp
BUILD:              commands/cmd_privmsg.cpp
BUILD:              commands/cmd_qline.cpp
BUILD:              commands/cmd_quit.cpp
BUILD:              commands/cmd_rehash.cpp
BUILD:              commands/cmd_reloadmodule.cpp
BUILD:              commands/cmd_restart.cpp
BUILD:              commands/cmd_rules.cpp
BUILD:              commands/cmd_server.cpp
BUILD:              commands/cmd_squit.cpp
BUILD:              commands/cmd_stats.cpp
BUILD:              commands/cmd_time.cpp
BUILD:              commands/cmd_topic.cpp
BUILD:              commands/cmd_unloadmodule.cpp
BUILD:              commands/cmd_user.cpp
BUILD:              commands/cmd_userhost.cpp
BUILD:              commands/cmd_version.cpp
BUILD:              commands/cmd_wallops.cpp
BUILD:              commands/cmd_who.cpp
BUILD:              commands/cmd_whois.cpp
BUILD:              commands/cmd_whowas.cpp
BUILD:              commands/cmd_zline.cpp
BUILD:              modules/m_abbreviation.cpp
BUILD:              modules/m_alias.cpp
BUILD:              modules/m_allowinvite.cpp
BUILD:              modules/m_alltime.cpp
BUILD:              modules/m_auditorium.cpp
BUILD:              modules/m_autoop.cpp
BUILD:              modules/m_banexception.cpp
BUILD:              modules/m_banredirect.cpp
BUILD:              modules/m_blockamsg.cpp
BUILD:              modules/m_blockcaps.cpp
BUILD:              modules/m_blockcolor.cpp
BUILD:              modules/m_botmode.cpp
BUILD:              modules/m_callerid.cpp
BUILD:              modules/m_cap.cpp
BUILD:              modules/m_cban.cpp
BUILD:              modules/m_censor.cpp
BUILD:              modules/m_cgiirc.cpp
BUILD:              modules/m_chancreate.cpp
BUILD:              modules/m_chanfilter.cpp
BUILD:              modules/m_chanhistory.cpp
BUILD:              modules/m_chanlog.cpp
BUILD:              modules/m_channames.cpp
BUILD:              modules/m_channelban.cpp
BUILD:              modules/m_chanprotect.cpp
BUILD:              modules/m_check.cpp
BUILD:              modules/m_chghost.cpp
BUILD:              modules/m_chgident.cpp
BUILD:              modules/m_chgname.cpp
BUILD:              modules/m_cloaking.cpp
BUILD:              modules/m_clones.cpp
BUILD:              modules/m_close.cpp
BUILD:              modules/m_commonchans.cpp
BUILD:              modules/m_conn_join.cpp
BUILD:              modules/m_conn_umodes.cpp
BUILD:              modules/m_conn_waitpong.cpp
BUILD:              modules/m_connectban.cpp
BUILD:              modules/m_connflood.cpp
BUILD:              modules/m_customprefix.cpp
BUILD:              modules/m_customtitle.cpp
BUILD:              modules/m_cycle.cpp
BUILD:              modules/m_dccallow.cpp
BUILD:              modules/m_deaf.cpp
BUILD:              modules/m_delayjoin.cpp
BUILD:              modules/m_delaymsg.cpp
BUILD:              modules/m_denychans.cpp
BUILD:              modules/m_devoice.cpp
BUILD:              modules/m_dnsbl.cpp
BUILD:              modules/m_exemptchanops.cpp
BUILD:              modules/m_filter.cpp
BUILD:              modules/m_gecosban.cpp
BUILD:              modules/m_globalload.cpp
BUILD:              modules/m_globops.cpp
BUILD:              modules/m_halfop.cpp
BUILD:              modules/m_helpop.cpp
BUILD:              modules/m_hidechans.cpp
BUILD:              modules/m_hideoper.cpp
BUILD:              modules/m_hostchange.cpp
BUILD:              modules/m_httpd.cpp
BUILD:              modules/m_httpd_acl.cpp
BUILD:              modules/m_httpd_config.cpp
BUILD:              modules/m_httpd_stats.cpp
BUILD:              modules/m_ident.cpp
BUILD:              modules/m_inviteexception.cpp
BUILD:              modules/m_joinflood.cpp
BUILD:              modules/m_jumpserver.cpp
BUILD:              modules/m_kicknorejoin.cpp
BUILD:              modules/m_knock.cpp
BUILD:              modules/m_ldapauth.cpp
BUILD:              modules/m_lockserv.cpp
BUILD:              modules/m_maphide.cpp
BUILD:              modules/m_md5.cpp
BUILD:              modules/m_messageflood.cpp
BUILD:              modules/m_muteban.cpp
BUILD:              modules/m_namedmodes.cpp
BUILD:              modules/m_namesx.cpp
BUILD:              modules/m_nationalchars.cpp
BUILD:              modules/m_nickflood.cpp
BUILD:              modules/m_nicklock.cpp
BUILD:              modules/m_noctcp.cpp
BUILD:              modules/m_nokicks.cpp
BUILD:              modules/m_nonicks.cpp
BUILD:              modules/m_nonotice.cpp
BUILD:              modules/m_nopartmsg.cpp
BUILD:              modules/m_ojoin.cpp
BUILD:              modules/m_operchans.cpp
BUILD:              modules/m_operjoin.cpp
BUILD:              modules/m_operlevels.cpp
BUILD:              modules/m_operlog.cpp
BUILD:              modules/m_opermodes.cpp
BUILD:              modules/m_opermotd.cpp
BUILD:              modules/m_operprefix.cpp
BUILD:              modules/m_override.cpp
BUILD:              modules/m_passforward.cpp
BUILD:              modules/m_password_hash.cpp
BUILD:              modules/m_permchannels.cpp
BUILD:              modules/m_randquote.cpp
BUILD:              modules/m_redirect.cpp
BUILD:              modules/m_regex_glob.cpp
BUILD:              modules/m_regex_posix.cpp
BUILD:              modules/m_regonlycreate.cpp
BUILD:              modules/m_remove.cpp
BUILD:              modules/m_restrictchans.cpp
BUILD:              modules/m_restrictmsg.cpp
BUILD:              modules/m_ripemd160.cpp
BUILD:              modules/m_rline.cpp
BUILD:              modules/m_sajoin.cpp
BUILD:              modules/m_sakick.cpp
BUILD:              modules/m_samode.cpp
BUILD:              modules/m_sanick.cpp
BUILD:              modules/m_sapart.cpp
BUILD:              modules/m_saquit.cpp
BUILD:              modules/m_sasl.cpp
BUILD:              modules/m_satopic.cpp
BUILD:              modules/m_securelist.cpp
BUILD:              modules/m_seenicks.cpp
BUILD:              modules/m_serverban.cpp
BUILD:              modules/m_services_account.cpp
BUILD:              modules/m_servprotect.cpp
BUILD:              modules/m_sethost.cpp
BUILD:              modules/m_setident.cpp
BUILD:              modules/m_setidle.cpp
BUILD:              modules/m_setname.cpp
BUILD:              modules/m_sha256.cpp
BUILD:              modules/m_showwhois.cpp
BUILD:              modules/m_shun.cpp
BUILD:              modules/m_silence.cpp
BUILD:              modules/m_spanningtree/addline.cpp
BUILD:              modules/m_spanningtree/away.cpp
BUILD:              modules/m_spanningtree/cachetimer.cpp
BUILD:              modules/m_spanningtree/capab.cpp
BUILD:              modules/m_spanningtree/compat.cpp
BUILD:              modules/m_spanningtree/delline.cpp
BUILD:              modules/m_spanningtree/encap.cpp
BUILD:              modules/m_spanningtree/fjoin.cpp
BUILD:              modules/m_spanningtree/fmode.cpp
BUILD:              modules/m_spanningtree/ftopic.cpp
BUILD:              modules/m_spanningtree/hmac.cpp
BUILD:              modules/m_spanningtree/main.cpp
BUILD:              modules/m_spanningtree/metadata.cpp
BUILD:              modules/m_spanningtree/netburst.cpp
BUILD:              modules/m_spanningtree/nickcollide.cpp
BUILD:              modules/m_spanningtree/operquit.cpp
BUILD:              modules/m_spanningtree/opertype.cpp
BUILD:              modules/m_spanningtree/override_map.cpp
BUILD:              modules/m_spanningtree/override_squit.cpp
BUILD:              modules/m_spanningtree/override_stats.cpp
BUILD:              modules/m_spanningtree/override_whois.cpp
BUILD:              modules/m_spanningtree/ping.cpp
BUILD:              modules/m_spanningtree/pong.cpp
BUILD:              modules/m_spanningtree/postcommand.cpp
BUILD:              modules/m_spanningtree/precommand.cpp
BUILD:              modules/m_spanningtree/protocolinterface.cpp
BUILD:              modules/m_spanningtree/push.cpp
BUILD:              modules/m_spanningtree/rconnect.cpp
BUILD:              modules/m_spanningtree/resolvers.cpp
BUILD:              modules/m_spanningtree/rsquit.cpp
BUILD:              modules/m_spanningtree/save.cpp
BUILD:              modules/m_spanningtree/server.cpp
BUILD:              modules/m_spanningtree/svsjoin.cpp
BUILD:              modules/m_spanningtree/svsnick.cpp
BUILD:              modules/m_spanningtree/svspart.cpp
BUILD:              modules/m_spanningtree/treeserver.cpp
BUILD:              modules/m_spanningtree/treesocket1.cpp
BUILD:              modules/m_spanningtree/treesocket2.cpp
BUILD:              modules/m_spanningtree/uid.cpp
BUILD:              modules/m_spanningtree/utils.cpp
BUILD:              modules/m_spanningtree/version.cpp
BUILD:              modules/m_spanningtree/whois.cpp
LINK:               modules/m_spanningtree.so
BUILD:              modules/m_sqlauth.cpp
BUILD:              modules/m_sqloper.cpp
Locating include directory for package gnutls for module m_ssl_gnutls.cpp... -DVERSION_GNUTLS="2.4.2" (version 2.4.2)
Locating library directory for package gnutls for module m_ssl_gnutls.cpp... -lgnutls   (version 2.4.2)
BUILD:              modules/m_ssl_gnutls.cpp
BUILD:              modules/m_sslinfo.cpp
BUILD:              modules/m_sslmodes.cpp
BUILD:              modules/m_stripcolor.cpp
BUILD:              modules/m_svshold.cpp
BUILD:              modules/m_swhois.cpp
BUILD:              modules/m_testnet.cpp
BUILD:              modules/m_timedbans.cpp
BUILD:              modules/m_tline.cpp
BUILD:              modules/m_uhnames.cpp
BUILD:              modules/m_uninvite.cpp
BUILD:              modules/m_userip.cpp
BUILD:              modules/m_vhost.cpp
BUILD:              modules/m_watch.cpp
BUILD:              modules/m_xline_db.cpp

*************************************
*        BUILD COMPLETE!            *
*                                   *
*   To install InspIRCd, type:      *
*         make install              *
*************************************

*************************************
*       BUILDING INSPIRCD           *
*                                   *
*   This will take a *long* time.   *
*     Why not read our wiki at      *
*     https://docs.inspircd.org/      *
*  while you wait for make to run?  *
*************************************

*************************************
*        INSTALL COMPLETE!          *
*************************************
Paths:
Base install: /usr/local/bin/inspircd
Configuration: /etc/inspircd
Binaries: /usr/local/bin/inspircd/bin
Modules: /usr/local/bin/inspircd/modules
To start the ircd, run: /usr/local/bin/inspircd/inspircd start
Remember to edit your config file: /etc/inspircd/inspircd.conf

Jetzt sichern wir die originalen Konfigurationsfiles und benennen unsere zukünftigen um.

cd /etc/inspircd
mkdir _example
cp *example _example/
mv inspircd.censor.example inspircd.censor
mv inspircd.conf.example inspircd.conf
mv inspircd.filter.example inspircd.filter
mv inspircd.helpop.example inspircd.helpop
mv inspircd.helpop-full.example inspircd.helpop-full
mv inspircd.motd.example inspircd.motd
mv inspircd.quotes.example inspircd.quotes
mv inspircd.rules.example inspircd.rules
mv links.conf.example links.conf
mv modules.conf.example modules.conf
mv opers.conf.example opers.conf

Nun kommen wir zur inspircd.conf, hierbei handelt es sich um eine funktionierende Konfiguration lediglich die Namen, Passwörter und Ähnliches wurden ausgetauscht. Bis zu diesem Punkt …

#-#-#-#-#-#-#-#-#-#-#-#-#-  SERVER OPTIONS   -#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
#   Settings to define which features are usable on your server.      #
#                                                                     #
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#

löschen wir alles und fügen diese Zeilen …

#-#-#-#-#-#-#-#-#-#-#-#-#-  SERVERCONFIG   -#-#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
#   Serverconfig vom foo.bar.de IRC-Network - by FooBar           #
#                                                                     #
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#

<config format="xml">
<define name="bindip" value="192.168.0.111">
<define name="localips" value="&bindip;/24">

<server name="foo.bar.de" description="foo.bar IRC-Network" network="foobar">
<admin name="Foo, Bar" nick="foobar" email="foo@bar.de">

<bind address="192.168.0.111" port="6667" type="clients">
<bind address="192.168.0.111" port="6668" type="clients" ssl="gnutls">
<bind address="192.168.0.111" port="6669" type="servers">
<bind address="192.168.0.111" port="6670" type="servers" ssl="gnutls">

<power hash="sha256" diepass="33c5ebbb01d608c254b3b12413bdb03e46c12797e591770ccf20f5e2819929b2" restartpass="33c5ebbb01d608c254b3b12413bdb03e46c12797e591770ccf20f5e2819929b2">

<cidr ipv4clone="32" ipv6clone="128">

<include file="/etc/inspircd/opers.conf">
<include file="/etc/inspircd/links.conf">
<files motd="/etc/inspircd/inspircd.motd" rules="/etc/inspircd/inspircd.rules">

<channels users="20" opers="60">
<dns server="192.168.0.1" timeout="5">
<banlist chan="*" limit="128">

… dafür ein. Ziemlich am Ende der Datei machen wir eine Raute (#) vor …

<die value="User error. Insert new user and press any key. (you didn't edit your config properly.)">

… und die Raute (#) vor …

#<include file="/etc/inspircd/modules.conf.example">

… entfernen wir. Im Pfad „/etc/inspircd/modules.conf.example“ entfernen wir noch das „.example“.

Jetzt die modules.conf, mehr zum Zweck und Sinn der jeweiligen Module findet ihr hier.
Durch das Entfernen der Raute (#) am Anfang der Zeile aktivieren wir folgende Module, …

<module name="m_sajoin.so">
<module name="m_sakick.so">
<module name="m_samode.so">
<module name="m_sanick.so">
<module name="m_sapart.so">
<module name="m_saquit.so">
<module name="m_satopic.so">
<module name="m_sasl.so">
<module name="m_password_hash.so">
<module name="m_sslmodes.so">
<module name="m_sha256.so">

… die keine weitere Konfiguration benötigen. Bei den anderen Modulen müssen wir noch kleinere Konfigurationen vornehmen …

<module name="m_permchannels.so">
<include file="/etc/inspircd/permchannels.conf">
<module name="m_override.so">
<override noisy="yes" requirekey="no">
<module name="m_ssl_gnutls.so">
<gnutls certfile="/etc/inspircd/cert.pem" keyfile="/etc/inspircd/key.pem">
<module name="m_conn_join.so">
<autojoin channel="#FooBar,#HELP">

… und zu guter Letzt die die LDAP Konfiguration.

<module name="m_ldapauth.so">
<ldapauth baserdn="dc=foo,dc=bar"
attribute="sAMAccountName"
server="ldap://addc.foo.bar"
allowpattern="Gast*"
killreason="Access denied"
searchscope="subtree"
binddn="Administrator"
bindauth="ich_bin_ein_admin_pw"
verbose="yes">

Eine permchannels.conf kann jeder selbst anlegen für die Channels, die immer geöffnet bleiben sollen, selbst wenn keine Benutzer drin sind.

<permchannels channel="#FooBar" modes="nt" topic="FooBar - Standardchannel">
<permchannels channel="#HELP" modes="nt" topic="IRC Hilfe-Thread">

Meine komplette opers.conf sieht so aus …

<class name="Shutdown" commands="DIE RESTART REHASH LOADMODULE UNLOADMODULE RELOAD GUNLOADMODULE GRELOADMODULE SAJOIN SAPART SANICK SAQUIT SATOPIC" privs="users/auspex channels/auspex servers/auspex users/mass-message channels/high-join-limit channels/set-permanent users/flood/no-throttle users/flood/increased-buffers" usermodes="*" chanmodes="*">
<class name="ServerLink" commands="CONNECT SQUIT CONNECT MKPASSWD ALLTIME SWHOIS CLOSE JUMPSERVER LOCKSERV" usermodes="*" chanmodes="*" privs="servers/auspex">
<class name="BanControl" commands="KILL GLINE KLINE ZLINE QLINE ELINE TLINE RLINE CHECK NICKLOCK SHUN CLONES CBAN" usermodes="*" chanmodes="*">
<class name="OperChat" commands="WALLOPS GLOBOPS SETIDLE" usermodes="*" chanmodes="*" privs="users/mass-message">
<class name="HostCloak" commands="SETHOST SETIDENT SETNAME CHGHOST CHGIDENT TAXONOMY" usermodes="*" chanmodes="*" privs="users/auspex">
<type name="NetAdmin" classes="OperChat BanControl HostCloak Shutdown ServerLink" vhost="netadmin.foo.bar.de" override="INVITE KEY LIMIT BANWALK KICK MODEOP MODEDEOP MODEVOICE MODEDEVOICE MODEHALFOP MODEDEHALFOP OTHERMODE" modes="+s +cCqQ">
<type name="GlobalOp" classes="OperChat BanControl HostCloak ServerLink" vhost="ircop.foo.bar.de">
<type name="Helper" classes="HostCloak" vhost="helper.foo.bar.de">
<oper name="ircadm" hash="sha256" password="33c5ebbb01d608c254b3b12413bdb03e46c12797e591770ccf20f5e2819929b2" host="*@*" type="NetAdmin">

… mit dem User ircadm und dem Passwort kann man sich im IRC mit dem Befehl (/oper ircadm passwort) zum IRC-NetAdmin machen und spezielle Befehle ausführen. Durch das Modul m_override und den im opers.conf File hinzugefügten Optionen …

override="INVITE KEY LIMIT BANWALK KICK MODEOP MODEDEOP MODEVOICE MODEDEVOICE MODEHALFOP MODEDEHALFOP OTHERMODE"

… erlaubt es uns als NetAdmin ohne Channel-Operator Rechte, uns selbst oder andere zum Channel-Operator zu machen. mrgreen - Linux - HowTo - IRC-Server mit LDAP-Authentifikation und SSL installieren

Die Dateien inspircd.rules und inspircd.motd könnt ihr nach eueren eigenen Vorstellungen anpassen. Zum Abschluss der Konfiguration müssen wir die Rechte der Files noch auf den User irc ändern.

chown -R irc:irc /etc/inspircd

Der InspIRCd kann als root mit folgendem Kommando …

su irc -c "/usr/local/bin/inspircd/inspircd start"

… gestartet werden. Das Logfile liegt unter /usr/local/bin/inspircd/logs/startup.log.

Viel Spaß mit eurem IRC-Server

Veröffentlicht von

_nico

Mac-User aus Leidenschaft, Blogger seit Oktober 2009, 88er Baujahr, technikaffin. Ich fühle mich aber nicht nur auf Apple'schen Betriebssystemen zu Hause, alles was eine Shell hat, interessiert mich besonders! Ihr findet mich auch auf Twitter und Google+.

9 Gedanken zu „Linux – HowTo – IRC-Server mit LDAP-Authentifikation und SSL installieren“

  1. Warum keine Channel in etablierten Netzwerken? Diese haben ausgereifte Bots, mit denen sich ein Channel mehr als ausreichend sichern lässt (inkl. Nutzerkonten).

  2. Erst mal danke für die übersichtliche „HowTo“.

    Welches LDAP Schema verwendest du ? Oder hängt bei dir ein AD dahinter?

    Ich hab das Problem das sich der inspircd nicht mit dem LDAP Anscheinend verbinden will…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert