Aufgrund des wachsenden Umfangs der Dokumentation von UnrealIRCd3.2 wurde das Dokument auf HTML umgestellt, um leichter navigieren und besser Querverweisen folgen zu können. Um diese Dokumentation zu lesen, wird einer der nachfolgenden Browser benötigt. Aktuelle Dokumentationen sind erhältlich @ http://www.vulnscan.org/UnrealIrcd/unreal32docs.html und eine FAQ @ http://www.vulnscan.org/UnrealIrcd/faq/.
Kompatible Browser:
INHALTSVERZEICHNIS
1. Einführung & Anmerkungen
---1.1. Anmerkungen zu Upgrade/Mixing 3.1.x -> 3.2
---1.2. Anmerkungen zu Upgrade von 3.2 Versionen
2. Installation
3. Features
-- 3.1. Cloaking
-- 3.2. Module
-- 3.3. Snomasks
-- 3.4. Aliases
-- 3.5. Helpop
-- 3.6. Oper Zugriffs-Levels
-- 3.7. Oper Befehle
-- 3.8. SSL
-- 3.9. IPv6
-- 3.10. Zip Links
-- 3.11. Dynamische DNS/IP Link Unterstützung
-- 3.12. Anti-Flood Features
-- 3.13. Bann Typen
-- 3.14. Spamfilter
-- 3.15. CIDR
-- 3.16. Andere Features
4. Konfiguration der unrealircd.conf
Datei
---4.1. Erklärung der
Konfigurationsdatei
---4.2. Me Block -=- (M:Line)
---4.3. Admin Block -=- (A:Line)
---4.4. Class Block -=- (Y:Line)
---4.5. Allow Block -=- (I:Line)
---4.6. Listen Block -=- (P:Line)
---4.7. Oper Block -=- (O:Line)
---4.8. DRpass Block -=-(X:Line)
---4.9. Include Anweisung
---4.10. Loadmodule Anweisung
---4.11. Log Block
---4.12. TLD Block -=- (T:Line)
---4.13. Ban Nick Block -=- (Q:Line)
---4.14. Ban User Block -=- (K:Line)
---4.15. Ban IP Block -=- (Z:Line)
---4.16. Ban Server Block -=-(q:Line)
---4.17. Ban Realname Block -=- (n:Line)
---4.18. Ban Version Block
---4.19. Ban Exception Block -=- (E:Line)
---4.20. TKL Exception Block
---4.21. Throttle Exception Block
---4.22. Deny DCC Block -=- (dccdeny.conf)
---4.23. Deny Version Block -=- (V:Line)
---4.24. Deny Link Block -=- (D:Line / d:Line)
---4.25. Deny Channel Block -=- (chrestrict.conf)
---4.26. Allow Channel Block
---4.27. Allow DCC Block
---4.28. Vhost Block -=- (vhost.conf)
---4.29. Badword Block -=- (badwords.conf)
---4.30. Uline Block -=- (U:Line)
---4.31. Link Block -=- (C/N/H:Lines)
---4.32. Alias Block
---4.33. Help Block
---4.34. Official Channels Block
---4.35. Spamfilter Block
---4.36. Set Block -=- (networks/unrealircd.conf)
5. Additional Files
6. User & Channel Modi
7. User & Oper Befehlsliste
8. Sicherheitstipps/Checkliste
---8.1. Passworte
---8.2. Nicht IRCD betreffende Angriffsmöglichkeiten
---8.3. Berechtigungen und Config Datei
---8.4. User bezogene Probleme
---8.5. SSL/SSH & Sniffing
---8.6. Denial of Service Angriffe (DoS) [oder: wie schütze ich meinen Hub]
---8.7. Informationsbeschaffung
---8.8. Schutz gegen Exploits
---8.9. Zusammenfassung
9. Frequently Asked Questions (FAQ)
1.0 – Einführung &
Anmerkungen
Diese Anleitung wurde exklusiv zur Verwendung von UnrealIRCd geschrieben. Die Verwendung des Textes mit anderer Software oder das Anbieten zusammen mit anderer Software ohne schriftliche Genehmigung des UnrealIRCd Entwicklungsteams ist streng verboten. Solange es der Benutzung von UnrealIRCd dient, darf dieses Dokument beliebig kopiert/gedruckt/veröffentlicht, jedoch nicht verändert werden. – Copyright UnrealIRCd Development Team 2002-2004
Bitte lesen Sie diese Anleitung, bevor Sie um Hilfe bitten und schauen Sie WIRKLICH erst ein mal in die FAQ, da rund 80% der Fragen dort beantwortet sind. Hilft dies alles nicht, kann bzgl. Support bei irc.ircsystems.net (Port 6667) Channel #unreal-support nach Unterstützung gefragt werden (Wir erwarten UNBEDINGT, dass zuvor Dokumentation und FAQ gelesen wurden und wir helfen nur zu UnrealIRCd, nicht zu Services!). Im Falle eines echten Bugs (z.B. einem Crash) bitte Nachricht an http://bugs.unrealircd.org.
1.1 – Anmerkungen zu Upgrade/Mixing 3.1.x -> 3.2
Bei einem Upgrade von Unreal3.1.x auf Unreal3.2 wird als erstes die völlig veränderte Konfigurations- Datei auffallen. Anfänglich ist dies eine große Umstellung, aber nachdem man erst einmal umgestellt hat, wird man feststellen, dass die neue Form viel besser ist!
Nicht vergessen, im Teil 3 über neue Features nachzulesen! Auch wenn einige Features aus früheren Versionen bekannt sind, finden sich hier auch eine Reihe neuer Features!
Am besten verzichtet man auf mischen/linken von 3.1.x mit 3.2, aber wenn das doch gewollt ist, wird mindestens 3.1.4 benötigt. Jedoch wird Version 3.1.5.1 unbedingt empfohlen.
1.2 – Anmerkungen zu
Upgrade von 3.2 Versionen
Der empfohlene Weg für ein Upgrade ist:
Linux:
Bitte auch die RELEASE.NOTES lesen und ggf. jede Changes Datei um zu sehen, was sich geändert hat. Falls Änderungen (oder Bugs) zwischen Versionen festgestellt werden, AUF JEDEN FALL ERST IN DIESEN DATEIEN NACHLESEN bevor ein Bug gemeldet wird!
Installationsanleitungen
Linux:
Windows:
In diesem Abschnitt werden einiger der größeren besonderen Features erläutert. Es wird ein genereller Überblick gegeben, in dem sich manchmal auf die .conf Datei bezogen wird (die Neuanfängern momentan noch unbekannt sein dürfte).
Dieser Abschnitt kann auch übersprungen werden, obwohl es sinnvoll ist ihn vor oder nach der Installation zu lesen.
Das Cloaking ist eine Möglichkeit, den echten Hostnamen vor Usern zu verbergen. Wenn z.B. der echte Host d5142341.cable.wanadoo.nl lautet, wird er (in join, part, whois, etc) als rox-2DCA3201.cable.wanadoo.nl angezeigt. Das ist hilfreich, um sich davor zu schützen, dass User sich gegenseitig flooden, da sie die echte Host/IP nicht erkennen können.
Eingestellt wird dies durch den Usermode +x (also: /mode yournick +x), Admins können +x auch als Default erzwingen oder so einstellen, dass User kein -x einstellen können.
Ein durch Cloaking geschützter Host wird durch ein Cloaking Modul
(wenigstens eines muss geladen sein) erzeugt. Momentan sind 2 solche offizielle
Module verfügbar:
cloak:
Hierbei handelt es sich um das neue offizielle Cloaking Modul, welches viel
sicherer, als das alte ist. Es verwendet intern md5 und erfordert, dass 3 ::cloak-keys::
gesetzt sind, die gemischt Kleinbuchstaben (a-z), Großbuchstaben (A-Z) und
Ziffern (0-9) enthalten [z.B. "AopAS6WQH2Os6hfosh4SFJHs"] . Siehe auch
example.conf für ein Beispiel.
oldcloak:
Hierbei handelt es sich um den alten Cloaking Algorithmus, wie er in Unreal3.2
und früher benutzt wurde. Es gibt ihn nur, um beim Upgrade Prozess zu helfen.
Diese Methode ist nicht länger sicher (es wird eine Warnung angezeigt, wenn man
sie benutzt) und sollte beim nächten Upgrade der Server umgehend durch die neue
Methode 'cloak' ersetzt werden.
Die Keys MÜSSEN identisch auf ALLEN SERVERN im Netzwerk sein und sie sollten GEHEIM gehalten werden. Wenn jemand diese drei Keys kennt, kann er den geschützten Host erkennen und den realen Host ermitteln (was dem Usermodus +x sinnlos macht).
UnrealIRCd unterstützt Module, was sehr nützlich
ist, weil:
- Module können bei laufendem ircd geladen/ersetzt/gelöscht werden (durch /rehash). Dadurch können verschiedene Bugs gefixt
oder neue Module hinzugefügt werden, ohne dass ein Neustart erforderlich ist!
- Andere Entwickler können weitere Module mit neuen Befehlen oder anderen
Usermodi erstellen.
UnrealIRCd selbst enthält nur wenige Module. Durch eine Suche auf www.unrealircd.com
(modules) oder per Google können weitere 3rd party Module gefunden werden.
Achtung: Minimal müssen zwei Module geladen sein, oder der ircd wird nicht
starten!
- das commands Modul: commands.so (oder commands.dll bei Windows)
- das cloaking Modul: üblicherweise cloak.so (oder cloak.dll bei Windows)
Bei Snomasks handelt es sich um Server notice masks, eine spezielle Form der Usermodi, durch die gesteuert wird, welche Server Nachrichten man empfängt (in der Regel von Opern benutzt)
Sie können durch "/mode yournick +s SNOMASK" eingestellt werden,
z.B.: /mode yournick +s +cF
(d.h. +s leitet dem Modus "snomask" ein, danach folgen die
Flags)
Um aktuelle snomasks zu löschen, gibt man z.B. ein: /mode yournick +s -c
Will man sämtliche snomask Flags löschen, gibt man ein: /mode yournick -s
Momentan unterstützte snomasks Flags sind:
c - lokale Connects
F - ferne Connects (also auf anderen Servern im Netz - mit Ausnahme der U-lined
Server)
f - Flood Meldungen
k - Kill Meldungen
e - 'eyes' Meldungen
j - 'junk' Meldungen
v - vhost Meldungen
G - gline/shun Meldungen
n - lokale nick Änderungs-Meldungen
N - globale nick Änderungs- Meldungen
q - deny nick (Q:line) Meldungen zu Abweisung gesperrter
Nicks
s - Server Nachrichten anzeigen [*]
S - Spamfilter Nachrichten anzeigen
o - Oper-up Meldungen anzeigen
[*: Diese snomask ist auch für Nicht-IrcOps möglich]
Es kann eingestellt werden, welche snomasks man automatisch erhält (set::snomask-on-connect) und welche man als Oper erhält (set::snomask-on-oper, set::oper::snomask)
Mit Alias können serverseitig bestimmte Befehle eingestellt und dadurch vereinfacht werden. So ist es z.B. möglich, dass der Befehl "/ns identify blah" direkt an Nickserv geleitet und übersetzt wird in: "privmsg nickserv identify blah". Man kann auch recht komplexe Alias Definitionen vornehmen, die beispielsweise den Befehl /register an Chanserv weiterleitet, wenn der erste Parameter mit einem # beginnt oder an Nickserv, wenn der erste Parameter nicht mit einem # beginnt. (Im ersten Fall soll ein Channel registriert werden, im zweiten Fall ein Nickname)
Aliases werden in alias Blocks in der Konfigurationsdatei definiert oder in einer Include Datei mit den häufigsten Default Aliassen.
UnrealIRCd hat ein integriertes Hilfesystem, auf welches mit dem Befehl
"/helpop" zugegriffen werden kann. Über den Help Block in der
Konfigurationsdatei bzw. die beigefügte "help.conf" ist die
anzuzeigende Hilfe völlig frei konfigurierbar. Grundlegende Hilfen sind in der
mitgelieferten help.conf schon vorkonfiguriert.
Beispielsweise wird nach dem Befehl /helpop chmodes
ein Überblick über sämtliche Channel Modi von UnrealIRCd angezeigt.
Zu beachten ist, dass ein ircop (helpop) vor den Suchbegriff ein '?' setzten muss, also statt /helpop ist /helpop ? einzugeben und statt
/helpop chmodes ist /helpop ?chmodes einzugeben etc..
(Alternative: Vor der Abfrage das +h Flag per "/mode
<nick> -h" entfernen)
Es gibt verschiedene Oper Levels in UnrealIRCd und jeder Level kann um zusätzliche Rechte (wie z.B. use /gline) erweitert werden, so dass jedem Oper genau die benötigten Rechte gegeben werden können..
Gesteuert wird dies über die Oper Flags im Oper Block. (siehe oper block für weitere Informationen.)
UnrealIRCd hat eine Reihe mächtiger Befehle für Opers, die im Abschnitt User & Oper Befehlsliste erklärt werden. Es empfiehl sich, diese nach der Installation zu lesen :).
SSL ist die Abkürzung für "Secure Socket Layer" und ermöglicht sichere verschlüsselte Verbindungen. Dadurch kann server<->server Traffic verschlüsselt werden, aber auch die Verschlüsselung client<->server ist möglich. Üblicherweise wird SSL als Schutz vor "Sniffing" (Abhören von Netz Traffic) und zur sicheren Authentifizierung eingesetzt.
Um das zu ermöglichen, ist es erforderlich, dass der IRC Server mit SSL
Support kompiliert wird. Um einen SSL Port einzustellen, muss
"set listen::options::ssl" eingetragen
sein.
Zu einem SSL Port kann nicht normal verbunden werden (also nicht den Port 6667 auf SSL einstellen!), sondern es wird ein Client oder ein Tunnel benötigt, der das SSL Protokoll unterstützt.
Diese Clients unterstützen SSL: XChat, irssi, mIRC (6.14 und höher, weitere zusätzliche Schritte erforderlich)
Für Clients, die kein SSL unterstützen, kann man einen Tunnel wie stunnel benutzen. Hie ein Beispiel für eine stunnel.conf Beispiel (für stunnel 4.x):
client = yes [irc] accept = 127.0.0.1:6667 connect = irc.myserv.com:6900Damit wird zu 127.0.0.1 über Port 6667 verbunden, der Datenverkehr wird verschlüsselt und weitergeleitet an irc.myserv.com port 6900 (ein SSL Port).
StunTour für mIRC kann ebenfalls hilfreich sein.
Es sollten auch die Zertifikate überprüft werden, wenn man zu einem Server verbindet und diesen nicht blind vertrauen (wie im stunnel Beispiel), andernfalls ist man noch durch "active sniffing" Angriffe (ssl redirects) empfänglich. Das ist allerdings ein anderes Thema und führt zu weit von der Erklärung zum IRCd weg. Hierzu gibt es eigene Sites im Internet um das zu lernen. Nicht bei Unreal nachfragen, es hat nichts mit dem UnrealIRCd zu tun. (mIRC und XChat öffnen ein Popup Fenster und fragen nach, ob ein Zertifikat erlaubt oder zurückgewiesen wird und das ist gut!)
UnrealIRCd unterstützt IPv6, seit beta15 stabil zu sein scheint.
Das Betriebssystem muss IPv6 unterstützen und es ist erforderlich, IPv6
Unterstützung in UnrealIRCD zu aktivieren (die entsprechende Frage bei ./config
mit "yes" beantworten).
Obwohl Microsoft eine experimentelle IPv6 Unterstützung in w2k/XP implementiert hat, wird diese (noch) nicht von UnrealIRCd unterstützt.
Zip Links können für server<->server Verbindungen aktiviert werden. Dadurch werden die Daten durch Verwendung von zlib komprimiert und es können so 60-80% Bandbreite eingespart werden. Das ist sinnvoll für Links mit niedriger Bandbreite oder für Links mit vielen Usern und kann ein wenig beim Linken helfen, da eine Menge von Daten über jeden User und jeden Channel zu übertragen sind.
Um mit zip links Support zu kompilieren, muss die zlib Frage mit "Yes" bei ./config beantwortet werden und dieses mit link::options::zip eingetragen sein.
3.11 - Dynamische DNS/IP Link Unterstützung
UnrealIRCd hat einige (neue) Features, die es ermöglichen, dass User dynamische IP's verwenden können (wie z.B.: blah.dyndns.org). Sollen zwei Hosts mit dynamischer DNS gelinkt werden, so ist set link::options::nodnscache und link::options::nohostcheck einzutragen.
Throttling
Throttling nennt man die Methode, mit der geregelt wird, wie schnell ein User die
Verbindung trennen und sich erneut zum Server verbinden kann. Im "set::throttle block" kann eingestellt werden,
X Verbindungen
innerhalb von YY Sekunden von derselben IP zu gestatten.
Channel Modi
Weiterhin gibt es einige Channel Modi, welche sehr effektiv gegen Flood sein
können. Einige davon sind:
K = no /knock (kein Anklopfen, um in Channel eingeladen zu werden), N = no
nickchanges (keine Änderung der Nicknamen möglich), C = no CTCPs
(keine CTCP möglich), M = nur registrierte User können schreiben
Seit der Beta 18 gibt es zusätzlich noch den erweiterten Modus +f...
Channel mode f
Um nicht Scripts und Bots zum Schutz gegen Channel Flood benutzen zu
müssen, ist der notwendige Schutz nun im IRCd integriert.
Ein Beispiel für den +f Modus ist: *** Blah sets mode: +f [10j]:15
Das bedeutet, dass 10 joins innerhalb von 15 Sekunden im Channel gestattet sind.
Wird dieser Wert überschritten, wird der Channel automatisch auf +i
eingestellt.
Für folgende Flood Arten stehen Aktionen zur Verfügung:
Typ: |
Name: |
Default Action: |
mögliche weitere Actions: |
Kommentar |
c |
CTCPs |
auto +C |
m, M |
|
j |
joins |
auto +i R |
|
|
k |
knocks |
auto +K |
|
(nur für lokale Clients) |
m |
messages/notices |
auto +m |
M |
|
n |
nickchanges |
auto +N |
|
|
t |
text |
kick |
b |
in messages/notices wie das alte +f. Kickt oder bannt User. |
Beispiel:
*** ChanOp sets mode: +f [20j,50m,7n]:15
<ChanOp> lalala
*** Evil1 (~fdsdsfddf@Clk-17B4D84B.blah.net) has joined #test
*** Evil2 (~jcvibhcih@Clk-3472A942.xx.someispcom) has joined #test
*** Evil3 (~toijhlihs@Clk-38D374A3.aol.com) has joined #test
*** Evil4 (~eihjifihi@Clk-5387B42F.dfdfd.blablalba.be) has joined #test
-- snip XX lines --
*** Evil21 (~jiovoihew@Clk-48D826C3.e.something.org) has joined #test
-server1.test.net:#test *** Channel joinflood detected (limit is 20 per 15 seconds), putting +i
*** server1.test.net sets mode: +i
<Evil2> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil12> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil15> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil10> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil8> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
-- snip XX lines --
-server1.test.net:#test *** Channel msg/noticeflood detected (limit is 50 per 15 seconds), putting +m
*** server1.test.net sets mode: +m
*** Evil1 is now known as Hmmm1
*** Evil2 is now known as Hmmm2
*** Evil3 is now known as Hmmm3
*** Evil4 is now known as Hmmm4
*** Evil5 is now known as Hmmm5
*** Evil6 is now known as Hmmm6
*** Evil7 is now known as Hmmm7
*** Evil8 is now known as Hmmm8
-server1.test.net:#test *** Channel nickflood detected (limit is 7 per 15 seconds), putting +N
*** server1.test.net sets mode: +N
Das Ganze kann noch erweitert (damit aber auch komplizierter) werden:
Anstelle der Default Aktion kann für einige Flood Typen auch eine andere Aktion
gewählt werden, wie z.B.: +f [20j#R,50m#M]:15
Dieser Channel wird auf +R gestellt, wenn das Join-Limit erreicht ist (>20 Joins in 15
Sekunden), und wird auf +M gesetzt, wenn das Msg Limit erreicht ist (>50
Nachrichten in 15 Sekunden).
Zusätzlich gibt es eine "Lösche nach X Minuten" Einstellung: +f [20j#R5]:15
setzt den Channel auf +R, wenn das Limit erreicht wird und nach 5 Minuten wieder
auf -R.
Ein Server kann eine Default Unset-Zeit haben (set::modef-default-unsettime),
die bewirkt, dass eine Angabe von +f [20j]:15
automatisch in +f [20j#i10]:15 umgewandelt
wird. Es handelt sich hierbei lediglich um einen Default und man kann weiterhin
auch andere Angaben wie [20j#i2]:15 setzen.
Ebenso kann man den Lösch Channel Modus auch ganz abschalten, indem man +f [20j#i0]:15
angibt (also explizit den Wert 0 setzt).
Der alte +f Modus (messageflood per User) ist weiterhin vorhanden, allerdings
als 't'. Der Eintrag +f 10:6 lautet nun +f [10t]:6
und
+f *20:10 ist jetzt +f [20t#b]:10.
Aktuell wird der ircd alte +f Modi automatisch in die neuen Modi umwandeln. Zu
beachten ist, dass es keine Unsettime Einstellung für 't' Banns gibt. ([20t#b30]:15
funktioniert nicht!).
Was der beste +f Modus ist, hängt vom jeweiligen Channel ab. Wie viele User hat
der Channel? Läuft möglicherweise ein Spiel in dem Channel, welches viele
längere Messages erfordert? Handelt es sich um einen Hauptchannel,
möglicherweise mit auto-join? Das, was in dem einen Channel Flood ist, kann in
einem anderen völlig normal sein...
Es gibt also keinen perfekten Channelmodus +f, der für alle Channels geeignet
ist. Aber für den Anfang seien hier einige Beispiele gegeben, die man auf die
eigenen Bedürfnisse anpassen kann:
+f [30j#i10,40m#m10,7c#C15,10n#N15,30k#K10]:15
30 Joins pro 15 Sekunden, bei Erreichen des Limits wird der Channel für 10 min
auf +i gesetzt
40 Messages pro 15 Sekunden, bei Erreichen des Limits wird der Channel für 10
min auf +m gesetzt
7 CTCP pro 15 Sekunden, bei Erreichen des Limits wird der Channel für 15 min
auf +C gesetzt
10 Nickänderungen pro 15 Sekunden, bei Erreichen des Limits wird der Channel
für 15 min auf +N gesetzt
30 Knocks pro 15 Sekunden, bei Erreichen des Limits wird der Channel für 5 min
auf +K gesetzt
In bestimmten größeren Channels (>75 User?) sollte man die Join Grenze
erhöhen (auf z.B.: 50) und auch das Message Limit (z.B. 60 oder 75).
Speziell die Lösch-Modi erfordern viel Feinabstimmung. Man sollte bedenken, was
passiert, wenn kein Op anwesend ist, der eine Situation regulieren kann. Soll
ein Channel 15 Minuten gesperrt sein (nicht so schön für die User)? Oder nur 5
Minuten (dann warten Flooder möglicherweise 5 min um dann erneut zu flooden)?
Das hängt auch vom Typ des Floods ab. Es beeinträchtigt User mehr, wenn sie
nicht joinen können (+i) oder nicht schreiben können (+m) als wenn sie keinen
Nick ändern können (+N) oder keine CTCP senden können (+C). Es sollten daher
unterschiedliche Zeiten für das Löschen der Modi angegeben werden..
3.13 - Bann Typen
Diese Bann Typen werden auch in der Ausnahme Liste der Channels (channel exception list
[+e]) berücksichtigt. Beispiele: (man beachte die Striche '-', die Default Angaben erzwingen) spamfilter {
UnrealIRCd unterstützt nun auch CIDR (Classless Interdomain Routing). CIDR
ermöglicht es, IP Bereiche zu bannen. IPs werden an Internet Service Provider (ISP)
unter Verwendung von CIDR vergeben. Daher ist es möglich unter Verwendung eines
CIDR basierten Banns auf einfache Weise ganze ISPs zu sperren. Unreal
unterstützt CIDR sowohl für IPv4 als auch für IPv6. CIDR Masken können
benutzt werden bei: allow::ip, ban user::mask, ban ip::mask, except ban::mask, except
throttle::mask, und except tkl::mask (für gzline, gline, and shun). Zusätzlich
kann CIDR bei /kline, /gline, /zline, /gzline, und /shun benutzt werden. Unreal
verwendet die Standard Syntax von IP/bits, z.B. 127.0.0.0/8 (passt auf 127.0.0.0 - 127.255.255.255),
und fe80:0:0:123::/64 (passt auf fe80:0:0:123:0:0:0:0 - fe80:0:0:123:ffff:ffff:ffff:ffff). UnrealIRCd hat eine Reihe weiterer Features, die hier nicht alle einzeln
aufgeführt sind. Man wird sie während der Konfiguration selbst herausfinden ;) 4.0 - Konfiguration
der unrealircd.conf
Beim ersten Mal wird das Erstellen einer guten unrealircd.conf Datei eine
gewisse Zeit in Anspruch nehmen - je nach Vorerfahrung etwa 10 - 60 Minuten. Man
kann versuchen, so rasch wie möglich den ircd zu starten und später zu
verfeinern oder man kann die Haupt Abschnitte Schritt für Schritt erlernen (was
der empfohlene Weg ist ;P). Im Falle auftretender Probleme zuerst die Syntax
überprüfen, diese Anleitung und auch die FAQ bevor man nach Hilfe fragt oder
einen Bug meldet. 4.1 Erklärung der
Konfigurationsdatei Das neue System benutzt ein Block-basiertes Format. Jeder Eintrag, also jeder
Block, in der neuen Form hat ein spezielles Format, welches etwa so aussieht: <block-name> ist der Typ des Blocks wie z.B. "me", oder
"admin". <block-directive> ist eine speziell auf den Block bezogene
Variable Innerhalb von <block-directive> können Anweisungen stehen, die dann
mit geschweiften Klammern "{ }" eingeschlossen sind. Einige Blöcke
haben keine Anweisungen sondern lediglich eine <block-value> Angabe, wie
z.B. "include". Ebenso ist zu beachten, dass es kein spezielles
Einstellungsformat gibt. Ein Block kann also in einer einzigen Zeile angegeben
werden oder in mehreren Zeilen. Normalerweise wird das oben angegebene Format
benutzt, welches leicht zu lesen ist und auch in der mitgelieferten
unrealircd.conf benutzt wird. Achtung: Die Konfigurationsdatei ist derzeit "case sensitive",
daher ist "BLOCK-NAME" nicht dasselbe wie "block-name". Es
gibt eine spezielle Notation wie Einträge in der Konfigurationsdatei als
Beschreibung angegeben werden. Spricht man z.B. über "<directive-name>"
im obigen Beispiel, so wird angegeben "<block-name>::<block-directive>"
(also zwei Doppelpunkte dazwischen), und falls die Anweisung einen Unterblock
hat, auf den sich bezogen wird, würde ein weiteres Paar "::"
hinzugefügt, gefolgt vom Namen der Unteranweisung. Bei einer Anweisung ohne Namen wird "<block-name>::"
gesagt, was einfach nur "<block-value>" bedeutet, oder es
könnte ein Eintrag in
einem Unterblock sein, der keinen Namen hat. Es gibt drei Arten von Kommentaren:: # Ein-Zeilen Kommentar Es sollte nun klar sein, wie das Block Format der .conf funktioniert und nun
kann begonnen werden, eine eigene unrealircd.conf zu erstellen. Hierzu kann man
auch dei Beispielsdatei oder Teile der Dokumentation verwenden und sich die
entsprechenden Blöcke in die eigene Datei kopieren und editieren. Es ist
empfehlenswert, sich Schritt für Schritt durch alle Blöcke und diese Anleitung
als Referenz durchzuarbeiten. 4.2 - Me Block
ERFORDERLICH (Früher
bekannt als M:Line) Syntax:
me { Diese Werte sollten klar sein. Der name gibt den Namen des Servers an
(nicht dessen Internetadresse!),
info eine kurze Info Zeile zur Beschreibung des Servers und numeric
bedeutet eine Zahl zur Identifikation des Servers. Hierbei muss es sich um einen
Wert zwischen 1 und 255 handeln, der EINMALIG im Netzwerk ist, es darf also KEIN
Server im Netzwerk denselben numeric Wert haben. Beispiel:
4.3 - Admin Block
ERFORDERLICH (Früher
bekannt als A:Line) Syntax:
Im Admin Block werden die Informationen über die Serveradministration
angegeben. Wenn ein User später eintippt:
"/admin" (oder "/admin <servername>"), so wird
ihm die hier angegebene Information dargestellt.
Es können beliebig viele Zeilen eingetragen werden, die jede beliebige
Information enthalten können, aber es gilt als Standard, mindestens den
Nicknamen des Admins und dessen email Adresse anzugeben. Weitere Informationen
können Kontakt Infos sein, die man angeben möchte. Beispiel:
4.4 - Class Block
ERFORDERLICH (Früher
bekannt als Y:Line) Syntax:
Class Blöcke definieren Verbindungs Klassen in welche Verbindungen
eingeordnet werden (z.B. von Allow Blöcken oder Server von Link Blöcken). Im
Allgemeinen hat man mehrere Class Blöcke (z.B. für Server,
für Clients, für Opers) Verbindungsklassen definieren eine Reihe von Parametern für
Verbindungen, die folgendes umfassen: name ist ein beschreibender Name wie "clients" oder "servers",
dieser Name wird später in anderen Blöcken als Referenz verwendet. pingfreq ist die Anzahl von Sekunden zwischen PINGs von diesem
Server. connfreq wird nur für Server verwendet und ist die Anzahl Sekunden
zwischen zwei Verbindungsversuchen, falls autoconnect eingeschaltet ist. maxclients gibt die maximale Gesamtzahl an Clients und Servern an,
die in dieser Klasse sein können. sendq gibt die Menge an Daten an, die sich in der Sende Queue
befinden dürfen (sehr hoch für Server mit geringer Bandbreite, mittel für Clients) recvq gibt die Menge an Daten an, die sich in der Empfangsqueue
befinden können und wird zur Flood Kontrolle verwendet (das betrifft nur
normale User, es sollte mit Werten zwischen 3000-8000 experimentiert werden, >8000
ergibt keine Änderung und 8000 ist Default). Beispiele:
4.5 - Allow Block
ERFORDERLICH (Früher
bekannt als I:Line) Syntax:
In Allow Blöcken wird angegeben, wer zum Server connecten darf. Es können
mehrere Allow Blöcke vorhanden sein (was in der Regel auch erforderlich ist). Anmerkungen zu Übereinstimmung (matching) ip host password (optional) maxperip (optional, aber empfohlen) redirect-server (optional) redirect-port (optional) options block (optional) Beispiele:
4.6 - Listen Block
ERFORDERLICH (Früher
bekannt als P:Line) Syntax:
Mit diesem Block können spezielle Ports angegeben werden, auf die der IRCD
reagiert. Falls keine Optionen erforderlich sind, kann man diesen Eintrag auch
in der einfachen Form setzen: ip und port Info für IPv6 User options block (optional) Beispiele: Oder, wenn es keine Optionen gibt: listen *:8067; 4.7 - Oper Block
EMPFOHLEN (Früher
bekannt als O:Line) Mit dem Oper Block können für den Server IRC Operatoren festgelegt werden. Zu beachten ist, dass sowohl der Loginname als auch das Passwort case sensitive
sind. Beim Eintrag oper::class muss es sich um eine schon definierte Klasse
handeln, die in der Konfigurationsdatei schon vor dieser Blockdefinition
auftaucht (also ERST Class definieren und erst DANACH oper!). Bei der oper::flags Anweisung gibt es zwei Formate. Falls man die frühere
Form der Operflags vorzieht (mit Buchstaben wie z.B.: "OAa", verwendet
man die "flags <flags>" Methode. Wenn man dagegen die neue
Form (wie z.B.: "services-admin") verwenden möchte, benutzt man die
"flags { <flag>;
}" Methode. Nachfolgend eine Liste aller Flags in beiden Formaten und ihre Bedeutung. Bestimmte Flags setzen andere Flags per Default: Mit der oper::swhois Anweisung kann eine zusätzliche Zeile für die whois
Information eines Opers gesetzt werden. [optional] Mit der oper::snomask Anweisung kann eine server notice Mask für einen Oper
voreingestellt werden, so dass man beim oper Befehl bestimmte Flags automatisch
voreingestellt sind. Siehe Abschnitt 3.3
für
Infos über snomasks. [optional]
Mit der oper::modes Anweisung können Modi für Opers voreingestellt
werden, so dass man beim oper Befehl bestimmte Flags automatisch
voreingestellt sind. [optional]
Mit der oper::maxlogins Anweisung kann man die
die Anzahl gleichzeitiger Oper Logins einschränken. Wenn hier z.B. der Wert 1
eingestellt wird, kann immer nur eine Person über diesen Oper Block eingeloggt
sein. [optional]
Beispiel:
4.8 - DRpass Block
EMPFOHLEN (Früher
bekannt als X:Line) Syntax:
Mit den Blöcken drpass::restart und drpass::die werden die Passworte für
die Befehle "/restart" und "/die" festgelegt. Ebenfalls ist
es möglich, einen Typ der Authentifizierung festzulegen. Gültige Typen sind
hierbei crypt, md5, und sha1, ripemd-160. Beispiel: Syntax:
include <file-name>; Mit dieser Anweisung wird eine separate Konfigurationsdatei mit dem Namen
"file-name" geladen. Diese Datei kann jeden Typ von Config Blöcken
enthalten und ihrerseits weitere Include Anweisungen enthalten. Wildcards im
Dateinamen werden unterstützt, wodurch es auch möglich ist, mehrere Dateien
auf einmal zu laden.. Beispiel 1: eine network Datei
Diese Anweisung lädt die Datei "mynetwork.network, wenn man eine eigene
network Datei verwenden möchte. Eigene network Dateien sind eigentlich nicht
mehr erforderlich, da sämtliche Anweisungen auch in der unrealircd.conf stehen
können. Mit einer Include Anweisung kann man das File statt dessen getrennt
halten und laden. Beispiel 2: aliases
Ein weiteres Beispiel für die Anwendung von Alias Blöcken. UnrealIRCd wird
mit einigen Dateien geliefert, die schon die wesentlichen Aliasse für die
meisten Services enthalten.: 4.10 - LoadModule
Anweisung ERFORDERLICH Syntax: Warum Module hilfreich sind, kann hier
nachgelesen werden. Folgende Module werden standardmäßig bei Unreal3.2 mitgeliefert: commands.so /commands.dll - Enthält sämtliche / Befehle (noch nicht wirklich alle,
aber sicher in einer der nächsten Versionen) ERFORDERLICH Es ist sicherzustellen, dass diese Module in jedem Fall geladen werden: loadmodule "src/modules/commands.so"; oder unter Windows:
Syntax:
Mit dem Log Block kann man verschiedene Logfiles zu den unterschiedlichsten
Zwecken erstellen lassen. Dabei bezeichnet log:: den Namen der Logdatei. Es können auch mehrere Log Blocks definiert sein, um unterschiedliche Dinge
in verschiedenen Dateien zu loggen. Gültige Flags: Flag Bedeutung errors selbsterklärend
kills zeichnet /kill Meldungen auf
tkl zeichnet Infos auf über *lines, shuns und Spamfilter (setzen, löschen,
Ablauf)
connects Zeichnet connects/quits der User auf
server-connects Zeichnet connects/squits der Server auf
kline Zeichnet Infos /kline auf
oper Zeichnet Oper Zugriffe auf (sowohl fehlgeschlagene als
auch erfolgreiche) Beispiel: 4.12 - TLD Block
OPTIONAL (Früher
bekannt als T:Line) Syntax:
Mit dem TLD Block eine motd (Messageoftheday), rules und channels für einen
User basierend auf deren Host festlegen. Das ist nützlich, falls man
verschiedene motd's für verschiedene Sprachen verwenden möchte. TLD Einträge werden von unten nach oben abgearbeitet. Beispiel:
4.13 - Ban Nick Block
OPTIONAL (Früher
bekannt als Q:Line) Syntax:
Mit dem Ban Nick Block können bestimmte Nicknamen auf dem Server gesperrt
werden. Beispiel:
4.14 - Ban User Block
OPTIONAL (Früher
bekannt als K:Line) Syntax:
Mit diesem Block kann man verbieten, dass sich ein user@host zum Server
verbindet. Beispiel:
4.15 - Ban IP Block
OPTIONAL (Früher
bekannt als Z:Line) Syntax:
Der Ban IP Block verhindert das Verbinden von bestimmten IP Adressen her zum
Server. Das gilt sowohl für Verbindungsversuche von Usern als auch von Servern. Beispiel:
4.16 - Ban Server Block
OPTIONAL (Früher
bekannt als q:Line) Syntax:
Dieser Block verhindert, dass sich bestimmte Server zum eigenen Server
verbinden können. Beispiel:
4.17 - Ban RealName Block
OPTIONAL (Früher
bekannt als n:Line) Syntax:
Der Ban Realname Block ermöglicht es, Clients auf das GECOS (Realname) Feld
zu testen und entsprechend zu bannen, Das kann hilfreich sein, um Floods von
Clones zu vermindern, da Floodbots des öfteren denselben Eintrag im Realnamen
Feld verwenden. Beispiel:
4.18 - Ban Version Block
OPTIONAL (Früher
nicht vorhanden) Syntax:
Mit dem "ban version block" kann man Clients in Abhängigkeit der
von ihnen verwendeten IRC Software bannen. Dazu wird die Antwort auf die CTCP Versions
Abfrage ausgewertet. Deshalb wird dieser Bann dann nicht wirksam sein, wenn der
entsprechende Client keine CTCP Version sendet. Mit diesem Feature ist es
möglich, bestimmte möglicherweise störende Scripts zu blocken und damit zu
verbieten. Beispiele:
ban version { 4.19 - Ban Exceptions Block
OPTIONAL (Früher
bekannt als E:Line) Syntax:
Mit dem "except ban Block" kann man user@host
Masken angeben, die von den gesetzten Banns der Blöcke zuvor ausgenommen werden
sollen. So etwas kann verwendet werden, falls man z.B. ganze ISP bannen möchte,
aber einzelnen Usern trotzdem die Verbindung erlauben möchte. Dazu bei except::mask
den oder die Hosts eintragen (als user@host Mask) die trotz globalem Bann
connecten dürfen. Beispiel:
4.20 - TKL Exceptions Block
OPTIONAL (Früher
nicht vorhanden) Syntax:
Mit dem "except tkl Block" kann man user@host
Masken angeben, die von den gesetzten tkl Banns (also G-Lines, Shuns, GZ
Lines) auf breitere Hosts ausgenommen werden sollen. So etwas kann verwendet werden, falls man z.B.
ganze ISP bannen möchte, aber einzelnen Usern trotzdem die Verbindung erlauben
möchte. Dazu bei except::mask den oder die Hosts eintragen (als user@host
Mask) die trotz globalem Bann connecten dürfen. Bei except::type wird
angegeben, welcher Bann Typ ausgenommen werden soll. Gültige Typen sind hier:
gline, gzline, qline, gqline und shun, für Ausnahmen von Glines, Global Zlines,
Qlines, Global Qlines und Shuns. Wenn das {} Format benutzt wird, können
unterschiedliche Typen angegeben werden. Beispiel:
4.21 - Throttle Exceptions Block
OPTIONAL (Früher
nicht vorhanden)
Syntax:
Der "except throttle block" gestattet die Angabe einer IP Maske,
für die das
throttling System nicht gelten soll. Dieser Block hat nur eine Auswirkung,
wenn throttling im "set Block" auch aktiviert
ist. Die bei
except::mask angegebene IP Maske wird nicht wegen Throttlings gebannt. Beispiel:
4.22 - Deny DCC Block
OPTIONAL (Früher
bekannt als dccdeny.conf)
Syntax:
Im "deny dcc Block" können Dateinamen angegeben werden, die nicht
per DCC über den Server versandt werden dürfen. Das kann helfen, die
Verteilung von Viren und Trojanern zu verhindern. Der Parameter deny::filename definiert eine Maske von Dateinamen,
deren Versand blockiert wird, Wildcards sind hier möglich. deny::reason
legt den anzuzeigenden Grund für die Sperrung der Datei fest. Ferner gibt es eine deny::soft Option. Wenn diese auf 'yes'
gesetzt ist, ist dcc so lange gesperrt, bis der User es explizit via /DCCALLOW +nickname-der-versucht-zu-senden
erlaubt. Beispiel:
4.23 - Deny Version Block
OPTIONAL (Früher
bekannt als V:Line) Syntax:
Mit diesem Block ist es möglich, Server aufgrund der Version ihres Unreal
Ircds bzw. des Compilierungszeitpunktes oder bestimmter Optionen vom Linken
auszuschliessen. Das Format des Blockes ist etwas komplex, aber nicht so schwer
zu verstehen. Ein Beispiel: Für den UnrealIRCD Version 3.0 ist die Versionsnummer 2301,
für 3.1.1/3.1.2 ist es 2302 und für 3.2 ist es 2303. Das erste Zeichen
des Parameters kann eines der folgenden sein: >, <, =, !. Dieses Zeichen
gibt an, wie der IRCD die Version interpretieren soll. Ist also z.B. das erste
Zeichen ein ">" so werden alle Versionen mit einer größeren
Nummer abgelehnt. Handelt es sich um ein "<", so werden alle
kleineren Versionen abgelehnt. Bei einem "=" wird nur die angegebene
Version abgelehnt. Bei einem "!" werden alle Versionen außer der
angegebenen abgelehnt. 4.24 - Deny Link Block
OPTIONAL (Früher
bekannt als D/d:Line) Syntax:
Mit diesem Block können Regeln angegeben werden, nach denen man Server vom
Linken ausschliessen kann. 4.25 - Deny Channel Block
OPTIONAL (Früher
bekannt als chrestrict.conf)
Syntax:
Mit dem "deny channel Block" kann man Usern das joinen bestimmter
Channels verbieten. In deny::channel wird die Maske der Channels
angegeben, die die User nicht betreten dürfen, Wildcards sind erlaubt. In deny::reason
wird der anzuzeigende Grund eingetragen, weswegen der Channel nicht betreten
werden kann. Darüber hinaus kann in deny::redirect ein Channel
angegeben werden, in den ein User umgeleitet wird, falls er versucht einen
gesperrten Channel zu betreten. Darüber hinaus kann über deny::warn
(falls eingestellt) angegeben werden, dass eine OperNotice (an EYES snomask)
gesendet wird, wenn ein User versucht, einen solchen Channel zu joinen. Beispiel: 4.26 - Allow Channel Block
OPTIONAL (Früher
nicht vorhanden)
Syntax:
Mit dem "allow channel Block" kann man Channels festlegen, in die
User joinen dürfen. In allow::channel wird eine Channel Maske angegeben,
die auch Wildcards enthalten kann und festlegt, in welche Channels die User
joinen dürfen. Beispiele: 4.27 - Allow DCC Block
OPTIONAL (Früher
nicht vorhanden)
Syntax:
Mit dem "allow dcc Block" kann man Ausnahmen zum deny dcc Block
festlegen, wobei Wildcards erlaubt sind. Wenn allow dcc::soft auf 'yes'
gesetzt ist, gilt die 'soft dcc Bann Liste', wenn 'no' eingestellt ist, gelten
normale ('harte') dcc Banns. Beispiel: 4.28 - Vhost Block
OPTIONAL (Früher
bekannt als vhosts.conf)
Syntax:
Der "vhost Block" ermöglicht es, eine "login"/"Passwort"
Kombination festzulegen, die in Verbindung mit dem /vhost Befehl einen Fake
Hostnamen ermöglicht. Der vhost::vhost Parameter kann entweder in der
Form "user@host" oder einfach als Hos angegeben werden, damit
der User erfolgreich /vhost durchführen kann. vhost::from::userhost
enthält einen "user@host" der zu dem User passen muß, um einen
vhost zu erhalten. Es kann mehr als eine Host Maske angegeben werden. vhost::login
ist der Login Name, den der User eingeben muss und vhost::password ist
das einzugebende Passwort. Darüber hinaus kann bei vhost::password::
auch ein Authentifizierungstyp für Verschlüsselung angegeben werden.
Unterstützt werden hier z.Zt. crypt, md5, und sha1, ripemd-160. vhost::swhois
ermöglicht es, eine Extra Zeile für eine /whois Abfrage einzufügen, genau wie
im Oper Block bei "oper::svhost". Beispiel:
4.29 - Badword Block
OPTIONAL (Früher
bekannt als badwords.*.conf)
Syntax:
Mit dem Badword Block kann die Liste für User- und Channelmodus +G
bearbeitet werden, um bestimmte "badwords" zu beahandeln. badword::
legt den Typ fest, wobei gültige Werte hier sind: channel, message und quit. channel
gilt für Channel Modus +G list, message gilt für User Modus +G list, und quit
gilt für die quit Meldung. badword::word kann ein einfaches Wort sein
oder ein Ausdruck, nach dem gesucht werden soll. badword::replace ist ein
Ersetzungstext, der anstelle des gefundenen Badwords angezeigt wird. Wird hier
nichts eingetragen, so wird ein gefundenes Badword durch <censored>
erstezt. Bei badword::action wird angegeben, was im Falle eines
gefundenen Badwords geschehen soll. Wird hier das Wort "replace"
eingetragen, dann wird das Badword ersetzt. Falls hier "block"
angegeben wird, wird die gesamte Nachricht gar nicht erst angezeigt. Falls
"badword::action" nicht gesetzt ist, wird "replace" als
Default angenommen. Beispiel:
4.30 - ULines Block
OPTIONAL (Früher
bekannt als U:Line) Syntax:
Mit dem ulines block können bestimmte Server mit speziellen Zwecken
definiert werden. Das sollte ausschließlich für Server wie "services"
oder "stats" benutzt werden und nicht für normale Server. Jeder
Eintrag steht für den Namen des Servers mit einem besonderen Zweck. Beispiel: 4.31 - Link Block
OPTIONAL (Früher
bekannt als C/N/H:Lines)
Syntax:
Dieser Block wird benötigt, um Server zueinander linken zu lassen. Man
sollte sich Zeit nehmen, hierzu alles genau zu lesen, weil das Ganze nicht
unkompliziert ist und hier die häufigsten Fehler gemacht werden. Der erste Eintrag, server-name, ist der Name des zu verbindenden
entfernten Servers, so wie er in dessen Me { } Block definiert wurde (z.B.:
hub.blah.com).
Es darf sich nicht um eine IP handeln und der Eintrag kann sich von "hostname"
unterscheiden. username hostname bind-ip (optional) port password-connect password-receive hub oder leaf hub (optional) leaf (optional) leaf-depth (optional) class compression-level (optional) ciphers (optional) options block Beispiel: 4.32 - Alias Block
OPTIONAL (Früher
nicht vorhanden)
Syntax [standard alias]: (Hinweis: siehe auch hier , welche Standard
Alias Dateien bei UnrealIRCd mitgeliefert werden.) Mit dem "alias block [standard alias]" kann festgelegt werden, dass
ein Befehl an einen User geleitet wird. So wird z.B. durch /chanserv eine
Nachricht an den "User" chanserv weitergeleitet. alias:: legt
den Namen des Befehls fest, der das Alias wird, z.B. 'chanserv'. alias::target ist
der Nickname, an den weitergeleitet wird. Wenn "alias::" identisch mit
dem Nick ist, an den weitergeleitet wird, kann "alias::target"
weggelassen werden. alias::type gibt den Typ des Alias an, gültige
Typen sind hier "services" (der User ist auf dem Services Server),
"stats" (der User ist auf dem Stats Server), und "normal" (der
User ist normaler User auf irgendeinem Server). Der "alias block" hat
auch einen weiteren Zweck, der nachfolgend erklärt ist. Syntax [Befehl alias]:
Wird der "alias Block" in diesem Format benutzt, ermöglicht er
eine breitere Anwendungsweise. Beispielsweise kann man einen Alias wie /identify
erstellen. alias::
ist dasselbe wie oben, der Name des Alias Befehls. alias::format legt
einen regulären Ausdruck fest, der mit dem Text verglichen wird, der als Alias
Befehl gesandt wurde. Es können mehrere "alias::format" angegeben
werden, um unterschiedliche Dinge in Abhängigkeit vom gesandten Text
durchführen zu lassen. alias::format::target ist das Ziel (der Name), an den der
Alias weitergeleitet wird. alias::format::type definiert den Typ des
Alias, zu dem die Nachricht geleitet wird. alias::format::parameters
ist, was als Parameter an den Alias geschickt wird. Um Parameter für einen
Befehl an den Alias anzugeben, wird ein "%" gefolgt von einer Nummer
angegeben. So ist z.B. %1 der erste Parameter, %2 der zweite Parameter usw.
Man kann auch festlegen, dass ab einem Parameter alle bis zum Ende gelten
sollen, dann gibt man z.B. an: %1- (das Minuszeichen bedeutet: "alle
weiteren") Zusätzlich kann man %n angeben, was durch den Nicknamen des
Users ersetzt wird, der den befehl ausgeführt hat. Um Beispiele zum Alias Block
zu sehen, schaue man in doc/example.conf. 4.33 - Help Block
OPTIONAL (Früher
nicht vorhanden)
Syntax:
(zu beachten: Normalerweise genügt es statt dessen die help.conf per Include
einzufügen) Der "help block" ermöglicht es, Einträge zur Verwendung für den
Befehl "/helpop" zu erstellen. help::
ist der Begriff, der später dem /helpop Befehl als Parameter übergeben wird.
Wird hier kein Begriff angegeben, wird das Feld so verwendet, wie wenn bei
"/helpop" kein weiterer Parameter angegeben ist (also z.B. eine
globale Hilfe Übersicht). Die Einträge für den "help Block"
sind der Text, der später dem User nach der Eingabe von "/helpop"
angezeigt werden. 4.34 - Offizielle
Channels Block
OPTIONAL (Früher
nicht vorhanden)
Syntax:
official-channels { Offizielle Channels werden in der Channelliste (/list) auch
angezeigt, wenn keine User im Channel sind. Das topic ist optional und
wird nur angezeigt, wenn der Channel 0 User hat. Beispiel: official-channels { 4.35 - Spamfilter Block
OPTIONAL (Früher
nicht vorhanden)
spamfilter { 4.36 - Set Block
ERFORDERLICH (Früher
bekannt als unrealircd.conf/networks file)
Im Set Block findet sich das, was früher in der networks/unrealircd.conf und
der networks Datei von UnrealIRCd angegeben wurde. In Einzel-Server Netzwerken
kann man die Set Anweisungen einfach in die unrealircd.conf eintragen, während
es empfehlenswert ist, in größeren Netzwerken mit mehreren Servern weiterhin
eine "networks" Datei zu verwenden. Wenn nämlich der Server in ein Netzwerk eingebunden ist, werden
wahrscheinlich überall die selben "Set" Einstellungen verwendet, so
dass es mehr Sinn macht, eine "network" Datei zu verwenden, die mit
der include Anweisung eingebunden wird. Weiter unten werden sämtliche
möglichen "Set" Anweisungen im Einzelnen beschrieben. In dieser Dokumentation werden Einstellungen / Anweisungen im <block-name>::<block-directive>
Format angegeben. Dieses Format kann jedoch NICHT so in die
unrealircd.conf eingetragen werden! Die Angaben MÜSSEN in das
nachfolgend beschriebene Format konvertiert werden! Die Darstellung im
vereinfachten Format dient nur der vereinfachten Beschreibung der möglichen
Einstellungen. Syntax:
Im "Set Block" werden die Optionen für bestimmte Server
Funktionen eingestellt. Jeder Eintrag bewirkt etwas anderes und deshalb wird
jeder einzeln beschrieben. Es gibt viele zu berücksichtigende Anweisungen und
alle nachfolgend beschriebenen Anweisungen können in EINER "Set"
Definition eingetragen werden. Wenn eine Anweisung Optionen ermöglicht oder
erfordert, werden diese genauso in der einzelnen "Set" Anweisung mit
angegeben. Beispiel:
Sollen die "Set" Anweisungen getrennt erfolgen, also z.B. die
Optionen in einer einzelnen Zeile aufgeführt werden, ist auch dies
möglich:. set::kline-address <email-address>; set::modes-on-connect <+modes>; set::snomask-on-connect <+modes> set::modes-on-oper <+modes>; set::snomask-on-oper <+modes>; set::modes-on-join <+modes>; set::restrict-usermodes <modes> set::restrict-channelmodes <modes> set::restrict-extendedbans <types|*> set::auto-join <channels>; set::oper-auto-join <channels>; set::anti-spam-quit-message-time <timevalue>; set::prefix-quit <text-to-prefix-quit>; set::static-quit <quit message>; set::static-part <no|yes|part message>; set::who-limit <limit>; set::silence-limit <limit>; set::oper-only-stats <stats-list>; set::oper-only-stats {<stats-flag>; <stats-flag>;}; set::maxchannelsperuser <amount-of-channels>; set::maxdccallow <amount-of-entries>; set::channel-command-prefix <command-prefixes>; set::allow-userhost-change [never|always|not-on-channels|force-rejoin] set::options::hide-ulines; set::options::flat-map; set::options::show-opermotd; set::options::identd-check; set::options::show-connect-info; set::options::dont-resolve; set::options::mkpasswd-for-everyone; set::options::allow-part-if-shunned; set::dns::timeout <timevalue>; set::dns::retries <number-of-retries>; set::dns::nameserver <name-of-dns-server>; set::network-name <name-of-network>; set::default-server <server-name>; set::services-server <server-name>; set::stats-server <server-name>; set::help-channel <network-help-channel>; set::cloak-keys { <"key1">; <"key2">; <"key3">; }; set::hiddenhost-prefix <prefix-value>; set::hosts::local <locop-host-name>; set::hosts::global <globop-host-name>; set::hosts::coadmin <coadmin-host-name>; set::hosts::admin <admin-host-name>; set::hosts::servicesadmin <servicesadmin-host-name>; set::hosts::netadmin <netadmin-host-name>; set::hosts::host-on-oper-up <yes/no>; set::ssl::egd <filename>; set::ssl::certificate <filename>; set::ssl::key <filename>; set::ssl::trusted-ca-file <filename>; set::ssl::options::fail-if-no-clientcert; set::ssl::options::no-self-signed; set::ssl::options::verify-certificate; set::throttle::period <timevalue> set::throttle::connections <amount>; set::ident::connect-timeout <amount>; set::ident::read-timeout <amount>; set::anti-flood::unknown-flood-bantime <timevalue>; set::anti-flood::unknown-flood-amount <amount>; set::anti-flood::away-flood <count>:<period> set::anti-flood::nick-flood <count>:<period> set::default-bantime <time> set::modef-default-unsettime <value> set::modef-max-unsettime <value> set::ban-version-tkl-time <value> set::spamfilter::ban-time <value> set::spamfilter::ban-reason <reason> set::spamfilter::virus-help-channel <channel> set::spamfilter::virus-help-channel-deny <yes|no>
set::spamfilter::except <target(s)> T ACHTUNG: die /helpop Dokumentation ist aktueller, nutze /helpop Befehl
(oder /helpop ?Befehl wenn Du Oper bist), um zusätzliche Informationen
über einen Befehl zu erhalten. 8 – Sicherheits Tipps/Checkliste Wenn man um die Sicherheit besorgt ist (und das sollte man
sein!), findet man in diesem Abschnitt Hilfe, um einen Überblick über
Risiken und deren Bedeutung zu erhalten. Man kann diesen Abschnitt auch als
"Checkliste" benutzen, um die Netzwerk Konfiguration zu überprüfen
und sie sicherer zu machen.
Die Liste ist na Popularität/Risiko und Level der am meisten
verwendeten Methoden bei Attacken geordnet: 8.2 Nicht IRCD betreffende Angriffsmöglichkeiten 8.3 Berechtigungen und Config
Datei 8.6 Denial of Service Angriffe (DoS)
[oder: wie schütze ich meinen hub Allerdings sind solche Dinge wenig hilfreich, wenn sie später (z.B. nach
einigen Monaten) durchgeführt werden, statt von Anfang an. Sonst könnte die
IP nämlich bereits bekannt sein und auch einigen böswilligen Menschen. Es ist auch zu beachten, dass Angreifer weiterhin die Nicht-Hub Server
flooden können, aber das bedeutet einen höheren Aufwand, als lediglich 1-2
Schwachpunkte (die Hubs) anzugreifen. Das trägt damit ebenso zum Überleben
von Hubs & Services bei :). MAP / LINKS 9 – Frequently Asked Questions (FAQ) Die FAQ kann man online hier
lesen .
UnrealIRCd unterstützt die einfache Bann Form: +b
nick!user@host.
Angenommen, der verdeckte Host von jemandem ist 'rox-ACB17294.isp.com' und es
wird ein Bann auf *!*@rox-ACB17294.isp.com gesetzt, dann wird auch, wenn der
User sich selbst -x setzt (und sein Host z.B. zu 'dial-123.isp.com' wird), der
Bann weiterhin gelten. Banns werden immer sowohl gegen reale Hosts UND verdeckte
Hosts geprüft.
Auch IP Banns (z.B.: *!*@128.*) sind möglich und werden ebenso immer geprüft.
Banns auf verdeckte IPs erfordern einige Erklärungen:
Angenommen, ein User hat die IP 1.2.3.4, dann könnte sein verdeckter Host '341C6CEC.8FC6128B.303AEBC6.IP'
sein.
Wenn man auf '*!*@341C6CEC.8FC6128B.303AEBC6.IP' einen Bann setzt, bannt man '*!*@1.2.3.4'
(einleuchtend...)
Wenn man auf '*!*@*.8FC6128B.303AEBC6.IP' einen Bann setzt, bannt man '*!*@1.2.3.*'
Wenn man auf '*!*@*.303AEBC6.IP' einen Bann setzt, bannt man '*!*@1.2.*'
(Die "Stelle" in der verdeckten IP ist also genau anders herum, wie in
der realen IP)
Diese Information könnte hilfreich sein, wenn man entscheidet, wie breit eine
Maske sein soll.
Erweiterte bann Typen
Erweiterte Bann Typen sind so aufgebaut: '~[!]<type>:<stuff>'.
Gegenwärtig gibt es folgende Typen:
Typ
Name
Erklärung
~q
quiet
User, auf die dieser Bann gesetzt ist, können joinen, aber
nicht schreiben, solange sie nicht +v oder höher haben. Beispiel: ~q:*!*@blah.blah.com
~n
nickchange
User, auf die dieser Bann gesetzt ist, können ihre Nicks
nicht ändern, solange sie nicht +v oder höher haben. Beispiel: ~n:*!*@*.aol.com
~c
Channel
Wenn der User in diesem Channel ist, kann er nicht joinen.
Beispiel: ~c:#lamers
~r
Realname
Wenn der Realname des Users gebannt ist, kann der User nicht
joinen. Beispiel: ~r:*Stupid_bot_script*
Zu Beachten: Ein Unterstrich ('_') bedeutet beides, sowohl ein
Leerzeichen (' '), als auch den Unterstrich ('_') selbst. Der Bann aus dem
Beispiel oben würde also 'Stupid bot script v1.4' treffen.
Ebenso können über Module andere erweiterte Bann Typen definiert werden.
Spamfilter ist ein neues System gegen Spam, Belästigungen, Würmer etc. Es
arbeitet ein wenig ähnlich wie 'badwords', hat aber einige Erweiterungen..
Spamfilter werden durch den /spamfilter Befehl mit der folgenden Syntax
gesetzt:
/spamfilter [add|del|remove|+|-] [type] [action] [tkltime] [reason] [regex]
[type]
gibt an, auf welchen Nachrichtentyp reagiert
werden soll;
Zeichen:
Config Eintrag
Bedeutung
c
channel
Nachricht im Channel (öffentlich)
p
privat
Private Nachricht (von User --> User)
n
private-notice
Private Notiz
N
channel-notice
Channel Notiz
P
part
Grund Angabe beim Verlassen des Channels
q
quit
Grund Angabe beim Beenden des Chats
d
dcc
DCC Dateiname
u
user
bannt User, geprüft wird auf nick!user@host:realname
Es ist möglich, mehrere Ziele anzugeben, wie
z.B.: cpNn
[action]
gibt an, welche Aktion erfolgen soll (es kann nur 1 Aktion
angegeben werden)
kill
Killt den User
tempshun
setzt für die laufende Verbindung einen Shun auf den User
(bei Reconnect ist der Shun aufgehoben
shun
Setzt einen Shun auf den Host
kline
Setzt eine kline auf den Host
gline
Setzt eine gline auf den Host
zline
Setzt eine zline auf den Host
gzline
Setzt eine gzline (globale zline) auf den Host
block
Blockiert lediglich die Nachricht
dccblock
markiert den User derart, dass er nicht in der Lage ist,
irgend welche DCCs zu senden
viruschan
User wird aus allen Channels entfernt, wird in den unter set::spamfilter::virus-help-channel
eingetragenen Channel geforwardet, alle Befehle außer PONG und ADMIN
werden deaktiviert und msg/notices werden zum Channel aus set::spamfilter::virus-help-channel
geleitet.
[tkltime]
Die Zeitdauer, die für eine durch den Filter
gesetzte Line gilt. Um den Default zu benutzen oder zum Übergehen (z.B. wenn action = 'block'),
lediglich ein '-' eintragen,
[reason]
Der anzuzeigende Grund für Block- oder *lines
Befehle. Man kann hier KEINE Leerzeichen eintragen, aber Unterstriche
('_') werden zur Laufzeit in Leerzeichen umgesetzt. Ein doppelter
Underscore ('__') erzeugt einen Underscore ('_') in der Ausgabe. Auch hier
ein '-' eintragen, um den Default zu benutzen.
[regex]
gibt den Ausdruck oder das 'bad word' an, welches geblockt werden
soll, oder worauf die Aktion erfolgen soll
/spamfilter add pc gline - - Come watch me on my webcam
Wenn der Text "come watch me on my webcam" entweder in einer priv msg
oder in einer Channel Nachricht auftaucht, wird er blockiert und auf den Sender
eine G-Line gesetzt.
/spamfilter add pc block - - come to irc\..+\..+
Hier wird auf Werbungen wie "Hi, come to irc.blah.net"
usw. geprüft und die Nachricht wird einfach nur geblockt.
Und ein Beispiel mit time/reason:
/spamfilter add p gline 3h Please_go_to_www.viruscan.xx/nicepage/virus=blah Come watch me on my webcam
Wenn der Text "come watch me on my webcam" in einer privaten Nachricht
gefunden wird, erfolgt eine G-Line für 3 Stunden mit dem Grund: "Please go to
www.viruscan.xx/nicepage/virus=blah".
Spamfilter die über /spamfilter definiert werden, gelten netzweit. Sie wirken
unabhängig davon, ob der User +G gesetzt hat und nur Oper und U-Lines
(Services) sind von der Filterung ausgenommen.
Spamfilter können auch in der Config Datei eingetragen sein, doch sie sind dann
nur lokal für den Server, auf dem sie eingetragen sind (also nicht netzweit),
gültig.
Die Syntax dieser spamfilter { } Blöcke wird hier
erklärt:
Beispiel:
regex "//write \$decode\(.+\|.+load -rs";
target { private; channel; };
reason "Generic $decode exploit";
action block;
};
set::spamfilter::ban-time ermöglicht die Festlegung einer Default Bann
Dauer für *lines die durch den Spamfilter gesetzt wurden (default: 1 Tag)
set::spamfilter::ban-reason ermöglicht die Festlegung eines Grundes für
die *lines (Default: 'Spam/advertising'). Mehrere Worte sind durch Underscores
("_") und nicht durch Leerzeichen zu trennen.
set::spamfilter::virus-help-channel ermöglicht die Angabe eines
Channels, in den bei der Action 'viruschan' gejoined wird (Default: #help)
set::spamfilter::virus-help-channel-deny ermöglicht es, normale Joins in
den virus-help-channel zu blockieren (Default: no)
<block-name> <block-value> {
<block-directive> <directive-value>;
};
<block-value> gibt bei einigen Typen einen notwendigen Wert an,
wie z.B. "/oper login", oder in anderen Fällen einen Untertyp wie
in "ban user".
<directive-value> ist der zugewiesene Wert. Falls <directive-value>
Leerzeichen oder Kommentarzeichen enthält, muss die Abgabe von
Anführungszeichen eingeschlossen sein. Soll das Anführungszeichen ebenfalls
Bestandteil des Eintrags sein, muss im das Zeichen "\" vorangestellt
werden, damit es als Anführungszeichen erkannt wird.
// Ein-Zeilen Kommentar
/* Kommentar
über mehrere
Zeilen */
name <Name-des-Servers>;
info <Server-Beschreibung>;
numeric <Server-Nummer>;
};
me {
name "irc.foonet.com";
info "FooNet Server";
numeric 1;
};
admin {
<Text-Zeile>;
<Text-Zeile>;
};
admin {
"Bob Smith";
"bob";
"widely@used.name";
};
class <name> {
pingfreq <Ping-Frequenz>;
connfreq <Connect-Frequenz>;
maxclients <Maximum-Clients>;
sendq <send-queue>;
recvq <recv-queue>;
};
class clients {
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers{
pingfreq 90;
maxclients 10; /* Maximum an gleichzeitigen möglichen Server Verbindungen */
sendq 1000000;
connfreq 100; /* Wieviele Sekunden zwischen jedem Verbindungs Versuch */
};
allow {
ip <user@ip-connection-mask>;
hostname <user@host-connection-mask>;
class <connection-class>;
password <connection-password> { <auth-type>; };
maxperip <max-connections-per-ip>;
redirect-server <server-to-forward-to>;
redirect-port <port-to-forward-to>;
options {
<option>;
<option>;
...
};
};
Die Zugangskontrolle arbeitet folgendermaßen: Es müssen entweder IPs
übereinstimmen ODER Hosts. Einträge von "hostname *@*;" und "ip
*@1.2.3.4;" stimmen also mit allem überein und gestatten einen
universellen Zugang. Allow Blöcke in der unrealircd.conf werden von unten
nach oben ausgewertet, deswegen müssen spezielle Host/IP Böcke NACH den
allgemeinen *@* Allow Blöcken aufgeführt werden. Soll ein Block
ausschliesslich für eine IP gelten, so ist das Feld "hostname" auf
irgendeinen ungültigen Wert zu setzen, wie z.B. "hostname NOBODY;".
Dadurch wird der Allow Block ausschliesslich auf Übereinstimmung der IP
eingestellt.
Für die IP Maske gilt die Form user@ip, dabei ist user der ident und meist mit
* eingetragen, ip ist eine gültige IP Adresse, die ebenfalls Wildcards
enthalten kann. Einige Beispiele: *@* (jeder von überall her), *@192.168.* (jeder,
dessen IP Adresse mit 192.168 beginnt), etc.
Für die host gilt die Form user@hostmask, dabei ist user der ident und meist
mit * eingetragen, hostmask eine Internetadresse. Einige Beispiele: *@* (jeder
von überall her), *@*.wanadoo.fr (nur User von wanadoo.fr).
Die Verbindung erfordert ein Passwort. Zusätzlich kann hier eine
Verschlüsselungs Methode angegeben werden.
Festlegung, wieviele Verbindungen mit derselben IP auf dem Server erlaubt sind (z.B.: maxperip 4;).
Wenn die Klasse voll ist, werden User zu diesem Server umgeleitet (wenn der
Client das unterstützt [mIRC 6 unterstützt es]).
Wenn ein redirect-server angegeben ist, kann hier der Port eingetragen werden.
Ohne Eintrag wird 6667 als Default angenommen.
Gültige Optionen sind:
useip immer nur IP stat Hostnamen anzeigen
noident kein ident verwendensondern den vom Client
übergebenen Usernamen
ssl Übereinstimmung ist nur gegeben, wenn der User
via SSL verbindet
nopasscont Überprüfung fortsetzen, wenn kein
Passwort angegeben wurde (dadurch kann man User, die ein Passwort übermitteln
in eine extra Klasse
packen).allow {
ip *;
hostname *;
class clients;
maxperip 5;
};
allow {
ip *@*;
hostname *@*.passworded.ugly.people;
class clients;
password "f00Ness";
maxperip 1;
};
listen <ip:port> {
options {
<option>;
<option>;
...
};
};
<ip:port>;.
Die IP wird normalerweise auf "*" eingestellt, aber man kann auch eine
IP eingeben, um ausschließlich diese an den Port zu binden.. Der Port ist die
Nummer des Ports, der hier eingestellt werden soll. Man kann sowohl einen
Portbereich als auch einen einzelnen Port angeben Beispielsweise bewirkt die
Angabe "6660-6669", dass auf jeden Port von 6660 bis 6669 (einschließlich)
reagiert wird. IPv6 User: siehe nächster Absatz.
Wenn für den Server IPv6 aktiviert ist, müssen die IPs in eckige Klammern (Brackets,
"[ ]") eingeschlossen sein, wie z.B.: "[::1]:6667" (reagiere
auf Local Host an Port 6667). Verwendet man IPv6 und es soll eine bestimmte IPv4
Adresse definiert werden, gilt das Format: "::ffff:ipv4ip". Ein
Beispiel:
[::ffff:203.123.67.1]:6667 (reagiert wird auf IP 203.123.67.1 auf Port 6667).
Allerdings kann man auch "*" mit IPv6 verwenden.
Für den Port können besondere Optionen angegeben werden. Gültige Optionen
sind:
Port ist nur für Clients Port ist nur für Server CR javachat support SSL encrypted port listen *:6601 {
options {
ssl;
clientsonly;
};
};
listen *:6660-6669;oper <name> {
from {
userhost <hostmask>;
userhost <hostmask>;
};
password <password> { <auth-type>; };
class <class-name>;
flags <flags>;
flags {
<flag>;
<flag>;
...
};
swhois <whois info>;
snomask <snomask>;
modes <modes>;
maxlogins <num>;
};
Der oper:: Eintrag legt den Login Namen für den /oper Befehl fest.
Der Eintrag oper::from::userhost ist eine user@host Maske, die zum User passen
muss. Man kann hier mehr als eine Maske angeben, indem man mehrere
oper::from::userhost Einträge erstellt.
Der Eintrag oper::password enthält das Passwort, dass der User angeben muss.
Hier kann zusätzlich eine Verschlüsselungsmethode für dieses Passwort angegeben
werden, gültige
Typen sind dann: crypt, md5, und sha1, ripemd-160. Soll ein einfaches
unverschlüsseltes Passwort verwendet werden, bleibt dieses Feld einfach leer.
Description
Macht User zu lokalem Operator
Macht User zu globalem Operator
Macht User zum Coadmin
Macht User zum Admin
Macht User zum Services Admin
Macht User zum Netzwerk Admin
Oper kann /rehash durchführen
Oper kann /die durchführen
Oper kann /restart durchführen
Oper empfängt umode +h (helpop)
Oper kann /wallops senden
Oper kann /globops senden
Kann zu Servern lokal verbinden
Kann zu Servern global verbinden
Kann /kill auf lokale User ausführen
Kann /kill auf globale User ausführen
Kann /kline setzen
Kann mit /kline -u@h K-Line löschen
Kann lokale Server Notices senden
Kann globale Server Notices senden
Kann /zline setzen
Kann /gline, /shun und /spamfilter setzen
Kann /gzline setzen
Setzt Umode +W (Anzeige von externem /whois) wenn man (via
/oper) als Operator identifiziert
Setzt Host auf Oper host (Durch das Flag wird die Anzeige
der Funktion unterdrückt)
Kann OperOverride ausführen
q
can_setq
Kann Usermode +q setzen
X
can_addline
Kann den Befehl /addline benutzen
d
can_dccdeny
Kann /dccdny und /undccdny benutzen
local
global
admin/coadmin
services-admin
netadmin
can_rehash
can_rehash
can_rehash
can_rehash
can_rehash
helpop
helpop
helpop
helpop
helpop
can_globops
can_glopops
can_glopops
can_glopops
can_glopops
can_wallops
can_wallops
can_wallops
can_wallops
can_wallops
can_localroute
can_localroute
can_localroute
can_localroute
can_localroute
can_localkill
can_localkill
can_localkill
can_localkill
can_localkill
can_kline
can_kline
can_kline
can_kline
can_kline
can_unkline
can_unkline
can_unkline
can_unkline
can_unkline
can_localnotice
can_localnotice
can_localnotice
can_localnotice
can_localnotice
can_globalroute
can_globalroute
can_globalroute
can_globalroute
can_globalkill
can_globalkill
can_globalkill
can_globalkill
can_globalnotice
can_globalnotice
can_globalnotice
can_globalnotice
global
global
global
can_dccdeny
can_dccdeny
can_dccdeny
can_setq
can_setq
admin
services-admin
oper bobsmith {
class clients;
from {
userhost bob@smithco.com;
userhost boblaptop@somedialupisp.com
};
password "f00";
flags {
netadmin;
can_gkline;
can_gzline;
can_zline;
can_restart;
can_die;
global;
};
swhois "Beispiel einer whois Maske";
snomask frebWqFv;
};
Einige Infos zu OperOverride:
OperOverride bedeutet z.B. joining in einen +ikl Channel und Übergehung von
Banns (trotzdem muss man zuvor für sich selbst ein /invite durchführen), sich
selbst Op in einem Channel zu geben etc.
Das "can_override" gibt es, um Missbrauch dieser Möglichkeiten
einzuschränken. Per Default kann kein Oper vorhandene Einstellungen übergehen,
solange nicht das Operflag "v" explizit gesetzt ist.drpass {
restart <restart-password> { <auth-type>; };
die <die-password> { <auth-type>; };
};
drpass {
restart "I-love-to-restart";
die "die-you-stupid";
};
include mynetwork.network;
include aliases/ircservices.conf
loadmodule <file-name>;
cloak.so / cloak.dll - Cloaking Modul (oder irgend ein anderes Cloaking
Modul - dient der Unterdrückung echter Hosts) ERFORDERLICH
loadmodule "src/modules/cloak.so";
loadmodule "modules/commands.dll";
loadmodule "modules/cloak.dll";
log <file-name> {
maxsize <max-file-size>;
flags {
<flag>;
<flag>;
...
};
};
log::maxsize ist eine optionale Anweisung, um eine Größe
anzugeben, ab der die Datei gelöscht und neu begonnen wird. Die Zahlenangabe
dahinter kann gefolgt sein von MB für Megabytes, KB für Kilobytes oder
GB für Gigabytes.
Bei log::flags wird angegeben, welche Art von Informationen in der
Log Datei gespeichert werden sollen. Angegeben werden kann hier einer oder
mehrere der unten aufgelisteten Flags. Siehe hierzu die nachfolgende Liste
möglicher Flags.
sadmin-commands
Zeichnet die Verwendung von /sa* (samode, sajoin, sapart etc.) auf
chg-commands
Zeichnet die Verwendung von /chg* (chghost, chgname,
chgident, etc.) auf
oper-override
Zeichnet die Verwendung von Operoverrides auf
spamfilter
Zeichnet Übereinstimmungen zu Spamfiltern auf
log ircd.log {
maxsize 5MB;
flags {
errors;
kills;
oper;
kline;
tkl;
};
};
tld {
mask <hostmask>;
motd <motd-file>;
rules <rules-file>;
shortmotd <shortmotd-file>;
channel <channel-name>;
options {
ssl;
}
};
tld::mask ist eine user@host Maske, die zum Usernamen und seiner
Hostmask passen muss.
tld::motd, tld::shortmotd, und tld::rules legen die
jeweiligen Dateien für motd und rules fest, die in Abhängigkeit von der
Hostmask angezeigt werden.
tld::channel ist optional, und ermöglicht es, einen Channel
festzulegen, in den der User beim Connect geleitet wird. Wenn dieser Eintrag
existiert, überschreibt er einen Default Auto join.
tld::options ermöglicht es, noch weitere notwendige Bedingungen zu
setzen, bislang ist hier aber nur tld::options::ssl möglich.tld {
mask *@*.fr;
motd "ircd.motd.fr";
rules "ircd.rules.fr";
};
ban nick {
mask <nickname>;
reason <grund-für-bann>;
};
ban::mask gestattet Masken mit Wildcards um mehrere Nicknamen zu erfassen
ban::reason ermöglicht es, einen Grund für den Bann anzugeben.
In der Regel werden in TLD Blöcken die Namen der Services angegeben, so dass
kein User diese Namen als seinen Nick wählen kann.ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Reserved for Services";
};
ban user {
mask <hostmask>;
reason <reason-for-ban>;
};
ban::mask ist eine user@host Maske, die gebannt werden soll, wobei
Wildcards möglich sind.
ban::reason ist der Grund, der dem gesperrten User beim
Verbindungsversuch angezeigt wird.
Zu beachten ist, dass dieser Bann nur lokal wirkt und deswegen der betreffende
User ohne weiteres über andere Server zum Netzwerk verbinden kann.ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiot";
};
ban ip {
mask <ipmask>;
reason <reason-for-ban>;
};
ban::mask ist eine IP, die Wildcards enthalten kann
ban::reason ist der Grund, warum der Bann eingetragen wurde.
Da dieser Bann auch Server betreffen kann, sollte man beim Eintrag von IP
Adressen sehr vorsichtig sein.ban ip {
mask 192.168.1.*;
reason "Nimm eine richtige IP, du Lamer!";
};
ban server {
mask <server-name>;
reason <reason-for-ban>;
};
ban::mask beinhaltet eine Maske, die Wildcards gestattet und zu dem Namen
eines Servers passt, der nicht verbinden darf.
ban::reason Der Grund, warum dieser Bann existiert.ban server {
mask broken.server.my.network.com;
reason "Its broken!";
};
ban realname {
mask <realname-mask>;
reason <reason-for-ban>;
};
ban::mask legt den Realnamen fest, der gebannt werden soll. Die Maske
kann Wildcards enthalten.
ban::reason legt den anzuzeigenden Grund für den Bann fest.ban realname {
mask "Bob*";
reason "Bob sucks!";
};
ban version {
mask <version-mask>;
reason <reason-for-ban>;
action [kill|tempshun|shun|kline|zline|gline|gzline];
};
ban::mask legt die Version des Clients fest, der gebannt werden soll. Die
Maske kann Wildcards enthalten.
ban::reason legt den Grund fest, der dem User angezeigt wird.
ban::action kann ebenfalls festgelegt werden. Dabei ist der Default auf
"kill". tempshun setzt ein shun auf die Verbindung des Users
und arbeitet effektiv gegen zombies und/oder Bots mit dynamischer IP, weil sie
unschuldige User nicht beeinträchtigen. shun/kline/zline/gzline setzen
einen Bann auf die IP (*@IPADDR). Die Dauer dieser Banns kann mit 'set::ban-version-tkl-time'
konfiguriert werden und beträgt per Default 1 Tag.ban version {
mask "*SomeLameScript*";
reason "SomeLameScript enthält Backdoors!";
};
mask "*w00tZombie*";
reason "I hate those hundreds of zombies";
action zline;
};except ban {
mask <hostmask>;
};
except ban {
mask myident@my.isp.com;
};
except tkl {
mask <hostmask>;
type <type>;
type {
<type>;
<type>;
...
};
};
except tkl {
mask myident@my.isp.com;
type gline;
};
except throttle {
mask <ipmask>;
};
except throttle {
mask 192.168.1.*;
};
deny dcc {
filename <file-to-block>;
reason <reason-for-ban>;
soft [yes|no]
};
Siehe dccallow.conf für ein gutes Konfigurationsbeispiel zu dccallow.deny dcc {
filename *.exe;
reason "Ausführbare Datei";
soft yes;
};
deny version {
mask <server-name>;
version <version-number>;
flags <compile-flags>;
};
deny::mask definiert eine Wildcard Maske, für welchen Server die
Ablhnung gelten soll.
deny::version bezeichnet eine Protokoll Nummer, um welche Version es
geht.
deny::flags ermöglicht die Angabe von Compile Zeit Flag, die der Server
haben oder nicht haben darf. Die Flags müssen direkt nacheinander ohne
Zwischenräume angegeben sein. Wird einem Zeichen ein "!"
vorangestellt, darf der Server dieses Flag nicht haben, steht kein "!"
davor, so muss der Server dieses Flag haben, um vom Linken ausgeschlossen zu
sein.deny link {
mask <server-name>;
rule <crule-expression>;
type <type-of-denial>;
};
deny::mask definiert eine Wildcard Maske auf den Servernamen, für den
die Regel gelten soll.
deny::rule ist ein sehr komplexer Ausdruck. Ein crule Ausdruck erlaubt
es, den Link sehr detailliert zu steuern und ist aufgebaut wie eine Programm
Anweisung. Vier Operatoren werden unterstützt:
connected(<servermask>) ergibt 'wahr', wenn ein Server
zu dem die angegebene deny::mask passt, verbunden ist.
directcon(<servermask>) ergibt 'wahr', wenn ein Server
zu dem die angegebene deny::mask passt, direkt verbunden ist.
via(<viamask>,<servermask>) ergibt 'wahr', wenn
ein Server aus deny::mask über einen Server verbunden ist, auf den viamask
passt.
directop() ergibt wahr, wenn der Operator über /connect
direkt zu diesem Server verbunden hat.
Diese Operatoren können durch Verwendung von && (und) und || (oder) miteinander
kombiniert werden. Durch Verwendung von Klammern um die eizelnen Items sind auch
Gruppierungen möglich. Darüber hinaus kann einem Operator ein "!"
vorangestellt sein, um darauf zu testen, ob der Operator 'falsch' ergibt. Wenn
der gesamte Ausdruck 'wahr' ergibt, wird der Link abgelehnt.
deny::type kann zwei Werte haben: "auto" (gilt nur für
autoconnects, /connect funktioniert trotzdem), und "all" (gilt für
alle Verbindungsanfragen).deny channel {
channel "<channel-mask>";
reason <reason-for-ban>;
redirect "<channel-name>";
warn [on|off];
};
deny channel {
channel "#unrealsucks";
reason "Nein, tut es nicht!";
};
deny channel {
channel "#*teen*sex*";
reason "You == dead";
warn on;
};
deny channel {
channel "#operhelp";
reason "Unser Hilfe Channel ist #help und nicht #operhelp";
redirect "#help";
};
allow channel {
channel "<channel-mask>";
};
allow channel {
channel "#something";
};
allow channel {
channel "#smart_*";
};
allow dcc {
filename "<filename-mask>";
soft [yes|no];
};
allow dcc {
filename "*.jpg"; /* Bilder sind üblicherweise sicher */
soft yes;
};
vhost {
vhost <vhost>;
from {
userhost <hostmask>;
userhost <hostmask>;
...
};
login <login-name>;
password <password> { <auth-type>; };
swhois "<swhois info>";
};
vhost {
vhost my.own.personal.vhost.com;
from {
userhost my@isp.com;
userhost myother@isp.com;
};
login mynick;
password mypassword;
swhois "Ich bin wichtig ;)";
};
badword <type> {
word <text-to-match>;
replace <replace-with>;
action <replace|block>;
};
badword channel {
word shit;
replace shoot;
};
ulines {
<server-name>;
<server-name>;
...
};
ulines {
services.mynetwork.com;
stats.mynetwork.com;
};
link <server-name> {
username <usermask>;
hostname <ipmask>;
bind-ip <ip-to-bind-to>;
port <port-to-connect-on>;
password-connect <password-to-connect-with>;
password-receive <password-to-receive> { <auth-type>; };
hub <hub-mask>;
leaf <leaf-mask>;
leafdepth <depth>;
class <class-name>;
ciphers <ssl-ciphers>
options {
<option>;
<option>;
...
};
};
Hier kann zu Zwecken der Authentifizierung über ident ein Eintrag erfolgen,
aber normalerweise wird nur "*" eingestellt.
Der Hostname oder die IP des entfernten Servers. Der Eintrag gilt gleichermaßen
für das Verbinden UND die Authentifizierung seitens des eigenen Servers.
Einige Beispiele:
1.2.3.4 normale IP hub.blah.com Host: nur für ausgehende Verbindung,
kann keine eingehenden Verbindungen akzeptieren, solange nicht "link::options::nohostcheck"
gesetzt ist. * kann nicht selbst zu anderen Servern verbinden, aber
akzeptiert eingehende Serververbindungen (mit korrektem Passwort) von
überall her. ::ffff:1.2.3.4 für Linking ipv6 zu ipv4.
Kann genutzt werden, um eine bestimmte IP (z.B.: 192.168.0.1) daran zu binden,
von wo aus verbunden werden soll, wird allerdings so gut wie nie benutzt.
Port zu dem verbunden wird (auf welchen der entfernte Server reagiert).
Das Passwort, welches zum Verbinden erforderlich ist. Es muss im Klartext
vorliegen und darf nicht verschlüsselt sein.
Das Passwort, welches zur Überprüfung eingehender Verbindungen verwendet wird,
kann auch verschlüsselt sein (gültige Methoden sind crypt, md5, sha1, ripemd-160).
Der "auth-type" Parameter kann auch frei gelassen werden, um das
passwort im Klartext zu verwenden. Normalerweise ist das Passwort hier dasselbe,
wie bei "password-connect".
Zu einem hub sind mehrere Server verbunden, ein leaf hat immer nur eine
Verbindung. Ein Server ist entweder ein hub oder ein leaf - die beiden Optionen
können nicht kombiniert werden.
Der Wert ist eine Maske, auf welche Server dieser hub connecten darf (z.B.: *.my.net).
Der Wert ist eine Maske, dass dieser Server wie ein leaf in Richtung zum eigenen
Server fungiert.
Falls dies angegeben ist, sollte auch "leaf" angegeben sein. Angegeben
wird die Tiefe (Anzahl der hops) die dieser Server darunter haben darf.
Die Klasse, in die der Server kommt, oft ist eine eigene Klasse für Server
definiert.
Gibt den Kompressions Level (1-9) für diesen Link an. Wird nur verwendet, wenn
auch "link::options::zip" gesetzt ist.
Gibt die SSL Verschlüsselung an, die für diesen Link benutzt wird. Um eine
Liste der verfügbaren Verschlüsselungscodes zu erhalten, kann man den 'openssl
ciphers' Befehl benutzen. ciphers ist als eine durch ':' getrennte Liste
anzugeben.
Eine oder mehrere Optionen für eine Verbindung zu diesem Server. Wird manchmal
nicht benötigt.
ssl wenn zu einem SSL Port verbunden wird. autoconnect Server versucht autoconnect, Zeit, wie in
"class::connfreq" spezifiziert wird (wird am besten nur auf
einer Seite aktiviert,wie leaf->hub) zip wenn komprimierte Verbindungen gewollt sind, muß
auf beiden Seiten mit +set zip compiliert sein. nodnscache IP für ausgehende Serververbindung nicht im
cache speichern, wird bei oft wechselndem Host benutzt (wie dyndns.org) nohostcheck den entfernten Host nicht überprüfen (link::hostname),
wird bei oft wechselndem Host benutzt (wie dyndns.org) quarantine Opers auf diesem Server behalten locop Status bei link hub.mynet.com {
username *;
hostname 1.2.3.4;
bind-ip *;
port 7029;
hub *;
password-connect "LiNk";
password-receive "LiNk";
class servers;
options {
autoconnect;
ssl;
zip;
};
};
alias <name> {
target <nick-to-forward-to>;
type <type-of-alias>;
};
alias <name> {
format <regex-expression> {
target <nick-to-forward-to>;
type <type-of-alias>;
parameters <parameter-string>;
};
format <regex-expression> {
...
};
type command;
};
help <name> {
<text-line>;
<text-line>;
...
};
"#channel" { topic "The default topic"; };
};
"#Help" { topic "The official help channel, if nobody is present type /helpop helpme"; };
"#Home";
"#Main" { topic "The main channel"; };
};
Siehe auch Features - Spamfilter für
genauere Erläuterungen zu Spam Filtern.
Syntax:
spamfilter {
regex <word>;
target { <target(s)> };
action <action>;
reason <reason>;
ban-time <time>;
};
regex ist der Ausdruck, auf den geprüft wird.
target gibt die Ziele an. Eine Liste möglicher Ausdrücke (z.B.: 'channel') kann hier nachgelesen werden..
action gibt die Aktion an, die erfolgen soll. Eine Liste möglicher
Aktionen (z.B.: 'gline') kann hier nachgelesen werden.
reason ist optional und legt den Grund für die Aktion fest, der dem User
angezeigt wird. Der Text ist in Anführungszeichen anzugeben und sollte - anders
als beim /spamfilter Befehl - keinerlei Undersores "_" zwischen den
Worten enthalten (andernfalls werden die Underscores mit angezeigt).
ban-time ist optional und legt die Zeit für einen *line Bann fest. Ohne
Angabe gilt der Default von 1 Tag.
Beispiele:
regex "Come watch me on my webcam";
target { private; channel; };
action gline;
reason "Du hast einen Trojaner,
bitte schaue hier nach: www.antivirus.xx/blah/virus=GrrTrojan";
ban-time 6h;
};
spamfilter {
regex "come to irc\..+\..+";
target { private; channel; };
action gline;
reason "Kein Spam erlaubt"
};
set {
<entry> <value>;
<entry> <value>;
...
};
set {
kine-address my@emailaddress.com;
auto-join #welcome;
options {
hide-ulines;
};
hosts {
local LocalOp.MyNet.com;
global globalop.mynet.com;
};
};
Beispiel:
set { options { hide-ulines; no-stealth; }; };
Eine email Adresse, an die Fragen zur K-Line gesandt werden sollen. Es muss hier
ein Wert angegeben sein.
Die Modi, die für einen User nach einer Verbindung eingestellt werden.
Die snomask (Server Notice mask), die für einen User nach einer Verbindung
eingestellt wird.
Die Modi, die eingestellt werden, wenn User (berechtigterweise) den /oper Befehl
verwenden.
Die snomask (Server Notice mask), die eingestellt wird, wenn User
(berechtigterweise) den /oper Befehl verwenden.
Die Modi, die für einen Channel eingestellt werden, wenn er das erste mal
(durch /join) erstellt wird. Nicht alle Modi sind mit diesem Befehl möglich. Die Modi +qaohvbeOAzlLk
können NICHT durch diesen Befehl gesetzt werden.
Die User-Modi, die User wählen können werden auf die hier angegebenen Modi
eingeschränkt. (kein + oder - angeben!).
Beispielsweise kann man +G in 'modes-on-connect' setzen und G in 'restrict-usermodes',
wodurch erreicht wird, dass sämtliche User +G erhalten, aber kein -G
anwenden können.
Die Channel-Modi, die User wählen können werden auf die hier angegebenen Modi
eingeschränkt. (kein + oder - angeben!).
Beispielsweise kann man +G in 'modes-on-join' setzen und G in 'restrict-channelmodes',
wodurch erreicht wird, dass sämtliche (neuen) Channels +G erhalten, aber kein -G
eingestellt werden kann.
ACHTUNG: Es kann weiterhin möglich sein, diese Channel Modi durch Services
über MLOCK zu benutzen. Wir können dagegen leider nichts tun, es obliegt den
Codern der Services, ebenfalls ein restrict-channelmodes feature zu
implementieren.
Den Usern ist nicht gestattet, irgendwelche erweiterten Banns ("*") zu benutzen
oder es werden nur bestimmte Typen verboten (z.B.:"qc").
Der oder die Channel(s), in den/die User beim Connect automatisch geforwardet
werden. Soll mehr als ein Channel angegeben werden, so sind diese durch Kommata
zu trennen.
[Achtung: nicht vergessen, Anführungszeichen zu verwenden, wie: auto-join "#chan";]
Der oder die Channel(s), in den/die User bei /oper automatisch geforwardet
werden. Soll mehr als ein Channel angegeben werden, so sind diese durch Kommata
zu trennen.
[Achtung: nicht vergessen, Anführungszeichen zu verwenden, wie: auto-join "#chan";]
Eine Zeitangabe, in der festgelegt wird, wie lange ein User verbunden gewesen
sein muss, bevor eine /quit Meldung angezeigt wird. Das dient der Vermeidung von
Spam. Ein Zeitwert ist ein numerischer String, in dem 'd" Tage bedeutet,
'h' Stunden, 'm' Minuten und 's' Sekunden. Beispiel: 1d2h3m bedeutet 1 Tag, 2
Stunden und 3 Minuten.
Hier wird der Text festgelegt, der einer Quit Meldung vorangestellt wird. Ist
hier eine 0 eingetragen, wird der Standard "Quit:" verwendet.
Hiermit kann eine feste Quit Meldung eingestellt werden, die immer angezeigt
wird, wenn ein Client ausloggt. Das kann die 'anti-spam-quit-message-time'
ebenso überflüssig machen, wie das 'set::prefix-quit'. Fehlermeldungen werden
NICHT durch diese Einstellung ersetzt! (z.B. wird "ping timeout"
weiterhin angezeigt)
Ein Wert von 'yes' unterdrückt sämtliche Kommentare bei 'part', ein Wert von 'no'
läßt 'part' wie gewohnt arbeiten, jede andere Angabe wird als Kommentar für
'part' fest eingestellt (z.B.: static-part "Bye!"). Da dies auch als
belästigend empfunden werden kann, sollte man dies mit Bedacht wählen.
Stellt den Maximalwert ein, wie viele Angaben bei einem /who
angezeigt werden sollen. Ohne Eintrag hier gibt es kein Limit.
Stellt den Maximalwert der anzeigbaren SILENCE Einträge ein. Ohne Eintrag ist hier ein Limit von 15 voreingestellt.
Definiert eine Liste von Stats-Flags, die nur von Opers benutzt werden können.
Die Flags sind ohne Trennungen (keine Kommata, keine Leerzeichen) anzugeben.
Wird hier nichts angegeben, können alle User sämtliche Flags benutzen, bei
Angabe von '*' keines. Es dürfen nur kurze Operflags angegeben werden.
Definiert eine Liste von Stats Flags, die nur von Opers benutzt werden können.
In dieser Syntax dürfen nur lange Operflags angegeben wwerden.
Einstellung, in wie vielen Channels ein User gleichzeitig sein darf.
Legt fest, wie viele Einträge ein User in seiner DCCALLOW Liste haben kann.
Stellt das Vorzeichen für Services in "channel Befehlen" ein.
Nachrichten, die mit einem dieser Zeichen beginnen, werden auch noch gesendet,
wenn der Client +d ist. Die Voreinstellung lautet "`".
Einstellung, was passiert, wenn sich der user@host ändert (+x/-x/chghost/chgident/setident/vhost/etc).
never schaltet sämtliche Befehle ab, always gestattet so
etwas auch in Channel immer (was zu desyncs von Clients führen kann) [default], not-on-channels
bedeutet, dass solche Befehle nur erlaubt sind, wenn der User in keinem Channel
ist, force-rejoin bewirkt einen rejoin in sämtlichen Channels sowie
re-op/voice/etc falls notwendig.
Wenn dies eingestellt ist, werden Ulined Server bei /links von Nicht-Opers
nicht angezeigt.
Wenn dies eingestellt ist, werden alle Server bei /map und /links als direkt
gelinkt angezeigt. Dadurch kann man nicht mehr erkennen, welcher Server mit
welchem gelinkt ist. Das ist eine kleine Hilfe gegen (D)DoS Attacken, weil
potentielle Angreifer jetzt nicht mehr länger mögliche
"Schwachpunkte" erkennen können.
Falls eingestellt wird die opermotd den Usern angezeigt, die erfolgreich /oper
benutzen.
Falls eingestellt, wird die Präsenz eines identd Servers geprüft und der
Rückgabewert für den Usernamen verwendet. Wird kein Rückgabewert geliefert
oder existiert der identd Server nicht, wird dem Usernamen ein '~'
vorangestellt. Wird diese Einstellung ausgelassen, erfolgt keine Überprüfung.
Falls eingestellt, werden dem User beim Connect Notices wie "ident request", "hostname lookup",
etc. angezeigt.
Wenn eingestellt, werden die Hosts connectender User nicht aufgelöst. Das kann
nützlich sein, um die Verbindung zu beschleunigen, falls viele User keinen Host
haben.
Zu beachten ist, dass man keine host basierten allow Blöcke verwenden kann,
wenn dies eingestellt ist.
Stellt ein, dass /mkpasswd von jedem User verwendet werden kann und nicht nur
von Opers. Die Anwendung dieses Befehls durch Nicht-Oper wird an die EYES
snomask gesendet.
Erlaubt es Usern, auf die ein /shun gesetzt ist, den /part Befehl zu
benutzen.
Ein Wert, der angibt, innerhalb welcher Zeit ein DNS Server zu antworten hat, bevor
"timeout" gemeldet wird. Der Zeitwert ist ein numerischer String, in
dem 'd' Tage bedeutet, 'h' Sunden, 'm' Minuten und 's' Sekunden. Beispiel: '1d2h3m'
bedeutet 1 Tag, 2 Stunden, 3 Minuten.
Ein Zahlenwert, durch den festgelegt wird, wie oft versucht werden soll, die DNS
aufzulösen, bevor ein Fehler gemeldet wird.
Gibt den Hostnamen des Servers an, der zur DNS Namensauflösungen dient.
Gibt den Namen des Netzwerks an, in dem der Server läuft (also den Namen des
irc Netzes!) Dieser Eintrag sollte auf allen Servern im Netzwerk absolut
identisch sein.
Legt den Namen des Servers fest, der den Usern mitteilt, wo sie connecten
sollen, wenn dieser Server voll ist.
Legt den Namen des Servers fest, zu dem die Services Bots verbunden sind. Muß
angegeben sein, der Wert ist auf so etwas wie 'services.yournet.com' zu setzen,
wenn man keine Services hat.
Stellt den Namen des Servers ein, auf dem die Stats laufen. Die Angabe kann
ausgelassen werden, wenn man keine Stats laufen hat.
Legt den Namen des Hilfe Channels in diesem Netzwerk fest.
Stellt die Verschlüsselungs Keys ein, die für die Erstellung eines +x Host
erforderlich sind. Diese Einstellung muss auf allen Servern identisch sein,
ansonsten linken die Server nicht. Jeder Wert in 'set::cloak-keys::' muss ein
String zwischen 5 bis 100 Zeichen sein (10-20 ist gut), der gemisch
Großbuchstaben (A-Z), Kleinbuchstaben (a-z) und Ziffern (0-9) enthält. Diese
Regeln gelten für cloak.so/cloak.dll, bei anderen Cloaking Modulen können
andere Zeichen erlaubt/erforderlich sein. Es müssen exakt 3 Werte angegeben werden.
Legt die ersten Zeichen eines verdeckten Hosts (+x) fest. Üblicherweise nimmt
man hier 3 oder 4 Buchstaben, die den Netzwerksnamen bezeichnen.
Legt den Hostnamen fest, der lokalen Operatoren zugewiesen wird, wenn sie +x
setzen. Optional kann für diesen Wert ein username@host angegeben werden.
Legt den Hostnamen fest, der globalen Operatoren zugewiesen wird, wenn sie +x
setzen.Optional kann für diesen Wert ein username@host angegeben werden.
Legt den Hostnamen fest, der co-admins zugewiesen wird, wenn sie +x setzen.Optional
kann für diesen Wert ein username@host angegeben werden.
Legt den Hostnamen fest, der Admins zugewiesen wird, wenn sie +x setzen.Optional
kann für diesen Wert ein username@host angegeben werden.
Legt den Hostnamen fest, der Service-Admins zugewiesen wird, wenn sie +x setzen.Optional
kann für diesen Wert ein username@host angegeben werden.
Legt den Hostnamen fest, der Netadmins zugewiesen wird, wenn sie +x setzen.Optional
kann für diesen Wert ein username@host angegeben werden.
Falls auf 'yes' eingestellt, wird das H/get_host Flag akzeptiert und +x
wird automatisch bei /oper gesetzt.. Falls 'no', muss sich der User manuell +x
setzen, um einen oper Host zu erhalten.
Gibt an, dass EGD (Entropy Gathering Daemon) Unterstützung aktiviert wird. Hat
man OpenSSL 0.9.7 oder höher laufen, dann wird /var/run/egd-pool, /dev/egd-pool,
/etc/egd-pool, und /etc/entropy per Default gesucht und es ist kein Dateiname
erforderlich. Dann legt man einfach 'set::ssl::egd' ohne Wert fest. Verwendet
man ältere Versionen von
OpenSSL, oder soll der EGD socket woanders als in den oben angegebenen Ordnern
liegen, muss man den Dateinamen des UNIX Domain
Socket angeben, an dem EGD lauscht.
Gibt den Dateinamen an, wo das SSL Zertifikat des Servers liegt.
Gibt den Dateinamen an, wo der private SSL Key des Servers liegt.
Gibt den Dateinamen der Zertifikate der vertrauten CAs an.
Stellt ein, dass Clients ohne Zertifikat nicht connecten können.
Verbietet Verbindungen von Usern mit selbst erstellten Zertifikaten.
Stellt ein, dass Unreal SSL Zertifikate auf Gültigkeit überprüft, bevor
eine Verbindung akzeptiert wird.
Wie lange muss ein User zum erneuten Connecten warten, wenn er häufiger, als
unter 'set::throttle::connections' eingestellt, verbunden war.
Wie oft muss ein User mit demselben Host verbinden, bevor er temporär gesperrt
wird.
Zeitangabe von Sekunden, ab wann aufgegeben wird zum Ident Server zu verbinden (Default: 10s).
Nach wie viele Sekunden Warten auf einen Reply soll aufgegeben werden (Default: 30s).
Gibt an, wie lang ein Flooder mit 'unknown connection' gebannt wird.
Legt eine Datenmenge (in KiloBytes) fest, die eine ' unknown connection' senden
muss, damit der User gekillt wird.
Schutz vor 'Away Flood': legt fest, wie viele ('count') /away Änderungen
innderhalb welcher Zeit in Sekunden ('period') erfolgen dürfen.. Das erfordert,
dass in der config.h die Einstellung 'NO_FLOOD_AWAY' aktiviert wurde. Beispiel: away-flood 5:60s;
bedeutet maximal 5 Änderungen innerhalb von 60 Sekunden.
Nickflood Schutz: Beschränkt Nickänderungen auf 'count' pro 'period'
Sekunden. Beispiel: nick-flood 4:90 bedeutet maximal 4 Nickänderungen in 90
Sekunden. Default ist 3 per 60.
Default Bann Dauer wenn /kline, /gline, /zline, /shun, etc ohne Zeitangabe
gesetzt werden (wie /gline *@some.nasty.isp). Default ist permanent (0).
Beispiel: default-bantime 90d; (90 Tage)
Für den Channel Modus +f kann eine Default Abschaltzeit festgelegt werden.
Wird z.B. der Wert 10 festgelegt, dann wird +f [5j]:15 in [5j#i10]:15
umgewandelt. Default ist keine Abschaltzeit.
Maximalwert in Minuten für eine Modus +f Abschaltzeit (z.B. in +f [5j#i<TIME>]:15).
Der Wert kann zwischen 0 und 255 liegen und Default ist 60 (= 1 Stunde).
Definiert man in 'ban version' eine Aktion, wie zline/gline/etc, dann kann man
hier die Dauer des Banns auf die IP in Sekunden angeben. Default ist 86400 (1
Tag).
Genauso, wie oben, aber für *lines, die durch den Spam Filter gesetzt
wurden.
Anzuzeigender Grund bei *lines, die durch den Spam Filter gesetzt wurden.
Mehrere Worte sind durch Underscores ("_") und nicht durch Leerzeichen
zu trennen.
Festlegung des Channels für die Aktion 'viruschan' in Spamfilter
Falls auf 'yes' (oder '1') gesetzt, erhält jeder normalen User, der versucht,
diesen Channel zu joinen, die Antwort 'invite only'. Nur Opers, User, bei denen
der Spamfilter zutrifft oder User, die eingeladen werden, können diesen Channel
joinen.
Diese Ziele werden vom Spamfilter ausgenommen (es wird also keine Aktion
durchgeführt). Es sind einzelne Ziele oder eine durch Kommata getrennte Liste
möglich. Beispiel: except "#help,#spamreport"
Zu beachten ist, dass die motd Dateien (alle Typen) und die rules Dateien auch
in einem speziellen tld Block angegeben sein können. Dies sind nur die
Dateien, die per Default benutzt werden (und für Anforderungen von
MOTD/RULES).
ircd.motd Wird angezeigt, wenn der /motd Befehl ausgeführt wird
und wenn ein User connected
ircd.rules Wird angezeigt, wenn der /rules Befehl ausgeführt
wird
oper.motd Wird angezeigt, wenn der /opermotd Befehl ausgeführt
wird, oder wenn man /oper (erfolgreich) benutzt
bot.motd Wird angezeigt, wenn der /botmotd Befehl ausgeführt
wird.
Nur ein Administrator kann joinen
Macht einen User zum Channel Admin
Bannt den angegebenen User vom Channel
Es können keine ANSI Farbcodes im Channel benutzt werden
Es sind keine CTCP's im Channel erlaubt
Bann Ausnahme – Wenn für jemanden dieser user@host
zutrifft, kann er auch dann in den Channel joinen, wenn auf ihn eine
Ban-Mask passt.
Flood Schutz, wenn der '*' angegeben ist, wird ein User
gekickt und gebannt, wenn er <lines:seconds> sendet, ohne '*' wird
man nur gekickt. Vergleiche auch die erweiterten
Modi.
'G rated'. Es werden Worte im Badword Block überprüft und
bei Vorhandensein durch die dort angegebenen Worte esetzt
Nur registrierte Nicks(+r) können im Nachrichten in den
Channel senden
Gibt dem User Half-Op Status
Es ist eine Einladung (/invite) erforderlich, um diesen
Channel zu joinen
Der Befehl /knock ist nicht erlaubt
Stellt ein, dass man einen 'key', ein Passwort, benötigt,
um joinen zu können
Stellt die maximale Anzahl von Usern im Channel ein
Wenn so viele User, wie bei +l eingestellt ist, im Channel
sind, werden weitere User in diesen Channel geforwardet
Moderierter Channel. Nur +v/o/h User können Nachrichten in
den Channel senden
Kein Wechsel des Nicknamens erlaubt
Keine Nachrichten von außerhalb des Channels erlaubt
Nur IRCOps dürfen joinen
Gibt dem User Channel Op Status
Macht einen Channel privat
Stellt den Channel Owner ein
Nur U:Lined Server können User kicken
Erfordert einen registrierten Usernamen, um joinen zu
können
Löscht sämtliche eingehenden Farbcodes
Macht den Channel geheim (Wird bei /list nicht mehr
angezeigt)
Nur ein Channel Op kann das Topic verändern
Im Channel sind keine NOTICE's gestattet
Auditorium – Bewirkt, dass /names und /who #channel nur
Channel OPs angezeigt wird
Der Befehl /invite ist nicht erlaubt
Gibt dem User voice Status. (Darf in +m Channels schreiben)
Nur Clients mit einer Secure (SSL) Verbindung dürfen joinen
Identifiziert einen Nick als registriert
Kann Server Notices lesen
Empfängt Rejection Notices, wenn bei DCC File infiziert ist
Globaler IRC Operator (wird im Oper Block eingestellt)
Lokaler IRC Operator (wird im Oper Block eingestellt)
Markiert User als Bot
Unsichtbar (wird bei /who nicht angezeigt)
Server Admin (wird im Oper Block eingestellt)
Verschlüsselt den Hostnamen des Users (vgl. Cloaking)
Nur U:Lines können User kicken (Nur Services Admins)
Services Admin (wird im Oper Block eingestellt)
Kann Globops und Locops lesen und senden
IRCop Status verbergen (nur IRCops)
Zum Schutz von Services Daemons
zeigt, dass der User einen /vhost benutzt
Co-Admin (wird im Oper Block eingestellt)
User kann keine Channel PRIVMSGs empfangen
Network Administrator (wird im Oper Block eingestellt)
Kann wallop Nachrichten empfangen
Verfügbar für Hilfe (HelpOp) (wird im Oper Block eingestellt)
Filtert Badwords per Konfiguration aus
User kann sehen, wenn ein anderer User auf ihn ein /whois auf ihn
ausführt (nur
IRCops)
Zeigt bei einer /whois Antwort nicht die Channels an, in denen man ist
R
Gestattet es, PRIVMSGs/NOTICEs nur von registrierten (+r) Usern zu
empfangen
V
WebTV User
z
Zeigt an, dass man einen SSL Client benutzt
T
Schützt vor dem Empfang von CTCPs
nick <neuernickname>
Ändert Deine Online Identität auf dem Server. Alle in den
Channels, in denen Du bist, werden über den Wechsel des Nicknamens
benachrichtigt.
Alle
whois <nick>
Zeigt Informationen über den User, für den der Befehl ausgeführt
wurde an, wie den Name, Channels in denen der User aktuell ist, Hostmask, etc.
Alle
who <mask>
Mit /who kann man User enstprechend einer Maske
suchen. Maske beinhaltet: nickname, #channel, hostmask (*.attbi.com) Siehe
auch /helpop ?who
Alle
whowas <nick> <maxreplies>
Liefert Informationen über User, die nicht mehr zum
Server verbunden sind.
Das <max replies> Feld ist optional und schränkt ggf. die Anzahl
der Antworten ein.
Alle
ison <nick1 nick2 nick3 ...>
Überprüfung, ob bestimmte User mit angegebenem Nicknamen momentan online sind.
Einfache Rückgabe, wird meist in Scripts verwendet
Alle
join <channel1,channel2, ...>
Damit betritt man einen Channell. Durch den
Befehl /join #channel1, #channel2, #channel3 kann man mehr als einen
Channel gleichzeitig aufschalten. Der Befehl /join 0 bewirkt, dass Channels
verlassen werden.
Alle
cycle <channel1, channel2, ...>
Dieser Befehl ist gleichbedeutend mit /part und
nachfolgendem /join.
Alle
motd <server>
Zeigt die Message Of The Day des IRC Servers an, auf dem man eingeloggt ist. Dabei handelt es sich um eine Information über den Server.
Bei Angabe eines Servers erhält man die Motd des entsprechenden Servers.
Alle
rules <server>
Zeigt die Regeln des Servers an, mit dem man verbunden ist.
Bei Angabe eines Servers erhält man die Regeln des entsprechenden
Servers.
Alle
lusers <server>
Liefert Informationen über die Anzahl lokaler und globaler User und die maximal
erreichte Userzahl. Bei Angabe eines Servers erhält man die Werte für
diesen Server.
Alle
map
Zeigt eine (pseudo-)grafische Netzwerks Karte an, aus der die Struktur des IRC Netzwerkes hervorgeht. Das wird hauptsächlich zu Routing Zwecken benötigt.
Alle
quit <reason>
Beendet die Verbindung zum IRC Server. Wird ein
Grund angegeben, wird dieser in allen Channels angezeigt, die man
verlässt
Alle
ping <user>
Der Ping Befehl dient dazu, die Anwesenheit eines Users oder Servers auf der anderen Seite der Verbindung zu überprüfen.
Server senden in regelmäßigen Abständen eine PING Nachricht, wenn keine andere Aktivität von der anderen Seite aus eingeht. Wird eine solche Ping Nachricht nicht innerhalb einer festgelegten Zeit beantwortet, wird die Verbindung beendet. Eine Ping Nachricht kann auch bei einer aktiven Verbindung gesendet werden. Zu beachten ist, dass dies unterschiedlich zum CTCP PING Befehl ist.
Alle
version <nick>
Sendet eine CTCP Versions Anfrage an den User.
Dessen Client sendet, falls entsprechend konfiguriert, die Client Version
als Antwort.
Alle
links
Listet sämtliche Server auf, die momentan zum Netzwerk verbunden sind.
Je nach Einstellung können möglicherweise nur IRCops gelinkte U-lined Servers
/Services sehen.Alle
Admin <server>
Liefert Informationen über die Administration des Servers.
Wird ein Servername mit angegeben, werden die Admin Infos dieses Servers
angezeigt.
Alle
userhost <nick>
Zeigt den userhost des angegebenen Nicknamen an. Wird üblicherweise von Scripts oder Bots benutzt.
Alle
topic <channel> <topic>
Setzt oder ändert das Topic des angegebenen Channels oder zeigt das aktuelle Topic an.
Topic <channel> zeigt das aktuelle Topic, Topic
<channel> <topic> ändert das Topic des angegebenen Channels.
Alle
invite <nick> <channel>
Sendet einem User eine Einladung, einen bestimmten Channel zu betreten. Man muss Oper im Channel sein, um einen User einladen zu können.
ChanOp
kick <channel, channel> <user, user> <reason>
Entfernt einen User aus einem Channel. Kann nur von Operators oder HalfOps benutzt werden.
Ein Grund kann mit angegeben werden.
ChanOp
away <reason>
Stellt den eigenen Online Status auf "Away" ein.
Ein Grund kann mit angegeben werden (und wird dann bei /whois auch
angezeigt).
Alle
Watch +-<nick> +-<nick>
Watch ist ein Benachrichtigungssystem welches schneller und ressourcenschonender arbeitet, als das alte Notify System. Der Server sendet eine Nachricht an einen selbst, wann immer ein User, der in der eigenen "Watch" Liste steht, ein- oder ausloggt.
Die Watch Liste wird nicht gespeichert, man muß über den eigenen Client oder ein Script bei jeder neuen Verbindung dafür sorgen, dass sie erneut an den Server übertragen wird. D.h. der Watch Befehl ist dann erneut einzugeben.Alle
helpop ?<topic> or !<topic>
HelpOp ist ein System, um IRC Server Hilfe zu
bekommen. Man gibt entweder ein "/HELPOP
? <help system topic>" oder "/HELPOP ! <question>".
Das "?"
in /HELPOP bedeutet, dass das Hilfesystem befragt wird und wenn man keine
Antwort erhält, kann man die Frage mit '!' einem Help Operator online
senden. Benutzt man weder ? noch !, bedeutet das, dass zunächst im Hilfe
System gefragt wird und, wenn nichts passendes gefunden wird, ein Forward
an die Help Operators erfolgt.
Alle
list <search string>
Ohne Angabe eines Suchstrings wird defaultmäßig die ungefilterte
gesammte Channel Liste angezeigt. Nachfolgend Optionen, die man benutzen
kann und die Ergebnisse, die LIST dann liefert:
/list >zahl
Zeigt Channels mit mehr als <zahl> Usern an.
/list <zahl
Zeigt Channels mit weniger als <zahl> Usern an.
/list C>zahl Channels, die in den letzten <zahl>
Minuten eröffnet wurden.
/list C<zahl Channels, die vor mehr als <zahl>
Minuten eröffnet wurden.
/list T>zahl Channels, deren topic älter als
<zahl> Minuten ist.
/list T<zahl Channels, deren topic neuer als <zahl>
Minuten ist.
/list *mask* Channels, deren Name zur angegebenen Maske
passt.
/list !*mask* Channels, deren Name nicht zur
angegebenen Maske passt.
Alle
Knock <channel> <message>
Ermöglicht es, in einem invite only Channel
"anzuklopfen" und um eine Einladung zu bitten. Funktioniert
nicht in Channels, in denen +K und/oder +V gesetzt ist. Auch wer
gebannt ist, kann diesen Befehl nicht benutzen.
Alle
setname
Ermöglicht es Usern, ihren ‘Real Name’
ohne reconnecting zu ändern.
Alle
vhost <login> <password>
Verbirgt den eigenen Host durch Anzeige eines
vom Server gelieferten virtuellen Hosts.
Alle
mode <chan/nick> <mode>
Ermöglicht es, Channel- oder User-Modi zu
setzen oder zu ändern. Siehe auch Liste der Modi in User
& Channel Modi
Alle
credits
Zeigt eine Dankesliste der Unterstützer von UnrealIRCD
an.
Alle
license
Zeigt die GNU Lizenz an
Alle
time <server>
Zeigt Datum und Zeit des Servers an. Die Angabe
des Servers ermöglicht es, Datum und Zeit aller Server im Netz zu
überprüfen.
Alle
botmotd <server>
Zeigt die botmotd (Bot Message Of The Day) an.
Bei Angabe eines Servers, wird dessen botmotd angezeigt.
Alle
identify <password>
Schickt das eigene Passwort an die Services, um
den eigenen Nick zu identifizieren.
Alle
identify <channel> <password>
Schickt das eigene Passwort an die Services, um
sich als Owner eines Channels zu identifizieren.
Alle
dns <option>
Liefert Informationen des DNS Cache des Servers.
Da viele Clients einen eingebauten DNS Befehl haben, wird man den Befehl
meist in der Form /raw DNS eingeben müssen, um das
gewünschte Ergebnis zu erhalten. Opers dürfen eine 1 als ersten
Parameter angeben, um eine Liste der Einträge im DNS Cache zu erhalten.
Alle
oper <userid> <password>
Befehl, um dem User IRCOp Status zu geben, wenn
userid und passwort mit den Angaben im Operblock übereinstimmen.
IRCop
wallop <message>
Schickt eine Nachricht an alle User mit dem
Usermode +w
IRCop
globops <message>
Schickt eine Nachricht an alle IRCops
IRCop
chatops <message>
Schickt eine Nachricht an alle IRCops mit dem
Usermode +c
IRCop
locops <message>
Schickt eine Nachricht an alle lokalen IRCops
IRCop
adchat <message>
Schickt eine Nachricht an alle Admins
IRCop
nachat <message>
Schickt eine Nachricht an alle Net Admins
IRCop
kill <nick> <reason>
Disconnected (killt) einen User vom Netzwerk.
IRCop
kline [+-]<user@host> [<time to ban> <reason>]
Bannt die Host Mask von dem Server, auf dem die
Line gesetzt wurde. Eine kline ist kein globaler Bann. time to ban ist
entweder a) ein Wert in
Sekunden, b) ein Zeitwert, wie '1d' für1 Tag, oder c) '0' für permanent.
Zeit und Grund sind optional, falls nicht angegeben, werden der Werte aus
'set::default-bantime (Default: 0/permanent) und 'no reason' verwendet. Um
eine kline zu löschen, benutzt man den Befehl /kline -user@host.
IRCop
zline [+-]<*@ip> [<time to ban> <reason>]
Bannt eine IP Adresse vom lokalen Server, auf dem die
Line gesetzt wurde (nicht global). Siehe bei kline für genauere
Informationen zur Syntax. Zum Löschen benutzt man /zline -*@ip. Gibt man
bei zline statt einer IP einen Host an, so wirkt sie wie eine kline.
IRCop
gline [+-]<user@host>| nick> [<time to ban>
<reason>]
Setzt einen globalen Bann auf alle, auf die die
Maske zutrifft. Siehe bei kline für genauere Informationen zur Syntax.
Zum Löschen benutzt man /gline -user@host.
IRCop
shun [+-]<user@host | nick> [<time to shun>
<reason>]
Bewirkt, dass der User KEINERLEI Befehle auf dem
Server mehr ausführen und auch nichts mehr schreiben kann. Shuns sind
global (wie glines) Siehe bei kline für genauere Informationen zur
Syntax. Zum Löschen benutzt man /shun -user@host..
IRCop
gzline [+-]<ip> <time to ban> :<reason>
Setzt eine globale zline (Bann auf IP). Siehe
bei kline für genauere Informationen zur Syntax. Zum Löschen benutzt man
/gzline -*@ip. Gibt man bei gzline statt einer IP einen Host an, so wirkt
sie wie eine gline.
IRCop
rehash <server> –<flags>
Rehasht die Config Datei des Servers (liest sie
neu ein). Indem man den Server Namen angibt, kann man die Config Datei
dieses Servers remote rehashen. Ebenso sind einige Flags möglich:
-all - Rehasht sämtliche Config Dateien
-motd - Rehasht all MOTD und RULES Dateien (incl. tld {})
-opermotd - Rehasht die OPERMOTD
-botmotd - Rehasht die BOTMOTD
-garbage - Bewirkt Garbage Collection (Garbage Collection ist eine Methode,
mit der nicht mehr verwendeter Speicher automatisch freigegeben wird).
IRCop
restart <server> <password>
Restartet den IRCD Prozess. Das Passwort ist
erforderlich. Durch Angabe des Servernamens kann man auch einen entfernten
Server restarten.
IRCop
die <password>
Beendet den IRCD Prozess. Das Passwort ist
erforderlich.
IRCop
lag <server>
Dieser Befehl ähnelt einem TraceRoute für IRC
server. Nach Eingabe von z.B. /lag irc.fyremoon.net erhält man Antwort von jedem Server mit Zeit.
Nützlich, um herauszufinden, wo ein Lag ist und optional (TS future/past
travels [??])
IRCop
sethost <newhost>
Ermöglicht es, den eigenen vHost zu was immer
man möchte, zu ändern.
IRCop
setident <newident>
Ermöglicht es, die eigene Ident zu was immer
man möchte, zu ändern.
IRCop
chghost <nick> <newhost>
Ermöglicht es, den Host eines Users, der online
ist, zu ändern.
IRCop
chgident <nick> <newident>
Ermöglicht es, den Ident eines Users, der
online ist, zu ändern.
IRCop
chgname <nick> <newname>
Ermöglicht es, den Real Name eines Users, der
online ist, zu ändern.
IRCop
squit <server>
Entfernt einen Server aus dem Netzwerk.
IRCop
connect <server> <port> <server>
Wenn nur ein Server angegeben ist, wird
versucht, den Server, auf dem man aktuell ist, zum zweiten Server zu
verbinden. Sind 2 Server angegeben, wird versucht, die beiden Server
miteinander zu verbinden. Ein Leaf ist an erster Stelle anzugeben, ein Hub
an zweiter Stelle.
IRCop
dccdeny <filemask> <reason>
Setzt ein DCCDENY für diese Dateimaske.
Verhindert, dass diese Datei gesendet wird.
IRCop
undccdeny <filemask>
Löscht ein DCCDENY
IRCop
sajoin <nick> <channel>, <channel>
Zwingt einen User den/die angegebenen Channels
zu joinen. Steht nur Services und Admins zur Verfügung.
IRCop
sapart <nick> <channel>, <channel>
Zwingt einen User den/die angegebenen Channels
zu verlassen. Steht nur Services und Admins zur Verfügung.
IRCop
samode <channel> <mode>
Erlaubt es Netadmins und Service-Admins die Modi
eines Channels zu ändern, ohne dort Channel Op zu sein.
IRCop
rping <servermask>
Berechnet den Lag zwischen Servern in
Millisekunden.
IRCop
trace <servermask|nickname>
Auf einen User angewandt, liefert dieser Befehl
die Klasse und ein Lag Info. Für einen Server wird Klasse / Version und
Link Info angezeigt.
IRCop
opermotd
Zeigt die OperMotd Datei des Servers an.
IRCop
addmotd :<text>
Fügt den gegebenen Text an das Ende der Motd
an.
IRCop
addomotd :<text>
Fügt den gegebenen Text an das Ende der
OperMotd an.
IRCop
sdesc <newdescription>
Gestattet es Server Admins den Eintrag mit der Beschreibung des
Servers zu ändern, ohne dass ein Restart erforderlich
ist.
IRCop
addline <text>
Ermöglicht die Ergänzung der Unrealircd.conf
um die in <text> angegebenen Zeilen.
IRCop
mkpasswd <password>
Verschlüsselt ein Clear Text Passwort zum
Eintrag in die Unrealircd.conf.
IRCop
tsctl offset +/- <time>
Stellt die IRCD interne Uhr nach (NICHT
benutzen, wenn man nicht genau versteht, was dieser Befehl tut!).
IRCop
tsctl time
Liefert einen TS Report.
IRCop
tsctl alltime
Liefert einen TS Report ALLER Server.
IRCop
tsctl svstime <timestamp>
Stellt die TS Zeit aller Server (NICHT benutzen,
wenn man nicht genau versteht, was dieser Befehl tut!).
IRCop
htm <option>
Steuert Einstellungen, die sich auf den High Traffic
Modus beziehen. Der High Traffic Modus (HTM) deaktiviert einige User
Befehle, wie /list, /whois, /who etc als Antwort auf extrem hohen Traffic
auf dem Server. Mögliche Optionen sind:
-ON Schaltet HTM für den Server ein
-OFF Schaltet HTM für den Server aus
-NOISY Der Server benachrichtigt users/admins bei Wechsel in oder aus HTM
Modus
-QUIET Der Server benachrichtigt NIEMANDEN bei HTM Modus Wechsel
-TO <value> Stellt die Traffic Rate ein, ab der HTM aktiviert wird. IRCop
stats <option>
B - banversion - Anzeige der Bann auf Version
Liste
b - badword - Anzeige der Badword Liste
C - link - Anzeige der Liste geblockter Links
d - denylinkauto - Anzeige der Liste geblockter Links (deny link (auto)
D - denylinkall - Anzeige der Liste geblockter Links (deny link (all)
e - exceptthrottle - Anzeige der Ausnahmen bei throttle block
E - exceptban - Anzeige der Ausnahmen von Banns
f - spamfilter - Anzeige der Spamfilter Liste
F - denydcc - Anzeige der Liste geblockter DCCs
G - gline - Anzeige der Liste von glines
Erweiterte Flags: [+/-mrs] [mask] [reason] [setby]
m Liefert glines, die zur angegebenen Maske
passen/nicht passen
r Liefert glines, die zum angegebenen Grund
passen/nicht passen
s Return glines, die von angegebenem Namen
gesetzt/nicht gesetzt wurden
I - allow - Anzeige der Allow block Liste
j - officialchans - Liste der offiziellen Channels
K - kline - Liste der User/Bann und IP/Ausnahmen
l - linkinfo - Anzeige von Link Informationen
L - linkinfoall - Anzeige aller Link Informationen
M - command - Anzeige, wie oft jeder Befehl benutzt wurde
n - banrealname - Liste von Banns auf Realname
O - oper - Liste der Opers
S - set - Liste der Einträge im set Block
s - shun - Liste der Shuns
Erweiterte Flags: [+/-mrs] [mask] [reason] [setby]
m Liefert shuns, die zur angegebenen Maske passen/nicht passen
r Liefert shuns, die zum angegebenen Grund passen/nicht passen
s Return shuns, die von angegebenem Namen gesetzt/nicht gesetzt wurden
P - port - Liste verwendeter Ports
q - sqline - Anzeige der SQLINE Liste
Q - bannick - Anzeige der Liste gebannter Nicks
r - chanrestrict - Anzeige der Liste verbotener Channels
R - usage - Zeigt Benutzungs Informationen an
t - tld - Zeigt die tld Block Liste an
T - traffic - Zeigt Traffic Informationen an
u - uptime - Gibt an, wielange der Server schon up ist und wie viele User
max
U - uline - Anzeige der ulines (Services)
v - denyver - Anzeige der deny version Block Liste
V - vhost - Anzeige der vHosts (soweit im vHost Block gesetzt)
X - notlink - Liste der Server, die momentan nicht gekinkt sind
Y - class - Anzeige Klassen im class Block
z - zip - Anzeige der Kompression bei ziplinked Servern (wenn mit ziplink
Unterstützung kompiliert wurde)
Z - mem - Anzeige, für welche Zwecke wie viel Speicher benutzt wirdAdmin
module
Anzeige aller geladenen Module
Alle
close
Dieser befehl disconnected alle unbekannten Verbindungen vom Server.
IRCOp
- benutze eine Mischung aus Groß -und Kleinschreibung und Ziffern ("Whbviwf5")
und/oder etwas Langes ("blaheatsafish", "AlphaBeta555").
- VERWENDE KEINE link/oper Passwords für andere Zwecke, wie Mail Account, Bot
Passwort, Foren, etc...
Weiter zu beachten ist: Niemals sollte der UnrealIRCd Ordner innerhalb eines webroot
Verzeichnisses oder anderer öffentlicher Verzeichnisse liegen.
Auch bei Backups ist sicher zu stellen, dass hier wieder auf korrekte
Berechtigungseinstellungen geachtet wird. (es passiert häufiger, dass alles
korrekt und sicher eingestellt ist, aber irgendwelche backup.tar.gz
ungeschützt und für jedermann lesbar auf dem Server liegen).
Möglicherweise möchte man verschlüsselte Passworte verwenden, wo immer das
möglich ist. Das ist kein ausreichender Schutz, sondern nur eine andere Ebene
von Sicherheit. Eine reihe von 1-8 Zeichen Passworten können innerhalb
weniger Stunden/Tage entschlüsselt werden. Außerdem gibt es üblicherweise
weitere interessante Informationen in Config Dateien, die nicht verschlüsselt
sind (wie: link::password-connect).
Man sollte seine Opers und Admins weise auswählen und sich immer an das
Prinzip des schwächsten Glieds einer Kette erinnern. Da hat man gerade
sorgfältigst an alles gedacht, was in dieser Doku beschrieben ist und dann
macht möglicherweise ein Freund, der Oper ist, irgend etwas Dummes. Wie z.B.
die Festplatte via netbios/kazaa/morpheus/.. freigeben, einen Trojaner fangen,
ein unsicheres Passwort nutzen , etc etc.. Unglücklicherweise hat man dadurch
nicht alles unter eigener Konrolle.
Dies soll hier erklärt werden:
Beispiel 1: link visibiblename.yournet.com { hostname 194.15.123.16; [etc] };.
Beispiel2: link visibiblename.yournet.com { hostname thehostnamethatworks.yournet.com; [etc] };.
Nebenbei bemerkt muss für das zweite Beispiel sichergestellt sein, dass
der Nameserver keine Zonenübertragungen erlaubt, aber das führt hier zu
weit vom Thema weg.
Wenn das nicht gewollt ist, ist wenigstens "CdDlLXz" zu
verbergen. Mehr dazu im nächsten Abschnitt.
Der /stats Befehl ist sehr informativ und es ist vielleicht
sinnvoll, dessen Verwendung so weit wie möglich einzuschränken. Man sollte
sich dabei von der frage leiten lassen: "Was möchte ich, dass meine User
es sehen können?". Die meisten großen Netzwerke stellen hier
"nichts" ein, während in anderen Netzwerken den Usern erlaubt
wird, '/stats g' und '/stats k' zu benutzen.
Ich empfehle die Einstellung 'set { oper-only-stats "*"; };' zu setzen und damit
sämtliche /stats Aufrufe für Nicht-Opers zu verbieten. Ist dies nicht
gewollt, sollte mit /stats list die gesamte Liste möglicher /stats
Parameter angezeigt werden und alles geblockt werden, was man nicht
ausdrücklich anzuzeigen erlauben möchte. (im Zweifelsfalle einfach
verbieten.... warum sollten die User das wirklich alles wissen müssen?).
Einige Beispiele:
- /stats o: zeigt die Nicks der Opers an (in der Schreibweise, wie sie sich
opern!) und deren Hostmasks.
- /stats c: zeigt eine Übersicht der Serverlinks und welcher als 'backup',
etc. benutzt wird.
- /stats g, /stats k: wird üblicherweise für gebannte Proxies benutzt....
und zeigt daher einem Angreifer, welche Proxies er nutzen kann.
- /stats E, /stats e: ziemlich sensitive Information, besonders, wenn ein
Angreifer diese Adresse benutzen kann
- /stats i, /stats y: könnte einem Angreifer helfen, Hosts zu finden, welche
viele Verbindungen gestatten.
- /stats P: hilft dem Angreifer, serveronly Ports zu finden
etc etc...
Es wurde häufig gefragt, ob es möglich sei, /map oder /links zu
deaktivieren. Unnsere Position hier zu ist, dass dies leichtfertig wäre und
ein falsches Gefühl von Sicherheit gäbe. Um das zu erklären: Server zu
verbergen, die aktuell von Usern benutzt werden, ist sinnlos, da die Server
den Usern ja schon bekannt sind. Für alle anderen Server, auf denen man keine
User möchte, siehe Abschnitt 8.6.
Nun, was KANN man tun? Seit der Version 3.2.1 gibt es eine Option namens 'flat
map' (set::options::flat-map), die bewirkt, dass bei /map und /links Befehlen
alle Server als direkt gelinkt erscheinen lässt. Dadurch können normale User
nicht mehr erkennen, welcher Server zu welchem gelinkt ist. Dies kann ein
netter zusätzlicher Schutz sein, weil dadurch nicht mehr irgendwelche Kiddies
irgendwelche "Schwachpunkte" per /map und /links erkennen können.
Somit ist es empfehlenswert, diese Option zu benutzen. Zu beachten ist, dass
das nicht narrensicher ist. Denn bei einem Netsplit kann man noch erkennen,
welcher Server mit welchem gelinkt war und dies gilt auch für einige andere
Dinge genauso.
NORMAL USERS & SNOMASKS
Ein nicht allgemein beakanntes Feature ist, dass normale User ebenfalls einige
eingeschränkte snomasks gesetzt haben können, insbesondere +s +sk. Dadurch
können sie Dinge wie rehashs, oper ups, kills und verschiedene andere
Meldungen lesen.
Um das zu deaktivieren, kann man set::restrict-usermodes benutzten, wie hier: set { restrict-usermodes "s"; };.
Das ganze "Verbergen von Informationen" ist natürlich keine
"echte" Sicherheit. Allerdings macht es Angriffe schwieriger und
erhöht den Aufwand für einen Angriff oder hack.
Eines allerdings sollte man tun: IMMER DIE NEUESTE VERSION BENUTZEN. Wenn man
sich in die Unreal-notify mailinglist einträgt, erhält man die Ankündigung
über neue Versionen (unreal-notify ist nur für Ankündigungen und man
erhält nur alle X Monate 1 Mail). Üblicherweise gibt es neue Releases, wenn
es (bedeutende) Sicherheits Fixes gibt..