Cisco IOS – Security

A Cisco IOS alapzozás és Routing után folytatódjon Szakály Attila ismertetője. A mostani téma a security-val kapcsolatban fog folytatódni.

Jelszavas védelem

Mint mindenhol a biztonság itt is fontos, ezért lehetőség van jelszavas védelemmel ellátni a routerünket, switchünket. A routerhez/switchez többféle módon kapcsolódhatunk pl rákapcsolódhatunk a Konzolra, mondjuk egy windows-os hyperterminal ablakkal vagy egy erre alkalmas programmal, mint mondjuk a SecureCRT, vagy kapcsolódhatunk egy már felkonfigurált eszközhöz IP-s kapcsolattal, pl telnettel vagy akár SSH-val is. Ezeket a kapcsolatokat nyilván jelszavas védelemmel kell, hogy ellássuk. Ha már bent vagyunk a routerben/switchben, még pluszba van egy lehetőségünk jelszót megadni mielőtt a „#” jelű konfig módba beléphetnénk, tehát gyakorlatilag addíg semmit nem tudunk állítani, míg ezt a jelszót meg nem adtuk.

Jelszavas védelmet rengeteg féleképpen be lehet állítani, sajnos routereken és switcheken különböző a metódus, de ami biztos, hogy beállíthatjuk pancser módon és beéllíthatjuk egész ügyesen. A pancser mód alatt annyit értek majd fogjuk látni később, hogy a jelszavakat a router el tudja térolni clear-text módban, ami azért annyira nem egészséges (egy egyszerű sh run parancs és az eszköz kiírja az összes jelszavunkat)

Lássuk először azt amikor már hozzákapcsolódtunk a routerhez valamilyen módon, ugye alapesetben a
„Router>” mód jelenik meg, ahol gyakorlatilag semmit nem tudunk csinálni. Nehezítsük egy kicsit a dolgot, hogy annyival hogy jelszóval védjük le az innen való beljebb jutást.

Ez a rész a routereken és switcheken egyarán működik (ugyanazokkal a parancsokkal). A parancs a következőképpen néz ki:

Router(config)#enable password „és ide a jelszó”

Ezzel meg is volnánk. Lépjük ki teljesen a routerből és próbáljunk viszajönni.

És lám a Routerünk jelszót kér. Szuper. Kérjük le most a running configot és lássuk, mit látunk.

AJJAJJJ. Ez bizony nem jó. A jelszavunkat simán clear-textbe tárolta el a Router, ez így nem olyan nyerő. Lássunk egy jobb mnegoldást.

Router(config)#enable secret „és ide a jelszó”

Lépjünk ki – lépjünk be, az eredmény nem meglepően ugyanaz, jelszót kér. Nade nézzünk egy running configot:

Na de mi ez a borzadáj? Hát én nem is ezt gépeltem be. Nem baj nem kell félni, a jelszó az lesz, amit begépeltünk, egyszerűen csak titkosítva lett elmentve és épp ez a lényeg, hiszen ebből már nem találja ki senki mi is a jelszó.

Mint mondtam rengeteg féleképpen be lehet állítani jelszavas védelmet, egyik lehetőség jobb, mint a másik, viszont most hogy látjuk mi a különbség jó és rossz beállítás (biztonságos illetve kevésbé biztonságos beállítás) között én most mutatok egy – egy példát routereken és switcheken. Túl hosszú dokumentum lenne, ha mindenhova írnék egy rossz példát is, így maradjunk egy-egy jó példánál.

Switch Console

Amikor belépünk egy eszköz konzoljára azt tapasztaljuk, hogy egyből megkapjuk gyakorlatilag 1-2 enter ütése után kezdő képernyőként a „Router>” –t vagyis gyakorlatilag betn vagyunk a routerbe mindenféle authentikáció nélkül. Persze ez még csak a semmitnemtudunkcsinálni konfig mód, de mégis beléptünk. Itt azért mégis megmutatnék egy alap konfigurációt, amit alkalmazni lehet ugyanúgy a telnethez csakhogy a legalappvetőbb dolgokkal is képben legyünk.

A folyamat „(config)#” módból indul mégpedíg azzal hogy belépünk a konzol konfigurációs menüjébe. Mivel csak 1 darab konzolunk van ezért szinte mindenhol a nullás számot kell írni azonosítóként a parancs végére. Eztuán megadjuk a passwordöt majd a „login” parancsal úgymond aktiváljuk. Lássuk mit műveltünk, lépjünk ki-lépjünk be és

háthatjuk hogy bizony az eszközünk jelszót kér. Mivel az elején írtam, hogy nem ez a legjobb megoldás (de azért jó tudni, mert ez a legegyszerűbb) valami buktató mégis kell, hogy legyen benne. Nézzük meg most a running configot hiszen ezt a módszert már ismerjük, vajon milyen módon tárolta az eszközünk a beírt jelszót?

Bizony clear-textbe… Lássunk egy ennél sokkal gyakoribb megoldást. A routereknél/switcheknél lehetőség van nemcsak jelszó létrehozására, de akár usernév/jelészó páros létrehozására is, amit az eszközünk egy helyi adatbázisban fog tárolni. Ez nagyon sok mindenre jó, többek közt most a mi céljainknak is tökéletesen megfelel. Nézzük meg, hogy is kell ezt csinálni:

Switch(config)#username „fhnév” secret 0 „jelszó”

Hamár ilyenünk is van, próbáljuk meg ezt most hozzárendelni a konzolhoz.

Ugye belépünk a console konfigurációs részébe és kiadjuk a „login local” parancsot, amivel gyakorlatilag megmondjuk neki, hogy a conzolon való autentikáláshoz használd a saját helyi adatbázisoat. Lássuk mit műveltünk lépjünk ki-lépjünk be:

Valóban a switchünk most már egy username/password párosítást kér. Szuper. Akkora végére lássuk a szokásos tesztünket (sh run)

Itt látjuk, hogy a biztosnság szuper

és magánál a console tulajdonságainál pedíg nem is adtunk meg jelszót, tehát ez így egész jónak tűnik.

Router Console

Ez előbbi hadművelet természetesen működik routerek esetében is, de lássunk most egy másik megközelítést.
Adjunk a routerünknek először is egy „enable” jelszót. Megpróbáljuk beizzítani, hogy a conzolhoz szintén ugyanezt a jelszót használja.

Router (config)#aaa new-model
Router (config)#aaa authentication login „azonosító” enable

Így néz ki a parancsok első része, majd ezt kell hozzáműtenünk a conzolhoz.

A „consolepass” itt ugyanaz az azonosító, amit fentebb megadtunk. Lássuk jó-e amit csináltunk, lépjünk ki-be.

És valóban az enable passwordel sikerült azonosítanom magam. Ha lekérjük a running configot, látni fogjuk sehol nincs clear-text hiszen 1 helyen adtunk meg passwordot, de mivel az „enable secret”-tel adtuk meg a jelszavunk biztonságban van.

Telnet beállítása

Most hogy a konzolunk már ultra biztonságos nézzünk meg egy telnet kapcsolat során történő behatolást. Nézzük meg egyáltalán azt hogyan is tudjuk beüzemelni a telnetet, ugyanis ez alapból nem fog menni. A routerünk most még tényleg ultra biztonságos, hiszen beállítások nélkül sem a telnet sem az SSH nem működik, de azért jó lenne távolról is elérni az eszközünket. A kezdeti beállítás hasonló lesz a konzoléhoz, annyiban különbözik, hogy itt több „csatornán” tudunk majd dolgozni ezért más számot kell írjunk az azonosító helyére nem a nullát. Láthatunk ezért szándékosan is egy kérdőjelet a parancsok között:

Ezzel most azt csináltuk, hogy az összes telnet vonalra beállítottuk a beírt jelszót valamint a login parancsal aktiváltuk. Innentől kezdve ha rátelnetelünk egy adott interfészre az adott jelszóval távolról is beléphetünk az eszközünkbe. Ez routerekbél és switcheknél is működik ámde a jelszavunk ismét csak clear textes!! (azért írom le, mert ez a legegyszerűbb beüzemelési forma).

Használhatjuk a már jól bevált helyi autentikációt a következőképpen:

Próbáljuk is ki egy másik routerről:

Láthatjuk, hogy a névtelen teszt routerünkről jól behatoltunk a „tatabanya” nevű routerbe usernév/jelszó megadása után. Ez a módszer szintén működik routerek és switchek esetében is!

SSH beállítása

Hamár a biztonságról beszélünk, nézzük ezt a koncepciót, hogy a telnet nem biztonságos. Miért ne használnánk SSH-t? Hát hajrá használjuk! Kicsit bajban vagyok a switchekkel ugyanis azok nagy valószínűséggel ezt nem tudják, de a routerek en egész biztosan megy.

Adjunk meg először is usernév/password párosítást. Nagyon fotnos hogy adjunk egy hostnevet a Routerünknek, tehát ne a default legyen! Az „ip domain-name” megadása szintén kötelező! És maga az SSH kulcs generálását a következő parancs végzi

Tatabanya(config)#crypto key generate rsa

Itt kell majd egy válaszolnuk egy kérdésre, a kulcs méretével kapcsolatosan én itt 1024 et adtam meg. Voala van már jókis kulcsunk is. Rendeljük ezt hozzá akkor a lineokhoz a következőképpen:

Ezzel biztosítjuk azt, hogy csak és kizárólag SSH-val működjön a csatlakozás. Ezzel meg is volnánk, próbáljuk ki a dolgot egy másik routerről.

Működik!

Routerek feltörése

Ez gyakorlatilag nem olyan lényeges dolog, de mindenképp érdekes. Valószínűleg soha az életben nem fog kelleni ezt használni (most magam ellen beszélek, mert nekem mégis kellett egyszer, de általában azért nem ez a jellemző).

Kezdjük azzal, hogy a routerünk borzasztóan le van védve, nem tudunk behatolni sem távolról, sem konzolon. A műveletet csak heylből lehet végrehajtani, ugyanis látnunk kell a konzolt. Az elmélete az, hogy a router többféle módban tud elindulni, és van egy olyan mód, ahol természetesen megtartva minden konfigurációs fájlt elindul, ám mégsem tölti be a startup konfigot. Az hogy miért lesz ez jó, később meglátjuk. Tépjük ki az áramból a routert majd dugjuk be ujra. A bootolás során, Amikor azt látjuk, hogy self decompressing image és a kis „#” jelek jönnek sorba, még az elején nyomjuk le a Ctrl+Shift+Break billenytűket. Aki bővebbet akar erről a fejezetről tudni, rengeteg információt fog találni, mi most elégedjünk meg annyival, hogy a routerünk egy úgynevezett rom monitor módban indul el ahol sokmindent lehet csinálni, érdekesség képpen nyomtam egy kérdőjelet, hogy lássuk, teljesen más parancsok vannak itt mintha „normál” módban indítanánk az eszközünket:

Amit most mi fogunk felhasználni, az arra épül, hogy a router rom monitor módjában is tudjuk állítgatni a config register értékét. Ez az a config register az, amit különböző értékekre állítva a router különböző módban indul el. Nekünk most semmi mást nem kell tudni csak azt, hogy a config register alapértéke 0x2102 illetve azt hogy, az a mód amire most nekünk szükségünk van a 0x2142. Sokféle értéket lehet itt beállítani, ám itt szeretném kiemelni hogy a config regiszter rossz értékre állítása TELJESEN lenullázhatja a routert! A teljes alatt azt értem, hogy a másfélmilliós routerünket dobhatjuk a kukába ami azért elég érzékeny csapás lehet. :) Amatőr adminisztrátorokként legjobb ha ezt sosem állítgatjuk, de gyakorlatilag erre nincs is szükség.

A szentbeszéd ellenére mi most tegyük meg ezt mégis a „confreg 0x2142” paranccsal:

Miután ezt megtettük a „reset” parancsal ujraindíthatjuk a routerünet. Láthatjuk, hogy bejön az automata konfiguráció és hakiválasztjuk hogy nem szeretnénk élni a varázsló lehetőségeivel megkapjuk a promtot

Router>

Na akkor most mi van? Ezeket a tüneteket egy abszolút nem felkonfigurált routeren láthatjuk, automata varázsló, se hostnév se jelszó, se semmi, nyugodtan lépjünk beljebb „enable”-val, ráadásul ha nyomunk egy sh run-t akkor egy totál pucér konfigurációt kapunk. Jujj reméljük nem bombáztuk le a routert, hiszen mi csak a jelszót szerettük volna kiütni, és a konfigurációt megtartani, ehez képest most meg nincs semmi. Ez így azért nem teljesen igaz, hiszen ez csak pillanatnyi állapot. A router egyszerűen ebben a módban figyelmen kívül hagyott mindenféle konfigurációs file-t és ő nagyszerűen betöltött egy nagy semmit. A trükköt akkor látjuk meg, amikor megnézzük a startup configot:

Itt meg minden megvan. Láthajtuk hogy van a routerünknek neve, jelszava, sőt ne lepődjünk meg, ha az összes konfiguráció ott lesz. Na, szuper. Akkor még nincs veszve minden, lássuk, mit tudunk itt tenni. Módosítani kéne a konfigurációt, mivel mi csak a running configban buherálhatunk, ezért egy kis logikával kitaláljuk mi a következő lépés:

Másoljuk át a startup configot a running configra. Inenntől kezdve a dolog gyerekjáték egyszerűen „no”-val kitöröljük azokat a részeket, ahol jelszavakat látunk (az enable résznél, a telnetnél, a consolnál és ennyi elég is). Írjuk vissza a config regiszter értékét az eredetire!!!!!!

Majd mentsük el a változásokat a „copy run start” parancsal és indítsuk ujra a routerünket.

Mielőtt ezt megtesszük, azért győződjünk meg mégegyszer arról a config register beállításról nehogy aztán meglepődjünk. Ezt tényleg nem jó elrontani. A parancs a „sh version” de a „sh ver” is elég.

Láthatjuk, hogy jelenleg 0x2142 de a legközelebbi indulásnál 0x2102 lesz. Íme az eredmény a hostname ott van (és minden más is) ám jelszót nem kért:

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük