Пример базы Keepass для сетевого администратора



    Все мы храним или хранили пароли от сетевых устройств в 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 приложение. Отключайте автоматичекое обновление или скачайте самую свежую версию приложения, где эту уязвимость пофиксили.
    Share post

    Comments 52

      +2
      Почти такое же было https://habrahabr.ru/post/303894/
        +1
        у меня статья больше про шаблон хранения, я просто прелагаю один из способов использования приложения, который мне кажется удобным.
        перезапись URL это отдельная тема.
        0
        ИМХО очень любопытно.
        Вопрос к автору: Какие могут быть идеи в ситуации когда есть команда из админов 4-5 чел распределенных по стране?!
          –1
          синхронизация изменений в keepass присуствует, так что он подходит для общей работы.
          я имею опыт использования keepass на googledrive и dropbox, но это конечно же моветон.
          обычной расшареной для админов папки будет достаточно.
            +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 секунд, но это не кажется критичным

              0
              В случае с шарой, будут возникать блокировки или дубли базы при одновременном использовании. Есть способы решить?
                0
                Посмотрите в сторону Teampass. В организации используем его и претензий особых пока нет.
                  0
                  Последние версии кипаса поддерживают работу нескольких пользователей. Если возникает конфликт, то выводит диалог с вариантами действий (переписать, отменить). Ориентируется по дате изменения записи.
                +2
                Какие могут быть идеи в ситуации когда есть команда из админов 4-5 чел распределенных по стране?!

                По-хорошему, не должно быть ситуации, когда у 5 админов одна и та же база паролей. У всех должны быть персональные учетки для всего оборудования и сервисов, и тогда каждый может вести такую свою базу индивидуально. Ну, в идеале конечно.
                  0
                  Есть прекрасный password vault под названием pass.
                  Хранит пароли в текстовых файлах зашифрованных pgp в git репозитории. При правильном подходе достаточно безопасно и удобно. Чужие изменения просто так не потерять и всегда есть история изменений. Смарт карта с NFC и USB (например Yubikey) позволяет не вводить длинный и сложный пароль от приватного ключа pgp ни на компьютере, ни на телефоне и не хранить его (ключь) ни на том ни на другом даже в зашифрованном виде.
                  +6
                  Есть еще плагин KeeAgent, позволяет хранить ssh ключи прямо в базе и отдает их в Putty по запросу (как pageant).
                    +4
                    Не опасно ли передавать пароль ключом командной строки? Ведь тогда все приложения, видящие список процессов, могут без проблем получить его.
                      –2
                      а такое действительно возможно?
                        +1
                        Еще бы http://my.jetscreenshot.com/226/20160704-phoa-275kb
                          0
                          и действительно… ну тогда лучше перейти с паролей на ssh ключи.
                          опять же, на сколько сложно злоумышленнику получить доступ к списку процессов?
                          0
                          Из статьи по ссылке в первом комментарии: habrahabr.ru/post/303894/#comment_9671082
                          0
                          Кажется, что, если список процессов доступен посторонним, то уже ничего не спасет.
                            0

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

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

                                В итоге, опасность передачи пароля через командую строку не так страшна.
                                  0
                                  А если при падении приложения в логах будет записано, с какими параметрами это приложение запускали?
                            –1
                            А база Keepass это текстовый или бинарный файл?
                            Т.е. можно ли хранить базу Keepass например в SVN и смотреть историю изменений с помощью BeyondCompare?
                              0
                              Она шифруется. Бинарная. Без шифрования не создается.
                                0
                                Думаю можно попробовать создать плагин для шифрования. В нем как раз не делать шифрования и хранить все красиво. Вот только хранить без шифрования гору паролей мне кажется это критично.
                                0
                                Теоретически, можно экспортировать во что-то текстовое и смотреть. Но зачем, если есть и история изменений и синхронизация?
                                  0
                                  Если хочется хранить базу паролей в VCS (но в Git, а не в SVN), чтобы все изменения отслеживать «по-взрослому», можете попробовать https://www.passwordstore.org/ (там ссылки на клиентов для всех платформ, сам изредка использую линуксовую и андроидную версии).
                                  0
                                  Я правильно понимаю, что данная база персональная, а не средство массового (всеми админами) пользования? В смысле один админ — один файлик, никакого шаринга паролей или прочих секретных записей не предполагается?
                                    0
                                    из моего опыта можно использовать как в личных целях, так и в целях группы команды:
                                    1. Личное использование. У меня, например, есть личный файл с личными паролями, который лежит на Dropbox(конечно же файл закрыт мастер ключом) и при изменении его и добавлении паролей, он синхронизируется с Dropbox и выкладывается в облако(таким образом решаю вопрос резервного копирования файла и возможность пользоваться им где угодно, где есть интернет — даже есть клиент для Android(он умеет забирать базу KeePass с DropBox) — пригождалось пару раз).
                                    2. Использование в команде. На работе с коллегами используем общую базу для доступа к большой инфраструктуре заказчика с тысячами устройств. База спокойно лежит на шаре и закыта мастер-ключом.
                                      0
                                      Вот второй сценарий с KeepPass у нас в команде не прижился. База с паролями постоянно перетиралась (так как была у кого-то открыта), изменения не сохранялись так как файл постоянно был залочен у кого-то. Плохо что файл у этого софта — это не база данных в классическом понимании, это бы многое решило. В итоге мы используем веб версию похожей утилиты.
                                        +1
                                        А какое именно ПО используете ни подскажете. Мы в итоге остановились на teampass. Но это тоже не фонтан на самом деле.
                                          +1
                                          Вам надо было сделать мастер базу и копии. И всем синхронизироваться с мастер

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

                                          image

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

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

                                        0
                                        Я пользуюсь DropBox для синхронизации .kdbx файла (база данных KeePass) между устройствами. Очень удобно, есть интернет — синхронизируется, нет интернета — используется локальная база. Жаль что нет встроенного механизма синхронизациию
                                          0
                                          ну я не стал DropBox доверять и храню все в OwnCloud`е сейчас планирую переезд на NextCloud
                                            0
                                            http://keepass.info/help/kb/trigger_examples.html#dbsync
                                            –1

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

                                              +4

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

                                                +1

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

                                                  0

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

                                                  0

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

                                                    –1
                                                    фиксится отключением автоматического обновления. ну у всех бывают дыры, мда.
                                                      +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
                                                    Сам не сисадмин, так что не задумывался, что нужны разные фичи для командной работы. Но согласитесь, предлагаемое вами решение совершенно другого класса. Всё таки основная аудитория KeePass — простые пользователи или админы-одиночки.
                                                    0
                                                    Хотя речь идет о KeePass, не могу не поделиться своим опытом с KeePassX, которая по-сути является кроссплатформенным портом. Выбрали ее именно из-за кроссплатформенности: программа корректно работает под win, mac, linux и android. Сами файлы храним в owncloud, что позволяет управлять доступом к базе и иметь к ней доступ как с рабочих мест, так и с мобильных устройств. Кстати, хранение версий есть в ownclowd, а в самой программе, при изменении пароля автоматически создается папка Backup, где сохраняются старые пароли. Пожалуй, единственный момент — это обновление паролей: файл приходится перечитывать, но с этим можно мириться.
                                                      0
                                                      > Все мы храним или хранили пароли от сетевых устройств в excel файлах
                                                      Нет, не все.
                                                        0
                                                        У меня все почти то же самое, но пару замечаний.

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

                                                        image

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

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

                                                          0

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

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

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

                                                              Эвоно как, и кликать на них в поле описания записи, а не вызывать по хоткею? Спасибо!

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

                                                          Only users with full accounts can post comments. Log in, please.