Все мы храним или хранили пароли от сетевых устройств в excel файлах. Бывает конечно и так, что хранить ничего не надо так как учетная запись на всех устройства одинаковая, надеюсь читатели поняли, что я говорю не про RADIUS или TACACS, а про ситуацию, когда учетная запись действительно одна.

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

Хорошо если в вашей компании есть ресурсы и обозначен стабильный рост. В таком случае в какой-то момент вы разворачиваете приложение для управлению сетью. Но кто-то, в конечном итоге, так и остаётся на уровне «контролцэ-контролвэ», из-за отсутсвия ресурсов, а может и по другим причинам. Именно для этих людей данная статья. Я расскажу как уйти от excel, сделать хранение паролей более удобным и получить некоторую автоматизацию типовых телодвижений. Заметка: все описания для Windows окружения.

Как вы догадались из заголовка, я советую использовать для хранения учетных данных базу keepass. Я не буду размахивать красочными плакатами и агитировать за keepass хотябы потому, что это сделали до меня уже десятки раз. Я просто покажу, как использую его я и как он помогает мне. А вы, исходя из моего опыта, уже решите сами стоит ли экспортировать данные из вашего любимого txt файла. Я сказал экспортировать, а не перносить вручную, потому что для этого существует очень много инструментов, и даже самый запутаный excel можно перенести в keepass очень легко.

И так приступим. Я храню данные в разбитом по типу устройств виде, но это не обязательно, так как поиск в keepass находит сочетания символов даже в середине слова (но к сожалениею не умеет regexp). Для начала я создаю шаблон типового устройства. К стандартным полям, в зависимости от устройств, я добавляю новые поля, например для устройств Cisco это поле enable. Так же добавляю общие поля, например lan, в котором будет жить ip адрес локального интерфейса. Если вы собираетесь экспортировать данные, то шаблоны надо продумать заранее. Несмотря на возможности массового редактирования, лучше предусмотреть всё и сразу. Для каждого типа устройств, я предусматриваю свой шаблон, ведь очевидно что к Windows серверу не придется подключаться по ssh, а к маршрутизатору Cisco по RDP. Именно по этому я предлагаю разрабатывать шаблоны хранения, что бы не плодить лишние пустые поля. В принципе, для простого хранения данных, этого достаточно, но я обещал автоматизацию и вот она.

Нам понадобится плагин KPEnhancedEntryView. Это расширение позволяет просматривать и редактировать базу из одного окна. Для установки скачайте файл плагина с оффициального сайта keepass и просто скопируйте его в папку с установленной программой.

Keepass с данным плагином понимает линки вида CMD:// для запуска командной строки windows. Значения полей можно передавать в виде переменных, чем я и пользуюсь.

Важно! В переменную PATH из окружения Windows надо добавить пути до приложений которые вы будете использовать. Я например использую putty и psexec, поэтому добавил в переменную пути до этих программ

Дальше можно формировать команды запуска приложений с параметрами прямо из Keepass. Что бы строка воспринималась как линк, её надо начать символом < и закончить символом >. Ниже строка для подключения к устройству по протоколу по ssh используя putty:

<cmd://PuTTY.exe -ssh {S:isp1} -l {USERNAME} -pw {PASSWORD}>

Благодаря внутренним переменным строка будет передаваться в CMD так:
PuTTY.exe -ssh 97.161.16.54 -l user1 -pw 1234567890

Строка обернутая в <> воспринимается как линк и теперь при клике на данную ссылку через keepass, автоматически будет вызвана программа putty и ей будут переданы параметры устройства. Передаваемыми параметрами могут быль любые поля keepass. Параметры надо обернуть в фигурные скобки { }. Для стандартных параметров имена зарезервированы, например {USERNAME} и {PASSWORD}. Если параметр создали вы, то к его названию в начале надо добавить латинсткую букву S с двоеточием, вот так выглядит для передача параметра lan: {S:lan}. Таким нехитрым способом можно запустить приложение-клиент для подключения по любому протоколу от telnet до rdp.



Так же я использую подобные ссылки для автоматизации траблшутинга устройств. Например ping всех ip адресов устройства:
<cmd://cmd /c start "LAN INTERFACE" ping  {S:lan} -t | start "ISP1 INTERFACE" ping  {S:isp1} -t | start "ISP2 INTERFACE" ping  {S:isp2} -t>

Я использую psexec поэтому могу получать вспомогательные данные с удаленных windows хостов
<cmd://psexec \\{S:lan} cmd.exe /k tracert -d 8.8.8.8>

Можно запускать приложения на удаленном хосте, для тестирования пропускной способности сети (предварительно установив его туда)
<cmd://psexec \\{S:lan} cmd.exe /k iperf -s>

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

Пароль от базы habrahabr

P.S. Ещё один плюс плагина KPEnhancedEntryView, который вы несомненно оцените, это то, что он позволяет легко оставлять заметки и файловые вложения для каждого устройства.

UPD Пара правок по итогам обсуждения в комментариях
MrJeos при передаче пароля в параметрах запуска приложения, его можно увидеть в списке задач

cmepthuk Существует сценарий mitm атаки на keepass приложение. Отключайте автоматичекое обновление или скачайте самую свежую версию приложения, где эту уязвимость пофиксили.
Поделиться с друзьями
-->

Комментарии (52)


  1. k3NGuru
    04.07.2016 15:19
    +2

    Почти такое же было https://habrahabr.ru/post/303894/


    1. HunterXXI
      04.07.2016 15:24
      +1

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


  1. JTProg
    04.07.2016 16:07

    ИМХО очень любопытно.
    Вопрос к автору: Какие могут быть идеи в ситуации когда есть команда из админов 4-5 чел распределенных по стране?!


    1. HunterXXI
      04.07.2016 16:10
      -1

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


      1. cmepthuk
        04.07.2016 21:41
        +1

        Не так давно сам пользуюсь KeepAss, и в качестве хранилища БД использую nginx + webdav (благо он уже умеет его из коробки после простого apt-get install nginx) + ssl + auth basic. В итоге необходимо держать в голове uri + basic login/pass + master pass, но параноик внутри меня чувствует себя спокойнее, и доступ к данным есть отовсюду (благо клиентов полно под все платформы, и даже простой web-access). То, что шарить её при необходимости, а так же ограничивать доступ (с помощью того же auth basic) не составляет проблемы уточнять не приходится. В качестве дополнительных мер можно ограничить доступ по IP и проверять User-Agent (да, keepass умеет выставлять нужный user-agent при подключении).
        Дополнительно он всегда есть в бэкапе. Из минусов — сохраняется база в ~15Mb порядка 15 секунд, но это не кажется критичным


      1. Dee3
        04.07.2016 23:49

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


        1. F1RST
          05.07.2016 05:53

          Посмотрите в сторону Teampass. В организации используем его и претензий особых пока нет.


        1. bankinobi
          05.07.2016 09:36

          Последние версии кипаса поддерживают работу нескольких пользователей. Если возникает конфликт, то выводит диалог с вариантами действий (переписать, отменить). Ориентируется по дате изменения записи.


    1. ls1
      05.07.2016 08:30
      +2

      Какие могут быть идеи в ситуации когда есть команда из админов 4-5 чел распределенных по стране?!

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


    1. EvgK
      11.11.2016 23:18

      Вообще, вместо неверно интерпретированного эксперимента из статьи, рекомендую почитать про другой. Он называется «квантовый ластик с отложенным выбором». Смысл его такой: сигнальные фотоны точно так же как в экперименте из статьи идут на экран и образуют хаотическую картину. Холостые же подвергаются определенным манипуляциям и попадают (гораздо позже, хоть через 100 лет), в один из двух детекторов. Если они попали в детектор А, то невозможно определить, по какому пути они шли. Если взять все сигнальные фотоны, соответствующие холостым из А, то мы увидим полосы (интерференцию), среди хаоса изначальной картины. Слово ластик в названии отражает тот факт, что путем манипуляций информация о том, какой путь выбрал фотон была «стерта», и вот в этом случае мы наконец видим интерференцию (но только для части фотонов, все вместе они по прежнему выглядят случайно).


  1. MikalaiR
    04.07.2016 16:10
    +6

    Есть еще плагин KeeAgent, позволяет хранить ssh ключи прямо в базе и отдает их в Putty по запросу (как pageant).


  1. MrJeos
    04.07.2016 17:26
    +4

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


    1. HunterXXI
      04.07.2016 17:33
      -2

      а такое действительно возможно?


      1. akhmelev
        04.07.2016 18:39
        +1

        Еще бы http://my.jetscreenshot.com/226/20160704-phoa-275kb


        1. HunterXXI
          04.07.2016 19:42

          и действительно… ну тогда лучше перейти с паролей на ssh ключи.
          опять же, на сколько сложно злоумышленнику получить доступ к списку процессов?


      1. athacker
        04.07.2016 19:35

        Из статьи по ссылке в первом комментарии: habrahabr.ru/post/303894/#comment_9671082


    1. akrupa
      05.07.2016 00:12

      Кажется, что, если список процессов доступен посторонним, то уже ничего не спасет.


      1. alexkbs
        05.07.2016 09:50

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


    1. Ilirium
      05.07.2016 08:29

      Буфер обмена тоже доступен (всем?) приложениям, запущеным на компьютере.


      1. HunterXXI
        05.07.2016 09:51

        да доступен. keepass автоматически чистит буфер по истечении нескольких секунд (время можно настраивать).
        по сравнению с excel это намного лучше :)


        1. Ilirium
          05.07.2016 11:00

          Да, я знаю, сам пользуюсь :) Мой прошлый комментарий к тому, что если некое приложение мониторит список запущенных процессов, то точно также будет мониторить буфер обмена, т.е. если компьютер скомпрометирован, то защищаться от списка процесс нет смысла. К тому же, в этом случае можно напрямую читать записи через сам KeePass.

          В итоге, опасность передачи пароля через командую строку не так страшна.


          1. MrJeos
            06.07.2016 07:24

            А если при падении приложения в логах будет записано, с какими параметрами это приложение запускали?


  1. Impet
    04.07.2016 18:03
    -1

    А база Keepass это текстовый или бинарный файл?
    Т.е. можно ли хранить базу Keepass например в SVN и смотреть историю изменений с помощью BeyondCompare?


    1. chelaxe
      04.07.2016 18:12

      Она шифруется. Бинарная. Без шифрования не создается.


      1. chelaxe
        05.07.2016 07:49

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


    1. Stalker_RED
      04.07.2016 18:53

      Теоретически, можно экспортировать во что-то текстовое и смотреть. Но зачем, если есть и история изменений и синхронизация?


    1. napa3um
      04.07.2016 19:30

      Если хочется хранить базу паролей в VCS (но в Git, а не в SVN), чтобы все изменения отслеживать «по-взрослому», можете попробовать https://www.passwordstore.org/ (там ссылки на клиентов для всех платформ, сам изредка использую линуксовую и андроидную версии).


  1. ifaustrue
    04.07.2016 19:25

    Я правильно понимаю, что данная база персональная, а не средство массового (всеми админами) пользования? В смысле один админ — один файлик, никакого шаринга паролей или прочих секретных записей не предполагается?


    1. rinx
      04.07.2016 21:36

      из моего опыта можно использовать как в личных целях, так и в целях группы команды:
      1. Личное использование. У меня, например, есть личный файл с личными паролями, который лежит на Dropbox(конечно же файл закрыт мастер ключом) и при изменении его и добавлении паролей, он синхронизируется с Dropbox и выкладывается в облако(таким образом решаю вопрос резервного копирования файла и возможность пользоваться им где угодно, где есть интернет — даже есть клиент для Android(он умеет забирать базу KeePass с DropBox) — пригождалось пару раз).
      2. Использование в команде. На работе с коллегами используем общую базу для доступа к большой инфраструктуре заказчика с тысячами устройств. База спокойно лежит на шаре и закыта мастер-ключом.


      1. ifaustrue
        04.07.2016 22:09

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


        1. Verdel
          04.07.2016 22:42
          +1

          А какое именно ПО используете ни подскажете. Мы в итоге остановились на teampass. Но это тоже не фонтан на самом деле.


        1. kromel
          05.07.2016 06:17
          +1

          Вам надо было сделать мастер базу и копии. И всем синхронизироваться с мастер

          http://keepass.info/help/kb/trigger_examples.html#dbsync

          image


  1. helg1978
    04.07.2016 19:36

    можно ли вместо cmd прикрутить powershell?


    1. kromel
      05.07.2016 13:02

      Прикрутить можно что угодно. Лишь бы была поддержка командной строки. На вскидку что у мне прикручено

      1. ssh
      2. winscp
      3. VPN клиенты. По клику VPN подключение готово


  1. schetilin
    04.07.2016 21:41

    Я пользуюсь DropBox для синхронизации .kdbx файла (база данных KeePass) между устройствами. Очень удобно, есть интернет — синхронизируется, нет интернета — используется локальная база. Жаль что нет встроенного механизма синхронизациию


    1. chelaxe
      05.07.2016 08:00

      ну я не стал DropBox доверять и храню все в OwnCloud`е сейчас планирую переезд на NextCloud


    1. kromel
      05.07.2016 08:15

      http://keepass.info/help/kb/trigger_examples.html#dbsync


  1. iXCray
    04.07.2016 21:53
    -1

    Keepass еще живы после всех новостей о взломах и дырах?
    Мы тыкали его в прошлом году, возникли дикие трудности при администрировании и синхронизации + понадобилось отслеживание прав, у кого какие пароли-логины есть и кому видны… теперь пользуемся Thycotic Secret Server… на https://thycotic.com/ можно загрузить вообще бесплатную версию, которую можно поставить на любой облачный IIS, и все — никакой синхронизации и прочей головной боли + логи + запуск приложений + прокидывание сессий + хранение private key для ssh.


    1. cmepthuk
      04.07.2016 22:15
      +4

      Можно ли чуть подробнее о взломах и дырах?


      1. cmepthuk
        04.07.2016 22:30
        +1

        То что нашлось — это DLL injection на уже скомпрометированной машине с авторизованным keepass и MitM во время обновления софтины что, разумеется, не приятно, но врятли можно назвать причиной отказа от использования


        1. Antelle
          05.07.2016 07:59

          Справедливости ради — mitm при проверке обновлений таки пофиксили в последней версии.


      1. iXCray
        04.07.2016 22:41

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


        1. HunterXXI
          05.07.2016 09:55
          -1

          фиксится отключением автоматического обновления. ну у всех бывают дыры, мда.


        1. VitalKoshalew
          05.07.2016 10:28
          +3

          Это называется «слышал звон да не знаю, где он». Весь MitM там был (уже и это пофикшено) в сообщении программе, что уже есть новая версия, за которой она пошлёт пользователя вручную её скачивать с официального вебсайта. О, да — это, конечно же, «незащищенный канал связи с внешним миром до ноутбука администратора»!

          Про «эксплойты и трояны, заточенные под него, которые успешно вскрывают базы Keepass», это, конечно, про единственный PoC KeeFarce, который перехватывает расшифрованную базу из памяти, если компьютер администратора уже заражён.
          Да, вектор атаки есть такой, но он один и достаточно сложный — нужен полный доступ к компьютеру админа.

          А вот перечислять векторы атаки на Thycotic можно очень долго: это все атаки на IIS, атаки на ASP.NET код самого Thycotic, атаки на Windows на веб-сервере, атаки на компьютеры пользователей, включая браузер, фишинг и реальный MitM (прокси-сервер с доверенным корневым сертификатом и т.д.)…

          С сервера (или из резервной копии) нужно украсть один файлик — «encryption.config», после чего можно идти читать всю базу без всяких DLL injection. Мастер-пароль KeePass хотя бы не хранится в файле на диске.

          Охранять сервер с Thycotic нужно как зеницу ока, при этом к нему должны иметь доступ множество людей (или заводить отдельный сервер для каждого уровня доступа?). «Главный» админ (или админы) всё равно всё сможет прочитать в обход всех журналов аудита, вытянув encryption.config и базу не с прода, так из бэкапа. Если сервер в AD, то все, кто могут на него полиси поставить, опять же, могут получить encryption.config. Резервные копии сервера нужно делать? Тот, кто к ним имеет доступ и может их расшифровать, будет иметь все пароли. Админ WSUS? Не проблема сделать ручной пакет обновлений. Даже админ антивируса, в некоторых случаях, может, наверное, как-то заставить антивирус файлик этот взять «для анализа». Все эти люди в случае KeePass не будут иметь доступа — пусть даже они смогут украсть .kbdx — он зашифрован, ключ им неизвестен.

          Остаются админы филиалов и прочие, которые доступа к центральной инфраструктуре не имеют? Им хватит AD/RADIUS/TACACS, зачем изобретать велосипед?

          При этом нам надо дать полнейшие права серверу Thycotic на полный доступ ко всей абсолютно инфраструктуре. Если даже в конторе 2 человека всего IT: сисадмин и сетевой админ, и то ни у одного из них не будет такого доступа, который требуется Thycotic. В больших организациях такой доступ из одной точки вовсе немыслим.

          В конце концов, в случае катастрофы в инфраструктуре админам останется только сидеть и кусать локти, если доступа к северу Thycotic нет.

          Но для проверок всё очень красиво с Thycotic — логи аудита, ролевой доступ, автоматическая ротация паролей — аудиторы и менеджеры будут в восторге. А кому надо — все пароли получат без всяких записей в логи.


    1. Ilirium
      05.07.2016 08:37
      +1

      Сам не сисадмин, так что не задумывался, что нужны разные фичи для командной работы. Но согласитесь, предлагаемое вами решение совершенно другого класса. Всё таки основная аудитория KeePass — простые пользователи или админы-одиночки.


  1. iteksys
    04.07.2016 22:45

    Хотя речь идет о KeePass, не могу не поделиться своим опытом с KeePassX, которая по-сути является кроссплатформенным портом. Выбрали ее именно из-за кроссплатформенности: программа корректно работает под win, mac, linux и android. Сами файлы храним в owncloud, что позволяет управлять доступом к базе и иметь к ней доступ как с рабочих мест, так и с мобильных устройств. Кстати, хранение версий есть в ownclowd, а в самой программе, при изменении пароля автоматически создается папка Backup, где сохраняются старые пароли. Пожалуй, единственный момент — это обновление паролей: файл приходится перечитывать, но с этим можно мириться.


  1. Adnako
    05.07.2016 00:05

    > Все мы храним или хранили пароли от сетевых устройств в excel файлах
    Нет, не все.


  1. kromel
    05.07.2016 06:12

    У меня все почти то же самое, но пару замечаний.

    <> не требуется. Линки и так выставляются.

    image

    cmd://{APPDIR}\putty.lnk -ssh -l {USERNAME} -pw {PASSWORD} {S:IP}
    cmd://{APPDIR}\winscp.lnk scp://{USERNAME}:{PASSWORD}@{S:IP}

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


    1. cmepthuk
      05.07.2016 09:11

      Одна из самых удобных "фич" — это хоткей ctrl + u для открытия уже авторизованного терминала. Как в таком случаете вы используете winscp?


      1. kromel
        05.07.2016 12:53
        +1

        Ctrl + U откроет ссылку указанную в поле URL. остальные по клики.

        Фича тут в том, что на один аккаунт можно повесить разные сервисы и команды без необходимости плодить записи.


        1. Zakhar0v
          11.11.2016 18:21

          А эталона, относительно которого можно измерять при любых условиях, у нас, как я понимаю, нет и не предвидится, или чтото есть?

          Зануда mode
          Когда учился в школе, за слова «это когда», в определениях, можно было сразу получить два.


  1. SyCraft
    05.07.2016 09:19

    Спасибо! очень интересно