Cisco Network Security - Autoryzacja, Uwierzytelnianie i Rozliczanie

1. Uwierzytelnianie jest kluczowe dla bezpieczeństwa sieci, a różne metody oferują różne poziomy zabezpieczeń. Najprostszą metodą jest konfiguracja loginu i hasła, ale jest ona najmniej bezpieczna. 
SSH to bardziej bezpieczna forma zdalnego dostępu. Wymaga zarówno nazwy użytkownika, jak i hasła, które są szyfrowane podczas transmisji. Metoda lokalnej bazy danych zapewnia dodatkowe zabezpieczenia, ponieważ atakujący musi znać nazwę użytkownika i hasło. Zapewnia również większą odpowiedzialność, ponieważ nazwa użytkownika jest rejestrowana, gdy użytkownik loguje się. Chociaż Telnet może być konfigurowany za pomocą nazwy użytkownika i hasła, oba są wysyłane jako tekst jawny, co sprawia, że jest podatny na przechwycenie i wykorzystanie. Metoda lokalnej bazy danych ma pewne ograniczenia. 

R1(config)# username Admin algorithm-type scrypt secret Str0ng5rPa55w0rd 
R1(config)# ip domain-name netsec.com
R1(config)# crypto key generate rsa general-keys modulus 2048
The name for the keys will be: R1.netsec.com

% The key modulus size is 2048 bits
% Generating 2048 bit RSA keys, keys will be non-exportable...
[OK] (elapsed time was 1 seconds)

*Jan 17 14:32:53.846: %CRYPTO_ENGINE-5-KEY_ADDITION: A key named R1.netsec.com has been generated or imported by crypto-engine
*Jan 17 14:32:53.847: %SSH-5-ENABLED: SSH 1.99 has been enabled
*Jan 17 14:32:54.116: %CRYPTO_ENGINE-5-KEY_ADDITION: A key named R1.netsec.com.server has been generated or imported by crypto-engine
R1(cofig)#
R1(config)# line vty 0 4
R1(config-line)# transport input ssh
R1(config-line)# login local

Powyższy kod konfiguruje zdalny dostęp do urządzenia sieciowego (takiego jak router lub przełącznik) za pomocą protokołu SSH. Oto wyjaśnienie poszczególnych poleceń:

  1. username Admin algorithm-type scrypt secret Str0ng5rPa55w0rd: Tworzy użytkownika o nazwie Admin z hasłem Str0ng5rPa55w0rd. Hasło jest zaszyfrowane za pomocą algorytmu scrypt.

  2. ip domain-name netsec.com: Ustawia domenę urządzenia na netsec.com.

  3. crypto key generate rsa general-keys modulus 2048: Generuje parę kluczy RSA o długości 2048 bitów do użycia przez SSH.

  4. line vty 0 4: Wchodzi w tryb konfiguracji dla linii vty od 0 do 4, które są używane do zdalnego dostępu.

  5. transport input ssh: Umożliwia zdalny dostęp tylko za pomocą SSH.

  6. login local: Wymaga uwierzytelniania lokalnego, co oznacza, że musi być skonfigurowany użytkownik lokalny (w tym przypadku Admin).

Komunikaty, które widzisz po wygenerowaniu kluczy RSA, informują o pomyślnym utworzeniu kluczy i włączeniu SSH. Klucze te są nieeksportowalne, co oznacza, że nie mogą być przeniesione z urządzenia. Klucz o nazwie R1.netsec.com jest kluczem publicznym, a klucz o nazwie R1.netsec.com.server jest kluczem prywatnym.

2. Usługi bezpieczeństwa sieciowego AAA stanowią podstawowy framework do ustawiania kontroli dostępu na urządzeniu sieciowym. AAA to sposób na kontrolowanie, kto ma prawo dostępu do sieci (uwierzytelnianie) i co może robić, będąc w niej (autoryzacja). AAA pozwala również na audytowanie działań, które użytkownicy wykonują podczas dostępu do sieci (rozliczanie).
  • Uwierzytelnianie - Użytkownicy i administratorzy muszą udowodnić swoją tożsamość przed uzyskaniem dostępu do sieci i zasobów sieciowych. Uwierzytelnianie można ustalić za pomocą kombinacji nazwy użytkownika i hasła, pytań kontrolnych i odpowiedzi, kart tokenów i innych metod. Na przykład: “Jestem użytkownikiem ‘student’ i znam hasło, które to potwierdza.” 
  • Autoryzacja - Po uwierzytelnieniu użytkownika, usługi autoryzacji określają, do których zasobów użytkownik może uzyskać dostęp i jakie operacje ma prawo wykonywać. Przykładem jest “Użytkownik ‘student’ może uzyskać dostęp do serwera hostaXYZ tylko za pomocą SSH.” 
  • Rozliczanie i audyt - Rozliczanie rejestruje, co robi użytkownik, w tym co jest dostępne, jak długo zasób jest dostępny i jakie zmiany zostały wprowadzone. Rozliczanie śledzi, jak wykorzystywane są zasoby sieciowe. Przykładem jest “Użytkownik ‘student’ uzyskał dostęp do hosta serverXYZ za pomocą SSH przez 15 minut.”
3. Uwierzytelnianie AAA może być używane do uwierzytelniania użytkowników dla dostępu administracyjnego lub do uwierzytelniania użytkowników dla zdalnego dostępu do sieci. Cisco dostarcza dwie powszechne metody implementacji usług AAA:
  • Lokalne uwierzytelnianie AAA - Lokalne AAA korzysta z lokalnej bazy danych do uwierzytelniania. Ta metoda jest czasami znana jako uwierzytelnianie samodzielne. W tym kursie będzie ona nazywana lokalnym uwierzytelnianiem AAA. Ta metoda przechowuje nazwy użytkowników i hasła lokalnie w routerze Cisco, a użytkownicy uwierzytelniają się wobec lokalnej bazy danych, jak pokazano na rysunku. Ta baza danych jest tą samą, która jest wymagana do ustanowienia interfejsu CLI opartego na rolach. Lokalne AAA jest idealne dla małych sieci.
  • Uwierzytelnianie AAA oparte na serwerze - W metodzie opartej na serwerze, router uzyskuje dostęp do centralnego serwera AAA, takiego jak Cisco Secure Access Control System (ACS) dla systemu Windows, który jest pokazany na rysunku. Centralny serwer AAA zawiera nazwy użytkowników i hasła dla wszystkich użytkowników. Router korzysta z protokołów Remote Authentication Dial-In User Service (RADIUS) lub Terminal Access Controller Access Control System (TACACS+) do komunikacji z serwerem AAA. Gdy jest wiele routerów i przełączników, uwierzytelnianie AAA oparte na serwerze jest bardziej odpowiednie, ponieważ konta mogą być administrowane z centralnego miejsca, a nie na poszczególnych urządzeniach.
4. Autoryzacja kontroluje, co użytkownicy mogą i nie mogą robić w sieci po uwierzytelnieniu. Jest to podobne do tego, jak poziomy uprzywilejowań i interfejs wiersza poleceń oparty na rolach (CLI) nadają użytkownikom określone prawa i uprawnienia do pewnych poleceń na routerze.

Autoryzacja jest zazwyczaj implementowana za pomocą serwera AAA. Autoryzacja korzysta z zestawu atrybutów, które opisują dostęp użytkownika do sieci. Te atrybuty są porównywane z informacjami zawartymi w bazie danych AAA, a następnie dokonywane jest ustalenie ograniczeń dla tego użytkownika i przekazywane do lokalnego routera, do którego użytkownik jest podłączony.

Autoryzacja jest automatyczna i nie wymaga od użytkowników wykonywania dodatkowych kroków po uwierzytelnieniu. Autoryzacja jest implementowana natychmiast po uwierzytelnieniu użytkownika.

5. Lokalna autentykacja AAA powinna być skonfigurowana dla mniejszych sieci. Mniejsze sieci to te sieci, które mają jeden lub dwa urządzenia sieciowe zapewniające dostęp do ograniczonej liczby użytkowników. Ta metoda wykorzystuje lokalne nazwy użytkowników i hasła, które zostały skonfigurowane i zapisane na urządzeniu. Administrator systemu musi wypełnić lokalną bazę danych zabezpieczeń, określając profile nazwy użytkownika i hasła dla każdego użytkownika, który może się zalogować.

Metoda lokalnej autentykacji AAA jest podobna do użycia polecenia login local z jednym wyjątkiem. AAA zapewnia również sposób konfiguracji metod autentykacji awaryjnej.

Konfiguracja lokalnych usług AAA do uwierzytelniania dostępu administratora wymaga kilku podstawowych kroków:

Krok 1. Dodaj nazwy użytkowników i hasła do lokalnej bazy danych routera dla użytkowników, którzy potrzebują dostępu administracyjnego do routera.

Krok 2. Włącz globalnie AAA na routerze.

Krok 3. Skonfiguruj parametry AAA na routerze.

Krok 4. Potwierdź i rozwiąż problemy z konfiguracją AAA.

Polecenie aaa authentication login pozwala użytkownikom ADMIN i JR-ADMIN na logowanie się do routera za pomocą konsoli lub linii terminalowych vty. Słowo kluczowe default oznacza, że metoda uwierzytelniania dotyczy wszystkich linii, z wyjątkiem tych, dla których konkretna konfiguracja linii zastępuje domyślną. Uwierzytelnianie jest czułe na wielkość liter, co wskazuje słowo kluczowe local-case. Oznacza to, że zarówno hasło, jak i nazwa użytkownika są czułe na wielkość liter.

R1(config)# username JR-ADMIN algorithm-type scrypt secret Str0ng5rPa55w0rd
R1(config)# username ADMIN algorithm-type scrypt secret Str0ng5rPa55w0rd  
R1(config)# aaa new-model
R1(config)# aaa authentication login default local-case
R1(config)#

Metody uwierzytelniania w Cisco IOS są konfigurowane poprzez definiowanie listy metod uwierzytelniania o określonej nazwie, a następnie zastosowanie tej listy do różnych interfejsów. Lista metod definiuje rodzaje uwierzytelniania do wykonania i kolejność, w jakiej będą one wykonywane.

Istnieją trzy typy metod uwierzytelniania, które można skonfigurować:

  1. default: Jest to domyślna lista metod, która jest automatycznie stosowana do wszystkich interfejsów, z wyjątkiem tych, dla których określona konfiguracja linii zastępuje domyślną.
  2. list-name: Jest to nazwa listy metod, którą definiuje użytkownik. Ta lista jest stosowana do interfejsów, które są jawnie zdefiniowane.
  3. method1: Jest to pierwsza metoda uwierzytelniania wymieniona na liście. Jeśli ta metoda nie odpowiada, oprogramowanie Cisco IOS XE wybiera następną metodę uwierzytelniania wymienioną na liście.
Switch(config)# aaa authentication login default method1
Switch(config)# aaa authentication login my_list method1

W powyższym przykładzie, default i my_list to nazwy list uwierzytelniania, a method1 to metoda uwierzytelniania. 

Można zdefiniować do czterech metod, zapewniając metody awaryjne, jeśli jedna metoda nie będzie dostępna. Gdy użytkownik próbuje się zalogować, używana jest pierwsza metoda z listy. Oprogramowanie Cisco IOS próbuje uwierzytelnienia za pomocą następnej metody uwierzytelniania z listy tylko wtedy, gdy nie ma odpowiedzi lub wystąpi błąd poprzedniej metody. Jeśli metoda uwierzytelniania odmówi użytkownikowi dostępu, proces uwierzytelniania zostaje zatrzymany i żadne inne metody uwierzytelniania nie są dozwolone.

Aby włączyć lokalne uwierzytelnianie za pomocą wstępnie skonfigurowanej lokalnej bazy danych, użyj słowa kluczowego local lub local-case. Różnica między tymi dwoma opcjami polega na tym, że local akceptuje nazwę użytkownika niezależnie od wielkości liter, podczas gdy local-case rozróżnia wielkość liter. Na przykład, jeśli w lokalnej bazie danych skonfigurowano wpis z nazwą użytkownika ADMIN, metoda local zaakceptuje ADMIN, Admin, a nawet admin. Jeśli skonfigurowano metodę local-case, to akceptowalne byłoby tylko ADMIN.

Aby określić, że użytkownik może uwierzytelnić się za pomocą hasła enable, użyj słowa kluczowego enable. Aby zapewnić powodzenie uwierzytelniania, nawet jeśli wszystkie metody zwrócą błąd, określ none jako ostatnią metodę.
  • enable - Używa hasła enable do uwierzytelniania.
  • local - Używa lokalnej bazy danych nazw użytkowników do uwierzytelniania.
  • local-case - Używa uwierzytelniania lokalnej nazwy użytkownika z uwzględnieniem wielkości liter.
  • none - Nie używa uwierzytelniania.
  • group radius - Używa listy wszystkich serwerów RADIUS do uwierzytelniania.
  • group tacacs+ - Używa listy wszystkich serwerów TACACS+ do uwierzytelniania.
  • group group-name - Używa podzbioru serwerów RADIUS lub TACACS+ do uwierzytelniania, zgodnie z poleceniem aaa group server radius lub aaa group server tacacs+.
6. Lokalne implementacje AAA są odpowiednie dla bardzo małych sieci, ale nie skalują się dobrze w większych sieciach. W dużych sieciach korporacyjnych zaleca się użycie jednego lub więcej serwerów AAA do zarządzania dostępem użytkowników i administratorów. Serwery te mogą współpracować z wieloma zewnętrznymi bazami danych, takimi jak Active Directory i LDAP.

7. Cisco Identity Services Engine (ISE) to platforma, która umożliwia przedsiębiorstwom egzekwowanie zgodności, zwiększanie bezpieczeństwa infrastruktury i usprawnianie operacji serwisowych. ISE gromadzi informacje kontekstowe z sieci, użytkowników i urządzeń, które administrator może wykorzystać do podejmowania decyzji dotyczących zarządzania.

8. ISE oferuje wiele funkcji, takich jak widoczność zasobów, ocena postawy, segmentacja, zarządzanie gośćmi i bezpieczne bezprzewodowe oraz zawieranie zagrożeń. Dzięki tym funkcjom, ISE jest kluczowym komponentem dla technologii Cisco TrustSec, chroniącej aktywa przed nieautoryzowanym dostępem.

9. Porównanie protokołów TACACS+ i RADIUS:

- RADIUS (Remote Authentication Dial-In User Service) i TACACS+ (Terminal Access Controller Access-Control System Plus) to dwa protokoły AAA (Authentication, Authorization, and Accounting), które służą do uwierzytelniania, autoryzacji i rozliczania użytkowników w sieciach komputerowych. Oba protokoły są stosowane w celu zapewnienia bezpieczeństwa i kontroli dostępu do sieci.

- RADIUS działa na protokole UDP, podczas gdy TACACS+ działa na protokole TCP. RADIUS jest bardziej powszechnie stosowany niż TACACS+ ze względu na swoją prostotę i łatwość konfiguracji. TACACS+ jest bardziej złożony i wymaga więcej zasobów niż RADIUS, ale oferuje większą elastyczność i skalowalność.

Oba protokoły umożliwiają uwierzytelnianie użytkowników za pomocą różnych metod, takich jak hasła, tokeny, karty magnetyczne, certyfikaty cyfrowe, biometria itp.

10. Aby skonfigurować serwer TACACS+, należy globalnie włączyć AAA za pomocą polecenia aaa new-model. Następnie należy użyć polecenia tacacs server. W trybie konfiguracji serwera TACACS+ należy skonfigurować adres IPv4 serwera TACACS+ za pomocą polecenia address ipv4. Polecenie address ipv4 umożliwia zmianę portu uwierzytelniania i portu rozliczeniowego. Można również określić adres IPv6 za pomocą polecenia address ipv6.

Następnie należy użyć polecenia single-connection, aby poprawić wydajność TCP poprzez utrzymanie pojedynczego połączenia TCP przez cały czas trwania sesji. W przeciwnym razie, domyślnie, połączenie TCP jest otwierane i zamykane dla każdej sesji. W razie potrzeby można zidentyfikować wiele serwerów TACACS+ wprowadzając ich odpowiednie adresy IPv4.

Polecenie key służy do konfigurowania wspólnego klucza szyfrującego, który szyfruje transfer danych między serwerem TACACS+ a routerem z włączonym AAA. Ten klucz musi być skonfigurowany dokładnie w ten sam sposób zarówno na routerze, jak i na serwerze TACACS+.

R1(config)# aaa new-model 
R1(config)# 
R1(config)# tacacs server Server-T
R1(config-server-tacacs)# address ipv4 192.168.1.101
R1(config-server-tacacs)# single-connection
R1(config-server-tacacs)# key TACACS-Pa55w0rd
R1(config-server-tacacs)# exit
R1(config)#

11. Aby skonfigurować serwer RADIUS, należy użyć polecenia radius server. Spowoduje to przejście do trybu konfiguracji serwera RADIUS.

Ponieważ RADIUS używa UDP, nie ma odpowiednika słowa kluczowego single-connection. W razie potrzeby można zidentyfikować wiele serwerów RADIUS, wprowadzając polecenie radius server name dla każdego serwera.

W trybie konfiguracji serwera RADIUS skonfiguruj adres IPv4 serwera RADIUS za pomocą polecenia address ipv4. Możesz również określić adres IPv6 za pomocą polecenia address ipv6.

Domyślnie routery Cisco używają portu 1645 do uwierzytelniania i portu 1646 do rozliczeń. Jednak IANA zarezerwowała porty 1812 dla portu uwierzytelniania RADIUS i 1813 dla portu rozliczeniowego RADIUS. Ważne jest, aby te porty zgadzały się między routerem Cisco a serwerem RADIUS.

Aby skonfigurować wspólny klucz szyfrujący do szyfrowania hasła, należy użyć polecenia key. Ten klucz musi być skonfigurowany dokładnie w ten sam sposób na routerze i serwerze RADIUS.

R1(config)# aaa new-model
R1(config)# 
R1(config)# radius server SERVER-R
R1(config-radius-server)# address ipv4 192.168.1.100 auth-port 1812 acct-port 1813
R1(config-radius-server)# key RADIUS-Pa55w0rd
R1(config-radius-server)# exit 
R1(config)#

12. Podczas gdy uwierzytelnianie musi zapewnić, że urządzenie lub użytkownik końcowy jest prawidłowy, autoryzacja dotyczy zezwalania i odmawiania dostępu uwierzytelnionym użytkownikom do funkcji interfejsu urządzenia sieciowego.

Protokół TACACS+ umożliwia oddzielenie uwierzytelniania od autoryzacji. Router można skonfigurować tak, aby ograniczyć użytkownika do wykonywania tylko określonych funkcji po pomyślnym uwierzytelnieniu. Należy pamiętać, że RADIUS nie oddziela procesu uwierzytelniania od autoryzacji.

Innym ważnym aspektem autoryzacji jest możliwość kontrolowania dostępu użytkowników do określonych usług. Kontrolowanie dostępu do poleceń konfiguracyjnych znacznie upraszcza bezpieczeństwo infrastruktury w dużych sieciach przedsiębiorstw.

Aby skonfigurować autoryzację, należy użyć polecenia aaa authorization. Typ autoryzacji może określać rodzaje poleceń lub usług:
  • network - dla usług sieciowych, takich jak PPP i SLIP 
  • exec - dla sesji terminala User EXEC 
  • commands - autoryzacja poleceń próbuje autoryzować wszystkie polecenia trybu EXEC, w tym polecenia konfiguracji globalnej, związane z określonym poziomem uprzywilejowania.
Gdy autoryzacja AAA nie jest włączona, wszyscy użytkownicy mają pełny dostęp. Po rozpoczęciu uwierzytelniania domyślnie zmienia się na brak dostępu. Oznacza to, że administrator musi utworzyć użytkownika z pełnymi prawami dostępu przed włączeniem autoryzacji. Niezrobienie tego natychmiast blokuje administratora z systemu w momencie wprowadzenia polecenia aaa authorization. Jedynym sposobem na odzyskanie dostępu jest ponowne uruchomienie routera. Warto zawsze się upewnić, że przynajmniej jeden użytkownik zawsze ma pełne prawa.

13. Aby skonfigurować AAA, należy wykonać następujące kroki:
  • Włączyć AAA za pomocą polecenia aaa new-model w trybie konfiguracji globalnej.
  • Zdefiniować cechy serwera zabezpieczeń RADIUS lub TACACS+, jeśli używana jest autoryzacja RADIUS lub TACACS+.
  • Skonfigurować listy metod dla uwierzytelniania, autoryzacji i rozliczeń, określając kolejność i typy protokołów zabezpieczeń do użycia.
  • Zastosować listy metod do linii lub interfejsów, na których ma być wykonywane AAA.
Poniższe parametry są często używanymi słowami kluczowymi rozliczeń AAA:
  • network - Uruchamia rozliczenia dla wszystkich żądań usług związanych z siecią, w tym PPP.
  • exec - Uruchamia rozliczenia dla sesji powłoki EXEC.
  • connection - Uruchamia rozliczenia dla wszystkich połączeń wychodzących, takich jak SSH i Telnet.
Te parametry określają, dla jakich usług ma być wykonywane rozliczenie, i są używane w poleceniu aaa accounting w trybie konfiguracji globalnej lub szablonu. Na przykład:

aaa accounting network default start-stop group radius

To polecenie oznacza, że dla wszystkich usług sieciowych ma być wykonywane rozliczenie za pomocą protokołu RADIUS, wysyłając rekordy start-stop do serwera RADIUS.

W przypadku uwierzytelniania AAA można użyć słowa kluczowego default lub nazwy listy. Słowo kluczowe default oznacza, że lista metod uwierzytelniania ma być stosowana do wszystkich linii lub interfejsów, które nie mają zdefiniowanej innej listy. Nazwa listy oznacza, że lista metod uwierzytelniania ma być stosowana tylko do tych linii lub interfejsów, które mają ją przypisaną. Na przykład:

aaa authentication login default local

To polecenie oznacza, że dla wszystkich żądań logowania ma być używana lokalna baza danych użytkowników.

aaa authentication login MYLIST group tacacs+ local

To polecenie oznacza, że dla żądań logowania, które mają przypisaną listę MYLIST, ma być używany protokół TACACS+, a w razie jego niedostępności ma być używana lokalna baza danych użytkowników.

Typ rekordu, lub wyzwalacz, jest konfigurowany w celu określenia, jakie działania powodują aktualizację rekordów rozliczeń. Możliwe wyzwalacze to:
  • start-stop - Wysyła powiadomienie o rozpoczęciu rozliczenia na początku procesu i powiadomienie o zakończeniu rozliczenia na końcu procesu.
  • stop-only - Wysyła rekord rozliczenia "stop" dla wszystkich przypadków, w tym niepowodzeń uwierzytelniania.
  • none - Wyłącza usługi rozliczeń na linii lub interfejsie.
Wyzwalacz jest używany w poleceniu aaa accounting w trybie konfiguracji globalnej lub szablonu. Na przykład:

aaa accounting exec default stop-only group tacacs+

To polecenie oznacza, że dla sesji powłoki EXEC ma być wysyłany tylko rekord rozliczenia "stop" do serwera TACACS+.