shroudBNC mit Debian Paketen installieren

2009-11-21 - kostaki 3 Kommentare »

Sucht man nach Installationsanleitungen für den shroudBNC findet man immer Anleitungen zum selbst kompilieren. Normalerweise bin ich auch ein Fan dieses Weges, aber bei diesem Thema wollte ich die Debian eigenen Pakete benutzen. Hierfür gibt es leider nicht mehr so viele Informationen im Netz, also habe ich sie mir selbst zusammen gesucht. Am Ende dieses Artikels sollte man einen funktionierenden shroudBNC auf Debian Lenny haben der bei neuen Versionen über apt aktualisiert werden kann.

Was ist ein BNC/Bouncer/shroudBNC eigentlich?

Ein Bouncer oder auch BNC ist ein Programm über das man eine Verbindung in das Chatnetzwerk IRC aufrecht halten kann. Normalerweise verbindet man sich mit seinem Chatclient (z.B. Mirc) direkt mit dem IRC-Server. Geht man nun offline verschwindet man auch aus den Channeln. Der Bouncer schaltet sich zwischen den eigenen IRC-Client und den Server. Wenn man jetzt offline geht oder einen Disconnect hat, bleibt der BNC im Chat.

Aha und wozu braucht man so etwas?

Diese Frage ist heutzutage schon schwerer zu beantworten. Früher war es eine Art Sicherheitsgewinn, da nur der Bouncer für den IRC Server sichtbar war. So konnte niemand die eigene, wirkliche Client IP herausfinden. Heutzutage bieten große IRC Netzwerke eigene Schutzmechanismen. Außerdem konnte man so seinen Nick im Netzwerk schützen. Wenn er immer belegt ist kann ihn sich niemand anderes nehmen. Ein weiterer beliebter Grund sind die meist schönen vhosts die man verwenden kann. So ist ein Host wie name@123.123.123.123-bla-t-off-lala.net nicht so schön wie z.B. name@debianroot.de. Mit Hilfe eines Bouncers kann man dies bewerkstelligen. Kurz gesagt: Es ist Geekware. Wer es nicht kennt, braucht es auch nicht. :)

Installation des shroudBNC

In der aktuellen Debian Lenny Version wird sbnc (1.2-8+lenny2) installiert. In Squeeze gibt es die Version sbnc (1.2-18). Ich habe beide Versionen mal installiert. Will man mit der Squeeze Version den MySQL Support haben, muss man auch die mysql-common aus Squeeze installieren, da bncmysql dort natürlich gegen MySQL 5.1 gelinkt wurde. Bei der Lenny Version gibt es ein paar Probleme bei der Installation, aber nichts was man nicht fixen kann. Im weiteren werde ich die Lenny Version benutzen. Wer keinen MySQL Support braucht kann sbnc (1.2-18) aus Squeeze installieren. Wie man das ohne Probleme machen kann hatte ich ja schon im Debian Testing auf Stable Installieren Artikel beschrieben. Zu beachten ist vielleicht noch das man die Abhängigkeiten vor dem eigentlichen Installieren der Testing Version installiert um sie nicht auch aus Squeeze zu installieren. Im Changelog des Debian shroudBNCs kann man sich angucken was sich seit 1.2-8 geändert hat. Viele der kleinen Probleme die man mit der Lenny Version hat, sind nämlich schon gefixt, aber eben noch nicht im Stable Zweig von Debian.

Vor dem Installieren natürlich ein aptitude update/upgrade.

$ aptitude update && aptitude safe-upgrade

Die Installation des shroudBNC startet man dann wie immer.

$ aptitude install sbnc
The following NEW packages will be installed:
libc-ares2{a} oidentd{a} pwgen{a} sbnc sbnc-mysql{a} sbnc-tcl{a} tcl8.5{a}

Erklärung

  • libc-ares2 ist eine library für asyncrone DNS Anfragen, was zu einem der Vorteile von shroudBNC zählt.
  • oidentd ist der bevorzugte ident daemon dieser Tage. Weitere Informationen zum oidentd und zur Konfiguration kommen weiter unten im Artikel.
  • pwgen wird zum generieren von Passwörtern verwand. Diese werden zwar zufällig gebildet, aber sind immer noch aussprechbar.
  • tcl8.5 ist die eingesetzte Scriptsprache. shroudBNC läuft auch mit tcl8.4.

Bei der Installation muss man einen Admin Account angeben. Das ist dann auch gleich der erste User auf dem shroudBNC mit dem man ins IRC connecten kann. Das war es dann auch schon mit der Installation. Da es nicht ratsam ist den sbnc unter root laufen zu lassen, legt Debian einen eigenen User für den Bouncer Namens sbnc an. Unter diesem wird der BNC später laufen.

shroudBNC konfigurieren

Aus irgend einem Grund wird die Config nicht angelegt und deshalb die Eingaben verworfen. Wenn man den sbnc nun starten will, wird er sofort wieder beendet. Im Logfile landete dann die folgenden Meldung:

Log system initialized.
Error (in Core.cpp:126): Configuration file could not be created.
Fatal error occured.

Wenn man in /etc/sbnc schaut, findet man dort auch keine sbnc.conf. Kein Problem diese wird angelegt wenn man den sbnc das erste mal startet.

$ su -s /bin/bash sbnc
$ /usr/sbin/sbnc
shroudBNC (loader: 1.2 $Revision: 1080 $) - an object-oriented IRC bouncer
Log system initialized.
No valid configuration file has been found. A basic
configuration file can be created for you automatically. Please
answer the following questions:
1. Which port should the bouncer listen on (valid ports are in the range 1025 - 65535): 12345
2. What should the first user's name be? exampeuseradmin
Please note that passwords will not be echoed while you type them.
3. Please enter a password for the first user:
4. Please confirm your password by typing it again:
Writing main configuration file... DONE
Writing first user's configuration file... DONE
Configuration has been successfully saved. Please restart shroudBNC now.
$ exit

Zeile 1. als sbnc User einloggen
Zeile 2. sbnc starten
Zeile 8. hier den Port angeben auf dem der bnc lauschen soll
Zeile 9. der name des admins
Zeile 11/12: das Passwort des admins

Damit hat man eine minimal Config mit der der Bot starten würde.

Debian Startscript

Debian bringt einen Daemon Starter für den sbnc mit. Dieser verwendet die Config unter /etc/default/sbnc. Dort kann man angeben ob der snbc automatisch gestartet werden soll oder nicht. Setzt man den Bot hier nicht auf automatisch, kann man ihn über den Starter nicht ansprechen. Ansonsten kann man ihn ganz normal via Startscript starten und stoppen.

$ nano /etc/default/sbnc
$ /etc/init.d/sbnc start|stop|reload|restart|force-reload

Hat man die Config unter /etc/default/sbnc angepasst und die Konfigurationsdatei liegt auch unter /etc/sbnc/sbnc.conf dann kann man den Bouncer das erste mal starten.

$ /etc/init.d/sbnc start

Zu bedenken ist, falls es Probleme gibt, das der shroudBNC mit den Rechten von sbnc läuft. Es lohnt sich also zu prüfen ob alle wichtigen Dateien auch von diesem gelesen/geschrieben werden können.

oidentd konfigurieren

Der oidentd ist ein Server der auf Ident Anfragen antwortet. Wenn jemand eine TCP Verbindung aufbauen möchte, kann die Gegenstelle über den Ident Daemon erfragen welcher UNIX Benutzer für die Anfrage verantwortlich ist. Diese Antwort ist aber leicht fälschbar und deshalb ist der Sinn eines Ident Servers umstritten. In der IRC Welt sind Ident Server weit verbreitet und einige Netzwerke lassen jemanden erst connecten wenn ein Ident Server vorhanden ist. Der oidentd lauscht auf dem TCP Port 113.

Die von Debian installiert minimal Config am besten einfach austauschen. Eine Beispiel Config findet man in /usr/share/doc/sbnc/examples/oidentd.conf.

$ nano /etc/oidentd.conf
default {
        default {
                deny spoof
                deny spoof_all
                deny spoof_privport
                allow random_numeric
                allow numeric
               	allow hide
        }
}

user root {
        default {
                force reply "UNKNOWN"
        }
}

user sbnc {
        default {
                allow spoof
                allow spoof_all
                allow random
                allow hide
        }
}

Im ersten Teil werden die default Einstellungen definiert und eingeschränkt. Der zweite Teil unterbindet Auskünfte über root gestartete Prozesse. Hier würde man nur die Antwort "UNKNOWN" bekommen. Im dritten Teil wird der Name des Users unter dem der shroudBNC läuft angegeben. Diesem User wird das fälschen (Spoofen) von IDENT Anfragen erlaubt. Nach Anpassungen den oidentd neustarten.

$ /etc/init.d/oidentd restart

mit Mirc das erste mal zum shroudBNC connecten

Hierfür einfach Mirc starten und im System Fenster diesen Befehl ausführen.

/server SERVERIP:PORT PASSWORT -i NICK ALTNICK USERNAME@
  • Die SERVERIP und der PORT des Servers auf dem der shroudBNC installiert wurde.
  • Das PASSWORT das beim ersten Start oder bei der Installation vergebene Passwort. Hier kann man natürlich auch einen anderen User der shroudBNC angeben (wenn man den schon einen weiteren hat).
  • Mit -i gibt man den NICK im IRC Netzwerk an. Das kann etwas frei gewähltes sein. Wichtig ist das es nicht schon vergeben ist! Sollte es doch vergeben sein wird versucht ALTNICK zu belegen. Sind beide Namen vergeben, bekommt man einen leicht abgeänderten Namen. Den kann man aber jederzeit ändern.
  • Mit USERNAME@ ist der Username des benutzten Users gemeint. Oben wird ja das Passwort dieses Users angegeben. Das @ ist hier kein Tippfehler!

Könnte in etwa so aussehen.

/server 127.0.0.1:12345 PASSWORT -i MEINNICK MEINNICK2 example@

Nach ein paar Sekunden sollte man vom shroudBNC begrüßt werden. Wenn nicht im sbnc.log nachsehen! Weitere Informationen zur Mirc Konfiguration gibt es im shroudBNC Wiki.

shroudBNC und MySQL konfigurieren

Das sollte eine recht simple Angelegenheit sein. Man legt sich eine Datenbank an und gewährt einem User Zugriff auf diese. Dann passt man die sbnc.conf an und startet den shroudBNC neu. Dieser legt dann die User Tabelle in der Datenbank an und fertig.

$ nano /etc/sbnc/sbnc.conf
system.configmodule=./bncmysql.so
mysql.host=localhost
mysql.port=3306
mysql.user=your_mysql_user
mysql.password=your_mysql_pass
mysql.database=your_mysql_database

Leider bekomme ich nach dem starten nur einen Eintrag im Logfile. Meine Suche nach diesem Fehler hat leider keine Lösung hervorgebracht... Ich denke aber das es an der von Debian mitgelieferten Version liegt, ansonsten hätten mehr Leute dieses Problem gemeldet. Wer es unbedingt braucht, könnte es mit einer selbstkompilierten Version der bncmysql.so testen oder vielleicht die Squeeze Version ausprobieren.

Log system initialized.
Error (in Core.cpp:105): /usr/lib/sbnc/bncmysql.so: undefined symbol: _ZTI4CLog
Fatal error occured.

Pfade und Ordner des shroudBNC bei Debian

  • /etc/sbnc/ Hier liegen die Hauptkonfigurationsdateien .tcl, .ssl und .ipc
  • /etc/logrotate.d/sbnc Was logrotate mit den Logfiles des shroudBNCs machen soll kann man hier einstellen.
  • /usr/lib/sbnc/ Die Libraries des shroudBNCs. Im Unterordner scripts liegen die sbnc-tcl Scripte.
  • /var/lib/sbnc/ Das ist das Homedir des sbnc Users und unter users liegen die Usereinstellungen.
  • /var/log/sbnc/ Logfiles des sbncs.
  • /usr/share/doc/ Alle die weitere Informationen über die Einbindung von shroudBNC bei Debian suchen, werden hier fündig (sbnc/sbnc-mysql/sbnc-tcl/).
  • /var/run/sbn Die pid des shroudBNC.

shroudBNC mit SSL Support

Die Verbindung zum BNC kann man auch SSL verschlüsselt betreiben und das geht auch sehr einfach. Zuerst in den richtigen Ordner gehen.

$ cd /etc/sbnc/

Dann wird ein neues Zertifikat erstellt. Das habe ich mir zusammen kopiert, aber es funktioniert :D Das Zertifikat sollte damit für die nächsten ~10 Jahre funktionieren.

$ openssl genrsa -des3 -out sbnc.key 1024
$ openssl rsa -in sbnc.key -out sbnc.key
$ openssl req -new -x509 -days 3600 -key sbnc.key -out sbnc.crt

Jetzt muss noch ein SSL Port vergeben werden auf dem der shroudBNC lauschen soll.

$ nano /etc/sbnc/sbnc.conf
system.sslport=SSLPort

Darauf achten das die Dateien sbnc gehören, ansonsten merkt man es beim neu starten und findet eine Meldung im Logfile.

$ chown sbnc:sbnc sbnc.*

BNC neu starten

$ /etc/init.d/sbnc restart

Weitere Informationen gibt es hier und hier.

auf den shroudBNC mit Mirc per SSL connecten

Hier steht genau wie man Mirc zum SSL verstehen bringt. Ich fasse es trotzdem kurz in deutsch zusammen.

  1. OpenSSL runter laden und installieren. Will man es nicht im Windows/System Ordner haben einfach irgend wo hin installieren. Kann man später wieder deinstallieren.
  2. Wenn man die OpenSSL Dateien nicht im Windows Ordner hat, muss man sie jetzt in den Mirc Ordner kopieren.
  3. Jetzt Mirc neustarten.
  4. Zum testen einfach einen SSL fähigen Server aussuchen und los gehts. z.B. /server -e irc.indymedia.org:+6697
  5. Will man auf seinen shroudBNC connecten, dann den SSL Port eintragen und ein + davor setzen.

Wenn alles funktioniert, bekommt man das Zertifikat angezeigt und muss es akzeptieren.

Weitere Möglichkeiten

Jetzt könnte man sich noch dem oben beschrieben MySQL Problem annehmen. Ein anderer Punkt ist die Verwaltung des BNCs mit Hilfe eines Webinterfaces. Ich bin mir nicht sicher ob das mit der Debian Version funktioniert, weil ich die tickle.so nicht gefunden habe, die für die Kommunikation zwischen Webinterface und BNC gebraucht wird. Außerdem scheint es keine wirklich funktionierende Version des Webinterfaces für shroudBNC 1.2 zu geben. Wer es also unbedingt haben will, müsste tickle selbst kompilieren.

Wer mehr über die Möglichkeiten der /etc/sbnc/sbnc.conf und den User Configs erfahren möchte, wird im shroudBNC Wiki fündig. Dort gibt es auch weitere Informationen über die Kommandos die einem nach dem connecten auf den BNC zur Verfügung stehen. Hier noch zwei zusätzliche TCL Scripte die für mich interessant sind. Mit qauth.tcl kann man den BNC unabhängig vom Client bei Q authentifizieren.

Related Links

Ähnliche Artikel

  1. 3 Kommentare

  2. nico
    schrieb am 15.02.2010 um 19:37 Uhr

    heyho,

    wollte eigntlich deinem rat folgen, aber ich bekomme beim starten einen “Speicherzugriffsfehler” und unter googlen kann ich leider nichts finden… hast du einen plan?

  3. kostaki
    schrieb am 15.02.2010 um 19:41 Uhr

    Hi,

    an welcher Stelle genau und kannst du mal den genauen Fehler posten?

  4. Marcus
    schrieb am 26.06.2011 um 12:20 Uhr

    Ich habe folgendes Problem:

    The following packages have unmet dependencies:
    libc-bin: Breaks: libc6 ( 2.13) but 2.7-18lenny7 is to be installed
    sbnc: Depends: libc-ares2 (>= 1.7.0) but it is not going to be installed
    Depends: libltdl7 (>= 2.4) but it is not going to be installed
    Depends: libssl1.0.0 (>= 1.0.0) but it is not going to be installed
    Recommends: sbnc-tcl but it is not going to be installed
    Recommends: oidentd but it is not going to be installed
    E: Unmet dependencies. Try ‘apt-get -f install’ with no packages (or specify a solution).

Kommentar schreiben

*

*