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.
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
Warum keine Channel in etablierten Netzwerken? Diese haben ausgereifte Bots, mit denen sich ein Channel mehr als ausreichend sichern lässt (inkl. Nutzerkonten).
Es soll ja nur ein lokaler IRC-Server sein, es sollten keine zusätzlichen Bots wie ChanServ oder NickServ installiert werden.
Und warum hast du ihn nicht einfach aus den Repos genommen?
Mal ganz dumm gefragt 🙂
Oder hat der ldap nicht mit rein kompiliert?
Hi Flo,
genau so ist es! Das LDAP Modul ist im Repo-Rel nicht mit rein kompiliert.
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…
Hi darkhawk, lang, lang ist’s her! 😉
Ja, es war ein Active Directory dahinter.
Gruß Nico
Hi Nico,
Thanks for your great post. I have successfully build an Inspircd server integrating LDAP modules by following this post: https://www.loggn.de/linux-howto-irc-server-mit-ldap-authentifikation-und-ssl-installieren/
But I don’t know any IRC client supporting LDAP authentication. Can you suggest me any?
Many thanks & Best Regards.
Hi Duong Le,
that was some time ago – i don’t no, now. 🙁
Cheers Nico
Hi Nico,
So how can I check to make sure that Inspircd communicated LDAP server?