> For the complete documentation index, see [llms.txt](https://adavyshin.gitbook.io/networks/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://adavyshin.gitbook.io/networks/docs/nastroika-dostup.md).

# Настройка  доступ

🧭 Практикум выполняется во внутренней сети `Radio`, в частности на коммутаторе\
&#x20;<kbd>radio-switch</kbd> и на сервере <kbd>TACACS</kbd>, у коммутатора IP-адрес `172.16.1.40`, у AAA-сервера - `172.16.1.20`.

Первым делом давай зададим пароль для перехода в привилегированный режим (privilege level 15), а также создадим локального пользователя с локальным 15-ым уровнем привилегий.

🔧 Первоначальная инициализация <kbd>radio-switch</kbd>

```
configure terminal
!
enable secret 3n@ble
!
username local_admin privilege 15 secret Pa$$w0rd
!
line console 0
  exec-timeout 0
  logging synchronous
  international
```

Напомню, что в Cisco-вском железе в заводских настройках включена старая модель AAA\
&#x20;`no aaa new-model`, где необходимо было на каждой line управления явно прописывать пароль или указывать локальную базу пользователей. Мы обойдём старую модель стороной, и сразу переключимся на новую модель `aaa new-model`.

🔧 Включение "новой" AAA-модели

```
aaa new-model
```

Теперь необходимо в новой модели как будет происходить аутентификация пользователей и их последующая сквозную авторизация. Под сквозной авторизацией будет понимать автоматический вход в уровень привилегий `privilege level`, который прописан у пользователя. Если мы не сделаем конфигурацию сквозной авторизации, то любой пользователь по умолчанию будет попадать в `privilege level 1`.&#x20;

🔧 Настройка  AAA  для локальной базы <kbd>radio-switch</kbd>

```
aaa authentication login default local
aaa authorization exec default local
aaa authentication enable default enable
```

Изначально консоль авторизирует пользователей особым образом, но чтобы включить авторизацию на консоли согласно канонам AAA, то используем следующую команду:

🔧 Включение авторизации на консоли <kbd>radio-switch</kbd>

```
aaa authorization console
```

## Настройка ssh доступа

В рамках данной лабораторной работы мы настроим доступ SSH по ключу с сервера <kbd>TACACS</kbd>

🔧 Первоначальная настройка SSH-доступа на  <kbd>radio-switch</kbd>

```
crypto key generate rsa modulus 2048 label RSA-KEY-4-SSH
!
ip ssh version 2
ip ssh logging events
ip ssh rsa keypair-name RSA-KEY-4-SSH
!
line vty 0 15
  transport input ssh
```

🐧 (Опционально)  На VM <kbd>TACACS</kbd>, eсли остался старый fingerprint, то чистим его с помощью команды&#x20;

```
ssh-keygen -f "/home/admin/.ssh/known_hosts" -R "172.16.1.40"
```

🐧 На VM  <kbd>TACACS</kbd> создаём пару RSA-ключей

```
ssh-keygen -t rsa -b 2048 -C "rsa_admin"
```

🐧 Конвертируем из формата `OpenSSH` в формат `SSH2` публичный ключ, чтобы его можно было&#x20;

```
ssh-keygen -e -f ~/.ssh/id_rsa.pub > id_rsa-ssh2.pub
```

🐧 Выводим содержимое публичного ключ в терминал и копируем в буфер&#x20;

```
cat id_rsa-ssh2.pub
```

{% hint style="info" %}
Нас интересует только именно само содержимое, заголовки и комментарии не копируем.
{% endhint %}

Нам необходимо создать пользователя и добавить публичный RSA-ключ на устройство, проассоциировав его с этим пользователем, чтобы маршрутизатор смог провести аутентификацию.&#x20;

```
username rsa_admin privilege 15 secret Pa$$w0rd
!
ip ssh pubkey-chain
  username rsa_admin
    key-string
      < Содержимое публчиного ключа >
      exit
    exit
  exit
```

🔧 (Опционально) Дополнительно можем отключить вход на основе паролей и оставить только вход по ключам на <kbd>radio-switch</kbd>

```
ip ssh server algorithm authentication publickey
```

Теперь пробуем подключиться  предоставив RSA-ключ, через ключ `-i` - Identity, указав путь к приватному ключу.

🐧 На VM  <kbd>TACACS</kbd> выполняем команду и нас должно подключить к <kbd>radio-switch</kbd>

```
ssh -i  ~/.ssh/id_rsa rsa_admin@172.16.1.40
```

🐧 Пробуем подключиться по логину-паролю

```
ssh rsa_admin@172.16.1.40
```

🔧 Возвращаем вход на устройство <kbd>radio-switch</kbd>  по ssh на основе всех способов

```
default ip ssh server algorithm authentication
```

## Настройка доступа по TACACS+

Заходим в web-интерфейс TACACS+ сервера по url `http://172.16.1:20:8008`. Логин и пароль для входа `jericho` / `Pa$$w0rd` .

### Добавление TACACS+ устройства

Переходим во вкладку `Tacacs Devices` - `Devices` и добавляем новое устройство через `add New Device`. В новом сетевом устройств давайте заполним поля **Name**, **Address**, **Tacacs Key**. Заполняем по аналогии, как на скриншоте ниже, хотя имя не принципиально важно, но в поле ключа для TACACS+ - заполняем <mark style="color:$warning;">`Tacacs-key!`</mark>, если будете использовать своё - необходимо скорректировать настройку <kbd>DC-Switch</kbd>  для взаимодействия c сервером.

<figure><img src="/files/kxlkjWiHISCUn3BILz56" alt=""><figcaption></figcaption></figure>

В окне Address необходимо добавить объект, и изначально объектов у нас нет. Добавляем объект с IPv4-адрессов нашего <kbd>DC-Switch</kbd>.&#x20;

<figure><img src="/files/XBVHuxK9UCXpNIElu1ct" alt=""><figcaption></figcaption></figure>

### Добавление TACACS+ пользователей

Переходим в раздел `Access Control`  ➡️ `Services`  и нажимаем кнопку `➕Add` , чтобы добавить новый `Service`, кликаем на кнопку на чёрную кнопку `Service Pattern` и выбираем `Cisco Systems` ➡️ `Cisco General` и у нас должна появиться новая одноименная вкладка.

<figure><img src="/files/ZB9wwTNRw2bDxwHaMph5" alt=""><figcaption></figcaption></figure>

Переходим на неё и видим поле `Priviege Level` - это и есть уровень привилегий, который будет отдаваться нашим пользователям. Давайте вернёмся на вкладку General и пропишем имя `Service` - `priv_15_lvl` и сохраним. Далее создадим еще два `Service` с `Privilege Level 10` и `Privilege Level 1`.&#x20;

<figure><img src="/files/2zYzKgAblC7KV0dPSOvI" alt=""><figcaption></figcaption></figure>

Следующим этапом переходим к созданию самих пользователей, в левом боковом меню `Tacacs Users` ➡️ `Users` кликаем на `➕Add` для добавления пользователя и создаем трёх пользователей:

* [x] `lvl15_admin` с полем Sevice - `priv_15_lvl`
* [x] `lvl10_admin` с полем Sevice - `priv_10_lvl`
* [x] `lvl1_admin` с полем Sevice - `priv_1_lvl`

<figure><img src="/files/Q2Qw7AzOkUbvRlzLprHz" alt=""><figcaption></figcaption></figure>

Для применения настроек нажимаем на кнопку 💾 Apply

🔧Объявляем TACACS-сервер на AAA-Device

```
tacacs server TCS-SRV
 address ipv4 172.16.1.20
 key Tacacs-key!
```

🔧 Создаём AAA группу серверов

```
aaa group server tacacs+ TCS-GRP
 server name TCS-SRV
```

🔧 Правим последовательность аутентификации для входа в CLI

```
aaa authentication login default group TCS-GRP local
aaa authorization exec default group TCS-GRP local
```

### Авторизация команд на основе TACACS+

В разделе `Objects` ➡️ `Command Sets`  находятся списки разрешённых/запрещенных команд, кликаем на `➕Add` для создания нового набора команд

Задаём имя `Command Set`, прописываем основную команду в поле `Main Command Name (First part)`. Тумблер справа указывает на разрешение выполнения остальных команды которые начинаются с `Main Command Name`, но не попадают под дополнительные критерии deny.

В поле Main Command Name - `configure`

Дополнительное c действием `deny` - `terminal`

<figure><img src="/files/lXJx93N6ZiAx6Wbvp8t6" alt=""><figcaption></figcaption></figure>

Затем нужно вернуться в раздел `Access Control`  ➡️ `Services`и и добавить в существующий Service `priv_15_lvl` созданный ранее `Command Set`.&#x20;

🔧 Включение авторизации команд на TACACS

```
aaa authorization config-commands
aaa authorization commands 0 default group TCS-GRP
aaa authorization commands 1 default group TCS-GRP
aaa authorization commands 15 default group TCS-GRP
```

⌨️ Пробуем теперь авторизацию в действии

```
end
configure terminal
```

При входе в конфигурационный терминал увидим сообщение&#x20;

> Command authorization failed.

Также пои

Для применения настроек нажимаем на кнопку 💾 Apply


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://adavyshin.gitbook.io/networks/docs/nastroika-dostup.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
