Настраиваем URL Overrides в Keepass2

в 4:49, , рубрики: FreeRDP, keepass, keepass2, open source, password manager, rdp, remmina, ssh, vnc, информационная безопасность, менеджер паролей, Настройка Linux, пароли, системное администрирование, удобство работы, метки: ,

Настраиваем URL Overrides в Keepass2 - 1

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

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

Функция называется "URL Overrides", и представляет ссобой возможность запускать ассоциированные с записями программы и передавать им данные для аутентификации прямо из Keepass'а.

Например, вы можете хранить в keepass'е список учеток для подключения к удаленному серверу, а в определенный момент выбрать нужную и простым нажатием Ctrl+U, запустить клиент удаленного подключения, и моментально получить доступ к вашему серверу.
Это очень удобно, так как все логины и пароли не хранятся абы где, а надежно зашифрованны в вашей базе keepass и передаются программе-клиенту только в момент подключения.

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

Как это работает? (GIF 2.4M)

Настраиваем URL Overrides в Keepass2 - 2

Должен признаться, изначально я планировал написать статью только про настройку keepas на Linux, но по ходу написания накопилось достаточно материала и для Windows-пользователей.
Решил не обделять большую часть пользователей более популярной ОС столь занятным материалом.
Для каждого протокола я указал комманды работающие как под windows так и под linux

Итак приступим:

Создание записей

Для того чтобы keepass знал к какому протоколу соответствует ваша запись, вам следует использовать ссылки вида rdp://server, ssh://server, ftp://server

Настройка Keepass2

Для того чтобы keepass знал какие и как именно нужно запускать программы для этих протоколов, вам нужно настроить обработчик ссылок.
Для этого перейдем в Tools --> Options --> Integraion --> URL Overrides... и настроим протоколы:

SSH

[windows] PuTTY

  • Scheme: ssh://
  • Command:
    cmd://"{ENV_PROGRAMFILES_X86}PuTTYputty.exe" -ssh "{USERNAME}@{URL:RMVSCM}" -pw {BASE:PORT} -pw "{PASSWORD}"

[linux] OpenSSH Client

  • Scheme: ssh://
  • Command:
    cmd://xterm -e sshpass -p {PASSWORD} ssh -o StrictHostKeyChecking=no {USERNAME}@{BASE:RMVSCM}

Вам нужно установить пакет sshpass
Вместо xterm можете подставить ваш любимый эмулятор терминала

RDP

[windows] MSTSC

  • Scheme: rdp://
  • Command:
    cmd://cmd /c "cmdkey /generic:TERMSRV/{URL:RMVSCM} /user:{USERNAME} /pass:{PASSWORD} && mstsc /v:{URL:RMVSCM} && timeout /t 5 /nobreak && cmdkey /delete:TERMSRV/{URL:RMVSCM}"

За решение спасибо Valiant с bitcollectors.com

[linux] Remmina

  • Scheme: rdp://
  • Command:
    cmd://bash -c "FILE=/tmp/connect.remmina ; echo -en '[remmina]nname={TITLE}nprotocol=RDPnserver={BASE:RMVSCM}nscale=1nusername={USERNAME}npassword='`remmina-encode-password.py {PASSWORD}` > $FILE ; remmina -c $FILE ; rm -f $FILE"

так же нам понадобится установить небольшой вспомогательный скрипт:

curl -o /usr/local/bin/remmina-encode-password.py https://raw.githubusercontent.com/kvaps/keepass2-url-overriddes/master/remmina/remmina-encode-password.py
chmod +x /usr/local/bin/remmina-encode-password.py

VNC

[windows] RealVNC

  • Scheme: vnc://
  • Command:
    java -jar "{ENV_PROGRAMFILES}tightvnc-jviewer.jar" -user="{USERNAME}" -password="{PASSWORD}" {BASE:RMVSCM}

Сохраните tightvnc-jviewer.jar в C:Program Filestightvnc-jviewer.jar.

[linux] Remmina

  • Scheme: vnc://
  • Command:
    cmd://bash -c "FILE=/tmp/connect.remmina ; echo -en '[remmina]nname={TITLE}nprotocol=VNCnserver={BASE:RMVSCM}nscale=1nusername={USERNAME}npassword='`remmina-encode-password.py {PASSWORD}` > $FILE ; remmina -c $FILE ; rm -f $FILE"

Нам все так же требуется небольшой вспомогательный скрипт, про который я писал выше

curl -o /usr/local/bin/remmina-encode-password.py https://raw.githubusercontent.com/kvaps/keepass2-url-overriddes/master/remmina/remmina-encode-password.py
chmod +x /usr/local/bin/remmina-encode-password.py

SAMBA

[windows] Explorer

  • Scheme: smb://
  • Command:
    cmd://cmd /c "net use "{URL:RMVSCM}" /user:"{USERNAME}" "{PASSWORD}" && start \{URL:RMVSCM}"

[linux] Dolphin

  • Scheme: smb://
  • Command:
    cmd://dolphin 'smb://{USERNAME}:{PASSWORD}@{BASE:RMVSCM}'

[linux] Nautilus / Thunar

  • Scheme: smb://
  • Command:
    echo '{PASSWORD}' | gvfs-mount smb://{USERNAME}@{BASE:RMVSCM} && nautilus smb://{USERNAME}@{BASE:RMVSCM} 

Для Thunar команда будет такая же, достаточно заменить nautilus на thunar.

FTP

[windows] FileZilla FTP Client

  • Scheme: ftp://
  • Command:
    cmd://"{ENV_PROGRAMFILES_X86}FileZilla FTP Clientfilezilla.exe" 'ftp://{USERNAME}:{PASSWORD}@{BASE:RMVSCM}'

[windows] Windows Explorer

  • Scheme: ftp://
  • Command:
    cmd://"explorer.exe" 'ftp://{USERNAME}:{PASSWORD}@{BASE:RMVSCM}'

[linux] FileZilla FTP Client

  • Scheme: ftp://
  • Command:
    cmd://filezilla 'ftp://{USERNAME}:{PASSWORD}@{BASE:RMVSCM}'

[linux] Dolphin

  • Scheme: ftp://
  • Command:
    cmd://dolphin 'ftp://{USERNAME}:{PASSWORD}@{BASE:RMVSCM}'

[linux] Nautilus / Thunar

  • Scheme: smb://
  • Command:
    echo '{PASSWORD}' | gvfs-mount ftp://{USERNAME}@{BASE:RMVSCM} && nautilus ftp://{USERNAME}@{BASE:RMVSCM} 

Для Thunar команда будет такая же, достаточно заменить nautilus на thunar.

TeamViewer

[windows] TeamViewer

  • Scheme: teamviewer://
  • Command:
    "{ENV_PROGRAMFILES_X86}TeamViewerTeamViewer.exe" -i "{USERNAME}" --Password "{PASSWORD}"

[linux] TeamViewer

  • Scheme: teamviewer://
  • Command:
    teamviewer -i "{USERNAME}" --Password "{PASSWORD}"

Winbox

[windows] Winbox

  • Scheme: winbox://
  • Command:
    cmd://{ENV_PROGRAMFILES_X86}winbox.exe '{BASE:RMVSCM}' '{USERNAME}' '{PASSWORD}'

Сохраните winbox.exe в C:Program Files (x86)winbox.exe.

[linux] Winbox

  • Scheme: winbox://
  • Command:
    cmd://winbox '{BASE:RMVSCM}' '{USERNAME}' '{PASSWORD}'

Я использую пакет winbox из AUR.

Заключение

Примеров я думаю предостаточно. На этом пожалуй все.
Теперь, выбрав нужную запись и нажав Ctrl+U, вы сразу подключитесь куда нужно. И вам не придется сохранять пароли где-то еще.
Для более экзотических случаев вы всегда можете написать свой обработчик, вам лишь достаточно узнать параметры запуска нужной вам программы и отразить их в команде.

Пара ссылок по теме:

Если есть какие-то пожелания/дополнения пишите их в коментарии или на Github.
Благодарю за внимание.

Автор: kvaps

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js