Používáme IRC bota VII. – Ochrana a bezpečnost

Eggdrop má mnoho potenciálních slabin, které mohou být zneužity,
pokud bota řádně nezabezpečíte. Uveďme si tipy, jak bota zabezpečit.
Vypněte learn-users
Dovolit uživatelům, aby se sami přidali na bota sice pohodlné, ale pokud to dovolíte každému,
není to příliš bezpečné (zvláště, pokud tím získá automaticky přístup do partyline).
Také vám může někdo bota zaplavit nesmylsnými požadavky a přidat třeba 1000
nových uživatelů. Měli byste tedy vypnout learn-users a přidávat uživatele pomocí
příkazů .adduser a .+user. Pokud i přesto chcete, aby se uživatelé mohli sami přidávat,
změnte příkaz na přidávání ze standardního „hello“ na něco jiného.

Pečlivě vybírejte ownery (lidi s +n)
Buďte velmi opatrní při výberu lidí, kterým dáte globální +n na vašeho bota.
Dávejte tento atribut pouze lidem, které znáte a kterým věříte, protože takto
‚obdařený‘ uživatel může dělat s botem prakticky cokoliv, včetně různých útoků,
což může mít za následek i zrušení vašeho shellu.

Nepoužívejte auto-op
Pokud váš bot není malém nebo na privátním kanále, na který nechodí moc neznámých lidí.
Použití auto-opu velmi zvyšuje riziko takeoveru (převzetí kanálu někým jiným).
To proto, že k tomu, aby vás bot opnul, potřebujete pouze mít stejnou hostmasku
(identifikaci a IP). To může být velmi snadno zfalšováno. Nejlepší je umožnit
opnutí lidem až po zaslání hesla na bota, typicky přes /msg bot op heslo.
Bezpečnější, avšak méně pohodlné je zalogovat se na dcc s botem a
opnout se pomocí příkazu .op. Rovněž je dobré se v rámci možností přesvědčit,
že ten, komu posíláte své heslo je opravdu bot. Např. přes /whois bot a ověřit,
že ip a identifikace je stejná jako vždy. Bot může být offline či ve splitu
a je velmi snadné se za něho potom vydávat.

Bezpečnost hesel
Nepoužívejte snadno uhádnutelná hesla.
Používejte náhodnou kombinaci čísel a znaků, slov a čísel apod.
Pokud posíláte své heslo botovi, použijte pro tuto akci buď přímo
dvojklik na nick nebo pište /msg bot op heslo v okně konzole, tj. mimo
všechna kanálová okna. Předejdete tím vyzrazení vašeho hesla,
pokud se uklepnete (např. vynecháte úvodní lomítko…).

Přebindujte nebo vypněte příkazy ident a addhost
Je lepší, pokud používáte pro přidání vaší nové IP příkazy ident a addhost, tyto přebindnout na nějaké jiné.
Například do konfigu přidat:

unbind msg – ident *msg:ident
bind msg – nazdar *msg:ident

a pak místo /msg ident používat /msg nazdar 🙂

Používejte striktnější hostmasky
Pokud vaše hostmaska je kupříkladu tester@k174.mistral.cz,
eggdrop vám přiřadí hostmask tvaru *!tester@*.mistral.cz.
Nyní stačí, abyste byli v doméně mistral.cz a zmenili si identifikaci na „tester“.
Je tedy lepší změnit hostmask na přímo vaši IP, tj. *!tester@b999.mistral.cz.

Zapněte protect-telnet
Standardně se může každý napojit telnetem na vašeho bota
a zkusit uhodnout nějaké heslo. Použítí protect-telnet vám dovolí
omezit použítí telnetu jen na některé uživatele. Aby se uživatel mohl
přihlásit přes telnet, i když je protect-telnet zapnuté, musíte mu přídat
speciální hostmasku ve formátu telnet!*@vas.oblibeny.isp.cz.
Od verze 1.6.0 je toto formátu -telnet!*@vas.oblibeny.isp.cz.
Je to kvůli bezpečnosti, protože žádná přezdívka na irc nemůže začínat znakem „-„.

Vypněte příkazy .tcl a .set
Pokud máte tyto příkazy povolené, potom může každý s globalním atributem +n
přistupovat k vašemu shellu, což není zrovna dobrá věc. Proto je lepší tyto
příkazy vypnout, nebo je výrazně omezit (např. nastavením „set must-be-owner 1“ v konfigu).
Rovněž vypněte příkaz .binds, pokud jej nepoužíváte.

Vypněte příkaz .chanset
Chyba v eggdropech před verzí 1.3.25 dovoluje zneužití příkazu .chanset
k vykonání skoro jakékoliv funkce. Proto tento příkaz buď vypněte nebo
přejděte na novejší verzi eggdropa a nastavte „must-be-owner“ na 1.

Zapněte must-be-owner
Tato možnost existuje pouze v eggdropech verze 1.3.24 a pozdějších.
Dovolí pouze permanentním vlastníkům (nastaveni jako „owners“ v konfigu)
používání .tcl a .set příkazů. Ve verzi 1.3.25 a pozdějších zlepšuje bezpečnost
příkazu .chanset a ve verzích po 1.3.26 můžete nastavit tuto hodnotu na 2,
čímž umožníte použití příkazu .dump pouze permanentním vlastníkům.

Používejte private-user
Pokud máte botnet a sdílíte uživatele, zvažte zapnutí private-user.
Toto může zvýšit bezpečnost, ale všechy změny v záznamech uživatelů
budete muset dělat přes hub bota. K plnému využití je třeba verze po 1.3.27 (včetně).

Používejte „flood“ ochranu
Mnoho lidí si myslí, že bude jejich bot neprůstřelný.
Ve skutečnosti je se standardním nastavením docela zranitelný
bežnými typy floodu (posílání mnoha požadavků na cokoliv).
Zranitelnost vůči CTCP floodům a speciálním přezdívkám jsou
opraveny v novějších 1.3 verzích, ale musíte použít správné nastavení.
1.3.21 a pozdější mají volbu kick-bogus, která by měla být nastavena na 0,
abyste předešli hromadnému vykopávání (kick flood) při „zvláštních“ přezdívkách.
1.3.24 a pozdější mají volbu kick-fun, která by měla být nastavena na 0. 1.3.26
a pozdější verze mají volbu ctcp-mode, která by měla být nastavena na 2 současně
s global-flood-ctcp nastaveným na 5:30.
Pro lepší ochranu před floodem byste měli zvážit použití ochranných skriptu,
jako například „sentinel.tcl“ v kombinaci s automatickým nastavováním limitu na kanále (chanlimit.tcl).

Sledujte dění
Pokud jste online, připojte se přes DCC na partyline. Zapněte si mody m, k, b, s, c, o, x.
(.console +mkcobxs), abyste viděli vše, co se s vaším botem děje.

Tímto bych zakončil seriál o používání Eggdropa a věřím, že vám posloužil jako návod a vodítko
při práci s botem. Chtěl bych poděkovat všem, kteří mi pomáhali s překladem a korekturami, zvláště pak
ufounovi, který zpracoval poslední díly tohoto seriálu.