Пробрасываем USB–ключ в облако (Linux клиент — Linux сервер)

    Заказчику потребовалось подключить 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.

    Успешной работы!
    Infobox
    0,00
    Компания
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 36

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

          Касательно вашего номера договора — у нас нет договоров с такими номерами. Напишите пожалуйста в ЛС реальный номер договора или номер обращения в нашу поддержку, если мы действительно являемся вашим провайдером. Посмотрим какой услугой вы пользуетесь и суть обращения. У Azure Pack Infrastructure с запуска облака аптайм реальный — 100%.
            +1
            Написал все имеющиеся данные в ЛС. Справедливости ради, я плачу более 1100 руб в месяц за вашу услугу и хотел бы получить взамен хотя бы оперативное и справедливое решение проблем.
              0
              ответили в ЛС. Последнее обращение от вас было в апреле 2016 года, проблема была решена за 17 минут. Более новых заявок от вас нет, но если что-то не так — напишите пожалуйста заявку из панели управления и пришлите номер тикета в ЛС.
                +4
                Я же вам в самом первом комментарии написал, что зашёл на вашу главную страницу сайта, чтобы посмотреть новости об инцидентах, ваше лайв-окошко само открылось и предложило задать любой вопрос оператору. Я естественно обратился за разъяснениями и спросил про компенсацию, девушка на том конце попросила меня назваться для решения моего вопроса. Я не знаю куда делась та заявка, быть может та девушка перешла к вам работать из Почты России, но меня не просили создавать дополнительные запросы. Если оказалось, что я тогда выбрал неверный канал связи с вами, то прошу прощения, прямо сейчас создал новый тикет и отправил его номер в ЛС
                  0
                  Регламент поддержки: https://infobox.ru/about/documents/support-scope/
                  Действия сотрудников компании Infobox, требующие доступа к данным Клиента могут быть произведены только и только через авторизованные обращения из вашей панели управления. В чате или по телефону вас могут проконсультировать по общим вопросам, но для обращений по любым проблемам или при запросе компенсации обязательно писать тикеты. Так обеспечивается наиболее быстрое решение проблемы и гарантируется, что запрос действительно от вас, а не от злоумышленника в чате. После написания обращения оно быстро может обойти массу отделов для решения проблемы, могут быть подключены необходимые инженеры и администраторы, к тикету автоматически добавляются метаданные о ваших услугах, что помогает максимально быстрому решению, что в чате без авторизации невозможно. + у вас всегда есть номер запроса для контроля.
                    +3
                    https://yadi.sk/i/v1lZc692yX4tP
                    Вы что, шутите?
                      0
                      Нет, необходимость писать тикеты указывается в письме при регистрации, при совершении действий требующих доступа к данным в чате и по телефону сотрудники сообщают о такой необходимости. Было ли это сделано проверим. Обращение написать следует именно указанным образом, из панели управления залогинившись. В целях безопасности неавторизованные запросы просто из чата на сайте не являются обращениями. Их от вашего имени может написать кто угодно.

                      Мы очень хотим решить проблему если она действительно есть, пожалуйста напишите нам авторизованный запрос. Это гораздо быстрее чем переписываться в комментариях.
                        +2
                        Вы меня опять неправильно поняли, я не спорю с вами как нужно создавать запросы, я его уже создал из админки, его номер #180993, но вы его отклонили, см скрин на яндекс диск, который я прикрепил к предыдущему своему комментарию. Что я опять неправильно заполнил?
                          0
                          У нас нет механизма отклонения запросов. Залогинился в вашу панель управления. В разделе «Поддержка» -> «Запросы» открыт запрос от вас и в него вы можете ответить из панели управления. Ранее запрос прокомментировал сотрудник команды поддержки и он в состоянии «Отвечен». Вы можете добавить из панели управления туда что нужно и ответить.
                      –1
                      >Обращение написать следует именно указанным образом, из панели управления залогинившись.
                      Входите в https://panel.infobox.ru, переходите в раздел «Поддержка» -> «Запросы» и пишете новое обращение. Не по email, не в чате, не по телефону, а именно залогинившить в панель управления.
                      https://helpdesk.infobox.ru/Knowledgebase/Article/View/73
          +1
          ufw allow 22
          ufw allow from *.*.*.* to any port 32032
          ufw enable

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

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

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

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

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

            0
            Какое максимальное количество ключей можно одновременно пробрасывать таким способом?
              0
              Мы не встречались с ограничениями на количество ключей: все что подключалось можно было пробрасывать. В случае использования Windows–версии ПО количество ключей ограничивается кол-вом лицензий на USB Redirector.
                0
                В Windows сталкивался с тем, что больше 7-8 однотипных ключей (rutoken) сама система просто не видела(устройство определяется но дрова не ставятся). Хотелось узнать как в linux с этим дела обстоят.
                  0
                  Не сталкивались с подобными проблемами на Linux. Если столкнемся, добавим комментом.
              0
              Не совсем в тему, просто для информации (увидел много знакомых слов), может кому пригодится, так как информации по вопросу мало.
              Пробрасывал USB-ключ (ключ для подписки кода сертификатом, eToken) на ВМ на Windows7 (из России во французский дата центр). «USB Redirector» не справляется с задачей (по ощущениям из-за больших лагов).
              Самое простое, быстрое и дешёвое решение оказалось использовать «Remote desktop» (в настройках только надо поставить галку пробрасывать «Локальные устройства и ресурсы»\«Смарт-карты»). Причем USB-ключ остается доступен на обоих машинах.
              Надежность конечно так себе, сеть иногда подглючивает (раз в 2 дня) и драйвера на удаленной машине успевают потерять USB-ключ (но для разработки и отладки подходит).
              Может кто подскажет решение без «Remote desktop» а то пора продакшен делать?
                0
                Разместить ключ в надежном дата-центре с хорошим каналом до облака и попробовать разное ПО для проброса, например fabulatech и eltima
                /
                  0
                  Спасибо, ПО посмотрю/попробую. Ключ конечно будем на нормальный канал подцеплять. Проще видимо его прям в дата центр переслать, чтоб там подключили.
                  Правда встанет вопрос его обратно в Россию пробросить, иногда для разработки нужен.
                    0
                    Ну у нас часть регионов в России и облако Azure Pack Infrastructure развернуто в России.
                +2
                А чем лучше универсального usb-over-ip? Вот, про него даже статья недавно была…
                  –1
                  наличием поддержки от разработчика, отсутствием граблей при установке.
                    +1
                    А наличие пакета в репозитории ОС не является плюсом? Мне кажется, что это важнее…
                      +1
                      т.е. Вы скинули сюда статью на продукт, который надо обтачивать напильником, который не работает нормально и серверная часть которого не кроссплатформенна, но зато он есть в репозиториях?

                      Хорошая шутка
                        +1
                        Эм… А установка неизвестным науке скриптом, после которого все равно надо производить действия по включению сервиса и т.п. — это не доработка напильником, извините? А потом ниже я уже выразил точку зрения — я не против продукта как такового. Я против альтернативы тому, что уже есть в штатном репозитории, без суровой необходимости на то. У нас в условии стоит сервер linux — клиент linux…
                      0
                      Еще одну альтернативу нашёл в репозитории — 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
                        поддержка usb redirector вполне реальна. Продукт зарекомендовавший себя стабильной работой на разных платформах (прокидывал множество ключей для 1C, в разных сетях, в том числе и в облаке).
                        поддерживает широкий спектр устройств от флешек до токенов и клавиатур (что самое классное, когда ты по ошибке нажимаешь кнопку прокинуть все и остаешься без клавы и мыши, но это уже сам виноват тыкать надо с умом)

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

                    За такие советы нужно банить доступ к интернету

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое