Zum Inhalt springen

UnrealIRCD 3.1.2 Workshop Tutorial

HowTo : IRCD Tutorial Thema: UnrealIRCD 3.1.2  und höher  

Copyright (C) 2002 by libotus
Written by libotus libotus@intrasec.org

http://www.intrasec.org

Aufbau eines IRC Servers von Grund auf
————————————–

Dieser Workshop soll dazu dienen, schnell
und effizient einen eigenen IRC Server
Aufzubauen. In diesem Workshop nutzen
wir den IRC Server UnrealIRCd und die
Epona IRC Services.

Inhalt dieses Workshops

1.0 Benötigte IRCD Software

– IRCd Server Software ( UNREALIRCd )
– IRC Services (Epona)
– Linux 😉

Desweiteren braucht ihr einen den cc oder gcc
GNU C/C++ Compiler, um die Software
zu compilieren.

2.0 Installation des IRCd Servers

Als erstes entpackt ihr den IRCd Server in
ein beliebiges Verzeichnis.

Danach öffnet ihr eine Konsole und wechselt mit
dem Befehl ‚cd /Verzeichniss/des/Servers/‘ in
das Verzeichnis wo ihr den IRCd entpackt habt.
Nun gebt ihr ‚./Config‘ ein.

2.1 Das Config Script

Nachdem ihr das Programm gestartet habt
seht ihr folgende Texte:

– Which compiler do you use, gcc or cc or…?
[] ->

Hier gebt ihr entweder gcc oder cc, je
nachdem welchen Compiler ihr installiert
habt ein. Wenn ihr beide installiert habt
gebt ihr gcc ein.

– Enter additional flags to give to /usr/bin/gcc
I recommend -O -g
[-O -g] ->

Hier drückt ihr einfach Enter.

– You should use the recommended value unless you have a compelling reason
not to…
I suggest: -lcrypt
[-lcrypt] ->

Hier ebenfalls Enter drücken.

– Ok, here’s your chance…I think you should use O_NONBLOCK, you want
which of these ? O_NONBLOCK (POSIX) O_NDELAY (BSD) FIONBIO (SYSV)
[O_NONBLOCK] ->

Enter drücken.

– I found posix signals.
Hmmm…I’m not sure if signal() is reliable or not either…
You can choose between posix, bsd and sysv. What’ll it be ?
[posix] ->

Enter drücken.

– I found getrusage, out of getrusage and times. getrusage is
more informative. If you wish to swap your choice, please
do so now.
[getrusage] ->

Enter drücken.

– Do you have an insecure operating system and therefore want to
use the server anti-spoof protection?
[Yes] ->

Hier wird gefragt ob man ein unsicheres Betriebssystem
hat, und man den Anti-Spoof Schutz nutzen will, damit
der Server sicherer ist, tippt ihr hier ‚Yes‘ ein.

– What directory are all the server configuration files in?
[/home/black/ircd/Unreal3.1.2] ->

Im normalfall müsst ihr hier Enter drücken, es sei der 
angezeigte Pfad stimmt nicht mit dem Pfad überein in das
ihr den IRCd entpackt habt.

– What is the explicit path to where the ircd binary will be
installed? This should point to a file, not a directory
[/home/black/ircd/Unreal3.1.2/src/ircd] ->

Das Verzeichnis indem der Sourcecode des IRCd Servers liegt,
dieser befindet sich im Verzeichniss ’src‘ in eurem entpackten
IRCd Verzeichniss. Gebt also das Verzeichniss mit ‚/src/ircd‘ an
oder drückt wenn es schon da steht Enter.

– Would you like to compile as a Halfhub or as a leaf?
The halfhub will be a real hub if set so in unrealircd.conf
Type Hub for selecting hub and Leaf for a leaf..
[Hub] ->

Für einen normalen IRCd Server Tippt ihr hier ‚Hub‘ ein,
wenn der Server als leaf dienen soll tippt ihr ‚leaf‘ ein.
Im Normalfall wieder Enter drücken.

– What is your box hostname?
[Blackbolt] ->

Hier Tippt ihr euren Rechnernamen ein. Im Normalfall
drückt ihr hier Enter. ([Blackbolt] ist nur ein Beispiel!)

– Do you use encrypted operator passwords?
[No] ->

Hier wird gefragt ob man gecryptete Passwörter verwenden möchte,
die dann Später in die O:Line in der ircd.conf eingetragen werden.
Standartmäßig sollte man ‚No‘ eintippen weil man das Passwort gleich
im klartext in die ircd.conf eintragen kann, wählt man ‚Yes‘ muss man
das Passwort vorher erst crypten.

– Do you use encrypted incoming link passwords? (N lines only,
C lines must remain unencrypted always)
[No] ->

Hier sollte man auch Standarmäßig mit ‚No‘ antworten, beachtet
dass wenn man mit ‚Yes‘ antwortet, man die Passwörter vorher 
noch crypten muss.

– Do you want to use encrypted Restart/Die passwords?
[No] ->

Hier wird gefragt ob man gecryptete Restart und Shutdown
Passwörter für den Server verwenden will, im Normalfall
wieder mit ‚No‘ antworten da man die Passwörter erst 
crypten muss.

– Do you want to use encrypted I:line passwords?
[No] ->

Hier wird gefragt ob man gecryptete Passwörter für
die I:Line (Client authentification Lines) verwenden
möchte, im Normalfall wieder mit ‚No‘ antworten.

– What listen() backlog value do you wish to use? Some servers
have problems with more than 5, others work fine with many, many
more.
[5] ->

Hier bitte eingeben wie viele Prozesse der Server haben soll,
im Normalfall bitte ‚5‘ eingeben.

– How far back do you want to keep the nickname history?
[2000] ->

Hier eingeben wie viele Minuten registrierte Nicknames (Spitznamen)
gespeichert werden sollen bevor sie gelöscht werden. Im 
Normalfall sollte man hier ‚2000‘ eingeben da dies ausreichend ist.

– What sendq length do you wish to have?
[3000000] ->

Hier sollte Standartmäßig ‚3000000‘ eingegeben werden.

– What size of a bufferpool (total of ALL sendq’s in use) do you
do you wish to have?
[(9 * MAXSENDQLENGTH)] ->

Hier sollte Standartmäßig Entergedrückt werden oder
‚9 * MAXSENDQLENGTH‘ eingegeben werden.

– How many file descriptors (or sockets) can the irc server use?
(The result above, if any – shows how many sockets that the ircd can use,
and can be used as an answer here)
[256] ->

Hier sollte wiederum Enter gedrückt werden oder ‚256‘ eingegeben werden.

2.2 Kompilieren der IRCD Software

Jetzt gebt ihr ‚make‚ ein. Das dauert nun ein Weilchen,
macht eine Kaffeepause in der Zwischenzeit 🙂

Nun geht ihr in das Verzeichnis ’networks‘ in eurem
IRCd Verzeichnis und gebt ‚./makenet‘ ein.

2.3 Netzwerk Datei erstellen

Nachdem ihr das Programm gestartet habt
seht ihr folgende Texte:

– What do you want your network file to be called?
[mynet.network] ->

Hier wird gefragt wie eure Netzwerk Datei heißen soll.
Dazu gebt ihr den Namen eures Netzwerkes (z.b. ‚mynet‘)
mit der Endung ‚.network‘ (also ‚mynet.network‘) ein.

– What is your IRC nickname?
[MyNick] -> 

Hier gebt ihr den Namen eures IRC Nicknames (Spitznamen) ein.

– What is your email address?
[me@mynet.org] ->

Hier gebt ihr eure E-Mail Adresse ein.

– What is the name of your IRC network?
[My IRC Network] ->

Hier gebt ihr den Namen eures IRC Netzwerkes ein
(z.b. ‚My IRC Network‘).

– What is the default server for your network?
[irc.mynet.org] ->

Hier gebt ihr die Domain eures Servers ein.
Solltet ihr keinen eigenen Server haben gebt
ihr ihm den Namen z.b. ‚IRC‘

– What is the name of your services server?
[services.mynet.org] ->

Hier gebt ihr den Name eures Services Server ein.
Im Falle oben mit dem Namen ‚IRC‘ nennt ihr diesen 
‚Services.IRC‘.

– What is the virtual host opers will get when they oper up?
[oper.mynet.org] ->

Hier gebt ihr den Namen der Virtuellen Host (V-Host) an,
die ein Operator bekommen soll. Im Falle oben ersetzt
ihr ‚.mynet.org‘ durch ‚.IRC‘-

– What is the virtual host services opers will get when they oper up?
[csop.mynet.org] ->

Hier gebt ihr den Namen der V-Host an, die ein
Service-Operator bekommen soll.

– What is the virtual host admins will get when they oper up?
[admin.mynet.org] ->

Hier gebt ihr den Namen der V-Host an, die ein
Administrator bekommen soll. 

– What is the virtual host local opers will get when they oper up?
[locop.mynet.org] ->

Hier gebt ihr den Namen der V-Host an, die ein
Local-Operator bekommen soll.

– What is the virtual host coadmins will get when they oper up?
[coadmin.mynet.org] ->

Hier gebt ihr den Namen der V-Host an, die ein
Co-Administrator bekommen soll.

– What is the virtual host techadmins will get when they oper up?
[techadmin.mynet.org] ->

Hier gebt ihr den Namen der V-Host an, die ein
Technischer-Administrator bekommen soll.

– What is the virtual host netadmins will get when they oper up?
[netadmin.mynet.org] ->

Hier gebt ihr den Namen der V-Host an, die ein
Netzwerk-Administrator bekommen soll.

– What do you want the prefix for the hidden hosts to be?
[hide] ->

Standardmäßig werden die Hostnames der User aus
Sicherheitsgründen verfälscht, gebt hier einen
Präfix ein, der die Host verfälscht (z.b. ‚hide‘)

– What is your network’s domain name?
[mynet.org] ->

Hier tragt ihr den Domain Name eures Servers ein.
Habt ihr keinen eigenen Server tragt, ihr hier
‚localhost‘ ein.

– What is your network’s help channel?
[#help] ->

Hier tragt ihr den Hilfe-Channel eures
Servers ein. Standartmäßig is das der 
‚#help‘ Channel.

– What is the name of your stats server?
[stats.mynet.org] ->

Hier tragt ihr den Namen eures Stats Servers ein,
in diesem Falle wäre das ’stats.IRC‘

– Do you want oper’s hosts to be changed on /oper?
1 = yes 0 = no
[1] ->

Hier wird gefragt, ob die Host eines Users in die
oben angegebenen V-Hosts geändert werden soll,
sobald sich dieser als Operator etc. identifiziert.
Tippt hier am besten ‚1‘

– Would you like to submit the your network file to be included with future releases of unreal?
[y] ->

Hier wird gefragt, ob du deine soeben erstellte
Netzwerk Datei dem Entwicklerteam von diesem IRCd
Server zugesendet werden soll. Tippt hier für Ja ‚y‘
und für nein ’n‘

Öffnet jetzt die Datei ‚unrealircd.conf‚ in
einem Texteditor.

2.4 Konfiguration der unrealircd.conf

Include ……………..: networks/roxnet.network

Hier ersetzt ihr ‚roxnet.network‘ durch eure
eben erstellte Nezwerk Datei.

– Set KLINE_ADDRESS …….: lame.admin.needs.to.set.a.email

Hier ersetzt ihr ‚lame.admin.needs.to.set.a.email‘ durch
eure eigene E-Mail Adresse.

– Set CONFIG_FILE_STOP ….: 1

Hier MÜSST ihr unbedingt die ‚1‘ durch eine ‚0‘
ersetzen da sonst der IRCd nicht startet.
Abspeichern!

2.5 IRCd Config erstellen

Geht jetzt zurück in euer Haupt-IRCd Verzeichnis
und tippt ‚./makeconf‘ ein.

– What will your server name be? (ie: Server.IRC.net)
[Server.IRC.net] ->

Hier tragt ihr den Namen eures Servers ein.
Da dieser Punkt entscheidend für die Verlinkung
der Services ist, müsst ihr ‚Server.‘ davor schreiben.
In diesem Falle wäre das ‚Server.IRC‘

– What is your IRC server’s IP? (ie: 1.2.3.4)
Use * to bind to all interfaces
[1.2.3.4] ->

Hier gebt ihr die IP des Servers an,
Standardmäßig solltet ihr hier ‚*‘
angeben.

– Server comment? (ie: Main Hub Server)
[IRC server!] ->

Hier tragt ihr die Beschreibung eures IRC Servers
ein (z.b. ‚Mein eigener IRC Server‘).

– Main port? (ie: 6667)
[6667] ->

Hier wird das Port angegeben den der IRCd
Server standardmäßig nutzen soll. Im Normalfall
sollte hier ‚6667‘ angegeben werden, weil alle
Clients diesen Port standardmäßig nutzen.

– What server numeric does the server have (range = 1..256)
Must NOT be the same as other servers you link with
[] ->

Dieses Feld sollte freigelassen werden. Enter drücken.

– What is your real name? (ie: John Doe)
[Admin-name] ->

Hier tragt ihr euren „echten“ Namen ein.

– What is your IRC nickname? (ie: JD)
[Admin] ->

Hier tragt ihr euren IRC Nickname (Spitzname) ein.

– What is your e-mail address? (ie: john@doe.com)
[admin@no.where.com] ->

Hier tragt ihr eure E-Mail Adresse ein.

– What will your opername be for your O:line? (ie: johndoe)
[Blackbolt] ->

Hier wird gefragt wie euer Operator-Name lauten soll,
am einfachsten zu merken ist es wenn ihr euren
IRC Nickname nehmt.

– What oper flags do you want to have? (ie: OAWZ)
Some flags to choose from:
o = local oper
O = global oper
N = network administrator
A = server administrator
C = co administrator
T = technical administrator
read unrealircd.doc for more info about O:line flags)

[OAZHWe] ->

Hier wird gefragt welche Rechte DU haben willst,
Wähle hier zwischen den verschiedenen Optionen,
Ihr könnt auch anstatt dem Buchstabe Flags eintragen.
Um völlige Kontrolle über euren server zu haben gebt ihr
reDRhgwlcLkKbBnGAaNCTufWH^‘ ein.
Eine Liste mit den Flags befindet sich am Ende dieses
Workshops. 

– Do you use encrypted oper passwords?
[Yes] ->

Hier wird gefragt ihr gecryptete Operator Passwörter
benutzen wollt.

– What will your /oper password be? (ie: snoopy67)
[password] ->

Tragt hier euer gewünschtes Operator Passwort ein.

– What is your user@host mask on IRC? (ie: *@*.toronto.globalserve.net)
[*@*] ->

Hier tragt ihr ‚*@*‘ ein.

– What do you want your die password to be?
[diepass] ->

Tragt hier euer gewünschtes Shutdown Passwort ein.

– What do you want your restart password to be?
[restartpass] ->

Tragt hier euer gewünschtes Restart-Passwort ein.

– If your running services, or linking to a network that has
services, please state the services servername.
If you are running a non-services network, just type ’next‘
[Services.IRC-Net.Org] ->

Tragt hier den Services Servername ein, dier setzt sich
aus ‚Services.‘ und eurem Server Domainname zusammen.
In unserem fall, würde der Servername ‚Services.IRC‘ heißen.

– Would you like to configure any servers for linking?
Type the servername, or type ‚done‘ when finished.
[done] ->

Hier gebt ihr ‚done‘ ein.

– Would you like any extra ports, other than 6667? Enter them here.
Type ‚done‘ when you are finished. Type ‚default‘ to use 6665-6669/7000.
[default] -> 

Hier könnt ihr noch andere Ports eintragen, im Normalfall sollte man
hier ‚default‘ eingeben oder enfach nur Enter drücken.

Jetzt setzt ihr die CHMODS des IRCd Verzeichnisses,
ihr setzt sie auf euren Username NICHT auf root 
und gebt nur ‚User‘ die Lese-, Schreib- und Ausführungsrechte.
Andernfalls kann es vorkommen das der IRCd nicht startet und mit
einem Fehler abbricht.

3.0 Epona IRC Services Installation

Als erstes Entpackt ihr die Epona IRC Services in
ein beliebiges Verzeichniss.

Danach wechselt ihr in das Verzeichnis in das ihr Epona
entpackt habt und gebt ‚./configure‘ ein.

3.1 Das Epona Configurations Script

– In what directory do you want the binaries to be installed?
Press Return for the default, or enter a new value.
[/root/services]

Hier gebt ihr den Pfad an in das Epona die Binär-Daten 
installieren soll. Es ist besser wenn ihr als Pfad
das Verzeichnis des IRCd Servers mit dem Unterverzeichnis 
‚/services‘ angebt, da ihr dann beides in einem Verzeichnis habt.

– Where do you want the data files to be installed?
[/root/services] 

Hier gebt ihr den selben Pfad an wie bei den Binär Daten

– Which group should all Services data files be owned by? (If Services
should not force files to be owned by a particular group, just press
Return.)
[]

Hier gebt ihr die Group an, in der euer User ist, andernfalls
einfach leer lassen und Enter drücken.

– What should the default umask for data files be (in octal)?
(077 = only accessible by owner; 007 = accessible by owner and group)
[077]

Hier gebt ihr ‚077‘ ein.

– Which of the following is closest to the type of server on your IRC
network?
1) DreamForge 4.6.7 [this is an old IRCd, you should upgrade to Bahamut]
2) Bahamut 1.4.27 or later
3) UnrealIRCd 3.1.1 or later
4) UltimateIRCd 2.8.2 or later
5) Sequana 0.2.0 or later
[no default]

Hier gebt ihr ‚3‘ ein.

-Do you want to use the MD5 message-digest algorithm to encrypt passwords?
(Selecting „yes“ protects your passwords from being stolen if someone
gains access to the Services databases, but makes it impossible to recover
forgotten passwords.)
NOTICE: this should be considered an EXPERIMENTAL feature.
[no]

Hier gebt ihr ’no‘ ein.

– If you are switching from another services package that is listed there,
enter its associated number to be able to convert your old databases using
the given parameter on the command line the first time you launch Epona.
If no conversion is needed, type no.
1) ircservices 4.4.x (using -is44)
[no]

Hier gebt ihr ’no‘ ein.

– Do you want to compile Epona with threading support?
If you want to use the proxy detector, you MUST have this.
If you encounter problems during compilation, you should disable
it anyways.
[no]

Hier gebt ihr wieder ’no‘ ein

Jetzt gebt ihr ‚make‘ ein und Macht eine Kaffeepause 🙂
Nach dem Compilieren gebt ihr ‚make install‘ ein.

3.2 Epona Configuration

Als Erstes geht ihr in das Verzeichnis in das ihr Epona 
Installiert habt (im IRCd Verzeichnis um Unterordner ’services‘)
und benennt die Datei ‚example.conf‘ in ’services.conf‘ um.
Nun öffnet ihr die Datei und ändert Folgendes:

– RemoteServer localhost 6667 „mypass“

Hier ersetzt ihr ‚mypass‘ durch euer gewünschtes
Passwort.

– ServerName „services.localhost.net“

Hier ändert ihr ’services.localhost.net‘ in
‚Services.IRC‘ um, wobei ‚IRC‚ nur ein Beispiel ist,
an diese Stelle kommt die Domain eures Servers.

– ServerDesc „Services for IRC Networks“

Hier ändert ihr ‚Services for IRC Networks‚ in die Beschreibung
Zu euren Services um (z.b. ‚IRC Services‚).

– ServiceUser „services@localhost.net

Hier ändert ihr ’services@localhost.net‘ in
Services@IRC‚ wobei ihr ‚IRC‚ wieder durch eure
Server Domain ersetzt.

– NetworkDomain „localnet.net“

Hier ändert ihr ‚localnet.net‚ in ‚127.0.0.1‚.

– NetworkName „LocalNet

Hier ersetzt ihr ‚LocalNet‚ durch eure Server Domain.

– #ServicesRootlara Epona

Hier ersetzt ihr ‚lara Epona‘ durch euren eigenen Nickname und
das ‚#‘ davor muss gelöscht werden.
Abspeichern!

3.3 Verbinden der IRC-Services mit dem IRCd-Server

Jetzt öffnet ihr die Datei ‚ircd.conf‘ im IRCd Verzeichnis
und fügt folgende Zeilen am Ende der Datei ein:

– ‚Y:27:180:0:0:4000000‘
‚C:127.0.0.1:mypass:Services.LocalHost.Net::30‘
‚N:127.0.0.1:mypass:Services.LocalHost.Net::30‘
‚H:*::Services.LocalHost.Net‘

Nun ersetzt ihr in allen Zeilen ‚mypass‘ durch euer
in der services.conf festgelegtes Passwort. Danach ersetzt
ihr ‚Services.LoacalHost.Net‘ durch eure Services Domain Name.

– ‚U:Services.LocalHost.Net:*:*‘

Diese Zeile sollte schon vorhanden sein,
wobei ‚Services.LocalHost.Net‘ durch euren
Services Domain Namen ersetzt ist.
Abspeichern!

Als letztes setzt ihr ALLE CHMODS auf euren Username NICHT auf root 
und gebt nur ‚User‘ die Lese-, Schreib- und Ausführungsrechte.
Andernfalls kann es vorkommen das der IRCd nicht startet und mit
einem Fehler abbricht.

Um die Server nun zu Starten geht ihr erst in das IRCd 
Verzeichnis und startet mit ‚./ircd‘ den IRCd Server.
Geht danach in das Verzeichnis der Services und Startet
Die Services mit ‚./services‘

Fertig! Ihr habt es endlch geschafft (mit meiner hilfe ;))
euren eigenen IRC Server aufzubauen!

4.0 IRCD IRC und IRC-Operator Flags

reDRhgwlcLkKbBnGAaNCTufWH^ = full access

  • r = Access to /REHASH server
  • R = Access to /RESTART server
  • D = Access to /DIE server
  • h = Oper can send /HELPOPS – gets +h on oper up
  • g = Oper can send /GLOBOPS
  • w = Oper can send /WALLOPS
  • l = Oper can send /LOCOPS
  • c = Access to do local /SQUITs and /CONNECTs
  • Y = Access to do remote /SQUITs and /CONNECTs
  • k = Access to do local /KILLs
  • K = Access to do global /KILLs
  • b = Oper can /KLINE users from server
  • B = Oper can /UNKLINE users from server
  • n = Oper can send Local Server Notices (/NOTICE $servername message)
  • u = Oper can set usermode +c 
  • f = Oper can set usermode +f 
  • o = Local Operator, flags included: rhgwlckbBnuf
  • O = Global Operator, flags included: oRDK 
  • A = Gets +A on oper up. Is Server Administrator
  • a = Gets +a on oper up. Is Services Administrator 
  • N = Gets +N on oper up. Is Network Administrator 
  • T = Gets +T on oper up. Is Technical Administrator 
  • C = Gets +C on oper up. Is Co Administrator 
  • z = Can add Z:Lines 
  • H = Gets +x on oper up. 
  • W = Gets +W on oper up. ^ = Allows to use usermode +I
  • * = Flags AaNCTzSHW^

Information:


Ich habe diesem Workshop für all die geschrieben,
die Nächte lang verzweifelt vor dem Computer sitzen
und versuchen einen IRC Server mit Services auf
Linux-Basis aufzubauen wie ich selbst früher ;).
In diesem Workshop sind keine Texte zur Bedienung
des IRCd enthalten, er dient lediglich zum Kompletten
Aufbau und Installation des Servers mit Services,
Flags sind enthalten.
________________________________
Copyright (C) 2002 by Blackbolt 
Written by Blackbolt 
libotus@intrasec.org

http://www.intrasec.org