Нужно ли установить секрет включения на устройстве Cisco?

16

Я настраиваю маршрутизатор Cisco 2901. У меня есть пароль для входа в консольную строку, а строки vty настроены на прием только ssh-соединений с аутентификацией с открытым ключом. Вспомогательная линия отключена. Есть только два администратора, которые будут иметь доступ к маршрутизатору, и мы оба уполномочены выполнять любую настройку на маршрутизаторе.

Я не эксперт по оборудованию Cisco, но считаю, что этого достаточно для безопасного доступа к конфигурации маршрутизатора. Тем не менее, в каждом отдельном руководстве, которое я прочитал, говорится, что я должен установить секрет включения независимо от любых других пользовательских или линейных паролей.

Есть ли что-то еще в разрешающем пароле, о котором я не знаю? Есть ли другой способ получить доступ к маршрутизатору, кроме консольной, вспомогательной или VTY линий?

РЕДАКТИРОВАТЬ: я добавил фактическую конфигурацию ниже, чтобы быть более ясным о моей ситуации. Следующее работает, с требованием разрешить пароль или usernameконфигурацию помимо того, что внутри 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
Марван
источник
1
короткий ответ: не требуется , но очень рекомендуется - так как это первая линия защиты для полных привилегий
Рики Бим
Но если у меня есть пароли в строке консоли и vtys, зачем мне нужен другой пароль? Кроме того, секрет разрешения должен быть передан персоналу администратора, который просто просит записать его, отправить по электронной почте и т. Д. Лучше, чтобы у каждого администратора был свой личный пароль / ключ.
Марван
включить поднимает приват. Если вы не измените его (через aaa), оно все равно будет применяться, если у вас есть командная строка.
Рики Бим

Ответы:

24

Нет, технически. Но можно ли войти в режим включения без такового, зависит от того, как вы вошли в систему.

Вот версия мгновенного удовлетворения:

Вы можете войти через консоль без пароля включения, но вы застрянете в пользовательском режиме, если вы используете простой пароль входа в систему vty без установленного пароля активации.

Вот длинная версия ответчика StackExchange:

Аутентификация Cisco - своего рода беспорядок для новичка. Там много старого багажа. Позвольте мне попытаться разобраться в этом в реальном смысле.

Каждый, кто занимается бизнесом, подключается к маршрутизатору или коммутатору и переходит непосредственно в привилегированный режим. Пользовательский режим - это, в основном, передний вестибюль, который служит чуть больше цели, чем не допускать сквозняков. В больших организациях, где у вас есть обширные сети и столь же огромные трудовые ресурсы, может быть оправданным иметь кого-то, кто может постучать в парадную дверь и убедиться, что кто-то еще там. (То есть, чтобы войти в систему и выполнить самые тривиальные команды, просто чтобы убедиться, что устройство фактически отвечает, а не горит.) Но в каждой среде, в которой я когда-либо работал, уровень 1 имел по крайней мере некоторую способность сломать вещи.

Таким образом, и особенно в сценарии, подобном вашему, знание пароля включения обязательно, чтобы что-то сделать. Вы могли бы сказать, что это второй уровень безопасности - один пароль для входа в устройство, другой - для перехода к административным привилегиям - но мне это кажется немного глупым.

Как уже отмечалось, вы можете (и многие люди используют) один и тот же пароль, который мало поможет, если кто-то получил несанкционированный доступ через telnet / ssh. Возможно, проблема состоит в том, чтобы иметь статические, глобальные пароли, которыми все делятся, и это больше проблема, чем просто ввести один токен. Наконец, большинство других систем (сервисов, устройств и т. Д.) Не требуют второго уровня аутентификации и, как правило, не считаются небезопасными из-за этого.

ОК, это мое мнение по теме. Вы должны решить для себя, имеет ли это смысл в свете вашей собственной позиции безопасности. Давайте приступим к делу.

Cisco (разумно) требует, чтобы вы установили пароль удаленного доступа по умолчанию. Когда вы попадаете в режим настройки линии ...

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

... вы можете указать маршрутизатору пропустить аутентификацию:

router(config-line)# no login

... и быстро взломать, но ваш злоумышленник окажется в режиме пользователя. Так что если у вас есть разрешающий набор паролей, по крайней мере , вы несколько ограничены ущерб , который может быть сделано. (Технически, вы не можете идти дальше без пароля включения. Подробнее об этом чуть позже ...)

Естественно, никто не сделал бы это в реальной жизни. Ваше минимальное требование по умолчанию и по здравому смыслу - установить простой пароль:

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

Теперь вам будет предложено ввести пароль, и вы снова окажетесь в режиме пользователя. Если вы enableвходите через консоль, вы можете просто ввести, чтобы получить доступ без необходимости вводить другой пароль. Но через telnet все по-другому, и вы, вероятно, получите это:

$ 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> 

Продолжаем ... Вы, наверное, уже знаете, что по умолчанию все настроенные пароли отображаются в виде простого текста:

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

Это одна из тех вещей, которая подтягивает сфинктер сознательного к безопасности. Оправданно ли это беспокойство - это снова то, что вы сами должны решить. С одной стороны, если у вас есть достаточный доступ для просмотра конфигурации, возможно, у вас есть достаточный доступ для изменения конфигурации. С другой стороны, если вам посчастливилось иметь неосторожно показал свою конфигурацию , чтобы кто - то , кто не имеет средств сами, то ... ну, теперь они действительно имеют средства.

К счастью, первая строка в приведенном выше фрагменте no service password-encryptionявляется ключом к изменению этого:

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

Теперь, когда вы смотрите на конфигурацию, вы видите это:

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

Это немного лучше, чем пароли в виде простого текста, потому что отображаемая строка не достаточно запоминаема, чтобы перемещаться по плечу. Тем не менее, расшифровать тривиально - и я использую этот термин здесь свободно. Вы можете буквально вставить эту строку в один из дюжины взломщиков паролей JavaScript на первой странице результатов Google и сразу же получить исходный текст.

Эти так называемые «7» пароли обычно считаются «запутанными», а не «зашифрованными», чтобы подчеркнуть тот факт, что он чуть лучше, чем ничего.

Однако, как оказалось, все эти passwordкоманды устарели. (Или, если это не так, они должны быть.) Вот почему у вас есть следующие два варианта:

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

Секретная версия хэшируется с помощью одностороннего алгоритма, что означает, что единственный способ вернуть исходный текст - это перебор, то есть, пробовать каждую возможную входную строку, пока вы не сгенерируете известный хеш.

Когда вы вводите пароль в приглашении, он проходит по тому же алгоритму хеширования и поэтому должен в конечном итоге генерировать тот же хеш, который затем сравнивается с тем, который указан в файле конфигурации. Если они совпадают, ваш пароль принят. Таким образом, простой текст не известен маршрутизатору, за исключением краткого момента, когда вы создаете или вводите пароль. Примечание: всегда есть вероятность, что какой-то другой вход может генерировать такой же хеш, но статистически это очень низкая (читай: незначительная) вероятность.

Если вы должны были использовать описанную выше конфигурацию самостоятельно, маршрутизатор позволит обе enable passwordи enable secretлинии существовать, но секрет победы от пароля. Это один из тех Cisco-измов, который не имеет особого смысла, но это так. Кроме того, нет secretэквивалентной команды из режима конфигурации линии, поэтому вы застряли там с запутанными паролями.

Хорошо, теперь у нас есть пароль, который нельзя (легко) восстановить из файла конфигурации, но есть еще одна проблема. Он передается в виде простого текста, когда вы входите в систему через telnet. Не хорошо. Мы хотим SSH.

SSH, разработанный с учетом более надежной безопасности, требует немного дополнительной работы - и образа IOS с определенным набором функций. Одно большое отличие состоит в том, что простой пароль уже недостаточно хорош. Вы должны перейти к пользовательской аутентификации. И пока вы это делаете, настройте пару ключей шифрования:

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

Теперь ты готовишь с газом! Обратите внимание, что эта команда использует secretпароли. (Да, вы можете, но не должны использовать password). privilege 15Часть позволяет обойти пользовательский режим полностью. Когда вы входите в систему, вы переходите прямо в привилегированный режим:

$ ssh admin@10.1.1.1
Password: *****

router#

В этом случае нет необходимости использовать пароль (или секретный ключ).

Если вы еще не думал, «вау ... какая clusterfudge , что было», иметь в виду , что есть целый другой многословно пост еще скрывается за командой aaa new-model, где вы можете погрузиться в такие вещи , как внешние серверы аутентификации (RADIUS , TACACS +, LDAP и т. Д.), Списки аутентификации (которые определяют используемые источники и в каком порядке), уровни авторизации и учет активности пользователей.

Сохраните все это на время, когда вам захочется на время отключиться от маршрутизатора.

Надеюсь, это поможет!

SirNickity
источник
1
Добро пожаловать! Отличный первый ответ!
Цифровая травма
Спасибо, это очень проницательный ответ. Мне известны различные устройства шифрования паролей, и я использую новую модель (я отредактировал свой вопрос, чтобы отразить это).
Марван
Отсутствие секрета включения не является проблемой для меня. Будь я telnet / ssh с именем пользователя / паролем или открытым ключом, я могу просто напечатать, enableи это работает. Кроме того, наличие имени пользователя с привилегией 15 все еще требует, чтобы я напечатал enable. Это из-за новой модели?
Марван
1
Вы пытались определить списки аутентификации? Используйте «aaa авторизация по умолчанию локальный по умолчанию» и «aaa авторизация exec по умолчанию локальный». В качестве альтернативы используйте «if-authenticated» вместо «local» в последнем.
SirNickity
Я попытался дублировать вашу конфигурацию на 2811 под управлением IOS 15.1 (4) M и нашел некоторые интересные результаты. Если я НЕ определил aaa строки автора / автора, я могу войти с открытым ключом и без глобального оператора имени пользователя. Если я определю строки authen / author для моего предыдущего комментария, я не смогу использовать SSH только с открытым ключом - требуется команда глобального имени пользователя (в противном случае ошибка авторизации.) Если я сделаю что-то глупое и введу глобальное имя пользователя с помощью OUT секрет / пароль, SSH работает с ключом, но telnet работает без пароля - так что не делайте этого.
SirNickity
4

Да, вам нужно что-то установить. Именно так работает IOS. Вы можете сделать это так же, как ваш пароль для входа, если хотите.

Для нескольких пользователей я рекомендую вам установить аутентификацию AAA, которая позволит вам перейти непосредственно в режим включения без необходимости вводить другой пароль. Это также позволит вам отслеживать активность отдельных администраторов. (Но вам все равно нужно установить секретный пароль для включения.)

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
Рон Транк
источник
2
Чтобы поддержать ответ Рона, он должен быть включен, если вы хотите войти в привилегированный режим exec, если вы не настроите свои VTY для непосредственного входа на уровень 15.
Jwbensley
@jwbensley. Хорошая идея. Я забыл про это.
Рон Ствол
Я использую aaa new-model, но для настройки привилегии 15 все еще требуется, чтобы я использовал команду enable. Мне также не нужен секрет / пароль включения (я только что проверил все это).
Марван
Иди на работу. По-видимому, мне нужно было указать aaa authorization exec default localдля автоматического входа в привилегированный exec.
Марван
1

Добавить к существующей информации здесь.

enable

Первый вариант для установки enableпароля enable password.

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

Как видите, пароль хранится в виде простого текста. Это плохо .

Второе есть 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

Это лучше . По крайней мере, теперь у нас есть хэш пароля. Однако при этом используется только соленый MD5, поэтому его, вероятно, довольно легко взломать с помощью большого списка слов и openssl.

Третий вариант (и цель этого ответа) enable algorithm-typeпозволяет нам использовать PBKDF2 или 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

Это определенно лучше .

Филипп Д'Ат написал хорошее резюме о том, почему выбрать тип 9. Томас Порнин и Илмари Каронен предоставляют более подробную информацию.

Сэмюэл Хармер
источник
0

Это в основном дополнительный уровень безопасности. Если у вас нет версии IOS, которая поддерживает служебное шифрование паролей, то шифрование только разрешенных паролей происходит, пока пароли консоли и VTY находятся в незашифрованном виде. Если бы кто-то смог получить копию вашей конфигурации (скажем, из резервной копии или с автоматического компьютера, на котором был подключен telnet), зашифрованный пароль включения затруднил бы получение контроля над вашим маршрутизатором, даже если он мог подключиться через telnet.

Даже с зашифрованными паролями VTY и консольными паролями у вас все равно должен быть другой пароль включения, чтобы обеспечить безопасность и обеспечить дополнительный барьер.

pooter03
источник
0

Завершите работу 1 из 2 пользователей-администраторов. В Cisco очень осторожны любые, любые возможные точки входа в хак через соединение. С двумя админами. При подключении cisco будет считать, что злоумышленник также подключен, и будет блокировать дальнейшее продвижение без надлежащего входа в систему. После того, как элемент управления восстановлен, вы сможете добавить администраторов.

МАМА
источник