Все мы храним или хранили пароли от сетевых устройств в 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)
JTProg
04.07.2016 16:07ИМХО очень любопытно.
Вопрос к автору: Какие могут быть идеи в ситуации когда есть команда из админов 4-5 чел распределенных по стране?!HunterXXI
04.07.2016 16:10-1синхронизация изменений в keepass присуствует, так что он подходит для общей работы.
я имею опыт использования keepass на googledrive и dropbox, но это конечно же моветон.
обычной расшареной для админов папки будет достаточно.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 секунд, но это не кажется критичным
Dee3
04.07.2016 23:49В случае с шарой, будут возникать блокировки или дубли базы при одновременном использовании. Есть способы решить?
F1RST
05.07.2016 05:53Посмотрите в сторону Teampass. В организации используем его и претензий особых пока нет.
bankinobi
05.07.2016 09:36Последние версии кипаса поддерживают работу нескольких пользователей. Если возникает конфликт, то выводит диалог с вариантами действий (переписать, отменить). Ориентируется по дате изменения записи.
ls1
05.07.2016 08:30+2Какие могут быть идеи в ситуации когда есть команда из админов 4-5 чел распределенных по стране?!
По-хорошему, не должно быть ситуации, когда у 5 админов одна и та же база паролей. У всех должны быть персональные учетки для всего оборудования и сервисов, и тогда каждый может вести такую свою базу индивидуально. Ну, в идеале конечно.
EvgK
11.11.2016 23:18Вообще, вместо неверно интерпретированного эксперимента из статьи, рекомендую почитать про другой. Он называется «квантовый ластик с отложенным выбором». Смысл его такой: сигнальные фотоны точно так же как в экперименте из статьи идут на экран и образуют хаотическую картину. Холостые же подвергаются определенным манипуляциям и попадают (гораздо позже, хоть через 100 лет), в один из двух детекторов. Если они попали в детектор А, то невозможно определить, по какому пути они шли. Если взять все сигнальные фотоны, соответствующие холостым из А, то мы увидим полосы (интерференцию), среди хаоса изначальной картины. Слово ластик в названии отражает тот факт, что путем манипуляций информация о том, какой путь выбрал фотон была «стерта», и вот в этом случае мы наконец видим интерференцию (но только для части фотонов, все вместе они по прежнему выглядят случайно).
MikalaiR
04.07.2016 16:10+6Есть еще плагин KeeAgent, позволяет хранить ssh ключи прямо в базе и отдает их в Putty по запросу (как pageant).
MrJeos
04.07.2016 17:26+4Не опасно ли передавать пароль ключом командной строки? Ведь тогда все приложения, видящие список процессов, могут без проблем получить его.
HunterXXI
04.07.2016 17:33-2а такое действительно возможно?
athacker
04.07.2016 19:35Из статьи по ссылке в первом комментарии: habrahabr.ru/post/303894/#comment_9671082
Ilirium
05.07.2016 08:29Буфер обмена тоже доступен (всем?) приложениям, запущеным на компьютере.
HunterXXI
05.07.2016 09:51да доступен. keepass автоматически чистит буфер по истечении нескольких секунд (время можно настраивать).
по сравнению с excel это намного лучше :)Ilirium
05.07.2016 11:00Да, я знаю, сам пользуюсь :) Мой прошлый комментарий к тому, что если некое приложение мониторит список запущенных процессов, то точно также будет мониторить буфер обмена, т.е. если компьютер скомпрометирован, то защищаться от списка процесс нет смысла. К тому же, в этом случае можно напрямую читать записи через сам KeePass.
В итоге, опасность передачи пароля через командую строку не так страшна.MrJeos
06.07.2016 07:24А если при падении приложения в логах будет записано, с какими параметрами это приложение запускали?
Impet
04.07.2016 18:03-1А база Keepass это текстовый или бинарный файл?
Т.е. можно ли хранить базу Keepass например в SVN и смотреть историю изменений с помощью BeyondCompare?Stalker_RED
04.07.2016 18:53Теоретически, можно экспортировать во что-то текстовое и смотреть. Но зачем, если есть и история изменений и синхронизация?
napa3um
04.07.2016 19:30Если хочется хранить базу паролей в VCS (но в Git, а не в SVN), чтобы все изменения отслеживать «по-взрослому», можете попробовать https://www.passwordstore.org/ (там ссылки на клиентов для всех платформ, сам изредка использую линуксовую и андроидную версии).
ifaustrue
04.07.2016 19:25Я правильно понимаю, что данная база персональная, а не средство массового (всеми админами) пользования? В смысле один админ — один файлик, никакого шаринга паролей или прочих секретных записей не предполагается?
rinx
04.07.2016 21:36из моего опыта можно использовать как в личных целях, так и в целях группы команды:
1. Личное использование. У меня, например, есть личный файл с личными паролями, который лежит на Dropbox(конечно же файл закрыт мастер ключом) и при изменении его и добавлении паролей, он синхронизируется с Dropbox и выкладывается в облако(таким образом решаю вопрос резервного копирования файла и возможность пользоваться им где угодно, где есть интернет — даже есть клиент для Android(он умеет забирать базу KeePass с DropBox) — пригождалось пару раз).
2. Использование в команде. На работе с коллегами используем общую базу для доступа к большой инфраструктуре заказчика с тысячами устройств. База спокойно лежит на шаре и закыта мастер-ключом.ifaustrue
04.07.2016 22:09Вот второй сценарий с KeepPass у нас в команде не прижился. База с паролями постоянно перетиралась (так как была у кого-то открыта), изменения не сохранялись так как файл постоянно был залочен у кого-то. Плохо что файл у этого софта — это не база данных в классическом понимании, это бы многое решило. В итоге мы используем веб версию похожей утилиты.
Verdel
04.07.2016 22:42+1А какое именно ПО используете ни подскажете. Мы в итоге остановились на teampass. Но это тоже не фонтан на самом деле.
kromel
05.07.2016 06:17+1Вам надо было сделать мастер базу и копии. И всем синхронизироваться с мастер
http://keepass.info/help/kb/trigger_examples.html#dbsync
schetilin
04.07.2016 21:41Я пользуюсь DropBox для синхронизации .kdbx файла (база данных KeePass) между устройствами. Очень удобно, есть интернет — синхронизируется, нет интернета — используется локальная база. Жаль что нет встроенного механизма синхронизациию
chelaxe
05.07.2016 08:00ну я не стал DropBox доверять и храню все в OwnCloud`е сейчас планирую переезд на NextCloud
iXCray
04.07.2016 21:53-1Keepass еще живы после всех новостей о взломах и дырах?
Мы тыкали его в прошлом году, возникли дикие трудности при администрировании и синхронизации + понадобилось отслеживание прав, у кого какие пароли-логины есть и кому видны… теперь пользуемся Thycotic Secret Server… на https://thycotic.com/ можно загрузить вообще бесплатную версию, которую можно поставить на любой облачный IIS, и все — никакой синхронизации и прочей головной боли + логи + запуск приложений + прокидывание сессий + хранение private key для ssh.cmepthuk
04.07.2016 22:15+4Можно ли чуть подробнее о взломах и дырах?
cmepthuk
04.07.2016 22:30+1То что нашлось — это DLL injection на уже скомпрометированной машине с авторизованным keepass и MitM во время обновления софтины что, разумеется, не приятно, но врятли можно назвать причиной отказа от использования
iXCray
04.07.2016 22:41MitM — это популярный метод взлома, и он не просто неприятен, а критически опасен при условии работы в масштабах компании — считай незащищенный канал связи с внешним миром до ноутбука администратора, ну и эксплойты и трояны, заточенные под него, которые успешно вскрывают базы Keepass, что делает его абсолютно невозможным для использования в рамках идей синхронизации через DropBox, не говоря уже о том, что количество точек утечки равно количеству машин, с которых работают синхронизирующиеся копии.
HunterXXI
05.07.2016 09:55-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 — логи аудита, ролевой доступ, автоматическая ротация паролей — аудиторы и менеджеры будут в восторге. А кому надо — все пароли получат без всяких записей в логи.
Ilirium
05.07.2016 08:37+1Сам не сисадмин, так что не задумывался, что нужны разные фичи для командной работы. Но согласитесь, предлагаемое вами решение совершенно другого класса. Всё таки основная аудитория KeePass — простые пользователи или админы-одиночки.
iteksys
04.07.2016 22:45Хотя речь идет о KeePass, не могу не поделиться своим опытом с KeePassX, которая по-сути является кроссплатформенным портом. Выбрали ее именно из-за кроссплатформенности: программа корректно работает под win, mac, linux и android. Сами файлы храним в owncloud, что позволяет управлять доступом к базе и иметь к ней доступ как с рабочих мест, так и с мобильных устройств. Кстати, хранение версий есть в ownclowd, а в самой программе, при изменении пароля автоматически создается папка Backup, где сохраняются старые пароли. Пожалуй, единственный момент — это обновление паролей: файл приходится перечитывать, но с этим можно мириться.
Adnako
05.07.2016 00:05> Все мы храним или хранили пароли от сетевых устройств в excel файлах
Нет, не все.
kromel
05.07.2016 06:12У меня все почти то же самое, но пару замечаний.
<> не требуется. Линки и так выставляются.
cmd://{APPDIR}\putty.lnk -ssh -l {USERNAME} -pw {PASSWORD} {S:IP}
cmd://{APPDIR}\winscp.lnk scp://{USERNAME}:{PASSWORD}@{S:IP}
PATH я не использую. Ставлю линки, так как использую базу на разных машинах переодично и легко указаваю пути линками.
cmepthuk
05.07.2016 09:11Одна из самых удобных "фич" — это хоткей
ctrl + u
для открытия уже авторизованного терминала. Как в таком случаете вы используете winscp?kromel
05.07.2016 12:53+1Ctrl + U откроет ссылку указанную в поле URL. остальные по клики.
Фича тут в том, что на один аккаунт можно повесить разные сервисы и команды без необходимости плодить записи.Zakhar0v
11.11.2016 18:21А эталона, относительно которого можно измерять при любых условиях, у нас, как я понимаю, нет и не предвидится, или чтото есть?
Зануда modeКогда учился в школе, за слова «это когда», в определениях, можно было сразу получить два.
k3NGuru
Почти такое же было https://habrahabr.ru/post/303894/
HunterXXI
у меня статья больше про шаблон хранения, я просто прелагаю один из способов использования приложения, который мне кажется удобным.
перезапись URL это отдельная тема.