In diesem Tutorial beschäftigen wir uns mit oidentd, dessen Installation aber auch Konfiguration. Doch vorher noch einige einleitende Worte, damit wir es verstehen, womit wir es bei einem "IDENT"-Server (Fachsprache: ident daemon, oder kurz: identd) zu tun haben, was dessen Aufgabe ist und wie die Installation ablaufen soll.
Ein identd ist, wie der Name schon sagt, eine Art Netzwerkserver, der etwas mit der Identität eines Systembenutzers anstellt. Um genau zu sein kann man mit Hilfe eines ident daemons herausfinden, welcher Prozess auf einem Unix/Linux-System durch welchen Systembenutzer gestartet wurde. Der Server gibt also in jedem Fall Auskunft darüber, welcher Benutzer von welchem System welche Prozesse gestartet hat, sofern man eine entsprechende Abfragemöglichkeit besitzt. Diese Funktionalität lässt sich weiterspinnen: Es ist mit installiertem identd praktisch möglich zu sehen, durch welchen Benutzer eine Verbindung zu einem IRC-Netzwerk hergestellt wurde (das klappt aber auch mit anderen Protokollen, mit ftp oder diversen Mailprotokollen zB). Viele IRC-Server (darunter die Server des Quakenets und des IRCnets) prüfen beim Eingehen der Verbindung, ob auf dem Gegenüber (Client) ein identd läuft und fragen ihn, durch welchen Systembenutzer diese einzugehende IRC-Verbindung gestartet wurde. Dementsprechend formen sie den Eintrag in das IDENT-Feld, im IRC-Netz. (Hendrik is hbergunde@irc-guide.de)
Mal angenommen der Linux-Systembenutzer "peter" startet seinen IRC-Client auf der Linux-Shell (das kann X-Chat sein, irssi, es kann aber auch ein eggdrop oder ein psybnc sein!) und verbindet sich mit dem IRCnet. Dieses fragt beim Verbinden den installierten ident-Server ab: "Durch wen wurde diese Verbindung in Auftrag gegeben?", Antwort: user peter. Dementsprechend wird Peter's Maske im IRC dann etwa so aussehen: Peter[fruehstueck]!peter@meine-schoene-linux-box.de
Jetzt fragen sich aber viele (mit Recht), wozu es denn zum Beispiel das "Email/Ident"-Feld im mIRC gibt, oder wozu es das ident-Feld bei X-Chat gibt. Nun, somit kann man natürlich seinen ident im IRC-Netz selbst bestimmen (Peter[fruehstueck]!~freie_wahl@mein.pro-vider.de). Wenn das IRC-Netz keinen laufenden Ident-Server auf dem Gegenüber findet, werden diese Einträge übernommen, jedoch wird der ident mit einem Tildezeichen "~" als "ungegprüft" versehen. Die Identität des Benutzers konnte also nicht zweifelsfrei hergestellt werden.
Nun schreiben allerdings einige IRC-Server im Internet die Benutzung eines ident-Dienstes vor. Beispielsweise braucht man einen installierten (und logischerweise laufenden) identd, wenn man in's IRCnet verbinden will. Im Quakenet braucht man einen identd, wenn man sich TRUST besorgen will (Eine Erlaubnis um mit mehr als 5 Connections pro IP, also fünf verschiedenen Leuten über einen Rechner, zu chatten). Diese braucht man oft, wenn man sich für seine Truppe einen Bouncer-Service anlegen will.
Wir beginnen mit der Installation und fangen da an, wo's am meisten Sinn macht, nämlich bei der Frage welches System wir betreiben und ob's da nicht irgendeine Möglichkeit gibt, die uns hilft die Installation zu vereinfachen. Solltest du ein Debian-System auf deinem Server installiert haben, dann lies im Abschnitt oidentd-Installation unter Debian. Sollte Gentoo? auf deiner Liste laufen, dann schau mal bei oidentd-Installation unter Gentoo. Für alle anderen heißt es jetzt in den sauren Apfel beissen, und die oidentd-Installation mittels Quellcode? starten.
Debian-Betreiber können sich freuen, denn dieser Abschnitt ist rekordverdächtig kurz. Führe, als Benutzer root eingeloggt, folgenden Befehl auf deiner Konsole (SSH oder ähnliches) aus:
$> apt-get install oidentd
Das war's schon! Fahre jetzt fort mit der Konfiguration des oidentd!
Für Gentoo-Süchtlinge ergibt sich ein, genau genommen, noch kürzerer Befehlssatz, der eingetippt werden muss, nämlich:
$> emerge oidentd
Kurz und schmerzlos, geh' jetzt zur Konfiguration des oidentd!
Wenn du eine Linuxdistribution benutzt, die oben nicht aufgelistet ist, dann wird dir wohl nichts anderes übrig bleiben, als den oidentd händisch per Quellcodes zu installieren. Arme Sau. ;-) Aber keine Bange, hier wird dir erklärt, wie du das machen musst.
Wenn ihr nun einen IDENT-Server manuell auf eurem Linux-System installieren wollt, lest einfach weiter. Ich werde euch bei der Installation und Konfiguration unter die Arme greifen. Ihr braucht eine handelsübliche Linux/Unix-Shell, die man über (am besten) SSH? erreichen kann, sowie Standardentwicklungstools wie gcc und make (ist auf jeder guten Shell so wie so installiert) und ein klein wenig Zeit.
Fangen wir also an, wir loggen uns als Benutzer root im System ein, da wir diese Software systemweit installieren möchten. Somit begeben wir uns sofort in das Quellen-Verzeichnis und downloaden uns den Quelltext für oidentd. Begieb dich bevor du hier anfängst nochmal auf die Downloadseite von oidentd bei Sourceforge.net um zu gucken ob die hier im Tutorial verwandte Version ist. Wenn nicht, dann downloadest du dir natürlich die allerneueste und arbeitest entsprechend mit ihren Dateien weiter. Los gehts:
$> cd /usr/local/src/ $> wget http://heanet.dl.sourceforge.net/sourceforge/ojnk/oidentd-2.0.8.tar.gz
Wir fahren sofort mit der Installation fort: Wir entpacken den Sourcecode, wechseln in das erstellte Verzeichnis und beginnen damit den Quelltext für unsere Installation zu konfigurieren. Bitte lies weiter:
$> tar xfvz oidentd-2.0.8.tar.gz [.. Eine Liste vieler Dateien, die entpackt wurden ..] $> cd oidentd-2.0.8
Die Benutzung des Befehls ./configure --help gibt uns eine Liste der möglichen Einstellungsparameter, die wir für dieses Programm schon im Vornherein übernehmen können. Da wir beispielweise keinen Router betreiben und auch kein IPv6 nutzen, werde ich die Parameter --disable-masq, --disable-nat und --disable-ipv6 an das Konfigurationsprogramm übergeben, damit letztlich die auszuführende Datei (das binary) klein bleibt. Diese Größeneinsparung ist zwar recht gering, aber auch Kleinvieh macht Mist. Letztlich ist aber trotzdem zu sagen, dass die Installation und Benutzung von oidentd auch ohne diese Parameter reibungslos klappen würde. Also weiter
$> ./configure --prefix=/usr --sysconfdir=/etc --disable-masq --disable-nat --disable-ipv6
Es erscheint eine lange Liste an Ergebnissen einer Systemprüfung. Wenn das Programm nicht mit "error" abbricht, ist alles in Ordnung. Zeilen, die "warning" oder ähnliches enthalten, können im Allgemeinen ignoriert werden. Wir machen weiter mit der Übersetzung des Quelltexts in Maschinensprache (kompilieren) und der Installation des entstandenen Programms. Obiges gilt auch hier: Nur, wenn du das Wort "ERROR" am Ende liest, ist was schief gelaufen (es wird eine Fehlermeldung angezeigt, mit der du dich dann z.B. im Forum melden kannst), "Warnings" sind okay.
$> make [..Lange Liste an kryptischen Ausgaben ..] $> make install [..Noch eine solche Liste ebenfalls hier..]
Glückwunsch, dein oidentd sollte jetzt installiert sein. Jetzt täte er schonmal seinen Dienst, wenn wir ihn noch ordentlich einstellen. Doch bevor wir uns um die Einstellungen kümmern können, müssen wir uns klar machen, wozu wir den identd benutzen wollen. Viele von euch möchten ihn in Kombination mit einem psybnc betreiben, damit der Bouncer in ein IRC-Netz verbinden kann, in dem ein IDENTD erwünscht ist. Wir müssen also den psybnc mit "[x] oidentd support" kompilieren. Dazu wechselst du (ACHTUNG: Du darfst jetzt nicht als root eingeloggt sein, sondern musst den System-User benutzen, der später den psybnc starten soll, also z.B. "web1","psybnc", "hans" oder "bouncers" ... Auf jeden Fall nicht root!) in dein psybnc-Verzeichnis, machst make clean und führst "make menuconfig" (achte darauf, dass du die Salt.h von der Erstinstallation deines psyBNCs wieder in dem bouncer-Verzeichnis hast!!) aus, gehst in das Menü "Compiling Options" und clickst dort die entsprechende Option an. Beende die Menüoberfläche und tippe nun noch "make" ein, und die Sache sollte nun okay sein. Jetzt noch den Psybnc neustarten (killall -9 psybnc, und dann neu ausführen). Weitere Hilfen bekommst du im Artikel PsyBNC Installation und Konfiguration
Nun werden vielleicht einige von euch sagen: "Nanu, wenn doch alle Verbindungen ins IRC-Netz von demselben Programm (bouncer oder so) hergestellt werden und außerdem ein identd installiert ist, dann haben doch alle Benutzer dieses Bouncers im Chat den selben ident." Das ist korrekt: Wenn also der Systemuser "bouncers" den psybnc startet, werden alle Bouncer-Benutzer im IRC ein "bouncers" vor dem @-Zeichen haben. Nun, das ist blöd und in unserem Fall auch sehr von Nachteil, aber die Option "oidentd support" beim psybnc ermöglicht das automatische Einstellen einer selbstgewählten ident-Antwort. Streng nach der Norm genommen wird die Identität des Systembenutzers somit gefälscht, man spricht dabei auch vom "spoofing" (englisch für vergaukeln, reinlegen ...).
So, ab hier müssen wieder alle Linux-Benutzer ran! Es wird im Folgenden um die Datei /etc/oidentd.conf (/etc/conf.d/oidentd.conf unter Gentoo) gehen, bei einigen von euch ist die Datei bereits vorhanden, bei anderen fehlt sie noch völlig und muss neu erstellt werden. Diejenigen, die sie schon auf dem System vorfinden sei gesagt, dass es relativ sicher ist, wenn sie den unten angegebenen Inhalt in die Datei komplett hineinkopieren (bereits existentes Zeug bitte alles überschreiben!). Einfach weiterlesen:
Wir müssen uns nun um die Konfigurationsdatei des oidentd's kümmern. Sie heißt /etc/oidentd.conf, bitte öffne diese Datei im Editor deiner Wahl und halte dich im Groben an das unten genannte Beispiel. Es ist davon auszugehen, dass diese Datei bei einer Neuinstallation per Quellcode noch NICHT erstellt wurde, du musst sie also selbst schreiben:
default { default { deny spoof deny spoof_all deny spoof_privport allow random_numeric allow numeric allow hide } } user root { default { force reply "UNKNOWN" } } user bouncers { default { allow spoof allow spoof_all allow random allow hide } }
Diese Konfigurationsdatei besagt folgendes: Standardmäßig ("default") darf kein Benutzer die Antwort des ident-Services fälschen (dies ist somit wieder im Sinne eines ident-Servers). Wird sich nach einem Prozess erkundigt, der vom Benutzer "root" geschaltet wurde, dann wird die Antwort auf diese Ident-Abfrage "UNKNOWN" sein. Dies bietet ein Mindestmaß von Sicherheit und gibt nicht jeden durch root-initiierten Prozess sofort als solchen zu erkennen. Der Systembenutzer mit dem Namen "bouncers" hat Sonderrechte. Er darf IDENT-Antworten fälschen (Spoofen). Falls ihr eure Bouncer unter einem anderen Benutzernamen startet, müsst ihr diesen natürlich in die /etc/oidentd.conf eintragen, nämlich dort, wo im obigen Beispiel "user bouncers" steht - Logisch, oder?
Gut, es ist an der Zeit den oidentd das erste mal zu starten. Es ist zu sagen, dass wir dieses Programm aus technischen Gründen unter root starten müssen. Dies ist aber nur halb so schlimm, es befördert sich aber nach erfolgreichem Start von selbst in die Identität eines weniger kritischen Benutzers, sodass kein Sicherheitsproblem daraus entsteht:
$> oidentd -u nobody -g nobody
Wenn dein Server Debian betreibt und du da eben grade eine Fehlermeldung bekommen hast, dass die Gruppe "nobody" nicht existiert, dann hast musst du -g nobody durch -g nogroup ersetzen!
Jetzt müssen wir uns noch schnell darum kümmern, dass der oidentd sich mit dem psybnc verständigen kann. Dies geschieht über eine Datei namens /home/bouncers/.oidentd.conf (eventuell wieder ein anderer Benutzerpfad!).
Bitte macht euch hier nocheinmal den Unterschied zwischen /etc/oidentd.conf und der .oidentd.conf in eurem Homeverzeichnis klar. Die erste regelt den Betrieb des oidentd generell, die andere steuert, wie das ganze beim entsprechenden Benutzer ablaufen soll! Man braucht sie BEIDE. Die /etc/oidentd.conf muss man selbst befüllen, um den Inhalt der .oidentd.conf kümmert sich der psyBNC, allerdings muss man ihm dabei helfen, nämlich so:
Wir geben einmal ungefragt folgende Befehle als "root" ein, und das ganze sollte laufen (achte darauf, dass du wieder "bouncers" mit deinem Benutzernamen ersetzt', der die Bouncer laufen lassen wird!):
$> touch ~bouncers/.oidentd.conf $> chown bouncers:nobody ~bouncers/.oidentd.conf $> chmod 640 ~bouncers/.oidentd.conf
$> chmod 755 ~bouncers/.oidentd.conf
Somit sollte alles funktionieren und laufen wie gewünscht. Das wollen wir jetzt überprüfen. Obwohl jetzt ein oidentd läuft kann sich der psybnc mit verschiedenen idents anmelden. Damit der Vorgang mal in Gang kommt musst du deinen psybnc killen und danach neustarten. Achte darauf, dass du dies NICHT mit root erledigst!
Wir gehen hier wieder davon aus, dass "bouncers" der Benutzername ist, unter dem du deinen psyBNC startest. Bitte ersetze gegebenenfalls diesen Benutzernamen durch deinen.
1. Dein oidentd sollte jetzt laufen, wenn du ps aux | grep oidentd eingibst, sollte in etwa folgendes erscheinen:
nobody 1234 0.0 0.0 1500 492 ? Ss Jan05 0:00 [oidentd]
2. Du solltest deinen psyBNC gestartet haben, der sollte ohne Probleme ins IRC-Netzwerk? verbinden können. Jetzt loggst du dich auf deinem psyBNC ein (Dein Login auf dem psyBNC lautet in unserem Beispiel einfach login). Wenn du nun einen WHOIS auf dich selbst machst, dann sollte dort in der ersten Zeile etwa folgendes stehen:
Deinnickname is login@dein-host-server.de
Dort darf nicht bouncers@dein-host-server.de stehen. Dort darf auch nicht ~login@dein-host-server.de stehen. Wenn du das doch beobachtest, dann ist (im ersten Fall) dein Spoofing nicht ordentlich eingestellt, das heißt, dass der oidentd die ~bouncers/.oidentd.conf nicht lesen kann. Das kann daran liegen, dass entweder der psybnc sie nicht mit Inhalt füllt (Hast du den psybnc mit oidentd-Support kompiliert und ihn danach neu gestartet?), ein Problem mit der /etc/oidentd.conf vorliegt (Hast du den user bouncers-Block dort eingetragen?) oder ein Rechteproblem beim Lesen oder Schreiben der ~bouncers/.oidentd.conf vorliegt. In allen Fällen führst du bitte nochmal mit äußerster Sorgfältigkeit die Konfiguration des oidentds durch. Im zweiten Fall (~-Zeichen vor dem ident-Feld im IRC) deutet alles darauf hin, dass entweder dein oidentd überhaupt nicht läuft (wahrscheinlich) oder er vom IRC-Server nicht erreicht werden konnte (Firewallproblem?, eher unwahrscheinlich).
Wenn das alles abgehakt ist, und solche Probleme nicht auftauchen, dann ist dein psybnc-oidentd-Gespann jetzt beispielsweise bereit für das IRCnet? oder einen TRUST im Quakenet? oder so.
Für Fragen und Probleme, steht euch jeder Zeit mein Forum zur Verfügung - außerdem gibt es noch das PsyBNC Installations- und Konfigurations-FAQ.