Заказчику потребовалось подключить USB–ключ для банковской системы к Linux–серверу в облаке, где он разворачивает свой разработанный продукт. Напрямую подключить USB–ключ к виртуальной машине нельзя — она работает в отказоустойчивом кластере и может быть смигрирована на любой из хост-серверов без даунтайма.


Давайте посмотрим, как реализовать проброс USB–ключа по сети в виртуальную машину с Linux в облаке Azure Pack Infrastructure от InfoboxCloud.

Раз подключить ключ к виртуальной машине нельзя — его нужно подключить к чему-то реальному. Есть аппаратные решения, например AnyWhere USB, но заказчик выбрал более универсальное решение: выделенный сервер в ЦОД Infobox (что для одного ключа получилось дешевле — аппаратные требования к выделенному серверу для такой задачи минимальны — можно использовать самый дешевый сервер с софтовым Raid).

Для проброса использовалось ПО USB Redirector (версия для Linux бесплатна). На выделенный сервер и в виртуальную машину в облаке была установлена Ubuntu 16.04 LTS и были применены все обновления.

apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade

Для установки USB Redirector потребуются исходные тексты ядра, установите их:

apt-get install linux-source

Теперь необходимо отключить обновления ядра ОС, так как они могут сломать работу USB Redirector (служба проброса после обновления ядра не будет запускаться до переустановки), если необходимо — их можно устанавливать вручную переустанавливая USB Redirector.

sudo apt-mark hold linux-image-generic linux-headers-generic

Установка и настройка USB Redirector на сервере с подключенным ключом USB


Скачайте USB Redirector:

wget http://www.incentivespro.com/usb-redirector-linux-x86_64.tar.gz

Распакуйте:

tar -xvzf usb-redirector-linux-x86_64.tar.gz

Перейдите в папку с ним:

cd usb-redirector-linux-x86_64/

Разрешите запуск инсталлятора:

chmod +x installer.sh

Устанавливаем сервер:

./installer.sh install-server

Если все прошло корректно, вы увидите сообщение об этом.

Добавьте службу проброса в автозагрузку, если ранее этого не произошло:

systemctl enable rc.usbsrvd

Подключив USB–ключ к выделенному серверу проверим какие USB–устройства доступны:



Есть 2 варианта расшарить устройство по сети.

Вариант 1:

usbsrv -share -vid 2022 -pid 0202 -usbport 2-1

В этом случае мы привязываемся к конкретному id устройства и порту, если включить usb-ключ в другой порт сервера — номер usb порта сменится и работать не будет.

Вариант 2:

usbsrv -share 1

В этом случае мы привязываемся только к id устройства. Теперь USB–устройство расшарено по сети.

Конечно делать его доступным для всех пользователей Интернет не правильно, поэтому добавим ограничения в firewall:

ufw allow 22
ufw allow from *.*.*.* to any port 32032
ufw enable

Где вместо *.*.*.* нужно написать адрес сервера, с которого разрешено подключение.

Установка клиента USB Redirector в облаке


Скачайте USB Redirector:

wget http://www.incentivespro.com/usb-redirector-linux-x86_64.tar.gz

Распакуйте:

tar -xvzf usb-redirector-linux-x86_64.tar.gz

Перейдите в папку с ним:

cd usb-redirector-linux-x86_64/

Разрешите запуск инсталлятора:

chmod +x installer.sh

Устанавливаем сервер:

./installer.sh install-client

Если все прошло корректно, вы увидите сообщение об этом.

Добавьте службу проброса в автозагрузку, если ранее этого не произошло:

systemctl enable rc.usbsrvd

Теперь добавим наш сервер:

usbclnt -addserver **.**.**.**:32032

Где вместо **.**.**.** нужно указать ip–адрес сервера.

Теперь можно посмотреть список доступных устройств:

usbclnt -list


Видим, что на сервере 1 доступно устройство 1.

Подключаем:

usbclnt -connect 1-1

Включаем автоматическое соединение с устройством:

usbclnt -autoconnecton 1-1

Проверяем:

usbclnt -list



USB–ключ был успешно проброшен в виртуальную машину в облаке.

Если вы хотите попробовать наши облака, оставьте заявку на тестирование на главной странице infoboxcloud.ru. Если вы не можете оставлять комментарии на Хабре, напишите нам в Сообществе InfoboxCloud.

Успешной работы!
Поделиться с друзьями
-->

Комментарии (35)


  1. nskforward
    13.11.2016 11:40
    +7

    Вот вы в начале статьи используете такие выражения как «отказоустойчивый кластер», «без даунтайма». Возможен ли длительный даунтайм на современном программном обеспечении при возникновении проблем у хостера?
    Пользуясь вашим блогом, хочу задать немного отвлечённый вопрос. Я арендую у вас виртуальную машину (номер договора 726546076), на которой расположено сразу несколько моих сайтов. Уже больше недели назад на этой машине по вине хостера был даунтайм в 3 часа. Я попытался узнать в причинах произошедшего на вашей главной странице в лайв-чате. Сотрудница записала мои учётные данные и пообещала решить вопрос с компенсацией. Вот прошло уже более недели, но со мной так никто и не связывался. Означает ли это, что принято решение не в мою пользу?


    1. POS_troi
      13.11.2016 12:45
      +3

      Это включилась стандартная процедура «Потянуть время — гляди забьет и забудет».


    1. infobox
      13.11.2016 13:16

      >Возможен ли длительный даунтайм на современном программном обеспечении при возникновении проблем у хостера?
      Чудес не бывает, есть конкретные технические решения и регламенты действий, которые позволяют предотвратить даунтайм. Например услуга Azure Pack Infrastructure высокодоступна — выход из строя оборудования не оказывает влияние на пользователей, процесс обновления ПО кластера также не оказывает, так как каждая виртуальная машина управления в 2х экземплярах в кластере — один обновляется, другой работает. Возникли проблемы при обновлении — можно откатить изменения без влияния на пользователей. Можно включить репликацию VM в глобальное облако Azure и в случае недоступности дата-центра виртуальные машины поднимутся там. Высокая доступность достигается не «хорошим ПО или классным хостером», а конкретным техническим решением, каждый уровень защиты стоит денег так как использует ресурсы облаков, нужно выбирать адекватно вашей задаче какой уровень высокой доступности или катастрофоустойчивости нужен. Выбирая услугу если вам нужна высокая доступность стоит интересоваться за счет чего она реализована. Если берем хостинг за 200 рублей, расчитывать на высокую доступность не стоит (так как невозможно сделать такую услугу за 200 рублей), но для клиентов хостинга она и не требуется. При необходимости мы поможем организовать высокодоступное решение для вас согласно вашим требованиям и бюджету. Для получения персональной консультации можно заполнить заявку на главной https://infoboxcloud.ru

      Касательно вашего номера договора — у нас нет договоров с такими номерами. Напишите пожалуйста в ЛС реальный номер договора или номер обращения в нашу поддержку, если мы действительно являемся вашим провайдером. Посмотрим какой услугой вы пользуетесь и суть обращения. У Azure Pack Infrastructure с запуска облака аптайм реальный — 100%.


      1. nskforward
        13.11.2016 14:12
        +1

        Написал все имеющиеся данные в ЛС. Справедливости ради, я плачу более 1100 руб в месяц за вашу услугу и хотел бы получить взамен хотя бы оперативное и справедливое решение проблем.


        1. infobox
          13.11.2016 14:42

          ответили в ЛС. Последнее обращение от вас было в апреле 2016 года, проблема была решена за 17 минут. Более новых заявок от вас нет, но если что-то не так — напишите пожалуйста заявку из панели управления и пришлите номер тикета в ЛС.


          1. nskforward
            13.11.2016 15:50
            +4

            Я же вам в самом первом комментарии написал, что зашёл на вашу главную страницу сайта, чтобы посмотреть новости об инцидентах, ваше лайв-окошко само открылось и предложило задать любой вопрос оператору. Я естественно обратился за разъяснениями и спросил про компенсацию, девушка на том конце попросила меня назваться для решения моего вопроса. Я не знаю куда делась та заявка, быть может та девушка перешла к вам работать из Почты России, но меня не просили создавать дополнительные запросы. Если оказалось, что я тогда выбрал неверный канал связи с вами, то прошу прощения, прямо сейчас создал новый тикет и отправил его номер в ЛС


            1. infobox
              13.11.2016 15:54

              Регламент поддержки: https://infobox.ru/about/documents/support-scope/
              Действия сотрудников компании Infobox, требующие доступа к данным Клиента могут быть произведены только и только через авторизованные обращения из вашей панели управления. В чате или по телефону вас могут проконсультировать по общим вопросам, но для обращений по любым проблемам или при запросе компенсации обязательно писать тикеты. Так обеспечивается наиболее быстрое решение проблемы и гарантируется, что запрос действительно от вас, а не от злоумышленника в чате. После написания обращения оно быстро может обойти массу отделов для решения проблемы, могут быть подключены необходимые инженеры и администраторы, к тикету автоматически добавляются метаданные о ваших услугах, что помогает максимально быстрому решению, что в чате без авторизации невозможно. + у вас всегда есть номер запроса для контроля.


              1. nskforward
                13.11.2016 16:18
                +3

                https://yadi.sk/i/v1lZc692yX4tP
                Вы что, шутите?


                1. infobox
                  13.11.2016 16:21

                  Нет, необходимость писать тикеты указывается в письме при регистрации, при совершении действий требующих доступа к данным в чате и по телефону сотрудники сообщают о такой необходимости. Было ли это сделано проверим. Обращение написать следует именно указанным образом, из панели управления залогинившись. В целях безопасности неавторизованные запросы просто из чата на сайте не являются обращениями. Их от вашего имени может написать кто угодно.

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


                  1. nskforward
                    13.11.2016 16:35
                    +2

                    Вы меня опять неправильно поняли, я не спорю с вами как нужно создавать запросы, я его уже создал из админки, его номер #180993, но вы его отклонили, см скрин на яндекс диск, который я прикрепил к предыдущему своему комментарию. Что я опять неправильно заполнил?


                    1. infobox
                      13.11.2016 16:40

                      У нас нет механизма отклонения запросов. Залогинился в вашу панель управления. В разделе «Поддержка» -> «Запросы» открыт запрос от вас и в него вы можете ответить из панели управления. Ранее запрос прокомментировал сотрудник команды поддержки и он в состоянии «Отвечен». Вы можете добавить из панели управления туда что нужно и ответить.


                      1. infobox
                        13.11.2016 16:43


                1. infobox
                  13.11.2016 16:27
                  -1

                  >Обращение написать следует именно указанным образом, из панели управления залогинившись.
                  Входите в https://panel.infobox.ru, переходите в раздел «Поддержка» -> «Запросы» и пишете новое обращение. Не по email, не в чате, не по телефону, а именно залогинившить в панель управления.
                  https://helpdesk.infobox.ru/Knowledgebase/Article/View/73


  1. equand
    13.11.2016 13:04
    +1

    ufw allow 22
    ufw allow from *.*.*.* to any port 32032
    ufw enable

    Плохая идея, шарить надо через туннель с шифрованием.


    1. infobox
      13.11.2016 13:19
      -1

      Да, через тунель с шифрованием так лучше делать. С другой стороны если ключ используется для получения одноразового кода активации лицензии на ПО раз в час — если он будет перехвачен — не страшно.


      1. equand
        13.11.2016 13:45
        +1

        Я правильно понимаю, что Вы считаете хорошей идее открывать доступ к железу напрямую по сети без туннелирования?


        1. infobox
          13.11.2016 13:48
          +1

          Все зависит от задачи и требований/возможностей заказчика. Если нужно — подключим железным решением, это не проблема.


          1. equand
            13.11.2016 19:25

            Я говорю про то, что то ограничение, что дано у Вас обходится легко и фактически Вы надеетесь на то, что в USB коде ОС с обоих сторон нет дыр безопасности


  1. dtkbrbq
    13.11.2016 13:22

    Какое максимальное количество ключей можно одновременно пробрасывать таким способом?


    1. infobox
      13.11.2016 13:24

      Мы не встречались с ограничениями на количество ключей: все что подключалось можно было пробрасывать. В случае использования Windows–версии ПО количество ключей ограничивается кол-вом лицензий на USB Redirector.


      1. dtkbrbq
        13.11.2016 13:43

        В Windows сталкивался с тем, что больше 7-8 однотипных ключей (rutoken) сама система просто не видела(устройство определяется но дрова не ставятся). Хотелось узнать как в linux с этим дела обстоят.


        1. infobox
          13.11.2016 14:12

          Не сталкивались с подобными проблемами на Linux. Если столкнемся, добавим комментом.


  1. Credo50
    14.11.2016 08:48

    Не совсем в тему, просто для информации (увидел много знакомых слов), может кому пригодится, так как информации по вопросу мало.
    Пробрасывал USB-ключ (ключ для подписки кода сертификатом, eToken) на ВМ на Windows7 (из России во французский дата центр). «USB Redirector» не справляется с задачей (по ощущениям из-за больших лагов).
    Самое простое, быстрое и дешёвое решение оказалось использовать «Remote desktop» (в настройках только надо поставить галку пробрасывать «Локальные устройства и ресурсы»\«Смарт-карты»). Причем USB-ключ остается доступен на обоих машинах.
    Надежность конечно так себе, сеть иногда подглючивает (раз в 2 дня) и драйвера на удаленной машине успевают потерять USB-ключ (но для разработки и отладки подходит).
    Может кто подскажет решение без «Remote desktop» а то пора продакшен делать?


    1. infobox
      14.11.2016 08:51

      Разместить ключ в надежном дата-центре с хорошим каналом до облака и попробовать разное ПО для проброса, например fabulatech и eltima
      /


      1. Credo50
        14.11.2016 09:58

        Спасибо, ПО посмотрю/попробую. Ключ конечно будем на нормальный канал подцеплять. Проще видимо его прям в дата центр переслать, чтоб там подключили.
        Правда встанет вопрос его обратно в Россию пробросить, иногда для разработки нужен.


        1. infobox
          14.11.2016 10:57

          Ну у нас часть регионов в России и облако Azure Pack Infrastructure развернуто в России.


  1. kolu4iy
    14.11.2016 09:17
    +2

    А чем лучше универсального usb-over-ip? Вот, про него даже статья недавно была…


    1. infobox
      14.11.2016 09:21
      -1

      наличием поддержки от разработчика, отсутствием граблей при установке.


      1. kolu4iy
        14.11.2016 09:49
        +1

        А наличие пакета в репозитории ОС не является плюсом? Мне кажется, что это важнее…


        1. bykvaadm
          14.11.2016 10:17
          +1

          т.е. Вы скинули сюда статью на продукт, который надо обтачивать напильником, который не работает нормально и серверная часть которого не кроссплатформенна, но зато он есть в репозиториях?

          Хорошая шутка


          1. kolu4iy
            14.11.2016 11:59
            +1

            Эм… А установка неизвестным науке скриптом, после которого все равно надо производить действия по включению сервиса и т.п. — это не доработка напильником, извините? А потом ниже я уже выразил точку зрения — я не против продукта как такового. Я против альтернативы тому, что уже есть в штатном репозитории, без суровой необходимости на то. У нас в условии стоит сервер linux — клиент linux…


      1. kolu4iy
        14.11.2016 09:57

        Еще одну альтернативу нашёл в репозитории — usbredirect. То есть в официальном репозитории дебиан есть минимум два пакета, за корректную работу которых отвечают разработчики дебиан. Есть какое-то корректное сравнение, которое заставит поставить именно usb-redirector с виртуальной «поддержкой от разработчика» (это же на платных тарифах, нет? Просто я вот читаю — Full version benefits:

        You can continue to use the purchased product after evaluation period expires.
        You get free support and minor version updates.
        You will get all information about the latest products' improvements and modifications.
        You support further developement of this software.) вместо поддержки комьюнити?


        1. bykvaadm
          14.11.2016 10:23
          +1

          поддержка usb redirector вполне реальна. Продукт зарекомендовавший себя стабильной работой на разных платформах (прокидывал множество ключей для 1C, в разных сетях, в том числе и в облаке).
          поддерживает широкий спектр устройств от флешек до токенов и клавиатур (что самое классное, когда ты по ошибке нажимаешь кнопку прокинуть все и остаешься без клавы и мыши, но это уже сам виноват тыкать надо с умом)

          Если вы не работали с ним, зачем так писать?


          1. kolu4iy
            14.11.2016 11:55
            +1

            Я понимаю проброс linux-windows. Например, для 1С. В этом случае, действительно, есть смысл в проприетарном решении.
            Для связи linux-linux нет смысла связываться с тем, чего нет в дистрибутиве.
            Я не против продукта, поверьте. Я против лишней зависимости для сервера.


            1. depdol
              14.11.2016 13:24
              +1

              Скажите пожалуйста, а вы пробовали оба решения? Чтобы делать заключение о привлекательности одного продукта над другим? От того, что в ветке Debian есть какое-то ПО, оно лучше не становится. Я например пользуюсь не *.deb дистрибутивом — и ваше утверждение, что наличие в репозитории это преимущество, для меня сомнительно.
              В двойне сомнительно — если вы вообще не тестировали данное (в репозитории) ПО.