Чи потрібно встановити секрет увімкнення на пристрої Cisco?


16

Я встановлюю маршрутизатор Cisco 2901. Я маю пароль для входу в лінію консолі, а рядки vty налаштовані приймати лише ssh-з'єднання з аутентифікацією відкритого ключа. Допоміжна лінія відключена. Є лише два адміністратори, які матимуть доступ до маршрутизатора, і ми обидва уповноважені виконувати будь-яку конфігурацію на маршрутизаторі.

Я не фахівець з передач Cisco, але вважаю це адекватним для забезпечення доступу до конфігурації маршрутизатора. Однак у кожному прочитаному вами посібнику зазначено, що я повинен встановлювати секрет увімкнення, незалежно від паролів інших користувачів чи рядків.

Чи є щось більше для пароля включення, про який я не знаю? Чи є інший спосіб отримати доступ до маршрутизатора, ніж консольні, допоміжні або vty лінії?

EDIT: Я додав фактичну конфігурацію нижче, щоб зрозуміти мою ситуацію. Далі працює, вимагаючи пароля ввімкнення або 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
коротка відповідь: не потрібно , але дуже рекомендується - оскільки це перша лінія захисту для повних приватних осіб
Ricky Beam

Але якщо я маю паролі на консольній лінії та vtys, навіщо мені потрібен інший пароль? Крім того, секрет увімкнення повинен бути поділений між персоналом адміністратора, який просто просить записати його, надіслати електронною поштою тощо. Краще для кожного адміністратора мати свій приватний пароль / ключ.
Марван

включити піднімає приват. Якщо ви не зміните його (через aaa), воно все ще застосовується, коли у вас є командний рядок.
Рікі Бім

Відповіді:


24

Ні, ви не - технічно. Але чи зможете ви ввімкнути режим включення без нього, залежить від того, як увійти.

Ось миттєва версія задоволення:

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

Ось довговічна версія відповіді 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 тощо), списки автентифікації (які визначають джерела для використання та в якому порядку), рівні авторизації та облік активності користувачів.

Збережіть все це на час, коли ви хочете на деякий час заблокувати його з маршрутизатора.

Сподіваюся, що це допомагає!


1
Ласкаво просимо! Чудова перша відповідь!
Цифрова травма

Дякую, це дуже прониклива відповідь. Мені відомо про різні пристрої шифрування паролів, і я використовую нову модель aaa (я відредагував своє запитання, щоб це відобразити).
Марван

Відсутність секрету увімкнення, здається, не є проблемою для мене. Якщо я telnet / ssh з ім'ям користувача / паролем або відкритим ключем, я можу просто ввести enableі він працює. Крім того, наявність імені користувача з привілеєм 15 все ще вимагає від мене ввести enable. Це пов'язано з новою моделлю Aaa?
Марван

1
Ви спробували визначити списки аутентифікації? Використовуйте "aaa автентифікацію входу за замовчуванням локальну" та "aaa авторизацію exec default default". Крім того, використовуйте "if-authentication" замість "local" на останньому.
SirNickity

Я спробував дублювати вашу конфігурацію на 2811 під керуванням IOS 15.1 (4) M і знайшов цікаві результати. Якщо я НЕ визначив авторські / авторські рядки aaa, я можу увійти в систему за допомогою відкритого ключа та жодного глобального заяви користувача. Якщо я визначаю авторські / авторські рядки за попереднім коментарем, я не зможу 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
Щоб створити резервну копію відповіді Рона, її потрібно ввімкнути, якщо ви хочете перейти в режим привілейованого виконання, якщо ви не налаштовуєте VTY, щоб безпосередньо входити до рівня 15.
jwbensley

@jwbensley. Гарна ідея. Я про це забув.
Рон Трунк

Я використовую нову модель aaa, але встановлення привілею 15 все ще вимагає від мене використання команди enable. Мені також не потрібен секрет / пароль увімкнення (я все це тестував).
Марван

Перейдіть на роботу. Мабуть, мені потрібно було вказати, aaa authorization exec default localщоб автоматично ввести привілейований виконавець.
Марван

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 є простими. Якщо комусь вдалося отримати копію вашого конфігурації (скажімо, із резервного копіювання або без догляду за комп’ютером, на якому було підключено телнет), зашифрований пароль увімкнення дозволить ускладнити отримання контролю над вашим маршрутизатором, навіть якщо вони можуть входити в телнет.

Навіть із зашифрованими паролями VTY та консолі, ви все одно повинні мати інший пароль для ввімкнення безпеки та забезпечити додатковий бар'єр.


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.