Eine IRCd , kurz für Internet Relay Chat Daemon , ist eine Anwendung, die das IRC- Protokoll implementiert , das auf einem Server gestartet wird , wodurch dieser Server zu einem IRC-Server wird . Es ermöglicht verschiedenen Personen, über das Internet miteinander zu kommunizieren, indem Textnachrichten in Echtzeit ausgetauscht werden. Nicht zu verwechseln mit einem IRC-Roboter , einem Programm, das wie jeder andere Client eine Verbindung zu einem IRC-Server herstellt .
Der Server wartet auf Verbindungen von IRC-Clients an einer Reihe von TCP- Ports . Wenn der Server Mitglied eines IRC-Netzwerks ist, werden auch eine oder mehrere Verbindungen zu anderen Servern / Daemons hergestellt.
Der Begriff ircd bezog sich ursprünglich auf eine einzelne Software, wurde jedoch schließlich zu einem Oberbegriff für jede Implementierung eines IRC-Daemons.
Die meisten dieser Server werden unter Linux auf Computern installiert . Die Installation eines solchen Geräts ist schnell und einfach. Die Konfiguration erfordert jedoch mehr Zeit. Viele Websites bieten Tutorials zur Installation einer IRCD an.
Die am häufigsten verwendeten IRCDs sind:
Eine große Anzahl von IRCDs sind modifizierte Versionen der Haupt-IRCDs (insbesondere IRCu und Bahamut ).
Ein großer Teil dieser Server ist kostenlos und Open Source (Open Source), was die große Anzahl vorhandener Versionen erklärt.
Darüber hinaus werden IRC-Server häufig von Diensten (Nickserv, Chanserv ...) begleitet, die Funktionen wie die Reservierung von Pseudonymen und Kanälen hinzufügen.
Eine O-Zeile (Operators Line) ist ein Datenblock der IRC Server- Konfigurationsdatei (ircd.conf, unrealircd.conf ... abhängig von der IRCd ). Es wird verwendet, um dem System anzuzeigen, wer die Betreiber des Netzwerks sind, dh diejenigen, die auf den Servern auf globaler Ebene die Kontrolle übernehmen können. O-Leitungen werden normalerweise vom Server- / Netzwerkadministrator oder von einem Administrator mit direktem Zugriff auf die Konfigurationsdateien des IRC-Servers erstellt. Durch die Zuweisung einer O-Leitung an einen Benutzer, die die Tatsache anzeigt, dass ihm eine bestimmte Anzahl von Befugnissen über das System gewährt wird, muss sichergestellt werden, dass die Person absolut vertrauenswürdig ist und auch Aktionen auf einer Ebene verwalten kann, die über den einzelnen Kanal hinausgeht Verwaltung.
O-Line BeispielDie Art der Konfiguration variiert von IRCd-Typ zu IRCd-Typ.
Das folgende Beispiel zeigt einen Konfigurationsblock für eine O-Leitung unter UnrealIRCd . Es sammelt alle Informationen und Zugriffsberechtigungen eines bestimmten IrcOp und kann so viele Operatorblöcke enthalten, wie erforderlich. Der Block beginnt immer mit der Zeile "Oper <Operatorname>", gefolgt von einer offenen Klammer, und endet immer mit einer geschlossenen Klammer und einem Semikolon. Normalerweise gibt das Semikolon das Ende eines Blocks oder einer Konfigurationszeile an. Es sieht aus wie das:
oper UserName { class clients; from { userhost *@InternetServiceProvider.com; }; password "motdepasse"; flags { netadmin; global; get_umodew; get_host; can_gkline; can_gzline; can_zline; can_restart; can_die; can_override; }; maxlogins 1; };Wenn wir den Inhalt des Blocks detaillieren, stellen wir verschiedene Elemente fest:
Es gibt andere optionale Parameter für den Operator Block, z. B. die Zuweisung von Benutzermodi nach einer Inbetriebnahme ...
Temporäre O-LinieIrcOps mit Zugriff auf Service Administrator-Ebene (Services Admins oder SA) können O-Leitungen über OperServ definieren . Im Vergleich zu den in der Serverkonfigurationsdatei definierten können diese O-Leitungen als temporär betrachtet werden, da sie sehr einfach eingerichtet und entfernt werden können. Darüber hinaus ist kein erneutes Lesen der Konfiguration erforderlich, um aktiv zu sein, und der Benutzer, der davon profitiert, kann eine Operation unter Verwendung seines Spitznamens (bei NickServ registriert) und seines NickServ-Identifikationskennworts durchführen. Im Gegensatz zur zentralen Konfiguration ist es jedoch nicht möglich, Oper-Flags vom Typ "can_kline" oder "global" zu verwenden, sondern sogenannte "altmodische" Flags wie + oaAWst ... (diese Modi sind angegeben mit ihren Entsprechungen in neuen Oper-Flags in der UnrealIRCd-Dokumentation). Um beispielsweise eine temporäre O-Leitung für einen Benutzer zu definieren, gibt der Administrator den folgenden Befehl ein und setzt dort die entsprechenden Flags:
/MSG OperServ OLINE <pseudonyme> <flags>
Beispiel: /MSG OperServ OLINE Nickoperateur +owghasW
In diesem Beispiel haben wir ( + ) die folgenden Flags hinzugefügt : einen Operator ( o ), der die an IrcOps ( w ) gesendeten Dienstnachrichten und die an jeden im Netzwerk gesendeten Nachrichten ( g ) anzeigen kann . Er hat auch Zugriff auf die spezielle Hilfe der Operatoren durch den Befehl / helpop ( h ), ist er auch ein Administrator der Dienste ( a ) , die die Server - Mitteilungen sieht ( s ) und die eine Benachrichtigung erhält , wenn ein anderer Benutzer eine / tut WHOIS auf ihn ( W ). Flags unterscheiden zwischen Groß- und Kleinschreibung. Sie geben unterschiedliche Berechtigungen: a unterscheidet sich von A (was für Server Administrator steht).
Es ist sehr einfach, die temporäre O-Linie zu entfernen. Geben Sie dazu einfach den gleichen Befehl wie zuvor ein, folgen Sie jedoch einfach dem Spitznamen mit dem Minuszeichen ( - ).
Beispiel: /MSG OperServ OLINE Nickoperateur -
Der Benutzer verliert seine O-Leitung und seine temporären Betreiberrechte.
Eine D-Linie (oder D: Linie ) aus der Verweigerungslinie ist ein Begriff im IRC- Jargon . Wie die K-Linie verhindert eine D-Linie, dass ein Benutzer einen bestimmten Server in einem IRC-Netzwerk verwendet. Die Besonderheit der D-Leitung besteht darin, dass der betroffene Benutzer nicht einmal eine Verbindung zum Server herstellen kann (dieser entfernt sofort die Verbindung mit der gesperrten IP-Adresse), während die K-Leitung den Benutzer einmal trennt ( tötet ) Sobald die Verbindung zum Server beendet ist (möglicherweise nach Anzeige des MOTD mit einem Hinweis, der den Grund für das Verbot angibt). Eine D-Linie wird im Allgemeinen verwendet, um Verbindungen von persistenten Angreifern zu blockieren .
Eine K-Linie (oder K: Linie) aus der Kill-Linie ist ein Begriff im IRC- Netzwerkjargon . Einem Benutzer, der von einer K-Leitung betroffen ist , wird vorübergehend oder dauerhaft der Zugriff auf einen bestimmten Server im Netzwerk verweigert .
Im Allgemeinen gilt eine K-Leitung jeweils nur für einen Server: Der gesperrte Benutzer kann daher über einen anderen Server eine Verbindung zum IRC-Netzwerk herstellen. Es gibt jedoch eine große Anzahl anderer „ Linien “ ( G-Linie , Z-Linie usw.), die nahe an der K-Linie liegen. Beispielsweise verhält sich eine G-Leitung genauso wie die K-Leitung, dies gilt jedoch für alle Server eines IRC-Netzwerks.
Moderne IRC- Daemons können es IrcOps auch ermöglichen , K-Zeilen einzurichten, ohne die Daemon-Konfigurationsdateien ändern zu müssen (etwas, das normalerweise Administratoren vorbehalten ist). Einige IRC Dienste können auch helfen , diese verwalten Linien , wie OperServ zum Beispiel.
Die Modi dienen zum Schutz der Kanäle und der Benutzer, zum Zuweisen von Berechtigungen, zum Aktivieren von Optionen ... Die Modi haben mehrere Ebenen, die von der Verwaltung des Servers über die der Kanäle bis hin zu den Benutzern reichen.
Nur ein Benutzer mit Berechtigungen auf einem Kanal oder auf einem Server kann die Modi dieses letzten und der anderen Benutzer ändern (je nach Zugriffsebene, IrcOp , Verwaltungsdienste , Kanalbetreiber , Half-Op ...). Die Verwendung des Befehls /modehängt vollständig vom vom Benutzer ausgewählten IRC-Client ab. Die Syntax lautet wie folgt:
/mode <cible> <mode> [paramètres]Das Ziel kann ein IRC-Kanal sein, zum Beispiel #plop, oder der Spitzname eines Benutzers (sein Spitzname ). Der Modus hat die Form eines Groß- oder Kleinbuchstabens, dem ein + oder ein - vorangestellt ist, je nachdem, ob Sie den Modus definieren oder entfernen möchten. Einige Modi erfordern Parameter, insbesondere diejenigen, die zum Verwalten von Benutzerrechten verwendet werden.
Um beispielsweise nur Gastbenutzern den Zugriff auf den # plop-Kanal zu ermöglichen, führt ein Bediener die folgenden Schritte aus:
/mode #plop +iAuf demselben Kanal, um einem Benutzer mit dem Spitznamen "JeanClaude" die Betreiberrechte zu entziehen:
/mode #plop -o JeanClaudeWenn JeanClaude seine IP-Adresse nicht öffentlich anzeigen möchte , wird er:
/mode JeanClaude +xDie Modi o, v, l, b und k nehmen einen Parameter an.
Dies sind die am häufigsten vom RFC definierten Modi. Jeder IRC-Server kann beliebig viele Modi hinzufügen.
Die Modi eines Kanals, der Benutzern bestimmte Berechtigungen gewährt, lauten wie folgt:
Die meisten Verbindungen zu IRC- Netzwerken sind häufig klar und unverschlüsselt. Normalerweise achten Benutzer nicht wirklich darauf, aber das Problem wird offensichtlich, wenn ein Kennwort verwendet werden muss, um sich bei IRC-Diensten anzumelden . Da Passwörter wie alle Verbindungsdaten im Klartext übertragen werden, können sie möglicherweise von einem Dritten abgefangen werden, der den Netzwerkverkehr abhört.
Die Lösung besteht daher darin, Daten zum Schutz von Informationen (Konversationen, Kennwörter, IrcOp- Anmeldungen usw.) zu verschlüsseln . Somit ist der Datenverkehr, der in den Server eintritt und diesen verlässt, nur für die legitimen Empfängercomputer lesbar. Um die Sicherheit eines Netzwerks zu gewährleisten, sollten Betreiber im Allgemeinen systematisch sichere Verbindungen verwenden, um das Schnüffeln und damit den Diebstahl ihrer Passwörter zu verhindern .
Die Verschlüsselung / Sicherheit einer IRC-Verbindung folgt einem Standardprozess, der mit anderen Protokolltypen (z. B. HTTPS ) verwendet wird. Der IRC-Client verhandelt zunächst mit dem Server, um einen Sicherheitstunnel (über einen dedizierten Port) zu erstellen, in den die Daten fließen (durch Überprüfung und Austausch öffentlicher Schlüssel und Zertifikate). Erst nachdem dieser Tunnel fertig ist, beginnt die IRC-Sitzung. Die Verwendung einer sicheren IRC-Verbindung unterscheidet sich nicht von der Verwendung einer normalen Verbindung, außer dass der Client manchmal eine Warnmeldung anzeigen kann, wenn das Zertifikat unvollständig erscheint (z. B. bei selbstsignierten Zertifikaten).
Im Allgemeinen signalisiert der Server dem Client, dass die Daten verschlüsselt sind, indem er die Eigenschaften der Verbindung vor dem MOTD anzeigt, zum Beispiel:
-irc.serveur.com- *** You are connected to irc.serveur.com with TLSv1-AES256-SHA-256bits
TLSv1 gibt die Version des Sicherheitssystems an, AES ist das Verschlüsselungsprotokoll mit einer Schlüssellänge von 256 Bit, SHA256 ist der Hash . Diese Informationen variieren offensichtlich in Abhängigkeit von den Verschlüsselungsprotokollen und Schlüssellängen, die auf dem Server oder dem Client verwendet werden und / oder verfügbar sind.
Danach wird Usermode + z auf den Client angewendet und als sicher markiert. In diesem Modus kann der Benutzer auch Kanälen beitreten, die eine Datenverschlüsselung erfordern, z. B. Kanäle, die Administratoren / Betreibern vorbehalten sind, oder anderen.
Wenn der Benutzer eine Verbindung zu einem Server herstellt und wissen möchte, ob dieser sichere Verbindungen unterstützt, lesen Sie einfach die Liste der Modi, die auf dem Server verwendet werden können. Diese Informationen werden immer angezeigt, sobald die Verbindung hergestellt ist, vor dem MOTD, wie folgt:
Welcome to the MyServer IRC Network [email protected]
Wenn in den Listen der Modi (" iowghra ... ") der Modus " z " angezeigt wird, bedeutet dies, dass die Verschlüsselung vom Server unterstützt wird. Um die sichere Verbindung nutzen zu können, müssen Sie sich daher bei einem IRCOp oder einem Administrator nach der Nummer des dedizierten Ports erkundigen.
Diese Technik ist nicht immer wahr. Einige Server, wie im Netzwerk Freenode, verwenden einen anderen Modus und andere IRCds haben einfach keinen solchen Modus implementiert.
Die meisten modernen IRC-Clients implementieren Funktionen, um eine Verbindung zu einem IRC-Server herzustellen, der über einen oder mehrere Ports verfügt, die für sichere Sitzungen vorgesehen sind. Einige Clients verwalten diese Funktionen nativ (wie KVIrc , XChat oder sogar Irssi, wenn es mit SSL- Unterstützung kompiliert wird ), während andere Clients wie z. B. mIRC das Hinzufügen von Verschlüsselungsbibliotheken wie OpenSSL erfordern ( z. B. libeay32 .dll und ssleay32.dll ). . Es reicht daher aus, über den für sichere Verbindungen vorgesehenen Port eine Verbindung zum Server herzustellen. Zum Beispiel: 7000 (als Konvention, inoffiziell) anstelle von 6667.
Bei einigen Kunden ist es manchmal erforderlich, dem Verbindungsbefehl einen Parameter hinzuzufügen, um anzuzeigen, dass Sie die Verschlüsselung verwenden müssen. Unter mIRC reicht es aus, ein " + " direkt vor der Portnummer zu setzen (Beispiel :) /server irc.server.com:+6668, oder manchmal -ssl kann auch der Schalter " " verwendet werden. Es variiert von Kunde zu Kunde.
Die Implementierung des Verschlüsselungssystems auf einem Server erfolgt während der Kompilierungsvorbereitung (für einen Server, auf dem ein Linux / UNIX- oder FreeBSD-System ausgeführt wird ). Abhängig vom Server ( UnrealIRCd , Bahamut usw.) muss das Skript so konfiguriert werden, dass es die Verschlüsselungsmodule integriert, wenn die Kompilierung durchgeführt wird. Dies beinhaltet manchmal die Frage, ob der Benutzer möchte, dass der Server Verbindungen vom Typ SSL unterstützt. Wenn die Antwort Ja lautet, sucht das System nach OpenSSL- oder anderen Modulen, um die Verschlüsselungsunterstützung zu installieren und den Serverschlüssel und das Zertifikat zu generieren (in diesem Fall selbstsigniert, wenn Sie kein von einer offiziellen Behörde ausgestelltes Zertifikat haben). Um das Zertifikat zu erstellen, stellt das Skript dem Benutzer eine Reihe von Fragen, z. B.: Standortname, geografischer Standort usw. Sobald dieser Schritt abgeschlossen ist, kann die Kompilierung gestartet werden.
Der nächste Schritt besteht darin, den Server korrekt zu konfigurieren, um die Ports zu ermitteln, die sichere Verbindungen zulassen. Diese Konfiguration erfolgt normalerweise in der Datei ircd.confoder unrealircd.confim Listen Block oder in „ P: Line “. Es gibt die nicht sicheren Standardportnummern (meistens 6667) und dann die sicheren Ports an und fügt die erforderlichen Parameter und Optionen hinzu, die den Server anweisen, die Verschlüsselung für diese spezifischen Ports zu verwenden. Darüber hinaus müssen die genauen Pfade der Dateien, die den öffentlichen Schlüssel und das Zertifikat enthalten, in der Hauptkonfiguration des IRC-Servers enthalten sein. In der Regel befinden sich diese Dateien in dem Ordner, in dem sich die ausführbare Serverdatei befindet.
Da es sich bei IRC um ein Protokoll handelt, bei dem die Genauigkeit der übertragenen Daten überprüft werden muss, basiert es auf dem TCP- Übertragungsmodell . Dies bedeutet daher, dass die Sitzung als null betrachtet wird und vom Client oder Server automatisch beendet wird, wenn die Verbindung eine zu hohe Latenz, Desynchronisation oder einen nicht behebbaren Paketverlust aufweist. Es versteht sich daher von selbst, dass der Sicherheitstunnel ebenfalls nach denselben Regeln arbeitet. Ein Mangel an Antwort auf der einen oder anderen Seite, ein Verlust der Synchronisation der Verschlüsselungsschlüssel oder einfach ein Ping-Timeout (übermäßige Latenz) führen dazu, dass der Tunnel geschlossen wird und damit das Ende der IRC-Sitzung endet. Auf diese Weise werden Daten nicht zufällig ohne Überprüfung durch das System übertragen. Die sichere Sitzung wird zurückgesetzt, wenn der Client erneut eine Verbindung herstellt.