Module installieren/benutzen Patchen Sicherheit Userfile-Sharing

 

Module installieren/benutzen:

Mit ".loadmod <modulname>" kann man Module laden, mit ".unloadmod <modulname>" entladen. Mit ".module" kann man sich alle Module des Bots anzeigen, auf dessen Partyline man ist, die Module anderer Bots mit ".modules <botname>".

Zuerst muss man die Dateien des Eggdrops in das src/mod/ Installationsverzeichnis des Eggdrops kopieren (z.B. ~/eggdrop1.4.3). Danach entpackt man die Dateien mit "tar xvzf <tar.gz filename>".

Als nächstes muss der Bot neu kompiliert werden. Das geht mit "./configure;make;make install", wenn man im Installationsverzeichnis des Bots ist. Dabei werden alle Dateien in das Standart Eggdrop Verzeichnis kopiert (~/eggdrop).

Als Letztes wird der bot noch ".rehash"t und man läd mit ".loadmod <modulname>" das Modul.

Einige Module gibt es auf der Scripts Seite.

 

Patchen:

Zuerst läd man den patch auf die shell (z.B. mit lynx, wget oder ftp) und kopiert ihn in das eggdrop source code verzeichnis.

Danach entpackt man ihn falls er gepackt ist:

gunzip <patch-file>

tar -xvf <patch-file>

Und fügt den Patch in den Source Code ein:

patch -p1 <patch-file>

Wenn nach der zu patchenden datei gefragt wird gibt man "eggdrop" ein.

Wenn man den bot mit "make" kompiliert hat einfach "make" zum neukompilieren eingeben und danach mit "make install" die Dateien aktualisieren.

 

Sicherheit:

Eggdrop hat verwundbare Stellen, die ausgenutzt werden können wenn der Bot nicht richtig gesichert wird.

Hier gibt es einige Tips dazu.

 

Deaktiviere learn-users:

Benutzern zu erlauben sich selbst in den Bot einzutragen mag bequem sein aber es ist sehr unsicher (besonders wenn der User Partyline Zugang bekommt). Außerdem ist es möglich dass jemand den Bot flooded und danach 1000 neue User eingetragen sind. Wenn man diese Möglichkeit wirklich braucht sollte man den Befehl zu etwas anderem als dem normalen "hello" ändern.

Wähle Owner vorsichtig:

Sei sehr vorsichtig, wenn du global owner (+n Flag) an andere Leute vergibst. Nur Leute die man schon lange kennt sollten global owner bekommen. Ein owner kann fast alles machen, besonders der .tcl Befehl ist gefährlich da darüber auch Befehle auf der Shell ausgeführt werden können.

Passwort Sicherheit:

Wähle kein einfach zu eratendes Password. Es sollte eine Kombination aus mehreren Wörtern sein, zufällig gewählte Buchstaben und Zahlen enthalten. Außerdem muss man aufpassen, dass man nicht aus versehen das / bei /msg <bot> op <pass> vergisst da sonst das schönste Password nichts nutzt. ;)

Ändere oder schalte die ident und addhost Befehle ab:

Es ist gut andere Wörtet als "ident" und "addhost" für diese Befehle zu benutzen. Dadurch wird es schwerer für jemanden der irgendwie an ein Password gekommen ist den Bot zu mißbrauchen. Noch sicherer ist es diese Befehle komplett abzuschalten, das kann aber sehr störend sein.

Benutze genaue Hostmasks:

Wenn die Hostmask z.B. cool@dial54.ppp.aol.com ist, wird Eggdrop die Maske *!cool@*.ppp.aol.com eintragen. Wenn man ein Master oder Owner ist ist es wichtig die Hostmask so genau wie möglich einzutragen (z.B. nick!cool@dial*.ppp.aol.com) da dadurch der Zugriff weiter eingeschränkt werden kann.

Aktiviere protect-telnet:

Normal kann jeder zu dem bot telnetten und versuchen ein Password zu erraten. Wenn protect-telnet aktiviert ist dürfen sich nur Hostmasks, die im Bot eingetragen sind per Telnet einloggen. Das Format ist telnet!*@hostname.com.

Der erste User (der owner), der sich in den Bot einträgt bekommt die Hostmask telnet!*@*, diese Hostmask sollte man entfernen da protect-telnet sonst nichts bringt.

Deaktiviere den .tcl, .set und .binds Befehl:

Durch den .tcl und .set Befehl kann jeder global owner durch den Bot auf die Shell zugreifen. Das ist offensichtlich eine riskante Sache, deswegem sollte man diese Befehle im Configfile deaktiviten. Der .binds Befehl wird ebenfalls manchmal mißbraucht und sollte deaktiviert werden wenn er nicht gebraucht wird.

Deaktivier den .chanset Befehl:

Eine möglichkeit jeden Befehl auf einem Eggdrop der älter als 1.3.25 ist auszuführen ist der .chanset Befehl. Deswegen sollte man ihn entweder deativieren oder einen neueren Bot installieren.

Aktiviere must-be-owner:

Diese Option gibt es in Eggdrop 1.3.24 und neueren Versionen. Sie erlaubt nur permanenten Owneren, die in der owner Variable eingetragen sind den .tcl und .set Befehl zu benutzen.

Benutze private-user, private-globals und private-owner:

Wenn man einen Bot hat, der das Userfile mit anderen Bots teilt sollten man die private-user Option aktivieren. Dadurch kann das Botnet viel sicherer werden, aber alle Änderungen (user adden, hosts adden, passwörter ändern) müssen über den Hub Bot erledigt werden. Diese Option gibt es erst seit Eggdrop 1.3.27. Mit den private-globals und private-owner Optionen kann man noch verhindern dass ein Bot bestimmte Flags von anderen Bots annimmt.

Behalte den Bot im Auge:

Wärend man online ist sollte man in der Partyline des Bots sein und das Geschehen beobachten.

Benutze einen guten Schutz vor floods:

Manche Leute denke, dass Eggdrop gegen alles geschützt ist aber das stimmt natürlich nicht. Wenn man die Flood Optionen zu großzügig einstellt ist er gegen ctcp Floods sehr verwundbar. Frühere Versionen hatten Probleme mit falschen Usernamen und wenn man kick-fun oder kick-bogus aktiviert kann es zu großen Problemen führen. Eggdrop 1.3.26 und neuere Versionen haben die ctcp-mode Option über die man einstellen kann auf welche ctcp Anfragen der Bot antworten soll, die global-flood-ctcp Option sollte auch geprüft werden.

Für einen besseren Flood-Schutz sollte man ein anti Flood und ein chanlimi tcl installieren.

Denial of Service Angriffe:

Denial of Service Angriffe sind direkt gegen den Shell Server gerichtet auf dem der Bot läuft. Diese Attacken verlangsamen meistens die Internet Verbindung des Servers, so dass der Bot nicht mehr im IRC bleibt. Leider kann man gegen solche Angriffe wenig unternehmen, da es ganz von dem Server abhängt ob er den Angriff aushällt. Eine der wenigen Möglichkeiten sind Firewalls aber die helfen auch nicht gegen sehr schwere Floods, deswegen haben große Channels Bots von vielen verschiedenen Servern.

Shell Sicherheit:

Da regelmäßig Fehler in Programmen für Unix gefunden werden, gibt es immer ein Risiko, dass ein Server gehackt wird. Wenn das passiert kann der Angreifer owner auf einem Bot dieses Servers bekommen und so Channels besetzen.

Leider gibt es auch hier nicht viel was man unternehmen kann, man kann sich aber einen Shell Provider suchen der es mit der Sicherheit seiner Shell Server genau nimmt und so das Risiko verringern.

Private Server sind oft sicherer da sie unbekannter sind und weniger weniger Leute Accounts auf ihnen haben.

 

Userfile-Sharing:

Als Beispiel haben wir die 3 Bots Superleaf, Megaleaf und Hub.

Alle werden gegenseitig mit ".+bot botname ip/host:port" geaddet (Superleaf und Megaleaf müssen nicht gegenseitig geaddet werden).

Auf Superleaf und Megaleaf: ".botattr Hub +ghp" ( h= hub (autolink) p = passive (Userfile annehmen) g = alle Channels sharen).

Auf Hub: ".botattr Superleaf +gs" (g = alle Channels sharen u. s = aggressive sharen (Userfiles schicken) und natürlich:

".botattr Megaleaf +gs" . Jetzt sharen die Bots die globalen Flags der User.

Jetzt werden die globalen Flags geshared und alle Channel Flags, der Channels, die im Config File mit "channel set #chan +shared" und unter Umständen noch mit ".chanset #chan +shared" so eingestellt wurden geteilt.

Wenn die Bots aber nicht alle Channel sharen sollen setzt man sie einfach nicht +g, sondern mit ".botattr <Bot> |+s <#channel>" einzeln auf sharen. So werden die Channel Flags, Bans usw. geshared, aber die andere Channel Flags bleiben nach dem Sharen erhalten (bei +g werden alle Flags der Channel in denen der Hub nicht ist überschrieben = gelöscht).

Ab Eggdrop 1.3.24 muss man die Channels nichtmehr im Config File +shared setzen, es reicht wenn man sie per ".chanset #chan +shared" so einstellt (natürlich muss man das auf auf allen Bots so machen, die die Channel Flags sharen sollen).