Függőségek
Néhány elterjedt szoftvernek telepítve kell lennie, hogy a Tikpásztor működőképes legyen, a legfontosabb ezek közül az "expect" nevű, Tcl alapú, interaktív szkriptelést támogató csomag, ami nem része az alapértelmezett telepítésnek a legtöbb Linuxon. Szükség van továbbá olyan standard eszközökre mint a "bash", az "ssh" és az "sftp".Csoportok
Az első, amit tudnunk kell a Tikpásztorról, hogy csoportokban kezeli az eszközeinket. Azt, hogy mi szerint szervezzük a csoportokat, a szkript szempontjából nem fontos. Ha nincsenek különböző jellegű feladatokat ellátó eszközeink, akkor elegendő egyetlen csoportot létrehoznunk, de készíthetünk csoportot az eszközök fizikai elhelyezkedése alapján (pl. egy csoportba kerülnek az azonos telephelyen lévő Mikrotikek) vagy az eszközök funkciója alapján (pl. egy csoportba kerülnek az AP-ként funkcionáló eszközök, egy másikba pedig a routeolást végző eszközök). A csoport egy szöveges, pontosvesszővel tagolt fájl, ami nem tartalmazhat üres sorokat és kommentárokat, csupán IP-t, usernevet és jelszót minden egyes sorban:192.168.0.1;admin;bejohetsz
192.168.0.2;admin;password
192.168.0.3;admin;admin
A csoport neve az lesz, amilyen néven elmentjük a fájlt, azzal az apró megkötéssel, hogy tartalmaznia kell a "csoport" prefixet, tehát "csoport.AP", "csoport.szamvitel", stb.
Felhasználónevek
Előre különösnek tűnik, de a felhasználónevekhez lehet hozzácsapni a RouterOS SSH login alkalmával, hogy miképp kezelje a konzolt a RouterOS, legyenek-e színek, hány sor, hány oszlop, detektáljon-e és társaik. Ha tudjuk a tikokról, hogy nem túl régiek, 4-es, 5-ös RouterOS-t futtatnak, akkor bátran véssük be a felhasználónév mögé, a "+ct" karaktersort a csoportfájlban, pl:192.168.0.1;admin+ct;bejohetsz
A felhasználónév ettől még ugyanaz marad, csupán a login során átpasszolunk két olyan paramétert a RouterOS-nek, amelyek segítik az expect szkriptek és a RouterOS közötti együttműködést. Ez a funkció a 3-as RouterOS szériában mutatkozott be, 2-es verziókon viszont semmiképp ne használjuk, mert ott a felhasználónév részeként fogja kezelni a RouterOS a plusz karaktereket.
Használat
A csoportfájlok feltöltése után a Tikpásztor azonnal használható. A "tikpasztor.sh" legyen ugyanabban a könyvtárban, ahol a csoportfájlok, a /tmp könyvtáron pedig legyen írási jogunk, és már mehet is. A szkriptnek két működési módja van, az egyikben az első paraméterként megadott csoport minden egyes eszközén a második paraméterben megadott RouterOS parancsot fogja lefuttatni:root@tesztgep:~/mikrotik# ./tikpasztor.sh teszt "/system license print"
* "teszt" csoport (3 eszköz)
* "/system license print" RouterOS parancs
Folytatod (i/n)? i
###### 192.168.0.1 START #########################################################
spawn ssh -l admin 192.168.0.1
admin@192.168.0.1's password:
MMM MMM KKK TTTTTTTTTTT KKK
MMMM MMMM KKK TTTTTTTTTTT KKK
MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK
MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK
MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK
MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK
MikroTik RouterOS 2.9.50 (c) 1999-2007 http://www.mikrotik.com/
Terminal xterm detected, using multiline input mode
[admin@MikroTik1] > /system license print
software-id: "K8FN-PTT"
upgradable-to: v4.x
nlevel: 4
features:
[admin@MikroTik1] > /quit
Connection to 192.168.0.1 closed.
########################################################## 192.168.0.1 STOP ######
Nyomj meg egy gombot a folytatáshoz...
###### 192.168.0.2 START #########################################################
spawn ssh -l admin+ct 192.168.0.2
admin@192.168.0.2's password:
MMM MMM KKK TTTTTTTTTTT KKK
MMMM MMMM KKK TTTTTTTTTTT KKK
MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK
MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK
MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK
MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK
MikroTik RouterOS 5.25 (c) 1999-2013 http://www.mikrotik.com/
[admin@MikroTik2] > /system license print
software-id: H0N3-48VJ
upgradable-to: v7.x
nlevel: 4
features:
[admin@MikroTik2] > /quit
interrupted
Connection to 192.168.0.2 closed.
########################################################## 192.168.0.2 STOP ######
Nyomj meg egy gombot a folytatáshoz...
###### 192.168.0.3 START #########################################################
spawn ssh -l admin+ct 192.168.0.3
admin+ct@192.168.0.3's password:
MMM MMM KKK TTTTTTTTTTT KKK
MMMM MMMM KKK TTTTTTTTTTT KKK
MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK
MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK
MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK
MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK
MikroTik RouterOS 5.25 (c) 1999-2013 http://www.mikrotik.com/
[admin@MikroTik3] > /system license print
software-id: RGED-3LWV
upgradable-to: v6.x
nlevel: 4
features:
[admin@MikroTik3] > /quit
interrupted
Connection to 192.168.0.3 closed.
########################################################## 192.168.0.3 STOP ######
Nyomj meg egy gombot a folytatáshoz...
root@tesztgep:~/mikrotik#
Mielőtt egyszerre levágnánk az összes MikroTik eszközünket, javasolt átolvasni, hogy melyik csoportra, milyen parancsot futtatunk, ezt annyiban segíti a szkript, hogy futás előtt rákérdez, hogy valóban folytatni szeretnénk-e. Pozitív válasz esetén a csoportban lévő minden egyes eszközre, egymás után, for ciklusban ráereszti azt az expect szkriptet, ami bejelentkezik SSH-n, majd lefuttatja a megadott parancsot.
A másik működési mód mentést készít az eszközről. A mentés három dolog mentését jelenti, a RouterOS szoftverlicenc-klucsát, egy "/export" paranccsal készített szöveges konfigurációs fájlt, illetve egy "/system backup save" paranccsal készített bináris konfig mentést. Ez utóbbit csak azon az eszközön lehet visszaállítani ahol készült, míg az "/export" kimenete némi mókolást követően más MikroTiken is behúzható. A mentés során a MikroTikek flash memóriáján a három mentett dolognak megfelelő három fájl jön létre, egy ".key" kiterjesztésű fájl a licenckulccsal, egy ".rsc" fájl az exporttal, és egy ".backup" kiterjesztésű bináris fájl. A fájlok lementése SSH/SFTP protokollon keresztül történik, majd a másolás végeztével törlődnek is az eszközről. A mentés menete:
root@tesztgep:~/mikrotik# ./tikpasztor.sh teszt BACKUP ###### 192.168.0.1 START ######################################################### spawn ssh -l admin 192.168.0.1
admin@192.168.0.1's password: MMM MMM KKK TTTTTTTTTTT KKK MMMM MMMM KKK TTTTTTTTTTT KKK MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK MikroTik RouterOS 2.9.50 (c) 1999-2007 http://www.mikrotik.com/ Terminal xterm detected, using multiline input mode [admin@MikroTik1] > /system license output [admin@MikroTik1] > /system backup save name=2013-05-13 Saving system configuration Configuration backup saved [admin@MikroTik1] > /export file=2013-05-13 [admin@MikroTik1] > /quit Connection to 192.168.0.1 closed. FÁJLOK MENTÉSE: spawn sftp admin@192.168.0.1 admin@192.168.0.1's password: Connected to 192.168.0.1. sftp> get ????-???*.key 2013-05-13_192.168.0.1.key Fetching /K8FN-PTT.key to 2013-05-13_192.168.0.1.key /K8FN-PTT.key 100% 203 0.2KB/s 00:00 sftp> get 2013-05-13.backup 2013-05-13_192.168.0.1.backup Fetching /2013-05-13.backup to 2013-05-13_192.168.0.1.backup /2013-05-13.backup 100% 10KB 10.5KB/s 00:00 sftp> get 2013-05-13.rsc 2013-05-13_192.168.0.1.rsc Fetching /2013-05-13.rsc to 2013-05-13_192.168.0.1.rsc /2013-05-13.rsc 100% 13KB 12.8KB/s 00:00 sftp> rm ????-???*.key Removing /K8FN-PTT.key sftp> rm 2013-05-13.backup Removing /2013-05-13.backup sftp> rm 2013-05-13.rsc Removing /2013-05-13.rsc sftp> exit ########################################################## 192.168.0.1 STOP ######
A mentés során az eszközökről lementett fájlok abba a könyvtárba kerülnek, ahol a "tikpasztor.sh" található. Backup módban a szkript folyamatosan fut, amint végzett egy eszközön, azonnal kezdi a következőt a csoportból, nem igényel interakciót.
Csak egy észrevétel: a jelen megoldás szerint a futás időtartama alatt (illetve futás megszakítása esetén utána is) mások is olvashatják az expect szkriptek tartalmát, amik tartalmaznak érzékeny adatokat is.
VálaszTörlésEgy fokkal talán biztonságosabb lehet a következő sorrend: touch $file && chmod 700 $file && cat ...
Szerintem így még "létrehozás során, de még chmod előtt" sem olvasható más userek számára a tartalom.
Egyébként nemrég OpenWrt támogatáson dolgoztam a Rex számára, így most elgondolkoztam, hogy vajon alkalmas lenne-e RouterOS menedzselésére is? A Rexen keresztül pl. ki lehetne használni a párhuzamos futtatást.
Ha jól látom, van is letölthető x86 kompatibilis RouterOS verzió, amivel ki lehet próbálni egy virtuális gépben :)
Szia FErki!
VálaszTörlésAz expect szkriptek, amiket a tmp-ben létrehoz a shell szkript csupán átveszik argumentumként a jelszavakat, önmagukban nem tartalmaznak sem usernevet sem jelszót. Ugyanakkor a csoportfájlokban minden benne van ugye clear textként... szóval valóban nem a legnagyobb bajnok biztonsági szempontból a tikpásztor, de azért lehet rá vigyázni :)
Kitartást a REX-re való portoláshoz! Szerintem gyorsan rákapnának a mikrotikes népek, mert én úgy veszem észre, hogy hozzám hasonlóan mások is a saját kis szkriptjeikkel birizgálják a tikokat, nincs igazán kiforrott mass management eszköz.