Czy muszę ustawić klucz tajny na urządzeniu Cisco?

16

Konfiguruję router Cisco 2901. Mam hasło logowania do linii konsoli, a linie vty są skonfigurowane tak, aby akceptować połączenia ssh tylko z uwierzytelnianiem klucza publicznego. Linia pomocnicza jest wyłączona. Jest tylko dwóch administratorów, którzy będą uzyskiwać dostęp do routera i oboje jesteśmy upoważnieni do wykonania dowolnej konfiguracji na routerze.

Nie jestem ekspertem od sprzętu Cisco, ale uważam to za wystarczające, aby zabezpieczyć dostęp do konfiguracji routera. Jednak każdy przewodnik, który przeczytałem, stwierdza, że ​​powinienem ustawić klucz aktywacyjny, niezależnie od innych haseł użytkownika lub hasła.

Czy hasło włączające ma coś jeszcze, o czym nie wiem? Czy istnieje inny sposób uzyskania dostępu do routera niż linie konsoli, pomocnicze lub vty?

EDYCJA: Dodałem faktyczną konfigurację poniżej, aby lepiej wyjaśnić moją sytuację. Poniższe działa, wymagając hasła aktywacji lub usernamekonfiguracji oprócz tej wewnątrz ip ssh pubkey-chain.

aaa new-model

ip ssh time-out 60
ip ssh authentication-retries 2
ip ssh version 2
ip ssh pubkey-chain
 username tech
  key-hash ssh-rsa [HASH]
ip scp server enable

line vty 0 4
 transport input ssh
Marwan
źródło
1
krótka odpowiedź: nie wymagana , ale bardzo wysoce zalecana - ponieważ jest to pierwsza linia obrony dla pełnych szeregów
Ricky Beam
Ale jeśli mam hasła w linii konsoli i vtys, dlaczego miałbym potrzebować innego hasła? Ponadto sekret aktywacyjny będzie musiał zostać udostępniony personelowi administracyjnemu, który prosi o jego zapisanie, wysłanie e-mailem itp. Lepiej, aby każdy administrator miał swoje prywatne hasło / klucz.
Marwan
włącz podnosi prywatność. O ile go nie zmienisz (za pomocą aaa), nadal będzie obowiązywać, gdy będziesz mieć linię poleceń.
Ricky Beam

Odpowiedzi:

24

Nie, nie masz - technicznie. Ale to, czy możesz wejść w tryb włączania bez niego, zależy od sposobu logowania.

Oto natychmiastowa wersja gratyfikacyjna:

Możesz wejść przez konsolę bez hasła aktywacji, ale utkniesz w trybie użytkownika, jeśli użyjesz prostego hasła logowania bez ustawionego hasła aktywacji.

Oto długo rozwijana wersja programu odpowiadającego StackExchange:

Uwierzytelnianie Cisco jest rodzajem bałaganu dla początkującego. Jest tam dużo starszego bagażu. Pozwól mi spróbować to załamać w sensie realnym.

Każdy, kto ma jakąkolwiek firmę logującą się do routera lub przełącznika, przechodzi bezpośrednio do trybu uprzywilejowanego (włączonego). Tryb użytkownika jest w zasadzie lobby frontowym i służy niewiele więcej celowi niż powstrzymanie przeciągu. W dużych organizacjach, w których masz rozległe sieci i równie ogromne zasoby siły roboczej, uzasadnione może być posiadanie osoby, która może zapukać do drzwi i upewnić się, że ktoś nadal tam jest. (To znaczy, aby zalogować się i uruchomić najbardziej trywialne polecenia, aby zobaczyć, czy urządzenie w rzeczywistości reaguje, a nie pali.) Ale w każdym środowisku, w którym kiedykolwiek pracowałem, poziom 1 miał przynajmniej pewną zdolność do łamać rzeczy.

W związku z tym, szczególnie w takim scenariuszu, jak twój, znajomość hasła aktywacji jest obowiązkowa, aby cokolwiek zrobić. Można powiedzieć, że to drugi poziom bezpieczeństwa - jedno hasło do wejścia do urządzenia, drugie do eskalacji do uprawnień administracyjnych - ale wydaje mi się to trochę głupie.

Jak już wspomniano, możesz (i wiele osób używa) tego samego hasła, co nie pomaga, jeśli ktoś uzyskał nieautoryzowany dostęp przez telnet / ssh. Posiadanie statycznych, globalnych haseł wspólnych dla wszystkich jest prawdopodobnie większym problemem niż wprowadzenie tylko jednego tokena. Wreszcie, większość innych systemów (usług, urządzeń itp.) Nie wymaga drugiej warstwy uwierzytelnienia i z tego powodu nie jest uważana za niebezpieczną.

OK, to moja opinia na ten temat. Musisz sam zdecydować, czy ma to sens w świetle własnej postawy bezpieczeństwa. Przejdźmy do interesów.

Cisco (mądrze) wymaga domyślnego ustawienia hasła dostępu zdalnego. Po przejściu do trybu konfiguracji linii ...

router> enable
router# configure terminal
router(config)# line vty 0 15
router(config-line)#

... możesz nakazać routerowi pominięcie uwierzytelnienia:

router(config-line)# no login

... i natychmiast zostanie zhakowany, ale twój atakujący znajdzie się w trybie użytkownika. Więc jeśli masz włączyć zestaw haseł, przynajmniej masz nieco ograniczone obrażenia, które można zrobić. (Technicznie rzecz biorąc, nie można przejść dalej bez hasła aktywacyjnego. Więcej o tym za chwilę ...)

Oczywiście nikt nie zrobiłby tego w prawdziwym życiu. Minimalne wymagania, domyślnie i zgodnie z rozsądkiem, to ustawienie prostego hasła:

router(config-line)# login
router(config-line)# password cisco

Teraz zostaniesz poproszony o podanie hasła i ponownie przejdziesz do trybu użytkownika. Jeśli wchodzisz za pośrednictwem konsoli, możesz po prostu wpisać, enableaby uzyskać dostęp bez konieczności wprowadzania innego hasła. Ale sprawy różnią się za pośrednictwem telnetu, gdzie prawdopodobnie otrzymasz to:

$ telnet 10.1.1.1
Trying 10.1.1.1...
Connected to 10.1.1.1.
Escape character is '^]'.


User Access Verification

Password: *****
router> enable
% No password set
router> 

Przechodząc ... Prawdopodobnie już wiesz, że domyślnie wszystkie skonfigurowane hasła są wyświetlane jako zwykły tekst:

router# show run | inc password
no service password-encryption
 password cisco

Jest to jedna z tych rzeczy, które zaciskają zwieracz świadomych bezpieczeństwa. To, czy jest to uzasadniony lęk, jest znowu czymś, co musisz sam zdecydować. Z jednej strony, jeśli masz wystarczający dostęp, aby zobaczyć konfigurację, prawdopodobnie masz wystarczający dostęp do zmiany konfiguracji. Z drugiej strony, jeśli zdarzy się, że niedbale ujawniła swoją konfigurację do kogoś, kto nie ma środków, sami, a potem ... cóż, teraz nie mają środków.

Na szczęście ten pierwszy wiersz powyższego fragmentu no service password-encryptionjest kluczem do zmiany tego:

router(config)# service password-encryption
router(config)# line vty 0 15
router(config-line)# password cisco

Teraz, gdy spojrzysz na konfigurację, zobaczysz to:

router(config-line)# do show run | begin line vty
line vty 0 4
 password 7 01100F175804
 login
line vty 5 15
 password 7 01100F175804
 login
!
!
end

Jest to nieznacznie lepsze niż hasła w postaci zwykłego tekstu, ponieważ wyświetlany ciąg znaków nie jest wystarczająco zapadający w pamięć, aby przeglądać ramiona. Jednak odszyfrowanie jest trywialne - i używam tego terminu luźno. Możesz dosłownie wkleić ten ciąg powyżej do jednego z kilku programów do łamania haseł JavaScript na pierwszej stronie wyników Google i natychmiast odzyskać oryginalny tekst.

Te tak zwane hasła „7” są powszechnie uważane za „zaciemnione”, a nie „zaszyfrowane”, aby podkreślić fakt, że jest zaledwie niewiele lepsze niż nic.

Jak się jednak okazuje, wszystkie te passwordpolecenia są przestarzałe. (Lub jeśli nie są, powinny być.) Dlatego masz dwie następujące opcje:

router(config)# enable password PlainText
router(config)# enable secret Encrypted
router(config)# do show run | inc enable
enable secret 5 $1$sIwN$Vl980eEefD4mCyH7NLAHcl
enable password PlainText

Tajna wersja jest mieszana z algorytmem jednokierunkowym, co oznacza, że ​​jedynym sposobem na odzyskanie oryginalnego tekstu jest użycie siły brute - to znaczy wypróbowanie każdego możliwego ciągu wejściowego, dopóki nie wygenerujesz znanego skrótu.

Gdy wpiszesz hasło w wierszu polecenia, przejdzie on przez ten sam algorytm skrótu i ​​dlatego powinien wygenerować taki sam skrót, który jest następnie porównywany z tym w pliku konfiguracyjnym. Jeśli są zgodne, twoje hasło jest akceptowane. W ten sposób zwykły tekst nie jest znany routerowi, z wyjątkiem krótkiego momentu tworzenia lub wprowadzania hasła. Uwaga: Zawsze istnieje szansa, że ​​inne dane wejściowe mogą wygenerować ten sam skrót, ale statystycznie jest to bardzo małe prawdopodobieństwo (odczyt: nieistotne).

Jeśli sam użyjesz powyższej konfiguracji, router zezwoli na istnienie linii enable passwordi enable secret, ale sekret wygrywa z monitu o hasło. Jest to jeden z tych systemów Cisco, który nie ma większego sensu, ale taki właśnie jest. Co więcej, nie ma secretrównoważnego polecenia z trybu konfiguracji linii, więc utkniesz tam z zaciemnionymi hasłami.

W porządku, więc mamy teraz hasło, którego nie można odzyskać (łatwo) z pliku konfiguracyjnego - ale wciąż jest jeden problem. Jest przesyłany zwykłym tekstem podczas logowania przez telnet. Nie dobrze. Chcemy SSH.

SSH, zaprojektowany z myślą o bardziej niezawodnych zabezpieczeniach, wymaga trochę dodatkowej pracy - i obrazu IOS z określonym zestawem funkcji. Jedną dużą różnicą jest to, że proste hasło nie jest już wystarczająco dobre. Musisz przejść do uwierzytelnienia użytkownika. A kiedy już to robisz, skonfiguruj parę kluczy szyfrujących:

router(config)# username admin privilege 15 secret EncryptedPassword
router(config)# line vty 0 15
router(config-line)# transport input ssh
router(config-line)# no password
router(config-line)# login local
router(config-line)# exit
router(config)# ip ssh version 2
router(config)# crypto key generate rsa modulus 1024

Teraz gotujesz z gazem! Zauważ, że to polecenie używa secrethaseł. (Tak, możesz, ale nie powinieneś używać password). Ta privilege 15część pozwala całkowicie ominąć tryb użytkownika. Po zalogowaniu przejdziesz bezpośrednio do trybu uprzywilejowanego:

$ ssh [email protected]
Password: *****

router#

W tym scenariuszu nie trzeba używać hasła włączania (ani hasła tajnego).

Jeśli nie masz jeszcze myśleć „Wow ... co za clusterfudge że był” należy pamiętać, że to zupełnie inna rozwlekły po wciąż czai się za pomocą polecenia aaa new-model, gdzie można dostać się do nurkowania do rzeczy, jak zewnętrznych serwerów uwierzytelniających (promień , TACACS +, LDAP itp.), Listy uwierzytelniania (które określają źródła do użycia i w jakiej kolejności), poziomy autoryzacji i rozliczanie aktywności użytkownika.

Zachowaj to wszystko na czas, gdy masz ochotę na chwilę zablokować się na routerze.

Mam nadzieję, że to pomaga!

SirNickity
źródło
1
Witamy! Świetna pierwsza odpowiedź!
Digital Trauma
Dzięki, to bardzo wnikliwa odpowiedź. Znam różne urządzenia do szyfrowania haseł i używam nowego modelu (zredagowałem moje pytanie, aby to odzwierciedlić).
Marwan
Brak tajemnicy aktywacyjnej nie wydaje mi się problemem. Niezależnie od tego, czy przesyłam telnet / ssh z nazwą użytkownika / hasłem, czy kluczem publicznym, mogę po prostu pisać enablei działa. Posiadanie nazwy użytkownika z uprawnieniem 15 nadal wymaga ode mnie włączenia enable. Czy to z powodu nowego modelu?
Marwan
1
Czy próbowałeś zdefiniować listy uwierzytelniające? Użyj „domyślnego lokalnego logowania do uwierzytelnienia aaa” i „domyślnego lokalnego wykonania autoryzacji aaa”. Alternatywnie, w tym drugim przypadku użyj „if -hentified” zamiast „local”.
SirNickity,
Próbowałem zduplikować konfigurację na 2811 z systemem IOS 15.1 (4) M i znalazłem kilka interesujących wyników. Jeśli NIE zdefiniowałem wierszy autorytetu / autora, mogę zalogować się przy użyciu klucza publicznego i żadnej instrukcji globalnej nazwy użytkownika. Jeśli zdefiniuję wiersze autorów / autorów na podstawie mojego poprzedniego komentarza, nie będę w stanie SSH za pomocą tylko klucza publicznego - wymagane jest globalne polecenie użytkownika (inaczej niepowodzenie autoryzacji). Jeśli zrobię coś głupiego i wprowadzę globalną nazwę użytkownika bez tajne / hasło, SSH działa z kluczem, ale telnet działa bez hasła - więc nie rób tego.
SirNickity,
4

Tak, musisz coś ustawić. Tak właśnie działa IOS. Jeśli chcesz, możesz ustawić go tak samo jak hasło logowania.

W przypadku wielu użytkowników zalecamy skonfigurowanie uwierzytelniania AAA, które pozwoli Ci przejść bezpośrednio do trybu włączenia bez konieczności wprowadzania innego hasła. Pozwoli również na śledzenie aktywności poszczególnych administratorów. (Ale nadal musisz ustawić na coś hasło tajne).

aaa new model
aaa authentication login default local
aaa authorization enable default local

username chen-li password foo privilege 15
username safar password bar privilege 15
Ron Trunk
źródło
2
Aby wykonać kopię zapasową odpowiedzi Rona, należy ją włączyć, jeśli chcesz przejść do trybu uprzywilejowanego exec, chyba że skonfigurujesz VTY do bezpośredniego wejścia na poziom 15.
jwbensley,
@jwbensley. Dobry pomysł. Zapomniałem o tym.
Ron Trunk
Korzystam z nowego modelu, ale ustawienie uprawnień 15 nadal wymaga ode mnie użycia polecenia enable. Nie potrzebuję też hasła / hasła dostępu (właśnie to przetestowałem).
Marwan
Idź do pracy. Najwyraźniej musiałem określić aaa authorization exec default localautomatyczne wprowadzanie uprzywilejowanego exec.
Marwan
1

Aby dodać do istniejących informacji tutaj.

enable

Pierwszą opcją ustawienia enablehasła jest enable password.

Switch(config)#enable password passfoo
Switch#show running-config | include enable
enable password passfoo

Jak widać, hasło jest przechowywane w postaci zwykłego tekstu. To jest złe .

Drugi to enable secret.

Switch(config)#enable secret ?
  0      Specifies an UNENCRYPTED password will follow
  5      Specifies a MD5 HASHED secret will follow
  8      Specifies a PBKDF2 HASHED secret will follow
  9      Specifies a SCRYPT HASHED secret will follow
  LINE   The UNENCRYPTED (cleartext) 'enable' secret
  level  Set exec level password
Switch(config)#enable secret passfoo
Switch#show running-config | include enable
enable secret 5 $1$cSF4$uydOsfi3J2vGT.77tuYWh1

Jest lepiej . Przynajmniej teraz mamy skrót hasła. Jednak nadal używa tylko solonego MD5, więc prawdopodobnie jest dość łatwy do złamania z dużą listą słów i openssl.

Trzecia opcja (i cel tej odpowiedzi) enable algorithm-typepozwala nam korzystać z PBKDF2 lub SCRYPT.

Switch(config)#enable algorithm-type ?
  md5     Encode the password using the MD5 algorithm
  scrypt  Encode the password using the SCRYPT hashing algorithm
  sha256  Encode the password using the PBKDF2 hashing algorithm
Switch(config)#enable algorithm-type scrypt secret ?
  LINE   The UNENCRYPTED (cleartext) 'enable' secret
  level  Set exec level password
Switch(config)#enable algorithm-type scrypt secret passfoo
Switch#show running-config | include enable
enable secret 9 $9$dXjOMeJPYKOFbl$0D4.ItXi8yrjp.A9dt7Ew6tTgr3LYmMlzD672d.LjFk

To zdecydowanie najlepsze .

Philip D'Ath napisał ładne podsumowanie, dlaczego wybrać typ 9. Thomas Pornin i Ilmari Karonen udzielają bardziej szczegółowych informacji.

Samuel Harmer
źródło
0

Jest to w zasadzie dodatkowa warstwa bezpieczeństwa. Jeśli nie masz wersji IOS, która obsługuje szyfrowanie haseł serwisowych, szyfrowane są tylko hasła włączania, podczas gdy hasła konsoli i VTY są zwykłym tekstem. Jeśli ktoś byłby w stanie uzyskać kopię twojej konfiguracji (powiedzmy z kopii zapasowej lub z komputera bez nadzoru, który został telnetowany), zaszyfrowane hasło włączające utrudniłoby uzyskanie kontroli nad routerem, nawet gdyby mógł się połączyć telnet.

Nawet w przypadku zaszyfrowanych haseł VTY i konsoli należy nadal mieć inne hasło aktywacji, aby zachować bezpieczeństwo i zapewnić dodatkową barierę.

pooter03
źródło
0

Zamknij 1 z 2 użytkowników admin.cisco są bardzo czujni na wszelkie możliwe punkty wejścia hakerskiego za pośrednictwem Connect. Z dwoma administratorami. Połączony cisco uwierzy, że intruz jest również podłączony i zablokuje dalszy postęp bez odpowiedniego logowania. Po przywróceniu kontroli, powinieneś być w stanie dodać uprawnienia administratora

MAMA
źródło