![](https://habrastorage.org/webt/ja/81/qz/ja81qz5tdk0x0wkldhshrhivtzw.jpeg)
Хакеры получили доступ к главному почтовому серверу международной компании Deloitte. Учетная запись администратора этого сервера была защищена только паролем.
Независимый австрийский исследователь Дэвид Винд получил вознаграждение в размере 5 тыс. долларов за обнаружение уязвимости на странице для ввода логина интранета Google.
91% российских компаний скрывают факты утечки данных.
Такие новости почти каждый день можно встретить в новостных лентах Интернета. Это прямое доказательство того, что внутренние сервисы компании обязательно следует защищать.
И чем крупнее компания, чем больше в ней сотрудников и сложнее внутренняя IT-инфраструктура, тем более актуальной для нее является проблема утечки информации. Какая информация интересна злоумышленникам и как защитить ее?
Утечка какой информации может нанести вред компании?
- информации о клиентах и сделках;
- технической информации о продуктах и ноу-хау;
- информации о партнерах и специальных предложениях;
- персональные данные и бухгалтерия.
И если вы поняли, что какая-то информация из приведенного списка доступна из любого сегмента вашей сети лишь по предъявлению логина и пароля, то стоит задуматься о повышении уровня безопасности данных и защите их от несанкционированного доступа.
Двухфакторная аутентификация по аппаратным криптографическим носителям (токенам или смарт-картам) заслужила репутацию очень надежной и при этом довольно простой в применении.
О преимуществах двухфакторной аутентификации мы пишем почти в каждой статье. Подробнее про это можно почитать в статьях о том, как защитить учетную запись в домене Windows и электронную почту.
В этой статье мы покажем вам, как применить двухфакторную аутентификацию для входа на внутренние порталы организации.
Для примера мы возьмем самое подходящую для корпоративного применения модель Рутокен — криптографический USB-токен Рутокен ЭЦП PKI.
![](https://habrastorage.org/webt/qr/_e/-h/qr_e-h_vly-ugr2-0uyafrgkzby.jpeg)
Давайте приступим к настройке.
Шаг 1 — Настройка сервера
Основа любого сервера — это операционная система. В нашем случае это Windows Server 2016. А вместе с ней и другими операционными системами семейства Windows распространяется IIS (Internet Information Services).
IIS представляет собой группу интернет-серверов, в том числе веб-сервер и FTP-сервер. IIS включает приложения для создания и управления веб-сайтами.
IIS разработана для построения веб-сервисов с использованием учетных записей пользователей, предоставляемой доменом или службой Active Directory. Это позволяет использовать существующие базы данных пользователей.
В первой статье мы подробно рассказали, как доустановить и настроить на вашем сервере Центр Сертификации (Certification Authority). Сейчас мы на этом подробно останавливаться не станем, а будем считать, что все уже настроено. HTTPS-сертификат для web-сервера должен быть выписан корректно. Лучше сразу это проверить.
В Windows Server 2016 встроен IIS версии 10.0.
Если IIS установлен, то осталось его правильно сконфигурировать.
На этапе выбора служб ролей мы поставили галочку Обычная проверка подлинности.
![](https://habrastorage.org/webt/6i/j-/ca/6ij-cax2szkbg7hywzcsa9sa3di.png)
Затем в Диспетчере служб IIS включили Обычную проверку подлинности.
![](https://habrastorage.org/webt/ig/d7/ew/igd7ewwmllii3idquzqtfr9qlle.png)
И указали домен в котором расположен веб-сервер.
![](https://habrastorage.org/webt/82/9c/fd/829cfdgizcjrp3p0udkph_xzne4.png)
![](https://habrastorage.org/webt/8i/es/ok/8iesokqnjpm4vbgdyyppetkm_x0.png)
Потом добавили привязку сайта.
![](https://habrastorage.org/webt/jv/dj/d6/jvdjd6udzcigepbhbsqylydmzfw.png)
И выбрали параметры SSL.
![](https://habrastorage.org/webt/wo/sx/s1/wosxs1s7uxpgsrac2nhv5_xi-eg.png)
На этом настройка сервера завершена.
После выполнения указанных действий на сайт сможет зайти только пользователь, у которого есть токен с сертификатом и PIN-код токена.
Мы еще раз напоминаем, что согласно первой статье, пользователю заранее был выдан токен с ключами и сертификатом, выписанным по шаблону типа Пользователь со смарт-картой.
Теперь переходим к настройке компьютера пользователя. Ему следует настроить браузеры, которые он будет использовать для подключения к защищаемым веб-сайтам.
Шаг 2 — Настройка компьютера пользователя
Для простоты предположим, что у нашего пользователя ОС Windows 10.
Также предположим, что у него установлен комплект Драйверы Рутокен для Windows.
Установка комплекта драйверов опциональна, так как скорее всего поддержка токена прилетит по Windows Update.
Но если этого вдруг не произошло, то установка комплекта Драйверов Рутокен для Windows решит все проблемы.
Подключим токен к компьютеру пользователя и откроем Панель управления Рутокен.
На вкладке Сертификаты установим галочку напротив необходимого сертификата, если она не стоит.
Тем самым мы проверили, что токен рабочий и содержит нужный сертификат.
![](https://habrastorage.org/webt/2k/vq/5g/2kvq5gxfi8hbsqj89nqgjau7evg.png)
Все браузеры, кроме Firefox, настраиваются автоматически.
Специально с ними делать ничего не нужно.
Теперь откроем любой браузер и введем адрес ресурса.
До того, как сайт загрузится у нас откроется окно для выбора сертификата, а затем окно для ввода PIN-кода токена.
![](https://habrastorage.org/webt/dq/cv/ji/dqcvjidwlpu3yle54gyaglgcbic.png)
![](https://habrastorage.org/webt/ks/dw/yh/ksdwyhim3ncwsxjdtnezor7wm6c.png)
Если для устройства в качестве криптопровайдера по умолчанию выбран Aktiv ruToken CSP, то для ввода PIN-кода откроется другое окно.
![](https://habrastorage.org/webt/bw/zv/9f/bwzv9fqlvfhzbm_d4bl-hankhky.png)
И только после успешного его ввода в браузере откроется наш сайт.
![](https://habrastorage.org/webt/j9/i-/9u/j9i-9u0qw0rp9k5vd3wvj7hw7wk.png)
Для браузера Firefox следует выполнить дополнительные настройки.
В настройках браузера выбрать Приватность и Защита. В разделе Сертификаты нажать Устройство Защиты. Откроется окно Управление устройствами.
Нажать Загрузить, указать название Рутокен ЭЦП и путь C:\windows\system32\rtpkcs11ecp.dll.
![](https://habrastorage.org/webt/tg/wa/sq/tgwasqow522zptn8fsip_cug31c.png)
Это все, теперь Firefox знает, как обращаться с токеном и позволяет входить на сайт, используя его.
![](https://habrastorage.org/webt/m5/qn/im/m5qnimykx2kaprifthdovutzfay.png)
Кстати вход по токену на веб-сайты работает и на Маках в браузере Safari, Chrome и Firefox.
Нужно лишь установить с сайта Рутокен модуль поддержки Связки Ключей и увидеть в нем сертификат на токене.
![](https://habrastorage.org/webt/xo/1q/ra/xo1qrarfrol_jsvfmiyuwo3rrpy.png)
Настраивать браузеры Safari, Chrome, Яндекс и прочие не нужно, достаточно лишь открыть сайт в любом из этих браузеров.
![](https://habrastorage.org/webt/bb/nf/ys/bbnfysjr2vm-rixilgcxkh_xjq4.png)
Браузер Firefox настраивается почти также, как и в Windows (Настройки — Дополнительные — Сертификаты — Устройства защиты). Только путь к библиотеке немного другой /Library/Akitv Co/Rutoken ECP/lib/librtpkcs11ecp.dylib.
Выводы
Мы продемонстрировали вам, как настроить двухфакторную аутентификацию на сайтах с помощью криптографических токенов. Как всегда, нам не потребовалось для этого никакого дополнительного ПО, кроме системных библиотек Рутокен.
Такую процедуру вы можете проделать с любым своим внутренним ресурсом, также вы гибко сможете настраивать группы пользователей, которые будут иметь доступ к сайту, впрочем как и везде в Windows Server-е.
Используете другую ОС для сервера?
Если вы хотите, чтобы мы написали про настройку других ОС, то напишите об этом в комментариях к статье.
Комментарии (31)
herrjemand
02.06.2018 01:19Не легче уже использовать U2F/FIDO2 который поддерживается во всех браузерах?
mkirya
02.06.2018 14:09Точно не легче. Для U2F вам потребуется вводить в систему новые сущности, сервер аутентификации. А тут все работает почти само собой.
nikolayv81
02.06.2018 10:53Потенциальным пользователям/админам, не идите на поводу, пользователи вас проклянут, т.к. ситуации бывают очень разные, от нет windows/ios вообще, до нет свободных usb портов.
Из личного опыта, когда увидел инструкцию для debian (другой продукт) был в шоке.
При этом есть вполне работающее решение использующее личный брелок для генерации уникальных пин-кодов, для которого ни драйверов ни спец сертификатов не нужно.Ziptar
02.06.2018 13:01Потенциальным пользователям/админам, не идите на поводу, пользователи вас проклянут
Админы должны исходить из задач, которые необходимо решить, и принимать во внимание тех пользователей, с которыми они работают. А не идти на поводу у автора, или у вас.nikolayv81
02.06.2018 23:01Увы, мир не идеален, как пример, некоторые решающие задачи в очень крупных корпорациях не видят дальше своего носа, в итоге, к примеру, забывают запросить у разработчика решения по удалённому доступу утилиты и инструкции кроме как для win/ios, хотя у разработчика они в наличии, просто не в открытом доступе. Просто идут по пути наименьшего сопротивления.
saipr
02.06.2018 11:00Аутентификации в ОС семейства «Linux» с использованием смарт-карт или USB-токенов на базе российской криптографии
klim451
02.06.2018 13:36А можно тупой вопрос? Заранее извиняюсь, если это слишком просто. Ответа нигде не нашел.
Речь о подписании отдельных файлов электронной подписью.
Имеем ЭЦП и файл *.pdf, который нужно подписать. Для подписания файла в него добавляется блок информации, который содержит сведения о подписи. Этот блок формируется из собственно самой подписи и контрольной суммы (?) исходного файла. Но, дописывая что-то в файл (подпись) мы изменяем его контрольную сумму. В итоге в файле вписана цифровая подпись, которая создана не на той контрольной сумме, которая соответствует конечному файлу.
Где я неправильно рассуждаю?mkirya
02.06.2018 14:19Во-первых, не контрольная сумма, а хеш-сумма. Во-вторых читайте про PKCS#7, если вкратце то хеш-сумма считается только от исходного файла, а не от всего конверта с подписью.
klim451
02.06.2018 19:49не контрольная сумма, а хеш-сумма
Это одно и то же. Нет?
Если один или несколько файлов упаковываются в контейнер с подписью, то все понятно, но речь о другом случае. Открываешь файл *.pdf, а в углу стоит значок: «Файл подписан цифровой подписью». И нет рядом никакого дополнительного файла подписи, все это — и документ и подпись хранится в одном файле и открывается обычным pdf-просмотрщиком.mkirya
02.06.2018 22:18нет, не одно и то же. я вам даже ссылку сделал, но вы, видимо, поленились нажать. Хотя к вашем вопросу это напрямую не относится. Что касается PDF, то там свой формат конверта, но суть тоже не меняется. Хеш считается только от исходных данных, а не от всего файла с подписью.
klim451
02.06.2018 22:44Спасибо. Если честно, то и правда не прочитал сначала. Разница есть.
…
Получается, что не любой файл можно подписать эцп? То есть, нужно знать структуру файла и сам формат должен позволять дописывать в файл информацию так, чтобы не нарушалась целостность?mkirya
03.06.2018 21:23Подписать можно абсолютно любой файл. Если использовать формат PKCS#7 то внутренний формат не важен, файл как бы вкладывается в конверт. Причем есть 2 вида подписи: прицепленная и отцепленная. Прицепленная — это исходный файл внутри конверта, а отцепленная — это как бы файл отдельно и конверт отдельно. В первом случае, чтобы посмотреть что в подписанном файле, его надо вытащить из конверта какой-то программой. Во втором случае, исходный файл существует отдельно от файла с подписью, поэтому ничто не мешает вам его открыть и использовать — главное, не изменять его, иначе подпись перестанет подходить.
a5b
02.06.2018 22:26Нужна не просто хэш сумма, а криптографический хеш https://ru.wikipedia.org/wiki/Криптографическая_хеш-функция
Классические контрольные суммы нестойки к преднамеренному искажению документа, например, изменив 4 байта можно получить нужный crc32.
Формат PDF поддерживает подпись внутри файла — https://www.adobe.com/devnet-docs/acrobatetk/tools/DigSigDC/Acrobat_DigitalSignatures_in_PDF.pdf
Входом хеш-суммы (например, sha256) является весь документ, в который добавлен участок из достаточного количества нулевых байт на месте блока для хранения подписи ("The entire PDF file is written to disk with a suitably-sized space left for the signature value as well as with worst-case values in the ByteRange array.")klim451
02.06.2018 22:30Спасибо большое за разъяснения! Мне этот вопрос давно покоя не давал, а найти ответ как-то не удавалось.
mkirya
03.06.2018 21:28Кроме PDF формата специальные выделенные места для подписи существуют и в других популярных форматах для документов, например в документах популярных пакетах Microsoft office, libreOffice и других, а также для электронной подписи S/MIME. Но ввиду того, что форматы разработаны не в России, интегрировать туда отечественную подпись по ГОСТ непросто. Поэтому даже для PDF и DOC форматов в России часто используют универсальный PKCS#7 формат.
klim451
03.06.2018 21:37А в формат ODF ODT, которыми призывают заменить DOC в государственных учреждениях, он разве не позволяет подписать его по ГОСТу?
mkirya
03.06.2018 21:44Насколько я понимаю, в ODT документы подписываются по протоколу XMLDSig и скорее всего подписи по ГОСТ там ничего не противоречит, но я не знаю, есть ли прикладное обеспечение, которое такую фичу поддерживает.
klim451
03.06.2018 21:50Значит со временем появится, когда сверху приказ поступит (как это обычно бывает). Еще бы сверху приказали разрулить сложившийся зоопарк из различных ЭЦП, когда у физического лица одна подпись, у юридического другая, на разных торгах третья, для отчетности пятая и т.д.
mkirya
03.06.2018 21:57вы тут немного разные сущности смешиваете, но да, возможно, что кто-нибудь подпись по ГОСТ в ODT сделает или уже сделал. Думаю, приоритет у этой задачи не самый большой, так как и PKCS#7 и его улучшенный вариант CADES прекрасно работают. А что насчет разных подписей — то работа по из объединению хоть и медленно, но ведется.
stork_teadfort
02.06.2018 22:50+1В случае p7s-контейнеров считается хэш всего файла. Если бы pdf подписали таким образом, то изменение любого бита файла привело бы к невалидной подписи.
Но форматом pdf предусмотрен и свой собсвенный механизм создания и хранения подписи, и вы говорите именно о нем. В этом случае все происходит более умно — хэш счиатется не от сырых битов всего pdf-файла, а от отдельных объектов его структуры. Секция, в которой хранится подпись, естественно не входит в их число.
BorisPlus
Напишите аналог в DEBIAN. Заранее благодарю.
AlexanderS
Присоединяюсь!
kirosvi
Поддерживаю, но не только для Debian, а вообще для Linux, или хотяб для популярных дистрибутивов.