четверг, 17 ноября 2016 г.

3. Практическая безопасность сетей


1.1.2 Задаем пароль на enable

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

Switch#configure terminal   /вход в режим глобальной конфигурации
Switch(config)#enable password cisco   /установка пароля

Казалось бы, что на этом можно и закончить. Привилегированный режим защищен паролем. Отчасти да. Однако стоит знать, что данный пароль хранится в конфигурации устройства как обычный текст и если использовать команду show run, то можно увидеть следующее:

Switch#show running-config | include enable password
enable password cisco   /пароль хранится в открытом виде

Чем же это опасно? Возможно вы, как добросовестный администратор, храните резервные копии конфигураций, что вполне логично. Как правило такие резервные копии лежат на FTP, либо TFTP сервере. Возможна ситуация, когда злоумышленник получил доступ к этому серверу. Просмотрев конфигурации устройств и найдя пароли, он получит доступ ко всей вашей сети. Другой вариант, когда вы открыли сессию удаленного доступа (telnet, ssh) к одному из коммутаторов, но вас вдруг позвали в другую комнату. Вы оставили окошко с открытой сессией буквально на 2 минуты. Возможно этого времени недостаточно, чтобы внести серьезные изменения в конфигурацию, но этого точно хватит, чтобы ваш коллега или случайный “прохожий” из другого отдела успел подглядеть пароль. Более того, подсмотреть пароль могут просто находясь у вас за спиной, когда вы просматриваете конфигурацию. 
Очевидно, что пароль нужно хранить в зашифрованном виде. В этом случае в сети Интернет советуют использовать следующую команду:

Switch(config)#service password-encryption

Данная команда призвана шифровать все имеющиеся пароли в конфигурации устройства. Вот так выглядит пароль после применения команды:

Switch#show running-config | include enable password
enable password 7 0822455D0A16   /зашифрованный пароль

Как видим пароль уже выглядит совсем иначе. Это так называемые Type 7 пароли. Но и этого недостаточно. Дело в том, что команда service password-encryption использует довольно слабый и широко известный метод шифрования. Данные пароли очень просто поддаются дешифрации. В интернете огромное количество утилит, которые позволяют это сделать. Яркий пример - утилита Cain&Abel. Так же доступны онлайн ресурсы (этого всего лишь пример и вы можете найти другие сайты используя в google поисковый запрос “cisco type 7 password decrypt”). Давайте попробуем восстановить пароль из нашей зашифрованной последовательности 0822455D0A16.
Пароль успешно восстановлен. Таким образом, если злоумышленник все же смог получить доступ к конфигурации устройства (или возможно он смог запомнить зашифрованный пароль одним лишь взглядом), то он с легкостью расшифрует реальный пароль. Шифрование здесь не помогло.
Для решения этой проблемы существует enable secret. Именно эту команду необходимо использовать при задании пароля. Функция secret использует совершенно другой принцип. Вместо шифрования, пароль проходит через определенный алгоритм (MD5) и на выходе получается так называемый hash (хэш).
Это операция в одну сторону. Ее можно сравнить с мясорубкой. Если вы перекрутите кусок мяса в фарш, то обратно кусок мяса вы уже не получите никаким образом. В конфигурации отображается именно hash, который невозможно расшифровать. Для примера давайте зададим пароль и посмотрим, что получится на выходе:

Switch(config)#enable secret cisco
Switch#show running-config | include enable
enable secret 5 $1$mERr$hx5rVt7rPNoS4wqbXKX7m0   /hash исходного пароля “cisco”

В конфигурации мы видим hash нашего исходного пароля. Цифра “5” после enable secret означает, что используется алгоритм хэширования (в случае с enable password отображается цифра 7). Как было сказано выше, данный пароль невозможно декодировать. Однако и это не дает нам 100% защиты. Данный пароль можно брутфорсить (от англ. brute force), т.е. подбирать. В интернете существуют таблицы, где для самых распространенных паролей приведены их хэши. Есть даже специализированные сервисы, например (можете найти другой сервис в google, используя запрос “Cisco IOS Enable Secret Type 5 Password Cracker”).
Если поместить наш хэш ($1$mERr$hx5rVt7rPNoS4wqbXKX7m0) в эту форму, то в поле “Plain text” мы получим исходный пароль менее чем за секунду. Т.е. данный сервис просто перебирает значения в таблице, где хранятся хэши часто используемых паролей. Если же в существующей таблице нет приведенного хэша, можно попробовать применить “атаку по словарю”. В этом случае подбирается пароль, затем генерируется его хэш и сравнивается с исходным. В этом может помочь утилита Cain&Abel. Преимущества данного брутфорса перед обычным (когда пароль подбирается непосредственно на устройстве) в том, что вы не увидите данный процесс в логах своего устройства и не сможете заблокировать IP адрес атакующего. Получив доступ к вашей конфигурации, злоумышленник может неделями подбирать пароль и вы об этом даже не узнаете.

Но данный брутфорс будет успешен, только если вы используете очень простой пароль. Попробуйте сгенерировать с помощью enable secret хэш для более сложного пароля и воспользуйтесь представленным выше сервисом (либо утилитой Cain&Abel). В этом случае на подбор пароля могут уйти годы.

Какой вывод можно сделать? Как написано на картинке выше “Don’t use stupidly simple passwords”. Думаю перевод не требуется. О том, как выбирать пароли мы поговорим чуть позже.
Не используйте enable password даже в связке с service password-encryption. Используйте сложные пароли и enable secret.
Важное замечание, если у вас в системе используется и пароль enable password, и enable secret, то последний будет иметь более высокий приоритет (т.е. при входе в привилегированный режим будет использоваться пароль заданный с помощью enable secret).

5 комментариев:

  1. Лучше назвать "Задаем пароль на Cisco IOS", а про других производителей будет ? Читается хорошо.

    ОтветитьУдалить
    Ответы
    1. Нет. Не вижу особого смысла. Везде примерно все одинаково. Тут я скорее пытаюсь донести концепт, а команды чисто для примера.

      Удалить
  2. мне понравилось. спасибо вам

    ОтветитьУдалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить

Новый сайт проекта

Новый сайт проекта
Прокачай себя, а не персонажа из игры

Translate

Популярные сообщения

Blog Archive

Технологии Blogger.