Din categoria “utile-n practica” azi voi publica un laborator diferit fata de ceea ce am facut pana acum, fiind realizat in Packet Tracer. Acest program, spre deosebire de GNS3 care este un emulator si lucreaza cu imagini reale de IOS, este un simulator realizat de cei de la Cisco spre a oferi un suport pentru activitatile practice, celor care urmaresc obtinerea certificarii CCNA.
Desi odata ce prinzi “gustul” GNS-ului, Packet Tracerul parca nu mai este la fel de atractiv, GNS-ul are si el bubele sale. Cel mai mare dezavantaj al GNS-ului ar fi lipsa suportului pentru partea de switching, existand doar un workaround prin folosirea unui modul NM-16ESW pe imaginile de 3640, dar reprezinta o solutie cu foarte multe lipsuri. In schimb, Packet Tracer-ul desi are si el limitarile sale, prezinta suport pentru partea de switching si nu numai, iar fiind un simulator timpii de raspuns sunt mult mai mici decat in GNS3.
Ceea ce ma intereseaza pe mine pentru laboratorul de azi si imi este oferit de Packet Tracer deoarece nu se poate realiza in GNS3, este observarea procesului de boot si manipularea registrilor pentru a indeplini diferite obiective cum ar fi realizarea procesului de recuperare/modificare a parolei sau aducerea unui echipament la setarile din fabrica.
Aceste activitati sunt foarte des intalnite in practica, iar pentru o buna intelegere a lor trebuie intai sa analizam secventa de boot a unui echipament Cisco.
Secventa de boot presupune aducerea unui echipament dintr-o stare nefunctionala intr-o stare operationala, in care este capabil de a primi si executa comenzi elementare. Cand conectam un echipament Cisco (scos din cutie) la o sursa de curent si il pornim de la buton in cazul routerelor, are loc procesul de boot care este impartit in mai multe etape.
In prima faza echipamentul realizeaza POST-ul (Power on Self Test). POST-ul reprezinta o serie de teste hardware in care echipamentul verifica daca toate componentele sunt prezente si operationale. POST-ul este stocat si rulat din memoria ROM (read-only memory).
Daca totul este ok dupa terminarea POST-ului, tot din memoria ROM este lansat bootstrap-ul. Acesta este un program folosit pentru a executa alte programe. Rolul bootstrap-ului este de a localiza si incarca o imagine valida de IOS. In mod implicit imaginile de IOS sunt stocate in memoria flash care reprezinta o memorie permanenta pe care prin analogie o putem vedea ca pe un HDD de pe un PC.
Daca bootstrap-ul a identificat si incarcat o imagine de IOS, in continuare se va interoga memoria NVRAM (non-volatile random access memory) pentru a identifica si incarca un fisier numit startup-config. In startup-config sunt stocate toate setarile echipamentului, configuratiile interfetelor, etc.. Daca fisierul startup-config nu este prezent, echipamentul va termina secventa de boot setup-mode.
Orice modificare adusa configuratiei echipamentului dupa terminarea secventei de boot este pastrata in fisierul running-config din memoria RAM care este o memorie volatila. Asta inseamna ca daca nu folosim comanda “copy running-config startup-config” pentru a scrie ce este in RAM in NVRAM, vom pierde configuratia la un power-cycle.
Ceea ce am descris mai sus reprezinta o secventa normala de boot. Totusi, exista posibilitatea de a influenta acest proces in sensul in care dupa incarcarea imaginii IOS se evita cautarea fisierului startup-config in NVRAM, iar echipamentul incheie secventa direct in setup-mode. Acest lucru se poate realiza prin modificarea config-register-ului. Config-register-ul reprezinta o valoare care stabileste modul in care un echipament booteaza, optiunile din timpul secventei de boot si viteza consolei.
In laboratorul de azi, voi utiliza valorile 0x2102 si 0x2142 ale config-register-ului.
Prima valoare, 0x2102 reprezinta o secventa de boot normala, iar cea de-a doua, 0x2142 reprezinta o secventa de boot in care citirea memoriei NVRAM este ocolita, iar echipamentul booteaza direct in setup-mode.
Procesul de recuperare sau inlaturare a parolei
Sa presupunem ca tocmai s-a intamplat beleaua, iar un client a reziliat contractul pentru ca nu i-a placut de noi si am recuperat echipamentul din locatia sa. Toate sunt bune si frumoase pana cand ajungem la birou, incercam sa ne conectam cu consola la el si observam ca este securizat cu o parola pe care nu o stim.
In acest moment este necesar sa realizam ceea ce se numeste “password recovery”.
Pentru a face acest lucru trebuie sa stim unde este stocata parola pe care vrem sa o indepartam sau sa o modificam. Cum am spus mai sus, toata configuratia echipamentului este pastrata in fisierul startup-config care este stocat in NVRAM. Adica trebuie sa evitam in secventa de boot citirea memoriei NVRAM.
Vom atinge acest obiectiv prin modificarea config-register-ului din 0x2102 in 0x2142. Aceasta modificarea se face prin intreruperea secventei de boot inainte de a fi lansat bootstrap-ul care sa incarce IOS-ul. In functie de tipul terminalului comanda de intrerupere poate sa varieze. La Putty de exemplu avem posibilitatea de a da click dreapta pe bara de sus iar in tab-ul “special command” vom gasi comanda “break”. In Packet Tracer avem combinatia fantastica CTRL+SHIFT+F6+C. :D
Mai jos avem o poza cu un echipament scos din cutie care si-a incheiat secventa de boot.
Pentru ca nu exista un fisier startup-config, acesta a bootat in setup-mode.
Vom realiza securizarea echipamentului, vom salva modificarile din RAM in NVRAM, iar apoi vom da restart.
Observam in continuare ca dupa terminarea secventei de boot, ne este prezentat un prompt in care ni se cere sa introducem un username si o parola pentru a intra pe echipament.
Presupunem ca nu stim care sunt acestea si facem un power-cycle pentru a putea intra in ROMMON.
Dupa ce intram in ROMMON, modificam config-register-ul in 0x2142 si folosim comanda reset pentru a reporni echipamentul.
Observam ca desi fisierul startup-config este prezent in NVRAM, acesta nu a fost citit, iar echipamentul a bootat in setup-mode.
Putem verifica prezenta fisierului startup-config prin folosirea comenzii “show startup-config” in privileged exec mode. De asemenea prin folosirea comenzii “show version” putem vedea config-registerul folosit in secventa de boot.
Odata intrati pe echipament vom dori ca primul lucru pe care-l facem sa fie aducerea configuratiei din startup-config in running-config (ce avem in NVRAM in RAM) folosind comanda "copy startup-config running-config".
Dupa ce facem acest lucru putem continua cu modificarea sau inlaturarea parolei, modificarea config-register-ului in 0x2102 si copierea running-config-ului in startup-config.
Dupa ce facem aceste lucruri folosim comanda "reload" pentru a restarta echipamentul si a verifica ce am facut.
Vom observa ca pentru a ne conecta pe echipament este necesara parola setata de noi.
Intelegand cum functioneaza procesul de boot, putem de asemenea sa aducem foarte repede un echipament la setarile din fabrica. Pana la un anumit punct procedura seamana cu cea de recuperare a parolei, adica este necesar sa bootam in ROMMON si sa modificam registrul in 0x2142 pentru a intra in setup-mode. Odata intrati pe chipament vom folosi comanda “copy running-config startup-config” , iar acest lucru va duce la stergerea oricarei configuratii existente in startup-config. Dupa aceasta modificam registrul in 0x2102 si ne verificam folosind comanda “show version” ca acesta va fi config-register-ul folosit la urmatoarea secventa de boot.
In cazul routerelor care au si modul cu interfete L2, va recomand vizualizarea si stergerea eventualelor VLAN-uri existente pe echipament.
Sper ca ati gasit util acest laborator. Pentru eventuale observatii sau intrebari va rog sa folositi sectiunea de comentarii.
Spor! :)
Niciun comentariu :
Trimiteți un comentariu