В нескольких предыдущих статьях данного раздела, мы более-менее раскрыли тему протокола SSH, настройку и использование SSH сервера и SSH клиента в операционной системе FreeBSD. В данной статье хотелось-бы рассказать об SSH аутентификации на основе пар ключей, заодно рассмотреть остальные программы из пакета программного обеспечения, протокола SSH, под FreeBSD. Итак, нужно это в первую очередь для удобства, при удаленном администрировании серверов, не нужно вводить пароль при каждом подключении, и в определенной степени более безопасно, нежели подключаться к удаленной машине только по паролю.
- С помощью программы ssh-keygen, должна быть сгенерирована пара ключей, публичный ключ ( public key ) и приватный ключ ( private key )
- Секретный ключ, всегда остается у клиента и никому никогда не показывается.
- Публичный ключ копируется на удаленный SSH сервер ( говорим опять-же в контексте операционной системы FreeBSD ) и кладется в специальный файл, известный SSH серверу. По-умолчанию, для хранения публичных ключей, используется файл ~/.ssh/authorized_keys. Файл для хранения ключей назначается в файле конфигурации SSH сервера, директивой AuthorizedKeysFile
- Клиент, отправляет SSH серверу свой публичный ключ и запрашивает аутентификацию по данному ключу.
- Сервер проверяет файл ~/.ssh/authorized_keys, если такой ключ найден, SSH сервер отправляет клиенту сообщение, зашифрованное найденным публичным ключом пользователя.
- Клиент должен расшифровать сообщение с помощью своего приватного ключа, если приватный ключ защищен паролем ( а так и должно быть всегда, в целях безопасности ), программа ssh, попросит пользователя ввести пароль, что-бы сначала расшифровать сам ключ.
- Если сообщение расшифровано, правильность публичного и приватного, ключей, считается подтвержденной и пользователю предоставляется доступ в систему.
Генерация ключей с помощью программы ssh-keygen.
Для создания и управления ключами, предназначена программа ssh-keygen, так-же входящая в пакет программного обеспечения OpenSSH. Полный список опций можно как всегда посмотреть командой man ssh-keygen. Здесь приведу лишь несколько из них: -t type ssh-keygen, работает с тремя типами ключей.
ProkMLM — это уникальная программа — генератор уникальных ключей
Возможные значения: RSA 1 — для протокола SSH версии 1. RSA — для протокола SSH версии 2. DSA — для протокола SSH версии 2. -b Длина ключа в битах. RSA — минимальная длина, 768 бит, длина ключа по-умолчанию, 2048 бит. DSA — длина 1024 бита. -i Данная опция используется для импорта ключей из одного формата ( например ключи сгенерированные программой PuTTYgen, для Windows ), в формат OpenSSH. -l Посмотреть отпечаток секретного ключа ( fingerprint ). -p Изменить секретную фразу приватного ключа. Сгенерируем пару RSA ключей, это рекомендуемый формат, как наиболее устойчивый к взлому. По-умолчанию, ключи, сохраняются в домашнюю директорию пользователя, в файлы ~/.ssh/id_rsa — приватный ( секретный ) ключ, и ~/.ssh/id_rsa.pub — публичный ключ.
Ключи Windows 10 по 10-12$ — Развод лохов на деньги
Вот собственно и все, сгенерирована пара ключей RSA, с длиной 4096 бит и сохранены в файлы /root/.ssh/id_rsa и /root/.ssh/id_rsa.pub.
Настройка SSH сервера на аутентификацию по открытому ключу.
SSH сервер естественно должен быть настроен на аутентификацию по ключам, приведу кусок, касающийся аутентификации, своего файла конфигурации, SSH сервера. Все что закомментировано в файле конфигурации SSH, отсюда убрал, для простоты восприятия:
PermitRootLogin yes Данная директива нужна, если вы планируете работать под учетной записью root. PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys RhostsRSAAuthentication no HostbasedAuthentication no PermitEmptyPasswords no UseLogin no
Теперь копируем публичный ключ на удаленный SSH сервер:
vds-admin /root/.ssh# cat id_rsa.pub | ssh 192.168.50.50 «cat >> ~/.ssh/authorized_keys»
Так как для копирования вы подключаетесь к SSH серверу, он запросит пароль, авторизацию по ключам-то мы еще не настроили. ) Я работал под учетной записью root, а без явного указания имени пользователя в командной строке или в конфигурационном файле SSH клиента, подключение происходит с именем текущего пользователя, то есть мне нужно было ввести пароль пользователя root, удаленной системы. После ввода пароля, публичный ключ будет добавлен в конец файла ~/.ssh/authorized_keys, так как мы подключаемся пользователем root, то путь ~/.ssh/authorized_keys указывает на директорию /root/.ssh/authorized_keys. Ключи сгенерированы и скопированы на SSH сервер, сервер соответствующим образом настроен, пробуем подключится:
vds-admin /root/.ssh# ssh 192.168.50.50 Enter passphrase for key ‘/root/.ssh/id_rsa’: Здесь вводим нашу секретную фразу, указанную при генерации ключей.
Если пароль на ключ введен верно, получаем доступ в удаленную систему.
Обратите внимание на следующий момент, с приведенным выше вариантом конфигурации SSH сервера, при неудачной аутентификации по ключам, например если неправильно ввести секретную фразу ключей, будет предложена аутентификация по паролю. Что-бы изменить это поведение и например вообще не пускать пользователя root иначе, как по ключам, можно изменить в конфигурационном файле сервера, значение директивы PermitRootLogin с yes на without-password.
Использование программы ssh-agent
Как было сказано выше, в целях безопасности, приватный ключ, всегда должен быть защищен секретной фразой ( паролем ), но это вызывает некоторые неудобства, вам придется вводить секретную фразу, каждый раз когда вы подключаетесь к удаленному серверу по ключу, было-бы гораздо проще ввести пароль на ключ один раз и пользоваться им сколько потребуется. На этот случай в пакете OpenSSH, существуют специальные программы ssh-agent и ssh-add, в общем-то вторая является дополнением первой.
Как это работает. Поле запуска программы ssh-agent, в нее добавляются расшифрованные ключи, то есть при добавлении она запросит секретную фразу ключа, для его дешифровки, и далее ssh-agent, будет выдавать уже расшифрованные ключи по запросу, например программе SSH. Запускать ssh-agent, можно двумя способами, со специальной опцией, говорящей, какой тип оболочки используется, или с помощью команды eval. Принципиальной разницы как его запускать, нет, просто в случае с опцией, вы должны точно знать, какую оболочку вы используете. ssh-agent -c Если в качестве оболочки используется С — Shell ssh-agent -s Если в качестве оболочки используется Bourne Shell eval `ssh-agent` В таком варианте запущенный ssh-agent, будет передан команде eval, которая выполнит его в текущей оболочке. Обратите внимание, используются обратные кавычки а не обычные ! Итак, запускаем ssh-agent:
vds-admin /root/.ssh# eval `ssh-agent` Agent pid 1982
При запуске, ssh-agent создает переменные окружения, проверим какие:
vds-admin /root/.ssh# env | grep SSH_A SSH_AUTH_SOCK=/tmp/ssh-7EeitdI5mr/agent.1981 В этой переменной хранится сокет, через который программа ssh, будет связываться с ssh-agent. SSH_AGENT_PID=1982 Это PID процесса ssh-agent
Теперь нужно поместить в него расшифрованные ключи, делается это с помощью программы ssh-add. Если запустить ее без аргументов, будут добавлены все ключи, найденные в стандартных местах их обитания, то есть будут просканированы следующие файлы, ~/.ssh/identify, ~/.ssh/id_rsa и /.ssh/id_dsa. Если ключ защищен парольной фразой, программа попросит ввести ее, что-бы расшифровать ключ и загрузить уже готовый к применению.
vds-admin /root/.ssh# ssh-add Enter passphrase for /root/.ssh/id_rsa: Запрос пароля на расшифровку Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
Теперь пробуем подключиться к удаленному SSH серверу:
vds-admin /root/.ssh# ssh 192.168.50.50 Last login: Tue Jul 7 18:45:27 2009 from .host. Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD 7.1-STABLE (SMP_KERNEL) #1: Tue Mar 10 18:14:59 UTC 2009 Welcome to FreeBSD!
Как видите пароль у нас больше никто не спрашивает, программа SSH, получает уже расшифрованный ключ от ssh-agent и мы успешно подключаемся к удаленному SSH серверу. Посмотреть отпечатки загруженных в ssh-agent ключей, можно той-же командой ssh-add с опцией -l, или целиком ключи, опцией -L.
vds-admin /root/.ssh# ssh-add -l 4096 56:79:b5:61:ea:19:70:13:a4:67:a2:af:15:11:db:b5 /root/.ssh/id_rsa (RSA) vds-admin /root/.ssh# ssh-add -L ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEArL0hIMmhw8rXeg0p72+EJXnC4iAY2XTkPAdTb3LnQb9bc0E5wvd cwCdNEtLlDIDCH+z0I1FaP3TfpvgVkv59X15TaNIeoB7uydqXvlLMOxpOJkfbc3eiA6a07PvZHMKXcIA0ZZ9+j12u l+HsGOK2qMQ5g52mOc6BOF1PVuoHfTR1C9nExv5UCA6h7e/v2wxq79pMW07nx7nshB5/1n5Gnyx+toQEzRiFbf zOJBB1ry/9NUF1DiBwOhKJVdEJBTUi0hyh/e77UAmVtkguEtjrsDEdxJ31sV21SL97EZHymMjRPjwU2nWjRkHf0Pi7 dlXBoCKRj3dQps38kwFd3m9Tu4+hXSnsF8FdxkX5y9XmN8Uz8UWR6O2zslr7xZubkDR3aCq1dtcbu2nkvC4+Vy TOxEdnaNqDlC6U6G6aUVKFc0Rb5dcPnqpKqUHWE8MlXq/obKMRjuSz+GOr1VgRe/wZM7/0GoO1Xrv2MDMhS+ S1uR+XkHkQr/EjTSxPiDZ92snZhtiyPIzTUZDOmclWHbe4gyvxDtU3Lxqzl3t1+Murg4sN1NrkZIHefMq2xeCOS8P bI89b3zJG2PJ3i2PSsOMviqIBOL3BBskGSWksJKi/YvvKwrlKaSM10wMZTbXHomgu+6jRd7cZtUOmU/FO0IoKejB MwuYbcPC+TCWBks0phU= /root/.ssh/id_rsa
Загружен один ключ, по которому мы подключались к удаленной машине. Кроме этого, при запуске ssh-add, можно указать путь до конкретного ключа, который необходимо загрузить, например:
vds-admin /root/.ssh# ssh-add /root/.ssh/id_rsa.new1 Enter passphrase for /root/.ssh/id_rsa.new1: Identity added: /root/.ssh/id_rsa.new1 (/root/.ssh/id_rsa.new1) Проверяем, что у нас теперь в ssh-agent: vds-admin /root/.ssh# ssh-add -l 4096 56:79:b5:61:ea:19:70:13:a4:67:a2:af:15:11:db:b5 /root/.ssh/id_rsa (RSA) 2048 68:81:38:fe:66:e8:05:88:8b:49:80:d2:d1:8b:bf:99 /root/.ssh/id_rsa.new1 (RSA) Загружено уже 2 ключа
Удаляются ключи из ssh-agent, так-же просто как и добавляются, для этого используется опция -d, без параметров, для удаления стандартных ключей, опция -d файл_ключа, если нужно удалить конкретный ключ, или опция -D, для удаления всех ключей, например:
vds-admin /root/.ssh# ssh-add -l 4096 56:79:b5:61:ea:19:70:13:a4:67:a2:af:15:11:db:b5 id_rsa (RSA) 2048 68:81:38:fe:66:e8:05:88:8b:49:80:d2:d1:8b:bf:99 id_rsa.new1 (RSA) 2048 c7:9f:b1:3b:c1:d0:61:15:38:27:d1:36:a7:49:55:cd id_rsa.new2 (RSA) vds-admin /root/.ssh# ssh-add -d id_rsa.new2 Identity removed: id_rsa.new2 (id_rsa.new2.pub) vds-admin /root/.ssh# ssh-add -l 4096 56:79:b5:61:ea:19:70:13:a4:67:a2:af:15:11:db:b5 id_rsa (RSA) 2048 68:81:38:fe:66:e8:05:88:8b:49:80:d2:d1:8b:bf:99 id_rsa.new1 (RSA) vds-admin /root/.ssh# ssh-add -D All identities removed. vds-admin /root/.ssh# ssh-add -l The agent has no identities.
Приведу список самых используемых опций программы ssh-add: ssh-add Без опций, добавляются стандартные ключи ssh-add имя файла Добавляются конкретный ключ -l Показывает отпечатки всех загруженных в данный момент ключей -L Посмотреть список самих ключей -D Из ssh-agent, будут удалены все ключи -d имя файла Удаляет конкретный ключ -t Установить время жизни ключей, через данный промежуток времени ключи будут выгружены. -x Заблокировать ssh-agent паролем -X Разблокировать ssh-agent Что-бы закрыть ssh-agent, можно вызвать его c опцией -k, ну или на крайний случай прибить сигналом, например kill -QUIT PID, но это крайняя мера и при корректном запуске, это не потребуется:
vds-admin /root/.ssh# ssh-agent -k unsetenv SSH_AUTH_SOCK; unsetenv SSH_AGENT_PID; echo Agent pid 1982 killed;
Как видите произошел обратный процесс, переменные очищены, процесс убит.
Форвардинг ssh-agent
- Клиент ssh c Local_host, подключается к SSH серверу, Remote_host, и запрашивает форвардинг для ssh-agent
- Сервер SSH, /usr/sbin/sshd, хоста Remote_host, создает сокет в /tmp/ssh-XXXXXXX/agent.##### и устанавливает переменную окружения SSH_AUTH_SOCK, присваивая ей путь к сокету.
- Когда нам понадобится подключиться к следующему серверу, ( мы сейчас на сервере Remote_host ), SSH клиент хоста Remote_host, обращается по пути, лежащему в переменной SSH_AUTH_SOCK, то есть к сокету.
- SSH сервер, находящийся на другом конце сокета /tmp/ssh-XXXXXXX/agent.#####, передает данные из ssh, сервера Remote_host, на ssh-agent, запущенный на хосте Local_host. Вся работа с ключами происходит на машине Local_host а не на машинах, на которых вы регистрируетесь в процессе работы.
- Теперь с хоста Remote_host, вы можете подключиться к хосту Next_remote_host, используя ключи, загруженные в ssh-agent, на хосте Local_host.
Программа PuTTy, клиент SSH под Windows.
- putty.exe — Программа, SSH, Telnet, Rlogin клиент;
- puttygen.exe — Утилита для генерации и конвертации ключей;
- pageant.exe — Аналог программы ssh-agent;
- plink.exe — Клиент SSH, Telnet и Rlogin для командной строки;
- pscp.exe — Программа командной строки для безопасного копирования SCP/SFTP
- psftp.exe — Интерактивный SFTP клиент для командной строки;
Источник: vds-admin.ru
Что такое кейген (keygen)?
Генератор ключей или кейген (о англ. key generator, keygen) – это маленькая программа, генерирующая:
— активационные/регистрационные/серийные номера для активации/регистрации программного обеспечения или псевдоподлинные CD-ключи;
— криптографические ключи для кодирования данных.
В кейгене используются те же алгоритмы, что при защите, так что он создается за счет взлома защиты, а точнее — успешного исследования ее алгоритмов при помощи дизассемблера или отладчика. Таким образом, скачав бесплатную демо-версию программы, ее можно превратить в полноценную. Нужно лишь ввести сгенерированный кейгеном серийный номер.
Команды, которые специализирующиеся на взломе программного обеспечения, предлагают его на специальных сайтах, которые посвящены распространению нелицензионных программ. Большинство лицензионных программ, использующих ключ активации, требуют приобретения кодов, а значит, использование кейгенов является незаконным. В некоторых странах, и в том числе и в России и США, закон об авторском праве прямо запрещает использование систем обхода технических средств защиты.
Пишут кейгены и отдельные программисты, и целые хакерские группы, такие как Z.W.T, ORiON, C.O.R.E., которые специализируются на взломе ПО. В некоторых случаях эти группы заявляют о себе, включая свое название в сгенерированный ключ в зашифрованном или открытом виде.
В некоторых кейгенах на протяжении всей работы программы звучит фоновая музыка (иногда ее воспроизведение можно приостановить). В большинстве случаев музыка составлена так, что может воспроизводиться циклически. Сегодня существуют целые порталы, на которых собраны мелодии Всевозможных кейгенов и других крэков.
Источник: mydiv.net
Что такое «генерация ключа» ЭЦП?
Электронная подпись – это набор символов, который используется для верификации личности пользователя.
Для полноценного использования ЭЦП необходим проверочный ключ (сертификат) в котором содержится информация о владельце, срок действия. Процесс создания ключа называется генерацией.
Понятие «генерация ключа»
Генерация ключа ЭЦП– это подбор и создание уникального цифрового кода, которая производится при помощи специального ПО.
В процессе пользователь быстро нажимает клавиши цифр на клавиатуре или хаотично водит мышью в пределах окна генерации случайных чисел. Программа считывает координаты (вполне возможно, что потребуется несколько попыток), которые и будут использоваться для создания ключа ЭП.
Принцип работы ПО заключается в том, чтобы исключить генерацию одинаковых сертификатов. Теоритически это возможно, но вероятность подобных совпадений – это 0,0000000001%, что соответствует требованиям ГОСТ 28147-89 к стандартам шифрования.
Ключ неквалифицированной ЭП можно сгенерировать самостоятельно, а после пройти процедуру персонализации (по сути, стать владельцем ЭП). Для генерации запросасертификата КЭП, необходимо обратиться в удостоверяющий центр.
Генерация запроса – что это и как происходит
Для самостоятельного создания электронного ключа и его дальнейшей регистрации необходимо:
- Выбрать УЦ, предоставляющий подобные услуги и получить специальное ПО.
- Используя ПО, записать код ЭП и направить запрос на электронный адрес УЦ на получение сертификата.
- На последнем этапе необходимо направить созданный ключ (он же запрос) на электронный адрес удостоверяющего центра.
- В ответном письме УЦ направит информацию об одобрении сертификата и ссылку на скачивание бланка, который должен подписать владелец ЭЦП.
- Направить скан подписанного документа в УЦ, после чего пользователь сможет записать сертификат на жесткий диск, флеш-накопитель.
Самостоятельная генерация ключа ЭЦП экономит время. Но стоит понимать, что такой вариант подходит только для опытных пользователей ПК.
Новичкам разобраться в программном обеспечении будет непросто, поэтому проще обратиться в УЦ. Для экономии времени можно направить в удостоверяющий центр скан-копии необходимых документов в электронном виде, после посетить центр лично, чтобы пройти верификацию.
Как правило, процедура проверки заявителя проводится один раз. Исключение –получение нового ключа (при утере или увольнении сотрудника, например).
Для продления срока действия ЭЦП повторное представление документов не требуется.
Срок действия электронного сертификата составляет 12 месяцев со дня регистрации. На данный момент на уровне правительства рассматриваются варианты увеличения сроков действия ЭЦП, упрощенного получения ЭП с привязкой к номеру мобильного телефона владельца.
Порядок работы с программой
Работать с клиентом СЭД «АРМ» достаточно просто. ПО поддерживается любой ОС, в том числе устаревшими версиями Windows, совместимо с MacOS и Linux при использовании Wine-эмулятора.
Перед работой рекомендуется отключить антивирус, поскольку возможна некорректная работа или блокировка доступа к программному обеспечению.
ПО не нужно устанавливать, поскольку – это так называемая portable (переносимая) версия.Хранится на флешке и запускается с нее же.
Пошаговый алгоритм действий:
- запустить ПО. Предпочтительнее использовать портал ФЗС, в крайних случаях допустимо использование СЭД «АРМ генерация ключей»;
- выбрать «Создать запрос на сертификат», предварительно отключив антивирусное ПО;
- выбрать необходимые пункты;
- выбрать строку «Формировать квалифицированный сертификат». Если пропустить этот шаг, сгенерируется неквалифицированный ключ;
- кликнуть «Продолжить» и ввести запрашиваемые системой данные;
- сгенерировать сертификат, следуя подсказкам, как правило, путем быстрого нажатия на клавиши с цифрами на клавиатуре;
- сохранить ключ (выбор носителя остается за пользователем, самый безопасный способ хранения – на жестком диске или флеш-накопителе).
При генерации квалифицированного сертификата в строке «Криптопровайдер» выбрать ПО, которое собираетесь использовать для работы с ЭЦП.
При оформлении запроса необходимо проверять правильность введенных данных. Ошибки в написании ФИО, неправильные цифры в ИНН приведут к тому, что с ЭП работать не получится, поскольку владелец не пройдет верификацию.
В результате электронный сертификат будет признан недействительным, а процедуру придется проходить повторно, равно как и оплачивать услуги удостоверяющего центра.
Что нужно учесть в процессе работы?
Услугу самостоятельного создания пользователем ЭЦП предоставляют далеко не все УЦ. Такие нюансы нужно учитывать, обратившись непосредственно в удостоверяющий центр.
Что касается программного обеспечения, то его можно скачать без проблем. Адреса и контакты УЦ можно найти на сайте Минкомсвязи или Едином Государственном портале ЭП.
Также стоит заранее уточнить сферы применения ЭЦП, этот список нужен для генерации электронного сертификата. Стоит указывать только те, которые действительно необходимы.
В противном случае придется переплачивать за услуги удостоверяющего центра. К примеру, если ЭЦП нужна только для взаимодействия с налоговой, то в строке «роли» отмечается «Финансовый орган».
Стоит учитывать еще один момент: при оформлении запроса указывается ИНН физлица –владельца ЭП, даже если сертификат оформляется для организации. Впоследствии при обращении в ФНС можно закрепить за компанией.
Как проходит работа с открытым и закрытым ключом
Для начала стоит разобраться, что такое открытый и закрытый ключ. Первый подтверждает, что документ подписан владельцем ЭП. Второй – нужен для генерации открытого ключа, как, правило, хранится на рутокене.
Важно обеспечить правильное хранение USB носителя и не передавать флеш-накопитель третьим лицам
. Если речь идет об организации, то в должностную инструкцию обычно вносят пункт о безопасном хранении электронного ключа и ответственности сотрудника в случае неправомерного использования ЭП.
Именно закрытый ключ устанавливается в операционную систему ПК. Например, программа КриптоПро позволяет настроить работу с электронной подписью, распознает рутокены в автоматическом режиме.
Принцип работы квалифицированных закрытых ключей аналогичный. Единственная разница – применение USB-накопителей с встроенной защитой от перезаписи.
В этом случае для генерации сертификата используются методы криптографического преобразования информации, прошедшие сертификацию ФСБ и соответствующие ГОСТ 28147-89.
Работа с открытыми и закрытыми ключами происходит также через КриптоПро, приложение можно запустить через панель управления Windows.
Итог
Генерация сертификата ЭЦП – это создание уникального цифрового кода с применением методов криптошифрования.
Производится УЦ на специальном оборудовании, которого нет в свободной продаже. Формирование запроса на получение ЭЦП – это генерация открытого ключа с указанием персональных данных пользователя, на основании которых впоследствии и будет создана ЭП.
Источник: goodecp.ru