Русский
Русский
English
Статистика
Реклама

Vpn

L2TP amp IPsec with pre shared key vs MITM

31.05.2021 12:16:05 | Автор: admin

В статье рассмотрены основные vpn протоколы, которые на текущий момент применимы в бизнес процессах, а также углубленно освещен вопрос использования L2TP в связке с IPsec в режиме pre shared key. На практике разобраны подходы к организации виртуальных сетей на оборудовании MikroTik и выполнен практический аудит безопасности передачи данных с позиции анализа третьими лицами исходящего трафика при возможности MITM атаки.

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

Для начала разберем, в каких случаях бизнесу нужен vpn:
при подключении удаленных сотрудников к сетевым ресурсам компании (site-to-client vpn) и
при объединении территориально разнесенных сетевых элементов (site-to-site vpn). Самих протоколов vpn сейчас много: GRE , PPTP, SSTP, OVPN, L2TP, Wireguard и т.д.

Здесь важно не путать протоколы с сервисами vpn, которых еще больше: ExpressVPN, CyberGhost, NordVPN и т.д. Вторые по сути являются провайдерами услуг, обеспечивая доступ клиентов к собственным ресурсам с целью обхода блокировок со стороны ISP, а также анонимности серфинга в интернете. Про них сейчас речь не идет.

С вариацией протоколов определились, какой же выбрать?
Во-первых, в зависимости от того, что строим site-to-client или site-to-site, потому что GRE для первого случая не подойдет.

Во-вторых, Wireguard хоть молодой, простой и очень перспективный, но на офисном маршрутизаторе Cisco или MikroTik его не поднять, вендоры даже не планируют внедрять. PPTP очень легок в настройке, однако будет либо не шифрованным, либо шифрованным протоколом MPPE, который не имеет аппаратной разгрузки, в следствие чего, многопользовательскую сеть замедлит в работе. SSTP отличный протокол, работает по TLS в UDP на 443 порту, пролезет через любой Firewall, а может даже и IDS. У некоторых вендоров, например, MikroTik, может работать по pre shared key вместо сертификата, запускается на Windows клиентах из коробки.
Из минусов: определенные танцы с бубном при настройке Linux клиентов (протокол все-таки от Microsoft) и отсутствие поддержки со стороны вендоров в аппаратной разгрузке. OpenVPN всем хорош, особенно высокой гибкостью. Можно туннелировать на L2, можно на L3, всего не перечислить. Не даром он open soft. Роутер MikroTik скоро научится работать с ним по UDP (ожидается в следующем поколении RouterOS), так как смысла в TCP нет, ведь соединение все равно проверяется во вложенном туннеле. Однако, скорее всего ваша офисная Cisco не умеет с ним работать, поэтому vpn сервер из нее не организовать.

Фактически, стандартом де-факто в корпоративной среде является протокол L2TP. Он работает на UDP, порт по умолчанию 1701. С шифрованием все хорошо, особенно наличие возможности аппаратной разгрузки IPsec. Есть вероятность, что ваш корпоративный MikroTik (несмотря на то, что он софтовый маршрутизатор) умеет шифровать IPsec на железе (смотри таблицу Hardware acceleration на сайте производителя ). У Cisco в этом вопросе дела обстоят еще лучше. Даже если ваш офисный роутер не умеет шифровать железом, никто кроме вас это знать не должен не будет.

Итак, подведем промежуточный итог: vpn технологии бизнесу нужны, использовать лучше всего L2TP. Закончив с затянувшейся вводной частью, перейдем непосредственно к теме статьи. Рассмотрим на примере оборудования MikroTik безопасность передачи данных в туннеле при возможности MITM атаки со стороны третьих лиц. Этот вопрос возникает в следствие того, что почти всегда в корпоративной среде используют L2TP в связке с IPsec в туннельном режиме и общим ключем для всей сети, вместо создания PKI и задействования сертификатов. Это удобно, сеть быстро разворачивается и легко обслуживается. Безопасно ли это в условиях компрометации pre shared key? Разберем на практике.

Начнем с того, что L2TP может быть не шифрованным:

/ppp profile name=test use-encryption=no


с интегрированным в протокол шифрованием MPPE:

/ppp profile name=test use-encryption=yes (или require, при этом IPsec отключен)



с качественным внешним шифрованием от IPsec, вроде AES:

/ppp profile name=test use-encryption=yes (или require, при этом IPsec включен)



Настройка L2TP сервера осуществляется достаточно просто, активируем его и указываем тип аутентификации:

/interface l2tp-server server set authentication=mschap2 default-profile=test enabled=yes


Здесь же появляется возможность сразу активировать IPsec и настроить pre shared key. Если это сделать, то общий ключ будет закреплен за всей vpn сетью и передан всем ее участникам в качестве настроечной информации. Один и тот же на всех. На самом деле, если активировать IPsec таким образом, то RouterOS автоматически создает необходимые настройки в соответствующем разделе /ip ipsec сразу после установления L2TP соединения.

Конкретно речь идет:

  • IPsec Policy с указанными протоколом UDP и портом подключения 1701;
  • IPsec Peer c IP адресами сервера и клиента;
  • IPsec Identity с указанным ранее pre shared key.

Автоматически созданные настройки IPsec

Очень удобно. Особенно, когда IP адреса динамические и вообще натированные. Клиентам не нужно выполнять лишние процедуры по отслеживанию их текущих значений. В RouterOS в разделе L2TP есть дополнительная настройка, определяющая общий секрет при конфигурировании в сетях Virtual Private DialUp Network протяженных соединений точка-точка между удаленным сервером PPPOE и L2TP сетью, но это к теме статьи не относиться, поэтому просто ее упомянем всуе:

/ppp l2tp-secret add address=0.0.0.0/0 secret=

Допустим, мы не хотим простого счастья и дополнительно желаем, чтобы у каждого клиента был индивидуальный сертификат вместо общего ключа (возможно, для этого в компании уже все готово). Звучит очень круто и безопасно. Нет технически не преодолимых проблем, кроме танцев с бубнами: создаем все вышеперечисленное в ручном режиме, не забываем про корректно заданные IP адреса, как со стороны сервера, так и со стороны клиентов.

/ip ipsec peer add address=IP local-address=IP name=peer1/ip ipsec identity add peer=peer1 auth-method=digital-signature certificate=u01.crt_0/ip ipsec policy add dst-address=IP dst-port=1701 peer=peer1 protocol=udp src-address=IP src-port=1701

Здесь нас поджидает кропотливая работа, ведь, скорее всего, адреса у клиентов меняются (и достаточно часто), кроме этого клиенты сидят за провайдорским NAT. Все это можно накрутить кастомными скриптами на RouterOS, и все будет отлично работать. Нужно ли это? Cмоделируем ситуацию, когда общий для всех pre shared key стал известен злоумышленнику, который целенаправленно хочет нам навредить. Или клиент vpn нам больше не клиент. Сразу баним его учетную запись, и теперь аутентификацию mschap2 (или какая у вас там выбрана) он не пройдет и доступ не получит:

/ppp secret disable bad_user

Если каким-то чудом у него есть возможность MITM, то есть пропускать трафик через себя, то толку в этом ровно никакого нет. Весь трафик зашифрован. Выдать себя за vpn сервер другим участникам корпоративной сети тоже не удастся. В подобном нереальном сценарии аутентификацию mschap2 клиенты не пройдут, ведь их секрет известен только им и вам, разумеется:

/ppp secret add name=good_user password=12345 service=l2tp

Шифрованный трафик L2TP туннеля

Исследовательский интерес нас ведет дальше. Может все-таки что-то можно сделать с трафиком? И в результате извлечь передаваемую информацию? Попробуем дешифровать трафик в лабораторных условиях. MikroTik позволяет нам выполнить debug соединения и увидеть подробную информацию об установленной IPsec сессии:

/ip ipsec installed-sa print

Как видно, сессия установилась на 30 минут, имеются разные ключи аутентификации и шифрования. Применим их в Wireshark, после приведения шестнадцатеричных значений к корректному формату: SPI 0x0ada181b, вместо MikroTik-овского 0xADA181B, ключи начинаются со значения 0x. Если все сделано правильно, тогда трафик откроется.

Ввод данных сессии для дешифрования IPsec

Дешифрованный IPsec

Подведем результаты

Насколько безопасно использовать L2TP c общим секретом? Абсолютно безоапасно. По сути IPsec с помощью pre shared key выполняет функцию аутентификации, но в нашем случае процедура аутентификации выполняется ранее при установлении L2TP соединения. Нет практической необходимости выполнять аутентификацию повторно. По сути MikroTik, введя возможность настройки IPsec в разделе создания L2TP сервера, автоматизирует рутинные задачи по настройке шифрованного туннеля в ручном режиме (история про танцы с бубном). Это еще один плюс в сторону использования не дорогостоящего, но качественного оборудования MikroTik. Конечно, в ручном режиме гораздо больше вариаций на тему шифрования, но по умолчанию задаются, по авторскому мнению, идеальные значения: aes256 и sha1.


Как рекомендации для бизнеса, смело можно использовать L2TP с IPsec pre shared key. При планировании политик информационной безопасности, нет необходимости в задании сложных значений для pre shared key. Важно выставить не угадываемые и не словарно подбираемые значения для аутентификации L2TP (/ppp secret). Удобно, безопасно и качественно, админ доволен, клиенты не замучены.


Подробнее..

Привет из прошлого кто, что и зачем пишет в журнале учета СКЗИ

11.02.2021 10:09:47 | Автор: admin

Скорее всего, вы знаете, что учет СКЗИ регламентирован Инструкцией об организации и обеспечении безопасности хранения, обработки и передачи по каналам связи с использованием средств криптографической защиты информации с ограниченным доступом, не содержащих сведений, составляющих государственную тайну. Этот документ невиданной силы утвержден приказом Федерального агентства правительственной связи и информации при президенте Российской Федерации (ФАПСИ) от 13.06.2001 152.

Тогда, 20 лет назад, сертифицированные СКЗИ применялись крайне редко, а большинство организаций не имели такой разрозненной и распределенной по всей стране ИТ-инфраструктуры. В итоге инструкция, например, до сих пор не предусматривает возможность удаленной передачи ключей шифрования, а журнал учета требуется хранить в отдельном помещении. Вести учет в электронном виде можно, но только с применением квалифицированной ЭП (учет СКЗИ в электронном виде это тема для отдельной статьи, и об этом мы поговорим следующий раз), либо сопровождать каждое действие соответствующими актами.

Кстати, само ФАПСИ было расформировано в 2003 году. Его функции были распределены между ФСО, ФСБ, СВР и Службой специальной связи и информации при ФСО. Но написанный агентством документ не утратил силы.

Кто и как ведет учет

Если организация является обладателем конфиденциальной информации, то ей, скорее всего, требуется обеспечить безопасную передачу, обработку и хранение этой информации с помощью СКЗИ. К слову, к последним инструкция относит как сами программные или аппаратно-программные средства, так и информацию, необходимую для их работы, ключи, техническую документацию.

Организует и контролирует все работы с СКЗИ орган криптографической защиты (ОКЗ). Это может быть как структурное подразделение (или конкретный сотрудник) внутри организации (обладателе конфиденциальной информации), так и внешний подрядчик (например, сервис-провайдер).

В первом случае организация должна издать приказ о создании ОКЗ, определить его структуру и обязанности сотрудников. Например:

  • начальник отдела занимается организацией и совершенствованием системы управления работой своих сотрудников;

  • администратор безопасности обеспечивает сохранность информации, обрабатываемой, передаваемой и хранимой при помощи средств вычислительной техники.

Все работники, которые занимаются установкой и настройкой СКЗИ и в принципе имеют к ним доступ, должны быть внесены в приказ и ознакомлены с ним. Для каждой должности нужно разработать должностную инструкцию и ознакомить пользователей с порядком применения СКЗИ.

В итоге перечень необходимых документов состоит из:

  • приказа о создании ОКЗ;

  • должностных инструкций;

  • утвержденных форм журналов учета;

  • шаблонов заявлений, актов;

  • инструкции для пользователей по работе с СКЗИ.

Мы помним, что по всем СКЗИ должен вестись поэкземплярный учет, а их движение (формирование, выдача, установка, передача, уничтожение) должно быть документально подтверждено. Для этого и обладатель конфиденциальной информации, и орган криптографической защиты должны вести журналы (каждый свой) поэкземплярного учета СКЗИ, эксплуатационной и технической документации к ним, ключевых документов.

Но если орган криптографической защиты информации это структурное подразделение организации, на его плечи ложится ведение обоих журналов. Дело в том, что в этом случае организация не только является обладателем конфиденциальной информации, но и выполняет часть функций ОКЗ. Например, крупные холдинги, как правило, выделяют в своем составе ИТ-компанию, которая в том числе отвечает за информационную безопасность с использованием СКЗИ. Она ведет все журналы и сопутствующую документацию и является для своего холдинга поставщиком услуг.

Если услуги оказывает сервис-провайдер, то он заполняет журнал учета для органа криптографической защиты, а организация журнал для обладателя конфиденциальной информации.

Вы еще тут? Надеемся, не запутались!

Журналы учета хранятся в течение 5 лет. Сами СКЗИ и документация к ним должны находиться за семью замками в специальном помещении, а доступ туда могут иметь только сотрудники ОКЗ.

Операции с СКЗИ: взятие на учет

Рассмотрим порядок учета на конкретном примере (данные в таблицах ниже вымышленные все совпадения случайны). Организация N обладатель конфиденциальной информации хочет использовать СКЗИ компании КриптоПро. При этом организация N не готова создавать у себя ОКЗ и обращается к сервис-провайдеру, который будет предоставлять ей соответствующие услуги. Итак, для начала вендор ПАК должен предоставить организации N исходные данные для учета. Выглядит это так:

Предмет

Данные

с/н лицензии СКЗИ

Сопроводительное письмо

т/н 44313 от 22.02.2020

-

Формуляр СКЗИ КриптоПро CSP версии 4.2

ЖТЯИ.00002-02 30 10

-

Диск CD-ROM с дистрибутивом СКЗИ

Инв. 5421

34DR-4231-4123-0003-1200

HR9J-EEWR-45W3-VL4Q-842Q

4454-NG96-8421-6401-WQRG

В 16 графы журнала поэкземплярного учета должна попасть информация о:

диске с дистрибутивом;

формуляре;

серийном номере лицензии на СКЗИ.

После заполнения всех этих данных СКЗИ выдаются пользователям, то есть тем работникам в организации, для которых они закупались. Это может быть как сотрудник бухгалтерии, который применяет ЭП для подписания и отправки документов, так и другой ответственный специалист, взявший на себя обязательства по сохранности СЗКИ.

На этом этапе заполняются 7 и 8 графы журнала (кому и когда выдается СКЗИ с обязательной росписью пользователя). Если возможности расписаться в журнале нет, то можно заполнить акт передачи, где в свободной форме указывается, кто (администратор безопасности) и кому (пользователю) передает СКЗИ. При этом обе стороны расписываются, а номер акта вносится в 8 графу (Дата и номер сопроводительного письма).

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

Если сотрудник, который производил установку, уволился, то СКЗИ нужно изъять и составить акт, в котором указывается предмет и способ изъятия (например, удаление ключевой информации с носителя). Все это фиксируются в 12, 13, 14 графах.

При уничтожении СКЗИ также составляется соответствующий акт. В нем должны быть указаны предмет и способ уничтожения. Программные СКЗИ стирают с носителя ключевой информации (чистка реестра), а ПО деинсталлируют. С аппаратных СКЗИ можно удалить ключевую информацию либо уничтожить их физически.

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

Заглянуть в журнал учета
Журнал поэкземплярного учета СКЗИ для обладателя конфиденциальной информацииЖурнал поэкземплярного учета СКЗИ для обладателя конфиденциальной информации

Журнал учета СКЗИ для органа криптографической защиты во многих пунктах перекликается с аналогичным документом для организации и заполняется по такому же принципу, поэтому не будем подробно останавливаться на его разборе. В примере ниже ООО Организация это обладатель конфиденциальной информации, который воспользовался услугами сервис-провайдера.

Заглянуть в журнал еще раз
Журнал поэкземплярного учета СКЗИ для органа криптографической защитыЖурнал поэкземплярного учета СКЗИ для органа криптографической защиты

Что в итоге?

Сложно не согласиться с тем, что все эти требования уже давно морально устарели и Инструкция нуждается в актуальных корректировках, но пока мы вынуждены выполнять требования ее текущей редакции. Обратите внимание, что для ведения журнала поэкземплярного учета СКЗИ в электронном виде требуется подписывать документы только квалифицированной ЭП либо сопровождать каждое действие соответствующими актами. Если же речь идет о физическом документе, то все данные и подписи должны быть внесены в него всеми ответственными лично.

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

Надеемся, эта памятка была для вас полезной.

Автор: Никита Никиточкин, администратор реестра СКЗИ Solar JSOC Ростелеком-Солар

Подробнее..

Privacy Day 2021 важные дискуссии о приватности и проекты Privacy Accelerator

03.03.2021 16:23:30 | Автор: admin

В День защиты персональных данных 28 января РосКомСвобода совместно с Digital Rights Center и Privacy Accelerator провела ежегодную международную конференцию Privacy Day 2021. На ней подвели итоги 2020 года и очертили тренды 2021-го. Обсуждённые экспертами темы, такие как слежка на фоне пандемии COVID-19, непонимание государством, как правильно защищать персональные данные граждан и утечки информации из компаний, всё ещё остаются актуальными. Ниже мы осветим важные моменты из этих обсуждений, но начнём с представления проектов Privacy Accelerator, который был запущен при участии РосКомСвободы.

Проекты Privacy Accelerator

Privacy Accelerator онлайн-программаинтенсивного развития коммерческих и некоммерческих проектов в области приватности, анонимности, доступа к информации и свободы слова и цифровых прав.

В 2020 году для контроля за распространением коронавируса были введены новые инструменты отслеживания через мобильные приложения. Также власти продолжают внедрять системы распознавания лиц, процесс непрозрачен и не подконтролен обществу, происходят утечки данных и их неправомерное использование. Угроза для свободы слова и самовыражения возрастает. В сентябре 2020 был выпущен первый поток Privacy Acceleratorи отобрала для участия четыре проекта в области цифровой грамотности и защиты коммуникаций в Сети.

Мы хотим увеличить число качественных проектов, обеспечивающих цифровые права граждан и их личную безопасность, благодаря менторским консультациям ведущих экспертов по направлениям и поддержке наставников, рассказала координатор Privacy AcceleratorДарья Горбачёва.

Программу поддержали Хабр, ProtonMail, Qrator Labs и ряд экспертов. Мы помогли участникам реализовать продукты от идеи до запуска. Рассказываем о некоторых из них ниже. В скором времени планируем запуск нового потока с хакатоном на старте. В планах проведение минимум двух таких программ в год.

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

Personalka

Проект-победительPandemic Hackathon, который прошёл в мае 2020 года.

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

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

Сначала авторы хотели сервис по отзыву соглашений. Но оказалось, что это всего лишь часть процесса. Поэтому в итоге сервис из трёх компонентов.

  1. Сайт, на который можно загрузить текст соглашения. Сервис проводит анализ соглашения по двум критериям: кто операторы данных и какие есть риски (реклама, передача данных третьим лицам). Также он предлагает шаблон отзыва согласия.

  2. Плагин в браузере, который находит все точки, требующие передачи данных (кнопочки, галочки).

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

SelfPrivacy

Open-source сервер-платформа на хостинге пользователя для развертывания персональных приватных сервисов, управляемых с помощью мобильного приложения через API провайдеров (Hetzner, AWS, Cloudflare). Все сервисы, такие как почта, VPN, мессенджер, менеджер паролей, файловое хранилище, будут собраны в одном месте.

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

В планах у команды тестирование, развитие платформы и релиз на площадках (F-droid, Play Market, App Store).

Amnezia

Проект-победительхакатона DemHack, который состоялся осенью 2020 года.

Сервис на основе полностью открытого исходного кода (серверной и клиентской части) для самостоятельного развертывания VPN-сервера, максимально безопасного и конфиденциального.

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

Мы планируем убедить провайдеров сделать удобный интерфейс, чтобы купить VPS сервер было не сложнее, чем оплатить любой известный коммерческий VPN сервис, говорят разработчики. Настроить собственный VPN сервер в 2021-м так же полезно, как купить биткоины в 2011-м.

Алексей Сидоренко: Четыре всадника апокалипсиса приватности: кто они и как их победить

Руководитель Теплицы социальных технологий Алексей Сидоренко в личном выступлении иронично представил проблемы с приватностью в виде четырёх всадников апокалипсиса, которые являются результатом асимметрии власти, когда у граждан и пользователей есть значительно меньше возможностей управлять своими персональными данными, чем у разработчиков и чиновников.

Четыре всадника дата-апокалипсиса выглядят следующим образом.

Избыточная коммерциализация. Она, что интересно, подразумевает не столько чрезмерный сбор данных Facebook (хотя и это тоже), сколько нелегальность сбора, например, на рынке пробивки данных.

Махровая безалаберность. Появляется в силу человеческого фактора и отношения к человеку не как к человеку, а как строчке в базе данных.

Тоталитарный оппортунизм. Работает по принципу а давайте соберём как можно больше, а что с ними делать, разберёмся потом.

Адская игрофикация. Максимальный сбор данных и сегментация. Уже находит своё воплощение в виде Социального мониторинга в Китае.

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

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

Дискуссия Большой Брат знает всё: зачем госорганам всё больше информации о нас?

Интернет-омбудсмен Дмитрий Мариничев на конференции был настроен серьёзно и при том пессимистично. По его мнению, через 10-20 лет с приватностью в России будет только хуже. При авторитарной модели управления нет граждан, а есть поданные, которые представляют для государства просто ресурс, по которому есть определённые данные и метаданные. Наша страна пойдёт по пути Китая, когда государство стремится к содержанию всей информации в реестрах.

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

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

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

Директор Общества защиты интернетаМихаил Климарёврассказал, как в рамках составления (совместно с РосКомСвободой)Рейтинга соблюдения цифровых прав 2020он оценил приложениеГосуслугипо степени защиты данных пользователей.

Исследование проводилось по методикеRanking Digital Rights, которая при изучении публичной позиции и политик компаний по соблюдению прав человека использует официальные веб-ресурсы компаний (технические домены третьего и более высокого уровня), веб-ресурсы материнских компаний/группы компаний, в которые входят сервисы (например, Mail.ru Group), официальные блоги компаний, а также открытые источники информации, в т.ч. СМИ и медиа-ресурсы.

В рамках этой методики рассматриваемые вопросы группировались по четырём темам:

транспарентность;
права потребителя;
приватность;
свобода информации.

Климарёв проанализировал Госуслуги по этим четырём пунктам (в каждом есть ещё множество подпунктов) и представил итоги в сжатом виде. Так, принципа свободы информации приложение не придерживается, transparency report не публикует, приватность защищает только на 30%, права потребителей на 20%.

В итоге приложение Госуслуги занимает почётное последнее место в списке приложений. На первых трёх, к слову, расположились Хабр, ВКонтакте и Яндекс. Более детально ознакомиться с Рейтингом соблюдения цифровых прав 2020 можноздесь. Подробная методология исследования представлена поэтой ссылке. Ждите наш Рейтинг соблюдения цифровых прав 2021 он выйдет уже скоро!

Директор АНО Информационная культура Иван Бегтин представил исследование Государственные мобильные приложения. Куда передаются данные из приложений, созданных органами власти.

В рамках него специалисты разобрали, какие данные собирают 44 государственных приложения (Мои Документы Онлайн, Добродел, Госуслуги, Активный гражданин, Парковки Москвы и др.) из разных регионов и что могут с ними делать. Оказалось, что 39 приложения включают код сторонних трекеров, 38 при этом код трекеров в зарубежных юрисдикциях.

Данные передаются компаниям в США и Японии. Всего 5 сервисов не содержат сторонних трекеров. Это ЕГР ЗАГС, Госуслуги.Дороги, Липецкая область, HISTARS, Работа в России. В одном приложении может быть до 10 трекеров (Moscow transport).

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

Как и Сидоренко, Бегтин полагает, что разработчикам следует быть более ответственными. Так, им стоит подумать о саморегулировании и внимательнее относиться к юридическим вопросам передачи данных сторонним сервисам.

В одних случаях использование сторонних сервисах, впрочем, может быть оправдано (Google Crashlytics, Google Firebase), отметил Бегтин. В других это совсем необъяснимо и сделано исключительно для удобства разработчиков: Flurry, HockeyApp, Estimote, Amplitud, Mapbox. Следствием этого удобства и является передача данных компаниям, которые торгуют данными на рынке.

Чем больше разрешений, тем больше шансов, что данные о вас передадутся в любой момент, заключил спикер. Пока регуляторы бездействуют, а разработчики не думают о приватности, Бегтин советует пользователям

тщательно взвешивать, стоит ли устанавливать на смартфон то или иное приложение;

проверять приложения на безопасность через такие сервисы, как Expodus Privacy.

Директор Центра ИТ-исследований РАНХиГС Михаил Брауде-Золотарёв не согласился с Иваном Бегтиным, что риски по утечке данных за рубеж выше, чем в России, особенно если это данные про данные, а не сами пользовательские данные. Он считает, что это не так. Помимо этого спикер указал, что для эффективной работы законов надо отделить плохое от хорошего. В России для этого механизма нет.

Не согласен Золотарёв с Бегтиным и в том, что регулирования в России нет. По его словам, оно есть формальное. Но нет инструментов его реализации, соответствующей культуры в обществе и надзора над его исполнением.

По мнению спикера, с инструментальной точки зрения, следует выделять не чёрные зоны законодательства, что тоже важно, а белые и работать с ними.

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

Журналист-расследовательАндрей Каганскихрассказал о том, как целый год вместе с РосКомСвободой он указывал Департаменту информационных технологий Москвы на отдельно взятую уязвимость в системе распознавания лиц. Никакой реакции на это не последовало (чиновники так и не остановили утечки данных с московских камер), а ответ для СМИбылвсегда один никаких утечек нет.

Это попытка моделирования реальности, когда говорят, что ничего не утекает, отметил Каганских.

Напомним, РосКомСвободамониториласитуацию всю весну, а летом провела эксперимент: волонтёр Аннакупилаполное досье на себя за 15 тыс. руб. Кроме того, выяснилось, что барыги на чёрном рынке на просьбу показать, как работает слив данных, предоставили данные шести человек просто в качестве примера.

ДИТ отвечает, что система анонимна, но на делевозможнытак называемые корреляционные атаки, когда фотографии сопоставляются с данными из других систем, в результате чего личность человека раскрывается, напомнил Каганских. К примеру, в МВД есть система, которая сверяет изображения с данными из системы Российский паспорт. Получается, что анонимность системы по факту формальна. Можно использовать две системы и фото человека и на выходе получить досье на него.

Юрист РосКомСвободы Екатерина Абашина рассказала, как должно реагировать общество на вызовы приватности. Она дала слушателям несколько конкретных советов.

Знать свои права как субъектов персональных данных.

Быть проактивными.

Понимать границы допустимого для государства.

Я призываю граждан внимательнее относиться к тому, какую информацию они передают госорганам и коммерческим организациям, разобраться, где требования законны, а где нет, и стараться отстаивать свои права, в том числе через суд, потому что другого порядка, к сожалению, во многих случаях нет. РосКомСвобода готова в этом помогать, заявила Абашина.

Юрист напомнила, что РосКомСвобода проводит кампанию за введение моратория на использование системы распознавания лиц Bancam и собирает случаи нарушения цифровых прав в в пандемию на карте Pandemic Big Brother. В первом случае вы можете помочь нам, присоединившись к кампании и подписав петицию на сайте, во втором сообщив о соответствующих нарушениях.

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

По юридическим вопросам к нам можно обращаться на legal@roskomsvoboda.org.

Подробнее о дискуссии читайте здесь.

На чьей стороне приватность? Мировые практики и болевые точки

Эксперты из Беларуси, Казахстана, Кыргызстана, Германии, а также из РосКомСвободы и Access Now рассказали о цифровых практиках государств в борьбе с коронавирусом, подвели итоги за год и сделали прогноз на будущее.

Интересно отметить, что, как и на первой панели, в выступлениях спикеров звучали тезисы об ответственности разработчиков за производимые технологии, которые используются правительствами для слежки за гражданами. И грустно осознавать, что российская модель обращения с персональными данными на сравнительной шкале адекватной защиты всё чаще оказывается рядом с репрессивным Китаем. Самое печальное предпосылок к позитивным изменениям в нашей стране нет.

2020 год оказался годом пандемии, а вместе с ней ещё и тотальной слежки за гражданами, рассказала координатор проекта Pandemic Big Brother Алёна Рыжикова. В апреле РосКомСвобода и Human Constanta запустили карту Pandemic Big Brother, на которой собирают случаи нарушения цифровых прав.

Почти вся карта окрашена в красный цвет, что означает, что введённые ограничения продолжают там действовать.

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

для отслеживания контактов с заражёнными;

для выдачи цифровых пропусков;

для самодиагностики;

для отслеживания соблюдения обязательного карантина больными.

Только в России в прошлом году было запущено четыре приложения:

Госуслуги СТОП Коронавирус (выдача цифровых пропусков);

Социальный мониторинг (контроль за соблюдением карантина);

Карантин (проверка цифровых пропусков у водителей);

Госуслуги. COVID-трекер (отслеживание контактов с больными коронавирусом).

Запуск таких приложения в ускоренном режиме приводит к тому, что приложения оказываются недоработанными, а собираемые данные лишены надёжной защиты, что приводит к утечкам , заявила Рыжикова и напомнила, как сервис Социальный мониторинг автоматически выписывал штрафы за нарушение карантина даже тем людям, которые этот карантин вовсе не нарушали.

Во время пандемии усилилась интернет-цензура и охота на фейки , отдельно отметила спикер. В России весной был принят соответствующий закон, по которому на журналистов и СМИ посыпались штрафы. Подобные законы были приняты в более чем десяти странах мира. В Арабских Эмиратах могут оштрафовать на сумму до 5,5 тыс. долл., а в Марокко посадить на срок до трёх лет.

Это грубо нарушает право на свободу слова граждан. Наказание за такие преступления избыточны, резюмировала Рыжикова.

Эксперт правозащитной организации Human Constanta Алексей Казлюк отметил, что в Беларуси повестку коронавируса перебивает повестка протестов, которые начались после выборов президента в августе 2020 года. В стране имеет место слежка за протестующими.

Власть внедряет технологии слежения это плохо. Но все инструменты слежки хорошо работают и им можно противостоять это хорошо. Более того, государство не успевает внедрять всё то, что хочет. Государства, которым не хватит денег на слежку, не успеют в полной внедрить соответствующие технологии. Это, собственно, Беларусь. А вот Казахстан и Россия вызывают более тревожные ощущения, отметил правозащитник.

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

Между тем, как считает Казлюк, безответственность производителя технологий уходит в прошлое. Так, компания по распознаванию лиц Synesis попала в санкционный список Евросоюза. Международное адвокатирование один из инструментов борьбы со слежкой. Правозащитники добивались подобного давно, но только сейчас тенденция наконец-то проявилась.

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

Заместитель председателя немецкой Pirate Parties International Грегори Энгельс рассказал об опыте Германии, представив два примера использования технологий в стране, один положительный, другой негативный.

Положительный пример приложение Corona Warn-app, которое спроектировано так, что исключает слежку за гражданами благодаря протоколу DP-3T Decentralised (данные сохраняются исключительно на телефоне). Близлежащие устройства обмениваются загружаемыми результатами тестов своих владельцев, но только таким образом, что понять, был ли человек в зоне риска, можно, а узнать, кто именно из контактов болен, нельзя. Результаты сразу тестов идут со специальным QR-кодом, которые сохраняет в безопасности персональные данные владельца.

Использование приложения анонимно и добровольно. Сервис не собирает данные, которые не нужны для отслеживания контактов, например, геолокацию, хотя и в Германии есть политики, которые, не понимая, как работают технологии, говорят, что надо собирать о людях больше данных.

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

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

Основатель Eurasian Digital Foundation Руслан Дайырбеков заявил, что пандемия потребовала от государств принятия срочных цифровых решений. В том числе Казахстан внедрил разного рода технологии слежения, силу которых граждане ощутили в полной мере. За нарушителями режима самоизоляции следили при помощи мобильного приложения Smart Astana, систем городских камер видеонаблюдения Сергек, Карты мобильных абонентов, дронов и прочих цифровых инструментов.

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

К сожалению, нет правовых механизмов оценки влияния технологий на права человека.

Спикер рассказал и о позитивном развитии законодательства в сфере персональных данных: прошедший год ознаменовался большим шагом в развитии этой области.

Так, был принят закон о регулировании цифровых технологий, представляющий собой пакет поправок в существующие законы. Речь идёт о действительно позитивных изменениях, поскольку государство имплементировало международный стандарт минимизации данных, а также установило правила дактилоскопической, геномной и биометрической регистрации.

Помимо этого появился уполномоченный орган по защите персональных данных, который, правда, пока сложно назвать независимым, поскольку представляет министерство цифрового развития.

Юрист Гражданской инициативы интернет-политики в Кыргызстане Ирина Байкулова подтвердила, что в её стране было много вещей, которые отразились на карте Pandemic Big Brother. В Кыргызстане происходили следующие вещи.

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

Ужесточение санкций за нарушение санитарно-эпидемиологических норм, условий карантина и самоизоляции, распространение в Сети ложной информации. Были внесены изменения в кодексы об ответственности (приняты по ускоренной процедуре, без общественного обсуждения), введены штрафы за распространение недостоверной информации, если она нарушает общественный порядок и спокойствие граждан на территории, где объявлен режим ЧП.

Ограничение доступа к официальной информации. Журналистов не аккредитовывали на брифинги госорганов.

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

Слежка через государственные цифровые сервисы, использование технологий для отслеживания, нарушающих право на частную жизнь, в частности, мобильное приложение Stop COVID-19 KG.

Максимальный сбор данных трекерами на приложениями, вплоть до местоположения, при отсутствии положений конфиденциальности о том, кто собирает данные, как хранит, куда передаёт.

Утечки данных. В социальных сетях и мессенджерах было распространено видео с описанием работы приложения, фактические разгласившее особо чувствительные персональные (медицинские) данных. Информация оказалась общедоступна.

Электронные пропуска на разрешённые виды деятельности, такие как логистика, доставка продуктов в маркеты, оказание медицинской помощи, волонтёрство.

Электронный маршрутный лист (обязательный документ онлайн или офлайн формы для возможности передвижения по городу в период ЧП/ЧС).

Как хранятся собранные данные, сейчас неизвестно. Неясно, какое количество ПД было собрано, как они использовались, где и в каком виде они хранятся, кто имел к этим данным доступ, защищены ли эти данные от утечек.

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

Мы видим, что госорганы всё больше присматриваются к опыту других стран по использованию технологических механизмов контроля, и к сожалению всё больше обращаются не к европейскому опыту (защите privacy), а к китайскому и российскому. Причём скорее вне зависимости от пандемии COVID-19, этот тренд достаточно устойчивый, заключила эксперт.

Эксперт по защите цифровых прав из международной некоммерческой организации Access Now Наталья Крапива сделала прогноз о том, развитие каких трендов стоит ожидать в 2021 году. В их числе распознавание лиц, наблюдение за коммуникациями, применение искусственного интеллекта.

Спикер также выделила следующие тенденции в проводимых политиках разных государств.

1. Правительства станут требовать от людей паспорта вакцинации, что грозит раскрытием и утечкой персональных данных людей и дискриминацией. При этом не существует доказательств, что такие паспорта могут защитить от инфекции.

2. Страны будут продвигать идею суверенитета данных. Отсюда вытекает положительный момент независимость от технологических компаний. Однако Китай, Россия, Чили и даже страны Евросоюза понимают суверенитет как возможность тотальной слежки за гражданами.

3. Регуляторы продолжат рассматривать защиту данных и конкуренцию совместно для контроля над BigTech. Политика защиты данных и антимонопольное законодательство будут совпадать, что проиллюстрировало антимонопольное заседание Конгресса США. Это хорошо, потому что не позволяет компаниям упрочить свою власть.

4. Произойдёт реформа законодательства, связанного со слежкой, для обеспечения передачи данных с Евросоюзом. США уже потеряли возможность переносить данные из Европы к себе.

5. Многие страны, где нет строгих законов о защите данных, начнут двигаться в этом направлении. Это США, Тунис, Эквадор, Индия, Австралия, Боливия. В России, к сожалению, предпосылок к этому нет.

Будем оптимистами и станем надеяться, что как можно больше стран подпишут, ратифицируют и полностью имплементируют Конвенцию о защите физических лиц при автоматизированной обработке персональных данных и её протокол. Эти документы способствуют продвижению концепции прав человека и защите данных во всём мире.

Подробнее о дискуссии читайте здесь.

Соглашайся или уходи: почему интернет-платформы собирают наши данные и куда они утекают?

Представители компаний и сами пользователи представили совершенно разные точки зрения на то, что компании имеют право делать с пользовательскими данными. Так, разработчик решений для финансовых организаций Double Data считает, что может анализировать данные из соцсетей, потому что они общедоступны по своей форме. Фармацевтическая компания Novartis, напротив, уверена, что данные не должны продаваться, если в их суть не заложена коммерциализация, поскольку пользователи соцсетей по умолчанию не предполагают, что их данные будут использоваться в подобных целях. Управляющий партнёр LT Consulting рассказал о своём иске к Apple, а представитель РосКомСвободы о том, как можно влиять на отношение компаний к приватности клиентов.

Заместитель генерального директора по правовым вопросам Double Data Екатерина Калугина представила доклад на тему Пользовательские данные как инструмент конкурентной борьбы.

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

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

законодательством о персональных данных (кейс Facebook);

иммунитетом интеллектуальной собственности (Double Data против ВКонтакте).

Российский опыт в области иммунитетов интеллектуальной собственности представлен, хотя и не исчерпывается, спором Double Data и ВКонтакте. Напомним, социальная сеть в 2017 году подала в суд на компанию ООО Дабл, которая собирала общедоступные персональные данные пользователей. Поначалу соцсети было отказано в иске, затем апелляционная инстанция отменила это решение, дело дошло до кассационного суда, который отправил его на новое рассмотрение в первую инстанцию Арбитражный суд Москвы. Дабл утверждает, что их программа работает как поисковик и клиентам даёт только ссылки на профили пользователей. ВКонтакте же полагает, что Дабл именно извлекает данные пользователей из открытых профилей и использует в своих интересах, в то время как база данных собственность соцсети.

Развитие технологий возможно только в случае, если компании имеют равноправный доступ к открытым данным, уверена спикер. Претензии ВКонтакте способ конкурентной борьбы, считает и гендиректор Double Data Максим Гинжук.

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

Руководитель направления по защите персональных данных Novartis Россия/СНГ Илья Пикулин дополнил фразу Сергея Сидоренко: Я не строчка в базе данных, а личность. Спикер рассказал о компании, которая является примером ответственного подхода к пользовательским данным.

Транснациональная фармацевтическая компания Novartis заинтересована в данных и является потребителем сервисов, которые предоставляют данные. Но она старается трезво смотреть на то, что предлагают ей поставщики данных, например, рекламирующие программу поддержки клиентов. Как правило, они собирают о людях очень много данных и либо легко отдают их все, вплоть до скана паспорта, результатов медицинского тестирования или сведений о редких заболеваниях, либо просто убирают имена владельцев этих данных, не понимаю, что и без имени вычислить человека легко. А значит, настоящую деперсонализацию они не провели.

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

При этом Novartis не отказывается от продукции сразу, но проверяет, насколько использовании данных законно. Конечно, иногда это приводит к потере коммерческой выгоды, однако компания нацелена на privacy by design.

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

Как потребители мы должны менять культуру в отношении поставщиков услуг, чтобы соблюдался баланс между коммерческими интересами и правами субъектов. Когда они делятся в открытом доступе, не думают, что данные будут продаваться.

Данные не должны продаваться, если в их суть не заложена общедоступность, заключил эксперт.

Управляющий партнёр LT Consulting Тигран Оганян рассказал о своём иске к Apple. Модератор Алексей Мунтян заметил, что благодаря таким кейсам репутация компаний становится всё более важной в аспекте приватности.

В Нью-Йорке в своё время он приобрёл iPhone 6s и сим-карту T-Mobile, привязал телефон к своему Apple ID и использовал полученный телефонный номер около года. После этого, как потом выяснилось, гражданин США Реджи Лопес в Нью-Йорке купил iPhone 6 plus, а также новую сим-карту T-Mobile. Как только Лопес активировал сим-карту на новом iPhone, все сервисы Apple сразу привязались к его номеру телефона, в то время как старый телефонный номер Оганяна (он же новый номер Лопеса) оставался привязанным к Apple ID Оганяна.

Лопесу было неизвестно, что ранее этот номер принадлежал Оганяну. И хотя Оганян деактивировал и даже не вставлял сим-карту в свой телефон, он стал получать сообщения и звонки по iMessage и FaceTime, адресованные новому владельцу телефонного номера Лопесу. При этом Apple никогда не предупреждала своих клиентов о необходимости вручную отвязать старые номера, используемые на iPhone, от аккаунтов Apple.

Оганян получил более 100 сообщений и звонков, среди которых были личные фотографии и сообщения, явно адресованные Реджи Лопесу. Многочисленные попытки урегулировать данную проблему, включая обращение лично к Тиму Куку с просьбой провести внутреннее расследование, не увенчались успехом.

В Apple только посоветовали удалить телефонный номер и сим-карту, которая и так давно не использовалась и была заблокирована.

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

Это исключительно привилегия устройств Apple, отметил Оганян особенность смартфонов корпорации.

Юристы Оганяна доказали, что Apple в ходе маркетинговых кампаний предоставляла пользователям ложную информацию о защите их данных. Она позиционировала свои устройства как обладающие специальной защитой конфиденциальности. По этой причине компания назначала и премиальные цены. Оператор ItMobile также обманывал пользователей насчёт защищённости переписки и не требовал от прежних владельцев отвязывать номера от устройств, считает спикер.

Неразглашение Apple и ItMobile привело к тому, что пользователи стали ничего не подозревающими жертвами утечки их корреспонденции, заявил Оганян.

Примечательно, что iOS12 предположительно решала такие проблемы, но Apple так и не проинформировала потребителей о факте обнаружения бреши, которая существовала на протяжении семи лет. И важно, что даже сегодня далеко не все обновили ПО, поэтому указанные нарушения всё ещё могут иметь место.

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

Люди должны объединяться для решения таких задачи и привлекать инвестиции в свои кейсы, поскольку путь разбирательств очень длинный, уверен Оганян.

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

Юрист РосКомсвободы Анна Карнауховарассказала про то, как составлялсяРейтинг соблюдения цифровых прав 2020. Об этом можно почитать выше в рамках выступления Михаила Климарёва.

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

У нас есть основания полагать, что мы положительно влияем на компании, поскольку в новом отчёте лидеры поменялись. Считаем, реакция есть и изменения в лучшую сторону тоже, заявила Карнаухова.

К слову, октябре 2020 году Яндекс впервыепредставилотчёт о прозрачности, что, безусловно, повлияет на место компании в рейтинге 2021 года.

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

Подробнее о дискуссии читайте здесь.

Ждём вас на нашей конференции в следующем году! А пока смотрите Privacy Day 2021 на нашем канале на YouTube тут - подборка по отдельным видео в плейлисте):

Подробнее..

Никогда такого не было и вот опять. Почему нужно использовать self-hosted VPN. Релиз Amnezia

11.03.2021 18:13:13 | Автор: admin
Вот и пришло время для релиза VPN-клиента, родившегося благодаря хакатону DemHack, и выращенного при поддержке РосКомСвободы, PrivacyAccelerator и Теплицы социальных технологий.

Спустя полгода с того момента, как идея была впервые озвучена, мы презентуем готовый продукт бесплатный опенсорсный клиент для self-hosted VPN, с помощью которого вы сможете установить VPN на свой сервер в несколько кликов.

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

image

Кто сразу хочет узнать подробности и технические характеристики клиента AmneziaVPN перематывайте в конец статьи.

Будущее интернета и VPN


Давайте пофантазируем, каким может быть или каким мы хотим видеть Интернет в обозримом будущем, через несколько лет и в необозримом, в десятки лет.

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

Стоит ожидать, что и средства для обхода блокировок тоже будут совершенствоваться. Вы так думаете? А я так не думаю. И вот почему.

Некоторые современные государственные фаерволы умеют не только выполнять глубокий анализ пакетов (DPI), но и осуществлять активные проверки серверов, с которыми соединяется клиент. Смысл этих активных проверок заключается в том, что фаервол не просто анализирует трафик, но и делает разные хитрые запросы на сервер, с целью определить, а не замаскирован ли на этом сервере VPN сервис. Игра в кошки-мышки дошла до того, что некоторые VPN протоколы уже умеют полноценно маскироваться под настоящий зашифрованный web трафик, а фаервол пытается определить валидность SSL сертификата, которым подписан трафик. Похоже, что это тупик. Дальше только white list. Это означает, что вся эта игра в кошки-мышки подходит к концу.

DPI со своими активными проверками проиграл битву, и при определенных настройках VPN трафик невозможно отличить от обычного web-трафика.

Финальный аккорд, который нужно сыграть на стороне того, кто обходит блокировки это приобретение любого домена, и выпуск валидного (бесплатного вполне хватает) SSL сертификата. Далее на сервере настраиваются ShadowSocks с плагином обфускации (маскировки трафика), фейковый веб сервер, и сплиттер трафика. Но это последний аккорд борьбы с фаерволами, в большинстве случаев пока достаточно простого ShadowSocks с обфускацией.

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

Квантовые компьютеры могут, конечно, нас устремить в технологическую сингулярность, но, думаю, что это тоже ближе к середине века намечено. Даже если к концу этого десятилетия соберут что-то годное, там сразу военные, силовики понабегут, да и сами корпорации будут не против подоить рынок, а там, глядишь, и власть попеределить захотят. Бррр, как-то всё апатично-удручающе, может кто поделится более оптимистичными вариантами развития событий в комментариях?

Так что же там с нашими VPN-ами в гипотетическом 2033м?


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

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

По всей видимости, к VPN-ам качественно прикрутят блокчейн, и это может даже станет мейнстримом. Прикручивать уже начали несколько лет тому назад уже есть такой проект Mysterium. Я вообще за ними слежу, уже года четыре пилят, третий раз переписывают, их токен MYST наглядно показывает положение дел он на дне, и расти, видимо, не собирается. Идея то хорошая, но с реализацией у них что-то возникли проблемы. А в сторону маскировки трафика они пока вообще не смотрят, что сильно снижает их конкурентоспособность, особенно на ближайших отрезках времени.

Бесплатный сыр


Последнее время новостные ленты запестрели новостями о том, что утекли данные 21 млн пользователей популярных (первый раз вижу эти названия) VPN-сервисов, а до этого мелькали новости, что во Frigate зашит троян (xakep.ru), а до этого, что утекли данные каких-то других VPN сервисов (www.rbc.ru).

А что с данными пользователей других VPN они ещё не утекли, но уже проданы?
Находили ли вы по-настоящему бесплатные VPN, которым можно доверять? Есть ли гарантия что платные VPN не продают ваши данные? Несомненно, существуют честные VPN-сервисы, которые явно не намерены торговать вашими данными, и защищают их всеми своими силами.

Но мы считаем, что этого не достаточно. Мы и огромное количество других пользователей предпочитаем self-hosted VPN.

Итак, попробую пояснить своё видение. Начну издалека.
Начну с приватности и анонимности. Если по-простому, приватность это когда вы заходите на сайт и третьим лицам видно, что зашли именно вы, но что вы там делаете им не видно, всё зашифровано. А анонимность это когда невозможно (или предельно сложно) вычислить, кто же зашел на сайт, сопоставить факт захода на ресурс с конкретным человеком.

Зачем нужны VPN


А теперь зачем вообще нужны VPN. Ниже я попробую перечислить основные сценарии использования VPN, в контексте анонимности и приватности. Если что-то забыл пишите в комментах, добавлю, это же интересно!

Дисклеймер: список сценариев приведен в ознакомительных целях, мы категорически против использования сети Интернет по сценариям, находящимся вне закона. Для разных пользователей и разных юрисдикций соответствие упомянутых сайтов к конкретным сценариям может различаться.

Список сценариев
  1. Доступ к заблокированным сайтам, по типу торрент трекеров, порнохабов.
    Для этого сценраия характерно то, что пользователю нужен только доступ, в любом варианте, даже через самый небезопасный бесплатный плагин в браузере. Пользователям не важна ни приватность, ни анонимность, а важно только получить доступ.
  2. Доступ к заблокированным сайтам, на которых важна приватность обмена информацией.
    У каждого пользователя может быть свой критерий для попадания сайтов в этот сценарий, для меня например это Linkedin, а теперь, к сожалению, и Payoneer. Пользователю важна приватность, но анонимность не требуется.
  3. Я бы добавил ещё один сценарий, почти такой же, как и сценарий 2, только с максимальными требованиями по приватности.
    Например, локалбиткоинс. Отличие этого сценария заключается в том, что если для сценария 2 я бы ещё мог использовать какой-либо проверенный VPN-плагин в браузере, то для этого сценария никогда. Анонимность при этом всё ещё не требуется.
    Далее начинаются более экзотические варианты использования VPN.
  4. Например, сценарий, когда вы переехали в Тайланд или на Бали, и, о чудо, через VPN интернет работает лучше, чем без него видимо в экзотических странах провайдеры любят применять экзотический шейпинг трафика. Приватность нужна, анонимность всё ещё нет. Сюда же можно отнести и все остальные сценарии, связанные со скоростью интернет-соединения: приехали на дачу в Подмосковье, подключились через 4G модем, и вроде как тариф безлимитный, а скорость падает. Говорят, VPN помогает в таких случаях.
    Далее начинаются сценарии, в которых нужна анонимность. Или хочется, чтобы она была.
  5. Кому-то анонимно нагадить, оскорбить, или что-то в этом роде.
    Знаний и навыков мало, что-то где-то прочитал, что можно зайти через VPN/Tor/proxy, и будет всё анонимно и приватно, и так далее.
  6. Вы кулхацкер, скрипткиди, или просто балуетесь.
    На всякий случай хотите подключаться к Тору через впн. Ну или без Тора. Анонимность и приватность очень-очень нужны, но, самое главное чтобы мама/жена не запалила.
  7. Вы хакер, фрикер, кракер, кардер, спамер, пират.
    Вам нужна абсолютная анонимность, у вас свои методы её обеспечения, возможно, вы иногда используете VPN, вероятнее всего какой-то свой self-hosted.
  8. Вы участвуете в политической жизни страны, и вам нужна анонимность и приватность.
    Вы действуете в рамках закона, или на его грани, но опасаетесь за свою безопасность, поэтому хотите подстраховаться. Через Tor на приличные сайты заходить неудобно, а через VPN самое то.
  9. Пользователь находится далеко вне локального закона, и он по каким-то причинам пользуется VPN.
    От греха подальше, даже не буду перечислять возможные подробности этого сценария, времена нынче строгие.

Проще говоря, вам анонимность не нужна, от слова совсем. Маловероятно, что те, кому она реально нужна, читают эту статью. Кому надо, уже всё знают, а кому не надо, им и не надо.

Теперь поговорим о приватности.
Комментарий из интернетов, оставлен совсем недавно на презентацию Privacy Day 2021 на Ютубе. Орфография и пунктуация сохранены. Слабонервным не открывать.

Комментарий
ну и Фригейт это частный случай, мы же говорим о плагинах в широком смысле, я понимаю, что они как-то монетезируются на мне, раз они бесплатны ну значит собирают что то, биг дату наприпер, ну и пускай, не юзать же платные впн, большинству не нужна сверх анонимность, надо чтобы на заблоченные сайты заходилось, и чтоб бесплатно было, всё, проекты типа антизапрет живущий на донаты будут популярны и любимы, а всякие платные решения не будут иметь и одной тысячный от их аудитории, платить готов бизнес, рядовому же юзеру коих большинство это не нужно, поставил приложеньку, включил и забыл, всё работает годами, на торренты заходит, ну чё та там шпионит, пускай, главное чтоб обезличенно и берега видело, ну Фригейт берега попутал, до этого были и другие типа Фокси Прокси, ну что поделать, не юзать же платные с абоненткой

Да, вот именно так, это среднестатистический пользователь сценария 1.
Хорошо это или плохо, что большинство готово платить такую цену за обход блокировок риторический вопрос, как говорится как есть. Но напрашивается логичный вывод: раз даже среди бесплатных VPN есть большая конкуренция, значит пользователи будут выбирать более надежные, проверенные, технически продвинутые решения среди бесплатных. Пользователей всех остальных сценариев приватность волнует, кого-то сильнее, кого-то слабее. Они готовы либо платить деньги за коммерческие VPN, либо всё настаивать своими силами.

Self-hosted VPN


Так вот, вообще-то это статья о релизе клиента для self-hosted VPN. Сейчас попытаюсь обосновать зачем он нужен, и куда мы хотим его развивать. Выше я писал про типичные сценарии использования VPN. Пройдёмся по ним ещё раз, в контексте self-hosted VPN.

  • Для первого сценария (доступ к заблокированным сайтам) основные требования бесплатность и максимальная простота. Тут, конечно, сложно конкурировать с бесплатными сервисами, которые в качестве оплаты собирают всякую разную информацию о пользователях, о трафике, и на этом монетизируются. Cреди пользователей этого сценария есть небольшой отклик, некоторые пользователи этого сценария постепенно втягиваются в цифорвую жизнь, и их требования к приватности возрастают.
  • Пользователям 2-го и 3-го сценариев (доступ к важным сайтам), навороченный клиент для self-hosted VPN будет весьма интересен, они задумываются о безопасности и приватности, это наша основная целевая аудитория, можно сказать.
  • Пользователям 4-го сценария (для которых важна скорость) клиент окажется полезным за счёт гибкости VPS сервер для своего VPN можно купить вообще где хочешь, и с любыми параметрами.
  • Пользователи сценариев 5, 6, 7 и 9 (все, кто заведомо вне правового поля) как-нибудь сами разберутся со своими грязными делишками, или делищами, у кого как.
  • А вот пользователям 8-го сценария (журналисты, правозащитники и т.д.) тоже, думаю, клиент будет интересен.

Ну и есть у нас всё же для первого сценария козырь в рукаве, но разыграть его будет сложно. Мы сделали фичу, которая позволяет в клиенте включать режим настраиваемой маршрутизации и заворачивать внутрь VPN только заблокированные ресурсы, таким образом технически устраняя боль пользователей первого сценария. Оно, конечно, пока не очень удобно это нужно в клиент руками вбить нужный адрес, в 20х годах этого столетия это уже слишком лениво для пользователей. Но тем не менее, здесь есть куда двигаться можно представить такую схему: из клиента не просто развернуть собственный VPN сервер, но и сразу прописать для этого сервера access list адреса, которые он будет через себя маршрутизировать. И расшаривать параметры подключения к этому серверу. И те, кто будут к нему подключаться, автоматически будут подгружать себе локально этот список адресов в таблицу маршрутизации. В таком случае найдётся намного больше желающих расшаривать свой VPN-сервер, зная что с него уж точно не будут ломать Пентагон.

Amnezia VPN


Вот мы и плавно подошли к техническим характеристикам клиента AmneziaVPN.

AmneziaVPN это бесплатное приложение с открытым исходным кодом для создания вашего собственного VPN на вашем собственном сервере.

Что он уже умеет:
  • Клиент подключается к вашему серверу по SSH, устанавливает Docker, если он ещё не установлен, и запускает серверные контейнеры Amnezia. Пока поддерживается только Ubuntu/Debian (нужен apt install docker-io).
  • Контейнеры запускаются (для каждого протокола отдельный контейнер), генерируют ключи, и корневой сертификат. Из клиента также можно в один клик переустановить контейнеры, таким образом переинициализировав PKI. Или вообще замести следы и удалить все контейнеры с сервера.
  • Контейнеры не имеют смонтированных папок с хоста, не предоставляют никакой API для управления (пользователями, например), не пишут логи внутри себя, и, вообще, не делают ничего, кроме своей прямой задачи обеспечивать подключение соответствующего VPN протокола.
  • При каждом подключении клиент сам себе генерирует новый ключ и сертификат, и забрасывает его на сервер. Подключение OpenVPN по сертификату.
  • В текущем релизе есть поддержка OpenVPN и OpenVPN over ShadowSocks, сейчас в релизе используется второй вариант.
  • В клиенте есть два режима работы гнать весь трафик через VPN, или заворачивать трафик только для определенных хостов, которые юзер может добавить самостоятельно.
  • Можно расшарить параметры подключения к серверу одной ссылкой (шаринг для семьи так сказать в строке расшариваются реквизиты SSH).
  • Доступны билды для Windows >= 7 и MacOS >= 10.13.

Как это работает с точки зрения пользователя:
  • Устанавливаете клиент Amnezia.
  • Покупаете любой VPS сервер в той локации, которая кажется оптимальной для вас.
  • Вводите в клиент IP, login, password от сервера.
  • Ждете несколько минут пока всё установится на сервере.
  • Подключаетесь.
  • Для более тонкой настройки вбиваете адреса серверов, для которых необходимо использовать VPN.
  • Если нужно подключить ещё один девайс достаточно просто из клиента скопировать строку подключения, и ввести её в другом клиенте.

image
AmneziaVPN не является VPN сервисом, и не предоставляет возможности подключения к каким-либо преднастроенным серверам. В отличие от VPN сервисов, мы публикуем в свободный доступ не только исходные коды клиентской части, но и исходные коды серверной части. Для подключения вам необходимо приобрести любой VPS сервер любого провайдера самостоятельно.

А вот что планируется дальше, в порядке приоритетов:
  • Добавить маскировку трафика под TLS (прикрутить плагин к ShadowSocks + настроить фейковый веб сервер).
  • Добавить возможность безопасного расшаривания параметров подключения.
  • Добавить возможность запуска сервера со списком разрешенных серверов для подключения через VPN.
  • Может быть добавить какие другие протоколы (если будет востребовано) или поддержку других ОС на сервере (по сути только команду установки докера нужно пофиксить).
  • Начать разработку мобильных клиентов.

Если у вас есть какие-то возражения, комментарии по функционалу, сценарию развития, или какие-либо другие идеи пожалуйста, не стесняйтесь, и пишите в комментариях. Этот проект это ваш проект, делается для вас.
Сайт со ссылкой на инсталляторы тут https://amnezia.org/
За исходниками на гитхаб
telegram t.me/amnezia_vpn

P.S. Мессэдж провайдерам VPS


Несмотря на наличие инструкций для покупки, многим пользователям во время первого тестирования было сложно разобраться с покупкой виртуального сервера (VPS). Мы сделали полезный и простой клиент, и хотим, чтобы как можно больше пользователей могли настроить на нем свои собственные VPN. Если среди читателей есть представители VPS провайдеров, готовые услышать нас и сделать специальный VPN-Ready тариф, без технических настроек, только личные и платежные данные, мы с удовольствием добавим ваш хостинг на наш сайт со ссылкой на тариф и инструкцией.
Свяжитесь с нами:
support@amnezia.org
но лучше через telegram:
t.me/amnezia_vpn
Подробнее..

Еще немного про использование VPN в Билайн

17.03.2021 16:04:48 | Автор: admin

Привет! В этой статье я расскажу о ещё двух вариантах VPN, используемых нами для включения клиентов с помощью Мультисим Резервирования, это L2TP иL2-VPN. Первый используется для включения сервисов Интернет, второй для включения каналов L2 MPLS.

Самый первый L2TP

Исторически этот вариант был самым первым внедренным вариантом для предоставления сервиса Интернет клиентам, именно на нем мы обкатывали все бизнес-процессы включений, набивали первые шишки со сложностью настройки СРЕ, процессами активации Sim-карт и прописывания их в выделенные APN, выбирали наиболее оптимальные варианты настроек и конфигураций СРЕ и РЕ оборудования, суммарно за первые полгода мы подготовили восемь различных версий конфигураций оборудования. Такой итеративный подход позволил найти баланс между потребностями клиентов и нашими возможностями, мы посмотрели, что и как стоит настраивать, как выстроить процессы, а за что лучше не браться вообще.

Архитектурно схема выглядит так:

Описание:

В роутер устанавливаются две Sim-карты, прописываются APN и настраивается радио-интерфейс, плюс настраивается WAN-интерфейс для входящего проводного канала, если он есть. Sim-карты прописываются в типовые APN, все APN разных операторов связи объединены в один VRF и получают стандартизированные приватные IP-адреса из своих APN.

На нашем RADIUS-сервере при подключении создается сессионный аккаунт для клиента, информация о этом аккаунте будет использована BRAS при построении сессии. Роутер начинает строить L2TP-сессию либо через проводной WAN-интерфейс (интернет-канал), либо через радиоинтерфейс, в зависимости от типа работы (Fix+LTE/3G или "чистый" LTE/3G), сессия терминируется на BRAS с типовыми настройками прописанными на RADIUS сервере.

Также на RADIUS-сервере возможна настройка Framed Route с публичной интернет подсетью, которая настраивается на LAN-интерфейсе роутера и транслируется клиенту. Таким образом, каждый клиент имеет один статический IP-адрес на туннеле с приватной адресацией и NAT на трех LAN-интерфейсах, и дополнительно прописанную публичную подсеть (обычно это /31 или /30 подсеть) на одном LAN-интерфейсе.

Так как туннель может строиться через кабельное подключение (интернет-канал) или Sim-карты, а подсеть маршрутизируется за туннель, клиент получает статичные настройки вне зависимости от используемой транспортной сети.

При пропадании кабельного канала роутер за 10-20 секунд перекидывает трафик на радиоинтерфейс и первую Sim-карту, а в случае проблем и с ней производит смену рабочей Sim-карты на резервную, обычно эта смена занимает 60-90 секунд.

За выбор маршрута трафика между кабелем и радиосетью отвечает встроенный инструмент NQA (Network Quality Analysis) и значения preference route:

#nqa test-instance admin inet test-type icmp destination-address ipv4 4.2.2.2 frequency 20 source-interface GigabitEthernet0/0/4 start now##ip route-static 0.0.0.0 0.0.0.0 Virtual-Template1 preference 40ip route-static 4.2.2.2 255.255.255.255 GigabitEthernet0/0/4 dhcpip route-static 85.21.4.234 255.255.255.255 GigabitEthernet0/0/4 dhcp track nqa admin inetip route-static 85.21.4.235 255.255.255.255 GigabitEthernet0/0/4 dhcp track nqa admin inetip route-static 100.64.0.0 255.255.254.0 Cellular0/0/0 preference 70ip route-static 100.64.0.0 255.255.254.0 NULL0 track nqa admin inet#

А за выбор активных Sim-карт отвечает скрипт автопереключения, написанный на Python.

Схема также имеет свои ограничения: cкорость доступа ограничена 30-50 Мбит/с, а MTU=1450.

Дальнейшее направление развития - это реализация этой же схемы с резервированием проводных каналов, но уже с использованием BGP, для анонса LAN-сети либо через кабель, либо через туннель, это позволит использовать роутер в виде резерва на широкополосных каналах в 100-200 Мбит/с и разделением маршрутов трафика по кабелю и по туннелю. Естественно, это будет работать только на проводных каналах от Билайн, для работы через других провайдеров мы отправляем весь трафик через L2TP-туннель.

Самый трудный L2 MPLS

Этот вариант получился самым последним в наших решениях на сегодняшний день, и был самым тяжелым с точки зрения реализации. Используемый протокол для этого типа подключений на Huawei AR129 SVPN L2TPv2, на ответной части стоит Cisco ASR1001-X, которая является ответной частью туннеля и выводит трафик в MEN сеть.

Архитектурно сеть выглядит так:

Настройка такого режима на роутере Huawei AR129 выглядит так:

#interface Tunnel0/0/0tunnel-protocol svpnencapsulation l2tpv3l2tpv3 local session-id 3l2tpv3 remote session-id 4tunnel-source 100.64.16.63tunnel-destination 100.64.0.43#

Самый трудный для нашей реализации ввиду особенностей работы протокола, сессия для L2 MPLS инициируется с IP-адреса Sim-карты, которая активна в конкретный момент для этого туннеля, и к IP-адресу привязываются значения и на CPE и на ответном узловом PE, а в случае проблем с работающей LTE/3G сетью происходит смена IP на Sim-карте.

У нас были следующие варианты выхода из этой ситуации:

  • Использовать GRE-туннель, и уже через этот туннель пускать туннель с L2 MPLS.

  • Назначать одинаковые IP-адреса на Sim-карты при настройке.

  • Сделать так, чтобы конфигурация туннелей менялась в роутере в зависимости от Sim-карты.

Первые два варианта хоть и выглядели оптимальными с точки зрения архитектуры сети (отдельный туннель отдельная пара портов на MEN-сети), но с точки зрения синхронизации процессов и технической поддержки это гораздо большая проблема.

Соответственно, пришлось реализовывать реконфигурацию роутера "на лету. Если учесть, что используемый нами Python-скрипт для автоматического переключения Sim-карт и так уже выполнял большую часть логики, нам осталось его немного дополнить парой функций:

При смене Sim-карт нужно было вызвать процесс изменения в параметрах настройки туннеля remote session-id и tunnel-source, и при обратной смене Sim-карт вернуть эти значения:

def l2_sim2(o, cli):log_syslog(o, ops.CRITICAL, "New parameters applied: " + l2_lses2 + " " + l2_rses2 + " " + l2_vcid2 + " " + l2_src2 + " " + l2_dst2)output, n1, n2 = o.cli.execute(cli, "system-view")  output, n1, n2 = o.cli.execute(cli, "interface Vlanif1")output, n1, n2 = o.cli.execute(cli, "undo link-bridge Tunnel0/0/0")output, n1, n2 = o.cli.execute(cli, "quit")output, n1, n2 = o.cli.execute(cli, "quit")result = o.timedelay(seconds=60, milliseconds=0)output, n1, n2 = o.cli.execute(cli, "system-view")  output, n1, n2 = o.cli.execute(cli, "interface Tunnel0/0/0")output, n1, n2 = o.cli.execute(cli, "tunnel-protocol svpn")output, n1, n2 = o.cli.execute(cli, "encapsulation l2tpv3")output, n1, n2 = o.cli.execute(cli, "interface Tunnel0/0/0")output, n1, n2 = o.cli.execute(cli, "l2tpv3 local session-id " + str(l2_lses2))output, n1, n2 = o.cli.execute(cli, "l2tpv3 remote session-id " + str(l2_rses2))output, n1, n2 = o.cli.execute(cli, "tunnel-source " + str(l2_src2))output, n1, n2 = o.cli.execute(cli, "tunnel-destination " + str(l2_dst2))output, n1, n2 = o.cli.execute(cli, "quit")output, n1, n2 = o.cli.execute(cli, "quit")output, n1, n2 = o.cli.execute(cli, "system-view")  output, n1, n2 = o.cli.execute(cli, "interface Vlanif1")output, n1, n2 = o.cli.execute(cli, "link-bridge Tunnel0/0/0 vc-id " + str(l2_vcid2) + " tagged")output, n1, n2 = o.cli.execute(cli, "quit")output, n1, n2 = o.cli.execute(cli, "quit")output, n1, n2 = o.cli.execute(cli, "save", {"continue": "Y"})def l2_sim1(o, cli):log_syslog(o, ops.CRITICAL, "New parameters applied: " + l2_lses1 + " " + l2_rses1 + " " + l2_vcid1 + " " + l2_src1 + " " + l2_dst1)  output, n1, n2 = o.cli.execute(cli, "system-view")  output, n1, n2 = o.cli.execute(cli, "interface Vlanif1")  output, n1, n2 = o.cli.execute(cli, "undo link-bridge Tunnel0/0/0")  output, n1, n2 = o.cli.execute(cli, "quit")output, n1, n2 = o.cli.execute(cli, "quit")result = o.timedelay(seconds=60, milliseconds=0)  output, n1, n2 = o.cli.execute(cli, "system-view")output, n1, n2 = o.cli.execute(cli, "interface Tunnel0/0/0")output, n1, n2 = o.cli.execute(cli, "tunnel-protocol svpn")output, n1, n2 = o.cli.execute(cli, "encapsulation l2tpv3")output, n1, n2 = o.cli.execute(cli, "l2tpv3 local session-id " + str(l2_lses1))output, n1, n2 = o.cli.execute(cli, "l2tpv3 remote session-id " + str(l2_rses1))output, n1, n2 = o.cli.execute(cli, "tunnel-source " + str(l2_src1))output, n1, n2 = o.cli.execute(cli, "tunnel-destination " + str(l2_dst1))output, n1, n2 = o.cli.execute(cli, "quit")output, n1, n2 = o.cli.execute(cli, "quit")output, n1, n2 = o.cli.execute(cli, "system-view")  output, n1, n2 = o.cli.execute(cli, "interface Vlanif1")output, n1, n2 = o.cli.execute(cli, "link-bridge Tunnel0/0/0 vc-id " + str(l2_vcid1) + " tagged")output, n1, n2 = o.cli.execute(cli, "quit")output, n1, n2 = o.cli.execute(cli, "quit")output, n1, n2 = o.cli.execute(cli, "save", {"continue": "Y"})

Какие плюсы у этой схемы работы в режиме L2 MPLS:

  • Роутер работает только прозрачным Ethernet до нашего РЕ, схему можно применять еще и как для Интернет, так и для IP VPN-включений.

  • MTU стал побольше, чем у варианта с IPSec.

  • Можно проводить легкую бесшовную подмену кабельных каналов при авариях.

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

В следующих статьях расскажем про USB Deployment инструмент по простой настройке роутеров, Python-скрипт, который используем для переключения Sim-карт, и интеграцию нашего Мультисим-решения с Облачной АТС (в роутере есть встроенный SIP-клиент и два FXS порта, мы просто не могли не попробовать их использовать).

В одном из комментариев спрашивали про скорости роутера по IPSec.

По результатам наших тестов скорость составляет больше 50 Мбит/с (IPSec в режиме IKEv2, iperf3 - server), то же самое к режиму работы с L2TP-туннелем. Скорости поднимали и выше, но мы и не планировали предлагать клиентам больше 50Мбит/с по нашему решению, т.к. во-первых упираемся в "гигиенический" предел по LTE, во-вторых роутеры планировали использовать вместе с настройкой доп. сервисов типа SIP PBX (расскажем в следующей статье), и в-третьих, на смену Huawei AR129 у нас приходит Huawei AR617, который более производителен, что нам ещё предстоит испытать.

Подробнее..

Что такое VPN, Proxy, Tor? Разбор

19.04.2021 20:16:49 | Автор: admin
Анонимность и конфиденциальность это прекрасные понятия. Но в последнее время создается ощущение, что в сети оба понятия стили недостижимыми. Поэтому даже я, совсем не параноик периодически задумываюсь об инструментах, таких какVPN, Proxy и Tor. Вы наверняка слышали эти слова, а может быть даже регулярно пользуйтесь пользуетесь этими технологиями для сохранения анонимности, обхода блокировок, просмотра американского Netflix или банально для доступа к корпоративной сети.


Но как именно работают эти технологии и чем они отличаются? И правда ли что бесплатный сыр только в мышеловке?Сегодня поговорим о том как защитить себя и свои данные в глобально сети.

Proxy




Среди троицы VPN, Proxy, Tor самая простая технология это именно Proxy. С неё и начнём.

Proxy переводится с английского, как представитель, уполномоченный, посредник. Иными словами, прокси-сервер это сервер-посредник.

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

  • Подменив свое местоположение при помощи Proxy, вы сможете обходить региональные блокировки. Например, именно прокси-серверы позволили Telegram так легко пережить несколько лет официальной блокировки.
  • Или вы сможете получить доступ к контенту, доступному только в определенных странах. Например, к американской библиотеке Netflix, которая существенно более обширная, чем наша отечественная.
  • Или сможете сэкономить на цене авиабилетов, воспользовавшись региональными ценовыми предложениями или скидками.
  • Но может быть и обратная ситуация. Если нужно, при помощи прокси, администраторы сетей могут ограничить доступ к отдельным ресурсам.
  • Есть и менее очевидные сценарии использования. Часто прокси-серверы кэшируют данные с популярных сайтов, поэтому загружая данные через прокси-сервер вы сможете ускорить доступ к этим ресурсам.
  • Или сможете сэкономить трафик. Потому что прокси-серверы могут сжимать весь запрашиваемый контент. Именно так работают различные турбо- и экономные режимы в браузерах.

В общем, вариантов применения прокси-серверов масса. И это позитивная сторона технологии, но есть у прокси-серверов и существенные недостатки.

Типы Proxy




Во-первых, сама по себе технология очень ограниченная.Прокси-серверы узкоспециализированы, поэтому на каждый тип интернет-соединения нужен свой тип прокси-сервера.

Например, для FTP-соединения (File Transfer Protocol) нужен FTP-прокси. Для HTTP и HTTPS также два отдельных HTTP- и HTTPS-прокси сервера.

Это серьёзное ограничение, поэтому еще есть отдельный тип прокси-серверов SOCKS-прокси.

Эта вариация протокола умеет работать с разными типами трафика. Но она работает медленнее, поэтому также подходит не для всех.

Безопасность Proxy


Но это половина беды. Все виды прокси объединяет главная, ключевая проблема проблемы с безопасностью.

Потому как прокси-сервера дополнительно никак не шифруют трафик. То есть HTTP трафик вообще не будет никак шифроваться. А HTTPS будет зашифрован также как и при обычном интернет соединении: при помощи SSL-шифрования.А это огромная проблема. И чтобы представить масштаб трагедии, давайте вспомним аналогию с чемоданом.

Пользоваться прокси-сервером это всё равно что передавать данные посреднику в чемодане без пароля. Делать такое можно только в случае если 100% доверяете посреднику. И конечно же стоит остерегаться бесплатных прокси-серверов с сомнительной репутацией.Ведь воспользоваться непроверенным бесплатным прокси, это все равно, что доверить доставить мешок бесплатному курьеру по объявлению на автобусной остановке.

Как же здорово, что во время блокировки Telegram мы все дружно пользовались проверенными надежными прокси. Так ведь?

VPN




Но есть технология, которая обладает большинством достоинств прокси и лишена большинства недостатков это VPN или Virtual Private Network виртуальная частная сеть.

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

Принцип работы VPN похож на прокси.Трафик точно также, прежде чем попасть в интернет, сначала попадает на промежуточный сервер. Это с одной стороны позволяет вам, например, получить доступ к заблокированным ресурсам. Потому как для интернет провайдера, вы направляете запрос на VPN сервер, а не на запрещенный сайт.

С другой стороны, это позволяет вам сохранить анонимность, так как сайт, на который вы попали думает, что запрос пришел с IP-адреса VPN-сервера, а не вашего.Но прокси-серверы, делают по сути тоже самое, так в чем же тогда разница?

Ключевое отличие VPN от Proxy это сквозное шифрование. Весь трафик проходящий через VPN-сервер защищен на всём пути от точки входа до точки выхода.А всё потому, что при включенном VPN между вашим устройством и VPN-сервером создается зашифрованный канал связи, который защищает все данные от хакерских атак.

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

При этом в отличии от прокси, для работы VPN на вашем устройстве обязательно должен быть установлен VPN-клиент в виде отдельного приложения или расширения браузера.

Впрочем, поставить приложение для рядового пользователя куда проще, чем копаться в настройках прокси где-то в настройках браузера.

Бесплатные VPN-сервисы




Получается, что VPN во всем лучше прокси? Не всегда.

Дело в том, что не все VPN-сервисы одинаково полезны. Как и в случае с прокси, бесплатные VPN-сервисы не раз были пойманы в слежке за пользователями и продаже их данных.

Например, VPN-сервис Betternet, который насчитывал 38 миллионов пользователей использовал целых 14 библиотек для слежки за пользователями.

А сервис Hola продавал IP-адреса бесплатных пользователей злоумышленникам. То есть преступники могли использовать ваш IP-адрес для своих делишек.

SHADOWSOCKS




С другой стороны, не все прокси-сервисы плохие. Например, существует особый тип прокси, который называется Shadowsocks. По сути, это SOCKS-прокси на стероидах.

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

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

Например, находитесь вы в Китае и хотите проверь почту на Gmail, или свят-свят посмотреть YouTube. Благодаря Shadowsocks, вы сможете сможете сделать и это, и одновременно посещать сайты, доступные только из Китая.

В свою очередь, VPN-сервисы зашифровывают весь трафик, поэтому открыть сайты, доступные только в Китае, вы уже не сможете.

Но это не значит, что Shadowsocks лучше VPN.В отличие от VPN-сервисов, Shadowsocks не создан для защиты конфиденциальности и анонимности пользователя. При использовании Shadowsocks? пакеты данных остаются без шифрования. Это сделано специально, чтобы ваши данные были больше похожи на обычный HTTPS-трафик и не вызывали подозрений.Поэтому Shadowsocks подходит только для обхода блокировок? но никак не для безопасности или подключения к корпоративной сети.В этом плане VPN вне конкуренции. С поправкой на то, что пользоваться нужно только проверенными сервисами с хорошей репутацией.

Tor




И, наконец, самый хардкорный способ анонимизации в сети Tor. Что это и правда ли, что Tor такой безопасный?

Tor расшифровывается как The Onion Router и он использует так называемую луковую маршрутизацию. Твои данные это сердцевина луковицы, а их защита слои вокруг. Что это значит?

Для анонимизации Tor, также как прокси и VPN, пропускает трафик через промежуточные серверы. Но Только в случае с Tor их не один, а три, и называется они узлами.



А вот теперь смотрите, ваш трафик проходит через три узла:

  1. входной или сторожевой,
  2. промежуточный,
  3. выходной.

Зачем это нужно?

Во-первых, чтобы скрыть ваш IP-адрес. Каждый узел знает IP-адрес только узла, который стоит в цепочке перед. Поэтому пока ваш трафик дойдет до третьего узла, исходный IP потеяется.

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

Эти узлы разворачивают сами пользователи сети на своих компах. Чем больше пользователей, тем безопасней и тем быстрее работает сеть.

А доступ к сети осуществляется через специальный браузер Tor Browser, основанный на Firefox. Его улучшили дополнениями, запрещающими сайтам следить за тобой. Например браузер умеет отличать все скрипты на сайтах, фактически запрещая собирать любые данные пользователя, или заставляет сайты принудительно использовать шифрование.Звучит очень безопасно, но на практике, это не так.

Во-первых, Tor очень не любят правоохранительные органы, а сам факт использования Tor легко отследить.Поэтому, просто используя Tor Browser, вы уже можете привлечь лишнее внимание. Иными словами лучше использовать Tor в связке с VPN.

Во-вторых, владельцы выходных узлов очень рискуют. Ведь именно они несут ответственность за все действия, которые совершают пользователи сети.

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

Более того, из-за многослойного шифрования сеть Tor работает очень медленно, половина сайтов прост отказывается корректно работать через Tor Browser.

Итоги




Что в сухом остатке? Если вы беспокоитесь за свою безопасность в сети, то самым оптимальным способом защиты будет VPN. Но не забывайте, что использовать надо только надежные VPN-сервисы с хорошей репутацией. Часто информацию о надёжности того или иного сервиса можно найти в интернете, в специальных статьях. Также помните, что хороший VPN может стоить денег, вернее его создатели могут брать за его использования какую-либо сумму. Ведь бесплатный сыр бывает только в мышеловке.
Подробнее..

Личный сервер shadowsocks за 10 минут без затрат

05.05.2021 06:21:57 | Автор: admin

Несколько слов о shadowsocks

shadowsocks - это шифрованный сетевой туннель, клиентская часть которого предоставляет доступ приложениям к сети как SOCKS-прокси, запущенный на этом же устройстве. В некотором смысле его можно использовать как VPN, потому что клиенты поддерживают прозрачное перенаправление трафика приложений в туннель.

С самого начала shadowsocks разрабатывался как средство для обхода блокировок в Китае. С некоторого момента он получил возможность подключения внешних модулей-плагинов для оборачивания трафика shadowsocks в различные виды сетевых соединений. Это значительно расширяет границы его применения.

На хабре shadowsocks уже освещался ранее в статье от @Barafu_Albino_Cheetah.

В этом руководстве описано развёртывание сервера shadowsocks с плагином v2ray на облачном провайдере Heroku. Платформа Heroku позволяет бесплатно разворачивать небольшие веб-приложения, а плагин v2ray позволяет пропускать трафик shadowsocks внутри websocket-соединения, что в итоге и позволяет запускать всю конструкцию на Heroku.

Развёртывание сервера

В этом руководстве используется замечательный проект готового приложения для Heroku, которое реализует всё необходимое автоматически. Ссылка на GitHub проекта.

Шаг 1. Регистрация в сервисе Heroku

Для этого нужно зайти на сайт Heroku, нажать Sign up и заполнить требуемые сведения. Для регистрации нужна только электронная почта.

Шаг 2. Начало развёртывания

Нажмите на эту ссылку.

Шаг 3. Конфигурирование

В появившейся форме заполните все поля как показано на скриншоте:

В качестве значений "App Name" и AppName впишите какое-то уникальное имя приложения, одинаковое в обоих полях. Это имя станет частью доменного имени <appname>.herokuapp.com, по которому станет доступен сервис.

Вместо PASSWORD задайте свой пароль. Можно задать подлиннее и понадёжнее - Вам, скорее всего, не придётся вводить его вручную.

Кроме того, желательно поменять пути QR и путь обработчика прокси V2_Path на какое-нибудь трудноугадываемое значение.

Шаг 4. Запуск

Заполнив форму, нажмите Deploy app.

После завершения сборки и запуска QR-код с конфигурацией для мобильных устройств будет доступен по адресу

https://APPNAME.herokuapp.com/qr/vpn.png

а строка с конфигурацией в виде URL будет доступна по адресу

https://APPNAME.herokuapp.com/qr/

где APPNAME - выбранное Вами имя приложения. Если Вы меняли путь к QR-коду, то ссылка изменится в соответственно. Во второй ссылке косая черта на конце обязательна.

Всё, можно пользоваться!

Настройка мобильного клиента на примере Android

  1. Установите на Ваше устройство клиент shadowsocks и плагин v2ray к нему.

  2. Запустите приложение и добавьте новый профиль кнопкой с плюсом в правом верхнем углу. Выберите сканирование QR-кода и отсканируйте его.

  3. Выберите созданный профиль касанием.

  4. Запустите соединение нажатием на круглую кнопку внизу.

  5. Готово!

Настройка настольного клиента на примере Windows

  1. Скачайте отсюда и распакуйте shadowsocks.

  2. Скачайте отсюда плагин v2ray, подходящий под вашу платформу. Достаньте из архива файл и переименуйте его в v2ray.exe (или просто v2ray, если ваш проводник не отображает расширения файлов). Поместите его в одну директорию с shadowsocks.

  3. Запустите shadowsocks.

  4. Скопируйте конфигурационный URL вашего личного сервера shadowsocks со страницы https://APPNAME.herokuapp.com/qr/ , где APPNAME - имя приложения, которое вы выбрали.

  5. Нажмите правой кнопкой мыши на значке shadowsocks в системном трее и выберите Servers - Import URL from Сlipboard.

  6. Включите прокси, выбрав в том же контекстном меню System Proxy - Global.

  7. Готово!

Ограничения Heroku

Для приложений, запущенных на Heroku, в настоящий момент действуют следующие ограничения:

  • Временная квота работы приложений при бесплатном уровне использования составляет 550 часов в месяц.

  • Контейнер приложения переходит в спящий режим после 30 минут отсутствия запросов к нему. С одной стороны это доставляет неудобства в виде задержек ответа до полминуты после перерыва в активности. С другой стороны, это экономит отведённую временную квоту.

  • Квота на передачу данных по сети равна 2 ТБ в месяц. То есть в случае с прокси это даёт чуть меньше 1 ТБ трафика в месяц.

Подробнее..

Личный сервер shadowsocks за 10 минут без затрат (часть 2)

09.05.2021 04:04:52 | Автор: admin

shadowsocks

Повторение - мать учения, а значит я снова приведу выжимку из статьи о shadowsocks в вики.

shadowsocks - это шифрованный сетевой туннель, клиентская часть которого предоставляет доступ приложениям к сети как SOCKS-прокси, запущенный на этом же устройстве. Существуют клиентские приложения shadowsocks, которые позволяют заворачивать в него трафик как в VPN.

С самого начала shadowsocks разрабатывался как средство для обхода блокировок в Китае, и достаточно в этом деле преуспевает. С некоторого момента он стал иметь возможность подключения внешних модулей-плагинов для оборачивания трафика shadowsocks в различные виды сетевых соединений. Это значительно расширяет границы его применения.

Цель этого руководства

Это руководство предлагает ещё одну альтернативу, которая отличается от предыдущего руководства деталями:

  • Физически серверы располагаются в GCP вместо AWS, как в предыдущем методе.

  • Доступно больше локаций датацентров. В частности, есть довольно близкие к нам серверы в Германии и Франции, с которыми задержка подключения минимальна.

  • Другие ограничения: нет ограничения по трафику (в пределах так называемого fair use), нет ограничения по часам работы в месяц, но есть ограничение на общую продолжительность триала в один месяц. Однако, на это как раз можно повлиять.

Мы развернём сервер shadowsocks с плагином v2ray на облачном провайдере platform.sh. platform.sh - это PaaS-провайдер с бесплатным триалом на месяц, позволяющий бесплатно запускать веб-приложения. Плагин v2ray пропускает трафик shadowsocks внутри websocket-соединения, чтобы мы могли связываться с нашим прокси через веб-фасад платформы.

Развёртывание

От Вас потребуется только две вещи: электронная почта и способность запушить в git-репозиторий файлы.

Шаг 1. Регистрация в сервисе platform.sh

Регистрация доступна по этой ссылке. Регистрация с главной страницы сайта работает в данный момент немного криво. Добраться вручную до указанной ссылки можно так: platform.sh -> Free Trial -> Login with Auth -> Sign up. Напрямую на странице Free Trial регистрация не работает.

Если Вы регистрируетесь в сервисе повторно, чтобы начать триал сначала, Вам потребуется указать другой почтовый ящик. Однако, не обязательно иметь много почтовых адресов для этого. Достаточно воспользоваться предусмотренной стандартом субадресацией. Вы можете дописать после знака плюс к локальной части адреса (то, что до собачки), любые символы. К примеру, если Ваша электронная почта user@example.org, то вы можете также получать письма на адрес user+test1@example.org.

Шаг 2. Создание проекта

Создайте пустой проект. Такая возможность будет предложена сразу, либо можно нажать соответствующую кнопку в панели управления потом.

Шаг 3. Добавление SSH-ключей в настройках аккаунта

Пока устанавливается контейнер под новый проект, добавьте Ваш SSH-ключ в настройках аккаунта, чтобы иметь возможность отправлять файлы в git-репозиторий. Из практических соображений лучше использовать отдельный SSH-ключ для этих целей, иначе возникнет путаница с аккаунтами, ключами и репозиториями проектов.

Сделать это можно на странице Account settings -> SSH Keys -> Add public key.

Шаг 4. Клонирование репозитория

На главной странице проекта (Overview) скопируйте команду, которая клонирует git-репозиторий проекта. Команда клонирования с адресом репозитория доступна в правом верхнем углу, по кнопке GIT.

Шаг 5. Наполнение репозитория

Пришло время положить файлы в репозиторий проекта из моего репозитория и запустить сборку проекта. Сделать это можно следующим образом запуская команды из директории проекта:

git remote add upstream https://github.com/Snawoot/shadowsocks-platform.sh.gitgit fetch upstreamgit reset --hard upstream/mastergit push --force-with-lease

После этого проект будет собран и уже развёрнут.

Подсказка: явно задать используемый SSH-ключ можно установкой вот такой переменной окружения в своей консоли:

export GIT_SSH_COMMAND='ssh -i /path/to/private/key -o IdentitiesOnly=yes'

Шаг 6. Конфигурация

Осталось настроить сервер. В панели управления проектом platform.sh выберите окружение Master в выпадающем списке в правой верхней части экрана. После этого перейдите в настройки переменных проекта (SETTINGS -> Variables). Добавьте новую переменную env:SS_PASSWORD кнопкой Add справа как показано ниже:

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

Кроме этого, желательно ещё определить значение переменной env:V2_PATH, назначив какой-то трудноугадываемый путь вроде такого: /dcfaeb49-33ec-4574-af45-7b846d182522. Если не указано, то по умолчанию оно равно /v2.

После изменения переменных сервер сразу автоматически пезапустится и будет готов к работе.

Настройка клиентов

Про установку клиентских приложений можно прочитать в предыдущей статье. В этом решении нет автоматической генерации URL или QR-кода с настройками. Ручные настройки таковы:

Параметр

Значение

server

Домен из URL, по которому доступен проект (отображается в Overview проекта)

server_port

443

password

Значение переменной env:SS_PASSWORD

method

chacha20-ietf-poly1305

plugin

v2ray

plugin_opts

path=V2_PATH;host=DOMAIN;tls, где DOMAIN - домен из URL проекта, а V2_PATH - значение переменной env:V2_PATH, либо /v2, если она не задана.

Конец

Подробнее..

Наша анонимность утрачена?

04.06.2021 22:07:07 | Автор: admin

IT-технологии развиваются с каждым годом. Многие корпорации полным ходом развивают технологические подходы в области сбора и обработки полученной информации. Одним из таких подходов является использование баз данных цифровых отпечатков пользователей сети Интернет.

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

1. Ip-адрес. Провайдеры годами хранят статистику на каком ip-адресе работал их пользователь. Зная ip-адрес можно легко вычислить расположение пользователя.

2. DNS-запросы. Каждый раз, когда Ваш браузер хочет получить доступ к определенной службе, например Google, обратившись к www.google.com, Ваш браузер запросит службу DNS, чтобы найти IP-адреса веб-серверов Google. Таким образом, интернет-провайдер DNS-записей сможет рассказать обо всем, что Вы делали в сети, просто просмотрев те журналы, которые, в свою очередь, могут быть предоставлены злоумышленнику.

3. NFC-платежи через устройства. Данная технология используется для выполнения бесконтактных платежей. По сути это радиочастотная идентификация. Вы заходите в магазин и на рамке происходит сканирование любых RFID-чипов, которые есть у вас: бесконтактные карты, транспортные карты, рабочие карты доступа, ключи от машины. Эти данные можно собирать и использовать для поиска людей.

4. Устройства Wi-Fi и Bluetooth вокруг Вас. Производители смартфонов заложили функции поиска Вашего местонахождения без использования GPS-функций. Достаточно сканировать Wi-Fi сети вокруг устройства. Данные о Вашем местоположении отправляются на сервера третьих компаний.

5. Использование Wi-Fi на смартфоне. Чтобы получить Ваши данные хакеры могут использовать специальные устройства, которые будут мешать работе wi-fi точек доступа и вынуждать Ваш смартфон подключиться к их устройству вместо публичной wi-fi точки доступа. В этом случае все Ваши данные становятся доступными для злоумышленника. В данном случае используются технологии MITM (Man-In-The-Middle) или человек посередине.

6. Использование Tor/VPN. За прошедшие годы было разработано и изучено множество передовых методов деанонимизации зашифрованного трафика Tor. Атака по корреляционным отпечаткам пальцев: эта атака будет отпечатывать ваш зашифрованный трафик (например, веб-сайты, которые вы посещали) только на основе анализа вашего зашифрованного трафика (без его расшифровки). Он может сделать это с колоссальным успехом в 96%. Такие отпечатки пальцев могут использоваться злоумышленником, имеющим доступ к вашей исходной сети (например, Ваш интернет-провайдер), для выяснения некоторых ваших зашифрованных действий (например, какие веб-сайты вы посещали).

7. Современные смартфоны на Android, IOS.
После выключения такого устройства оно будет продолжать передавать идентификационную информацию на близлежащие устройства даже в автономном режиме с использованием Bluetooth Low-Energy. Это дает способ найти Вас даже если Ваш телефон выключен, но имеет подключенный аккумулятор.

8. IMEI идентификатор Вашего оборудования. IMEI привязан непосредственно к телефону, который вы используете. Этот номер известен и отслеживается операторами мобильной связи, а также известен производителями. Каждый раз, когда ваш телефон подключается к мобильной сети, он регистрирует IMEI в сети. Он также используется многими приложениями (например, банковскими приложениями, злоупотребляющими разрешением телефона на Android) и операционными системами смартфонов (Android/IOS) для идентификации устройства. Сегодня предоставление вашего реального номера телефона в основном то же самое или лучше, чем предоставление вашего паспорта. Журналы антенн оператора мобильной связи также хранят некоторые данные о подключении. Они знают и регистрируют, например, что телефон с IMEI, подключен к набору мобильных антенн, и насколько мощный сигнал каждой из этих антенн. Это позволяет легко выполнять триангуляцию/геолокацию сигнала. Они также знают, какие другие телефоны (например, ваш настоящий) подключены в одно и то же время к тем же антеннам с тем же сигналом, что позволит точно знать, что этот телефон всегда был подключен в том же месте и в то же время, что и этот другой телефон, который появляется каждый раз, когда используется записывающий телефон. Эта информация может использоваться различными третьими сторонами для точного определения вашего местоположения/отслеживания.

9. Ваш браузер. При посещении любых сайтов ваш браузер получает уникальные cookie-данные с каждого сайта. Ваши данные в браузере становятся уникальными, а это значит, что веб-порталы знают кто зашел через браузер. На смену cookies приходят supercookies и Ваша анонимность сводится практически к нулю.

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

11. Google-сервисы. Данные сервисы анализируют ваше географическое положение, звуки вокруг устройства. Эти данные могут использоваться компанией в рекламных целях или быть переданными третьим лицам.

12. Использование антивируса. Антивирус кроме основных своих целей по поиску и обезвреживанию вирусов анализирует вашу сетевую активность, данные браузеров. Эти данные могут быть переданы третьим лицам.

При повышении количества собранных данных формируется цифровой профиль человека, которые содержат в себе:

  • пол;

  • возраст;

  • семейное положение;

  • политические, религиозные взгляды;

  • финансовое состояние;

  • интересы;

  • привычки;

  • и многие другие.

Согласно результатам исследования EFF (Electronic Frontier Foundation), уникальность отпечатка браузера очень высока и он содержит в себе ниже описанные данные:

  • User-agent (включая не только браузер, но и версию ОС, тип устройства, языковые настройки, панели инструментов и т.п.);

  • Часовой пояс;

  • Разрешение экрана и глубину цвета;

  • Supercookies;

  • Настройки куки;

  • Системные шрифты;

  • Плагины к браузеру и их версии;

  • Журнал посещений;

  • И другие данные.

Если говорить о статистике, то только раз на 286777 случаев случается полное совпадение отпечатков браузеров двух разных пользователей.

Согласно исследованию Browser Fingerprinting via OS and Hardware Level Features, точность идентификации пользователя при помощи отпечатка браузера составляет 99,24%.

Как же сохранить анонимность сегодня? Возможно только если уехать в лес и не пользоваться никакими техническими благами цивилизации или же ждать разработок, которые решат эти проблемы.

Статья написана в соавторстве:
1. Меньшиков Ярослав
2. Беляев Дмитрий

Подробнее..

Как мы спасали видео одной вебкам-модели нейросетями

24.05.2021 12:21:25 | Автор: admin

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

Но мы решили пойти новым путем и прогнали звуковую дорожку через нейросети плагина Nvidia RTX voice, всего за 6 минут мы получили настолько впечатляющий результат, что мы не смогли бы спокойно спать, пока не:

  • разобрались, как работает эта нейросеть
  • проверили, как плагин работает на ASMR теряется ли эффект или становится лучшие


Что за видео мы чистили


У Macloud появился амбассадор девушка Анна. Она ничего не знала об администрировании серверов до знакомства с нами, но ей оказалось интересно учиться.

У Ани довольно пикантная работа в 18+ стримингах и она решила объединить два хобби: во время стримов настраивать серверы по подсказкам зрителей.

Мы познакомились с Nvidia RTX voice, когда помогали ей чистить звук на первом ролике, где она поднимает VPN.

Но теперь давайте вернемся к нейросетям и ASMR может ли нейросетка уничтожить тот самый эффект?

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

Что такое ASMR и откуда берутся мурашки?


Несколько лет назад был открыт забавный эффект, который, у некоторых людей, вызывает очень своеобразные ощущения, при прослушивании записей, где намеренно преувеличены шуршащие и шипящие звуки. Его назвали: ASMR (Autonomous sensory meridian response или Автономная сенсорная меридиональная реакция). Сложное определение не облегчает понимание его природы, которое выражается в мурашках возникающих где-то в затылке и спускающихся по шее к спине. Ощущения, чаще всего, приятные и очень залипательные, больше всего они похожи на мурашки, которые вызывает массажер мозга с пружинками.


Этому эффекту подвержены не все, он возникает примерно у трети людей, которые прослушивают ASMR-записи и сильно отличается по степени воздействия, тем не менее это не самовнушение и не коллективная галлюцинация, ощущения мурашек возникают совершенно однозначно и ярко.

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


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


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


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

Как звукорежиссеры борятся с шепотом и шумом


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

Первый круг обороны звукорежиссера от помех это фильтры микрофона, они часто попадают в кадр при съемках и любой может вспомнить как они выглядят. При студийной записи, перед микрофоном ставят так называемый поп-фильтр в виде очень тонкой сетки или мембраны, которая снижает помехи от дыхания человека. Когда съемка идет на открытом воздухе, то на микрофоны надевают меховые чехлы с очень длинными ворсинками и они становятся похожими на ангорских котов, это снижает турбулентные завихрения от ветра обтекающего микрофон.


Следующий этап борьбы с подобным шумом электронный. Чтобы понять, как он работает, разберемся в частотном составе человеческой речи.

Больше всего энергии человеческого голоса (около 60%) лежит в диапазоне от 63 Гц до 500 Гц, но информационное наполнение этого интервала всего 5%. Больше всего информации несет диапазон от 500 Гц до 1 кГц, ее в нем примерно 35%. Оставшиеся 60% информации приходится на шипящие звуки в диапазоне от 1 кГц до 8 кГц, но они несут всего всего 5% энергии. Хотя такие звуки самые слабые, от них сильно зависит разборчивость человеческой речи. Для удаления их из записи используется эквалайзер, при его правильной настройке, речь становится более четкой.


Хотя, микшерный пульт с огромным количеством настроек в разных частотных диапазонах, все еще является одним из главных атрибутов звукозаписывающей студии, в обработке используется и более современная технология: цифровой сигнальный процессор (digital signal processor, DSP). Комплекс, состоящий из узкоспециализированного микропроцессора и программ, который занимается автоматической обработкой аудиосигнала, сочетая в себе множество функций, которые раньше выполнялись с помощью ручной настройки или электронных схем. Помимо продвинутого эквалайзера, процессор может имитировать задержку сигнала для построения сцены в определенном участке помещения и многие другие функции обработки звука. DSP используются как в музыкальных плеерах, так и в системах распознавания речи, выделяя из сигнала наиболее информативные диапазоны частот.

Нейросети на тензорных ядрах: Nvidia RTX



Технология не стоит на месте, на смену ручному микшерному пульту и ограниченному набору обычных программ пришли нейронные сети. В 2017 году разработчики Nvidia опубликовали статью Interactive Reconstruction of Monte Carlo Image Sequences using a Recurrent Denoising Autoencoder, в которой описали метод машинного обучения для восстановления последовательностей изображений, полученных с помощью методов Монте-Карло, на его основе была создана программа NVIDIA OptiX AI-Accelerated Denoiser, которая занимается удалением шума с 3D-рендеров.

Если кто-то подзабыл суть метода Монте-Карло, мы напоминаем его в этой ASMR-записи:


На этом исследования не остановились: весной прошлого года, компания Nvidia представила продукт, который использует мощь современных видеокарт не только для взлома хэшей, майнинга крипты или банальных видеоигр, но и для улучшения качества видео-стриминга. Кроме вычитания фона из видеотрансляции, числомолотилка RTX используется в программе NVIDIA RTX Voice для интеллектуального шумоподавления в режиме реального времени. Теперь, владельцы дорогущих видеокарт могут значительно улучшить качество своих стримов.

Как же это работает? Изначально такая технология не предназначалась для работы со звуком, а стала продолжением развития нейросети для улучшения качества изображения. Давайте вспомним историю ее развития.

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

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

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

В конце 2018 года, фирма NVIDIA представила новую возможность в своих видеокартах улучшение качества изображения с помощью нейросети под названием DLSS (Deep Learning Super Sampling), суперсемплинг с помощью глубокого обучения. Традиционный ресемплинг и сглаживание требуют огромного количества вычислений и являются причиной высокой стоимости видеокарт, увеличение разрешения изображения происходит с помощью тупых числомолотилок, которые, по сути своей, производят предельно простые математические операции, но в огромном количестве. DLSS работает по другому, чтобы избежать масштабных вычислений, картинка считается для сравнительно небольшого разрешения, а зачем растягивается с помощью искусственного интеллекта. Это требует намного меньше ресурсов, чем прямой пересчет, при сравнимом качестве изображения и позволяет получать хорошую картинку на не очень дорогих видеокартах, а на мощных существенно повысить частоту кадров.

Первые версии нейросети DLSS работали используя тензорные ядра процессоров RTX Turing. Но получилось совсем не так, как в радужных обещаниях разработчиков NVIDIA, картинка выглядела мутной и с большим количеством артефактов, будто нарисованная грубыми мазками масляных красок:


Картинка кликабельная при клике она откроется в более высоком разрешении

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

В итоге, Nvidia отказалась от DLSS первой версии и продолжала работу над усовершенствованием алгоритма. Следующий шаг был сделан для игры под названием Control, в ней использовалась работа нейросети на обычных шейдерных ядрах, но уже показывающая неплохие результаты, которые получились благодаря обучению нейросети на семплах рендеринга в высокое разрешение, взятых из этой самой игры.

Отличия разглядеть можно, но они не бросаются в глаза, как в первой версии, а затраты по мощности заметно меньше, что позволяет увеличить частоту кадров до комфортной. Если первая версия алгоритма, работавшая на тензорных ядрах, не давала существенного прироста качества, по сравнению с рендерингом в 1440 и апскейлом до 4К, но еще и работала почти с той-же скоростью. То последняя версия, на шейдерных ядрах, работает быстрее апскейла и со сравнимым качеством.

В конце 2019 года была завершена разработка новой версии DLSS. В ней были сняты все ограничения на разрешение и качество, алгоритм снова стал стал работать на тензорных ядрах видеокарт семейства RTX и перестал требовать предварительного обучения на сэмплах из каждой конкретной игры.

У алгоритма есть проблемы, он пока не очень хорошо работает на сетках и тонких линиях, но уже вполне оправдывает себя. Версия, работающая на тензорных ядрах примерно на 30-40% быстрее, чем шейдерная.

Как NVIDIA RTX Voice автоматически подрезает шум



После успешного запуска DLSS для графики, разработчики Nvidia не остановились на достигнутом и расширили примирение нейросети до обработки звука, плагин NVIDIA RTX Voice построен на ее основе, но алгоритм немного отличается. Нейросеть используемая в этом случае, относится к вариационным автоэнкодерам или автокодировщикам.


В отличии от традиционных нейросетей, у которых в промежуточных слоях очень много нейронов, у автоэнкодера количество нейронов уменьшается в каждом последующем слое. Его задачей является не распознавание объекта, а наоборот отбрасывание всех данных, не являющихся ключевыми для него. Другими словами он удаляет шум, сначала кодируя объект с помощью аппроксимации, а потом декодируя его обратно. Нейросеть для RTX Voice обучалась на сэмплах человеческого голоса, тренируясь отсекать все посторонние звуки, которые не относятся к речи. Если ее запустить наоборот, то она отфильтрует из звуковой дорожки все посторонние шумы, оставив только чистый голос. (Что-то похожее делали ретушеры при обработке фотографий, до того, как для этого были выпущены многочисленные плагины-шумодавы. Фотография уменьшалась в полтора-два раза, а потом увеличивалась обратно, в результате этой операции качество страдало не очень сильно, но зато заметно сглаживались шумы характерные для джпеговской компрессии ли скана с журнального оттиска.)

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

Нейросетка в действии: как сработало на обычном стриме и ASMR


Пришло время рассказать о том, как мы попробовали применить видеокарту RTX для очистки нашей записи от шумов и к чему это привело. На видео ниже фрагмент стрима, на котором выключено шумоподавление:


Полное видео, как Аня настраивает VPN можно посмотреть на Vimeo. Версия для смелых без цензуры на onlyfans.

Видео записывалось смартфоном iPhone 11. На этом ролике последовательно демонстрируется запись звука с разных источников

  • встроенные микрофоны iPhone, все шумодавы выключены;
  • встроенные микрофоны iPhone, включен шумодав Nvidia RTX Voice;
  • микрофоны гарнитуры из ценового диапазона $100-$120, шумодавы выключены;
  • микрофоны гарнитуры из ценового диапазона $100-$120, включен шумодав Nvidia RTX Voice;
  • USB-микрофон, все шумодавы выключены;
  • USB-микрофон, включен шумодав Nvidia RTX Voice;

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

В следующем ролике видны слабые места алгоритма RTX Voice. У нейросети явные проблемы с шепотом, она проглатывает первые и последние звуки, принимая их за паразитный шум. Справедливости ради стоит сказать, что вряд ли можно выделать речь традиционными способами из такого шума.

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

При царапании открытки, алгоритм распознает издаваемые звуки как речь и пытается ее восстановить. Получается забавно и немного пугающий эффект когда вместо скрипа мы слышим рваную и нечленораздельную речь (0:24 сек). Приходят мысли о бунте машин и зарождающемся нечеловеческом разуме.


Спектограммы из видео-ролика с ASMR


На спектрограммах наглядно видна работа TRX Voice звуковая дорожка из ролика, где девушка шептала и шуршала в микрофон.


Исходный звук, без вмешательство искусственного интеллекта


Звук, обработанный нейросетью

А всплеск на пустом участке справа это та самая говорящая открытка!

Для мурашек нейросети еще придется постараться


Nvidia RTX voice отлично справляется с обработкой шумов, если бюджет ограничен, а видео нужно спасать. Но для записи и обработки ASMR он не подходит.



VPS серверы от Маклауд быстрые и безопасные.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Подробнее..

Превращаем одноплатник Cubietruck в Wi-Fi Hotspot с Captive portal, VPN-шлюзом и Ad block

25.05.2021 10:11:06 | Автор: admin
raspap

Для построения Wi-Fi сети обычно используют готовые маршрутизаторы, функционал которых всегда ограничен прошивкой. А если необходимо добавить блокировщик рекламы, VPN шлюз и красивый Captive portal, покупать новую железку? Стоимость устройства с таким функционалом будет уже весьма высока. Можно взять Linux с Hostapd и сделать точку доступа с Wi-Fi, но в отличие от готовых маршрутизаторов не будет наглядного Web-интерфейса. И для решения этой задачи был создан проект RaspAP, который на базе устройств с ОС Debian создает Wi-Fi Hotspot с Captive portal, VPN-шлюзом, Ad block. Для RaspAP в отличие от OpenWrt не требуется непосредственная поддержка устройства, достаточно поддержки последней версии Debian. RaspAP работает поверх уже установленных ОС: Raspberry Pi OS, Armbian, Debian, Ubuntu. Как сделать Wi-Fi Hotspot на RaspAP прошу под кат.

RaspAP open-source проект создания беспроводного маршрутизатора из многих популярных устройств работающих на ОС Debian, включая Raspberry Pi. Содержит удобный Web-интерфейс для настройки, блокировщик рекламы, осуществляет шлюзование сетевого трафика через OpenVPN или WireGuard.

Используя RaspAP можно быстро развернуть Hotspot с доступом в сеть Интернет, где угодно: в магазине или торговом центре, заправке, кафе и ресторане, библиотеке, больнице, аэропорте и вокзале, а также в совершенно непривычных, уединенных местах, например на вершине горы. Благодаря наличию Captive portal, посетители подключаясь к Сети, обязательно увидят информацию, которую владелец Wi-Fi желает довести до пользователей. Это может быть информация о соглашение использования публичного hotspot, и т.д.

Поддерживаемые устройства и ОС


Для устройств на ARM-архитектуре заявлена официальная поддержка, устройства на x86 процессорах в настоящее время находится в стадии Beta.

raspap

Поддерживаемые ОС и архитектуры RaspAP

Базовой платформой работы RaspAP является устройство Raspberry Pi. Но благодаря поддержки Armbian на основе Debian, список поддерживаемых устройств становится весьма широким.

Wi-Fi Hotspot на RaspAP будет развернут на одноплатном компьютере Cubietruck, процессор AllWinner A20 (ARM32), с ОС Armbian (на базе Debian). Для задач маршрутизации сетевого трафика для нескольких клиентов процессора AllWinner A20 с двумя ядрами Cortex-A7 будет недостаточно, но вы можете взять гораздо более мощное устройства из каталога поддерживаемых проектом Armbian.

RaspAP


raspap

Под капотом RaspAP использует hostapd, dnsmasq, iptables, веб-интерфейс работает на lighttpd с php-скриптами. С точки зрения использования новых функций применяется политика спонсорства. Если оформить ежемесячное спонсорство, то ваш аккаунт на GitHub будет добавлен в группу Insiders, которые первыми получают возможность протестировать новые функции. Функции доступные на данный момент только спонсорам будут помечены Insiders Edition.

raspap

Веб-интерфейс RaspAP

Возможности RaspAP:

  • Графический интерфейс для настройки и отображения графиков активности клиентских устройств;
  • Поддержка сертификатов SSL;
  • Интеграция с Captive portal;
  • Управление DHCP-сервером;
  • Поддержка адаптеров 802.11ac 5 ГГц;
  • Автоопределение внешних беспроводных адаптеров.

Пройдемся коротко по основным функциям RaspAP.

Точка доступа


По умолчанию создается точка доступа со следующими параметрами:

  • Interface: wlan0
  • SSID: raspi-webgui
  • Wireless Mode: 802.11n 2.4GHz
  • Channel: 1
  • Security Type: WPA2
  • Encryption Type: CCMP
  • Passphrase: ChangeMe

К AP можно подключаться по ключевой паре SSID + пароль или по QR-коду. В случае бездействия клиента, AP может его отключить (требуется поддержка в драйверах). В Insiders Edition доступна возможность изменять мощность в dBm. Для обеспечения гарантированной работы можно задать ограниченное количество подключаемых клиентов.

Для Raspberry Pi Zero W доступен режим виртуализации беспроводного устройства. Единственное на борту Wi-Fi устройство будет работать в режиме клиента и точки доступа. Режим виртуализации сетевых интерфейсов работает и на других адаптерах USB Wi-Fi таких как RTL8188.

Блокировщик рекламы (Ad blocking)


Блокирует ads, трекеры и узлы из черного списка. В качестве источника черного списка выступает проект notracking, список обновляется автоматически. Блокируются следующие типы узлов: tracking, поставщики рекламы, сбор аналитики, фишинговые и мошенические сайты, содержащие вредоносные программы, веб-майнеры.

Captive portal


raspap

Captive portal

Из коробки интегрирован nodogsplash. nodogsplash легкое и простое решения создания кастомизируемых порталов. Поддерживает различные политики работы клиентов.

Поддержка дисплея для вывода состояния работы


Статистическую работу можно выводить на TFT-экран Adafruit Mini PiTFT контроллер ST7789. Скрипт вывода информации написан на Python, поэтому программный код можно легко адаптировать и для другого дисплея, например для ILI9341.

raspap

Вывод информации о работе AP

Поддержка различных сетевых устройств в качестве WAN-интерфейса (Insiders Edition)


В качестве доступа к сети Интернет, RaspAP поддерживает несколько различных типов сетевых устройств, такие как:

  • Ethernet interface (eth);
  • Wireless adapter (wlan);
  • Mobile data modem (ppp);
  • Mobile data adapter with built-in router;
  • USB connected smartphone (USB tethering);

Это особенно удобно когда вы путешествуете или работает в полевых условиях.

OpenVPN


raspap

Сетевой трафик можно туннелировать используя клиента OpenVPN. В Insiders Edition доступна возможность хранения нескольких профилей OpenVPN с функцией быстрого переключения между ними.

WireGuard (Insiders Edition)


raspap

WireGuard быстрый и современный VPN, в котором используется самая современная криптография. Он более производителен, чем OpenVPN, и обычно считается наиболее безопасным, простым в использовании и самым простым решением VPN для современных дистрибутивов Linux. Благодаря низкому overhead, если устройство работает от батареи, то время работы при использование WireGuard будет больше, чем при использование OpenVPN.

Доступ к Web-интересу настроек через SSL


raspap

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

Постановка задачи


Установка RaspAP будет произведена из публичного репозитория, на Cubietruck установлена последняя версия Armbian (на основе Debian): Armbian 21.02.3 Buster, Linux 5.10.21-sunxi. На борту имеется встроенный адаптер wlan0, будет выступать в качестве клиентского доступа к сети Интернет (WAN-интерфейс). Для Hotspot подключим RTL8188 USB WiFi dongle wlan1.

  • IP конфигурация для wlan0: address 192.168.43.12 netmask 255.255.255.0 gateway 92.168.43.1.
  • IP конфигурация для wlan1: address 10.3.141.1 netmask 255.255.255.0 gateway 10.3.141.1.

Конфигурация DHCP-сервера:

  • Диапазон выдаваемых IP-адресов 10.3.141.50 10.3.141.254;
  • Шлюз/DNS-сервер: 10.3.141.1.

Для шлюзования сетевого трафика через OpenVPN установим на VPS сервер SoftEther VPN Server. SoftEther VPN Server мультипротокольный VPN-сервер, который может поднимать L2TP/IPsec, OpenVPN, MS-SSTP, L2TPv3, EtherIP-серверы, а также имеет свой собственный протокол SSL-VPN, который неотличим от обычного HTTPS-трафика (чего не скажешь про OpenVPN handshake, например), может работать не только через TCP/UDP, но и через ICMP (подобно pingtunnel, hanstunnel) и DNS (подобно iodine), работает быстрее (по заверению разработчиков) текущих имплементаций, строит L2 и L3 туннели, имеет встроенный DHCP-сервер, поддерживает как kernel-mode, так и user-mode NAT, IPv6, шейпинг, QoS, кластеризацию, load balancing и fault tolerance, может быть запущен под Windows, Linux, Mac OS, FreeBSD и Solaris и является Open-Source проектом под GPLv2.

Для VPS сервера выберем тариф на vdsina.ru за 330 р./месяц, в который включена квота на 32 ТБ трафика, чего более чем достаточно. SoftEther VPN Server будет развернут в Docker контейнере, поэтому выбор ОС CentOS/Debian/Ubuntu не принципиально важен.

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

raspap

VPS сервер на vdsina.ru

Сервер был развернут в Московской локации, IP-адрес 94.103.85.152, dns-имя: v636096.hosted-by-vdsina.ru. Подключение к серверу будет по DNS имени.

raspap

Итоговая схема сети

Как будет выглядеть Web-интерфейс RaspAP и подключение к Hotspot


Подключение к AP SSID: raspi-webgui


Подключение к AP raspi-webgui

Конфигурационные файлы RaspAP


Для установки RaspAP есть Quick installer, но он выполняется без задания параметров и wlan0 настроен как Hotspot, что нам не подходит. Поэтому воспользуемся Manual installation, с некоторыми изменениями т.к. руководство содержит некоторые ошибки и сам RaspAP работает с некоторыми некритичными багами, из-за этого пришлось немного больше потратить время на установку. О багах будет в ходе установки.

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

Список конфигурационных файлов (GitHub):

  • hostapd.conf служба hostapd
  • default_hostapd служба hostapd
  • 090_raspap.conf служба dnsmasq.d
  • 090_wlan1.conf служба dnsmasq.d
  • defaults.json служба raspap
  • dhcpcd.conf служба raspap
  • config.php портал конфигурации RaspAP

hostapd.conf служба hostapd

Содержит настройки AP по умолчанию такие как: ssid, channel, password и т.д.

hostapd.conf
driver=nl80211ctrl_interface=/var/run/hostapdctrl_interface_group=0beacon_int=100auth_algs=1wpa_key_mgmt=WPA-PSKssid=raspi-webguichannel=1hw_mode=gwpa_passphrase=ChangeMeinterface=wlan1wpa=2wpa_pairwise=CCMPcountry_code=RU## Rapberry Pi 3 specific to on board WLAN/WiFi#ieee80211n=1 # 802.11n support (Raspberry Pi 3)#wmm_enabled=1 # QoS support (Raspberry Pi 3)#ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] # (Raspberry Pi 3)## RaspAP wireless client AP mode#interface=uap0## RaspAP bridge AP mode (disabled by default)#bridge=br0



default_hostapd служба hostapd

Настройка службы hostapd, параметр DAEMON_CONF определяет путь к настройкам.

default_hostapd
# Location of hostapd configuration fileDAEMON_CONF="/etc/hostapd/hostapd.conf"



090_raspap.conf служба dnsmasq.d

Настройка службы dnsmasq, параметр conf-dir определяет путь к настройкам.

090_raspap.conf
# RaspAP default configlog-facility=/tmp/dnsmasq.logconf-dir=/etc/dnsmasq.d


090_wlan1.conf служба dnsmasq.d

Настройка dnsmasq для сетевого интерфейса wlan1. Содержит диапазон выдаваемых IP-адресов, и другие сетевые настройки. Необходимо обратить внимание на название файла по маске 090_[ИДЕНТИФИКАТОР_ИНТЕРФЕЙСА_HOTSPOT].conf. Если у вас сетевой интерфейс для hostspot будет назваться например wlan2, то следует задать название файла 090_wlan2.conf.

090_wlan1.conf
# RaspAP wlan0 configuration for wired (ethernet) AP modeinterface=wlan1domain-neededdhcp-range=10.3.141.50,10.3.141.255,255.255.255.0,12hdhcp-option=6,10.3.141.1


defaults.json служба raspap

Настройка DHCP серверов для интерфейсов wlan0 и wlan1.

defaults.json
{  "dhcp": {    "wlan1": {       "static ip_address": [ "10.3.141.1/24" ],      "static routers": [ "10.3.141.1" ],      "static domain_name_server": [ "10.3.141.1" ],      "subnetmask": [ "255.255.255.0" ]    },    "wlan0": {      "static ip_address": [ "192.168.43.12/24" ],      "static routers": [ "192.168.43.1" ],      "static domain_name_server": [ "1.1.1.1 8.8.8.8" ],      "subnetmask": [ "255.255.255.0" ]    },    "options": {      "# RaspAP default configuration": null,      "hostname": null,      "clientid": null,      "persistent": null,      "option rapid_commit": null,      "option domain_name_servers, domain_name, domain_search, host_name": null,      "option classless_static_routes": null,      "option ntp_servers": null,      "require dhcp_server_identifier": null,      "slaac private": null,      "nohook lookup-hostname": null    }  },  "dnsmasq": {    "wlan1": {      "dhcp-range": [ "10.3.141.50,10.3.141.255,255.255.255.0,12h" ]    },    "wlan0": {      "dhcp-range": [ "192.168.43.50,192.168.50.150,12h" ]    }  }}


dhcpcd.conf служба raspap

Настройка для сетевого интерфейса wlan0, который выходит в сеть Интернет.

dhcpcd.conf
# RaspAP default configurationhostnameclientidpersistentoption rapid_commitoption domain_name_servers, domain_name, domain_search, host_nameoption classless_static_routesoption ntp_serversrequire dhcp_server_identifierslaac privatenohook lookup-hostname# RaspAP wlan0 configurationinterface wlan0static ip_address=192.168.43.12/24static routers=192.168.43.1static domain_name_server=1.1.1.1 8.8.8.8


config.php портал конфигурации RaspAP

Файл настроек графического Web-интерфейса. Содержит переменные влияющие на отображение настроек. Самый главный параметр define('RASPI_WIFI_AP_INTERFACE', 'wlan1');. В качестве значения указать сетевой интерфейс hotspot wlan1.

config.php
...define('RASPI_WIFI_AP_INTERFACE', 'wlan1');...define('RASPI_ADBLOCK_ENABLED', true);define('RASPI_OPENVPN_ENABLED', false);...


Пошаговая установкаRaspAP


Руководство установки доступно в разделе Manual installation.

Шаг 1 Подключение адаптера USB WiFi RTL8188


Подключаем адаптер в любой доступный USB порт. В Armbian драйвера уже есть, поэтому проверим подключение командой lsusb:

root@bananapim64:~# lsusbBus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 003 Device 004: ID 0bda:c811 Realtek Semiconductor Corp.Bus 003 Device 002: ID 1a40:0101 Terminus Technology Inc. HubBus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubroot@bananapim64:~#

В списке присутствует Realtek Semiconductor Corp., значит адаптер успешно распознался. Если вывести название интерфейса для подключенного адаптера, то его имя будет wlxe81e0584796d, что несколько далеко от привычного именования вида wlanX. Для задания названия для адаптера wlan1, необходимо выполнить следующие действия (более подробнее почитать про именование сетевых интерфейсов по ссылке1,ссылке2):

$ sudo ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules$ sudo reboot

После перезагрузки в системе будет два беспроводных адаптера: wlan0 и wlan1.

Шаг 2 Настройка сетевых интерфейсов


Настроим сетевые интерфейсы в конфигурационном файле: /etc/network/interfaces.

# Network is managed by Network managerauto loiface lo inet loopback# WANauto wlan0allow-hotplug wlan0iface wlan0 inet dhcp# Wi-Fi APauto wlan1iface wlan1 inet static    address 10.3.141.1    netmask 255.255.255.0    gateway 10.3.141.1

Шаг 3 Установка RaspAP


Теперь приступаем к установке RaspAP.
Обновление системы:

sudo apt-get updatesudo apt-get full-upgrade

Установка зависимостей для не RPi OS:

sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/phpsudo apt-get install dhcpcd5

Установка пакетов:

sudo apt-get install -y lighttpd git hostapd dnsmasq iptables-persistent vnstat qrencode php7.3-cgi

PHP:

sudo lighttpd-enable-mod fastcgi-php    sudo service lighttpd force-reloadsudo systemctl restart lighttpd.service

Создание Web-портала:

sudo rm -rf /var/www/htmlsudo git clone https://github.com/RaspAP/raspap-webgui /var/www/htmlWEBROOT="/var/www/html"CONFSRC="$WEBROOT/config/50-raspap-router.conf"LTROOT=$(grep "server.document-root" /etc/lighttpd/lighttpd.conf | awk -F '=' '{print $2}' | tr -d " \"")HTROOT=${WEBROOT/$LTROOT}HTROOT=$(echo "$HTROOT" | sed -e 's/\/$//')awk "{gsub(\"/REPLACE_ME\",\"$HTROOT\")}1" $CONFSRC > /tmp/50-raspap-router.confsudo cp /tmp/50-raspap-router.conf /etc/lighttpd/conf-available/sudo ln -s /etc/lighttpd/conf-available/50-raspap-router.conf /etc/lighttpd/conf-enabled/50-raspap-router.confsudo systemctl restart lighttpd.servicecd /var/www/htmlsudo cp installers/raspap.sudoers /etc/sudoers.d/090_raspap

Создание конфигурации:

sudo mkdir /etc/raspap/sudo mkdir /etc/raspap/backupssudo mkdir /etc/raspap/networkingsudo mkdir /etc/raspap/hostapdsudo mkdir /etc/raspap/lighttpdsudo cp raspap.php /etc/raspap 

Установка разрешения:

sudo chown -R www-data:www-data /var/www/htmlsudo chown -R www-data:www-data /etc/raspap

Настройка контролирующих скриптов:

sudo mv installers/*log.sh /etc/raspap/hostapd sudo mv installers/service*.sh /etc/raspap/hostapdsudo chown -c root:www-data /etc/raspap/hostapd/*.sh sudo chmod 750 /etc/raspap/hostapd/*.sh sudo cp installers/configport.sh /etc/raspap/lighttpdsudo chown -c root:www-data /etc/raspap/lighttpd/*.shsudo mv installers/raspapd.service /lib/systemd/systemsudo systemctl daemon-reloadsudo systemctl enable raspapd.service

Установка стартовых настроек, настройки в каталоге ~/temp, при необходимости заменить на свои:

sudo apt-get install -y curl unzipmkdir -p ~/tempcurl -SL --output ~/temp/config_ct.zip https://github.com/devdotnetorg/Site/raw/master/Uploads/files/config_ct.zipunzip ~/temp/config_ct.zip -d ~/temprm ~/temp/config_ct.zipесли есть: sudo mv /etc/default/hostapd ~/default_hostapd.oldесли есть: sudo cp /etc/hostapd/hostapd.conf ~/hostapd.conf.oldsudo cp ~/temp/default_hostapd /etc/default/hostapdsudo cp ~/temp/hostapd.conf /etc/hostapd/hostapd.confsudo cp config/090_raspap.conf /etc/dnsmasq.d/090_raspap.confsudo cp ~/temp/090_wlan1.conf /etc/dnsmasq.d/090_wlan1.confsudo cp ~/temp/dhcpcd.conf /etc/dhcpcd.confsudo cp ~/temp/config.php /var/www/html/includes/sudo cp ~/temp/defaults.json /etc/raspap/networking/sudo systemctl stop systemd-networkdsudo systemctl disable systemd-networkdsudo cp config/raspap-bridge-br0.netdev /etc/systemd/network/raspap-bridge-br0.netdevsudo cp config/raspap-br0-member-eth0.network /etc/systemd/network/raspap-br0-member-eth0.network 

Оптимизация PHP:

sudo sed -i -E 's/^session\.cookie_httponly\s*=\s*(0|([O|o]ff)|([F|f]alse)|([N|n]o))\s*$/session.cookie_httponly = 1/' /etc/php/7.3/cgi/php.inisudo sed -i -E 's/^;?opcache\.enable\s*=\s*(0|([O|o]ff)|([F|f]alse)|([N|n]o))\s*$/opcache.enable = 1/' /etc/php/7.3/cgi/php.inisudo phpenmod opcache

Настройка маршрутизации:

echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/90_raspap.conf > /dev/nullsudo sysctl -p /etc/sysctl.d/90_raspap.confsudo /etc/init.d/procps restartsudo iptables -t nat -A POSTROUTING -j MASQUERADEsudo iptables -t nat -A POSTROUTING -s 192.168.43.0/24 ! -d 192.168.43.0/24 -j MASQUERADEsudo iptables-save | sudo tee /etc/iptables/rules.v4

Включение hostapd:

sudo systemctl unmask hostapd.servicesudo systemctl enable hostapd.service

OpenVPN:

sudo apt-get install openvpnsudo sed -i "s/\('RASPI_OPENVPN_ENABLED', \)false/\1true/g" /var/www/html/includes/config.phpsudo systemctl enable openvpn-client@clientsudo mkdir /etc/raspap/openvpn/sudo cp installers/configauth.sh /etc/raspap/openvpn/sudo chown -c root:www-data /etc/raspap/openvpn/*.sh sudo chmod 750 /etc/raspap/openvpn/*.sh

Ad blocking:

sudo mkdir /etc/raspap/adblockwget https://raw.githubusercontent.com/notracking/hosts-blocklists/master/hostnames.txt -O /tmp/hostnames.txtwget https://raw.githubusercontent.com/notracking/hosts-blocklists/master/domains.txt -O /tmp/domains.txtsudo cp /tmp/hostnames.txt /etc/raspap/adblocksudo cp /tmp/domains.txt /etc/raspap/adblock sudo cp installers/update_blocklist.sh /etc/raspap/adblock/sudo chown -c root:www-data /etc/raspap/adblock/*.*sudo chmod 750 /etc/raspap/adblock/*.shsudo touch /etc/dnsmasq.d/090_adblock.confecho "conf-file=/etc/raspap/adblock/domains.txt" | sudo tee -a /etc/dnsmasq.d/090_adblock.conf > /dev/null echo "addn-hosts=/etc/raspap/adblock/hostnames.txt" | sudo tee -a /etc/dnsmasq.d/090_adblock.conf > /dev/nullsudo sed -i '/dhcp-option=6/d' /etc/dnsmasq.d/090_raspap.confsudo sed -i "s/\('RASPI_ADBLOCK_ENABLED', \)false/\1true/g" includes/config.php

При конфигурирование через Web-интерфейс столкнулся с багом, который при изменение настроек DHCP сервера на интерфейсе wlan1 удаляет файл конфигурации 090_wlan1.conf и не создает его заново. В результате DHCP сервер не выдает IP-конфигурацию новым клиентам. Временное решение этой проблемы заключается в блокировке файла на удаление, необходимо выполнить следующую команду (по блокировке файлов почитать по ссылке):

sudo chattr +i /etc/dnsmasq.d/090_wlan1.conf

После установки необходимо перезагрузить систему:

sudo reboot now

После перезагрузке появится Wi-Fi точка доступа с SSID raspi-webgui и паролем ChangeMe. Портал будет доступен по адресу: http://10.3.141.1.

Установка SoftEther VPN Server на VPS сервер


На сервер v636096.hosted-by-vdsina.ru установим Docker по официальному руководству Install Docker Engine on Ubuntu.

Создание сети для Docker контейнеров


Для подсети в которой будет контейнер с SoftEther VPN Server определим следующие параметры:

  • Название сети: vpnnetwork;
  • Subnet: 172.22.0.0/24;
  • Driver: bridge;
  • Range: 172.22.0.0/25;
  • gateway: 172.22.0.127;
  • HostMin: 172.22.0.1;
  • HostMax: 172.22.0.126;
  • Hosts/Net: 126.

Для создание внутренней сети Docker выполним команду:

$ docker network create --driver bridge --subnet 172.22.0.0/24 --ip-range=172.22.0.0/25 --gateway 172.22.0.127 vpnnetwork

Для проверки доступности сети выполнить команду: ping 172.22.0.127.

Создание контейнера с SoftEther VPN Server


Для создание контейнера будем использовать образ siomiz/softethervpn. До запуска основного контейнера необходимо создать конфигурацию, в которой указать пароль для управления сервером параметр SPW и пароль для управления хабом параметр HPW. Файл конфигурации будет располагаться по пути /usr/vpnserver/vpn_server.config. Выполнить следующие команды:

$ mkdir -p /usr/vpnserver$ docker run --name vpnconf -e "SPW={PASSWORD}" -e "HPW={PASSWORD}" siomiz/softethervpn echo$ docker cp vpnconf:/usr/vpnserver/vpn_server.config /usr/vpnserver/vpn_server.config$ docker rm vpnconf

Для уменьшения размера контейнера возьмем образ на основе Alpine, все журналы log в null. Выполнить следующие команды для создание контейнера:

$ docker run --name vps-server-softethervpn -d --cap-add NET_ADMIN --restart always --net vpnnetwork --ip 172.22.0.2 -p 443:443/tcp -p 992:992/tcp \-p 1194:1194/udp -p 5555:5555/tcp -v /usr/vpnserver/vpn_server.config:/usr/vpnserver/vpn_server.config \-v /dev/null:/usr/vpnserver/server_log -v /dev/null:/usr/vpnserver/packet_log -v /dev/null:/usr/vpnserver/security_log siomiz/softethervpn:alpine

Если контейнер запустился, то переходим к следующему шагу.

Настройка SoftEther VPN Server


Для настройки SoftEther VPN Server лучше использовать графическую утилиту для ОС Windows. Для загрузки необходимо перейти на страницу SoftEther Download Center. В списке Select Component, выбрать SoftEther VPN Server Manager for Windows, далее Select Platform windows. Можно выбрать пакет .zip без необходимости установки. Пакет softether-vpn_admin_tools-v4.34-9745-rtm-2020.04.05-win32.zip распаковать и запустить vpnsmgr.exe.

Создаем новый профиль кнопка New Setting, указываем следующие настройка:

  • Setting Name: VDSina_ru_main_server
  • Host Name: v636096.hosted-by-vdsina.ru
  • Port Number: 443
  • Password: пароль который был указан в переменной SPW при создание конфигурационного файла vpn_server.config

Затем подключаемся к серверу кнопка Connect.

При первом подключение появится вопрос об включение поддержки протокола IPSec. Если в дальнейшем планируете подключать мобильные устройства без использования программных клиентов, то выбрать Да. В данном случае поддержка IPSec не требуется, отвеваем Нет.

Для настройки алгоритма шифрования нажать на кнопку Encryption and Network. По умолчанию включен алгоритм DHE-RSA-AES256-SHA. Из списка выбрать другие более стойкие комбинации шифрования, но нужно помнить чем сильнее алгоритм, тем больше нагрузка на CPU сервера и на конечное маршрутизирующее устройство.

По умолчанию будет доступен хаб DEFAULT, удаляем его.

Создаем новый хаб кнопка Create a Virtual Hub. Укажем Virtual Hub Name: VPNROOT. Открываем настройки хаба кнопка Manage Virtual Hub.

Создадим пользователя подключения, кнопка Manage Users, затем кнопка New. Аутентификация будет по паре логин/пароль, укажем имя: officeuser1.

Для отделение подсети клиентов VPN сервера и подсети Docker контейнеров включим NAT, кнопка Virtual NAT and Virtual DHCP Server (SecureNAT), далее кнопка Enable SecureNAT. Изменим подсеть VPN клиентов на: 192.168.30.x, закроем окно, кнопка Exit.

На этом настройка сервера закончена.


Последовательность действий по настройке SoftEther VPN Server

Получение файлов конфигурации *.ovpn


Для подключения OpenVPN клиента необходимо получить файлы конфигурации *.ovpn, для этого переходим на главный экран настроек SoftEther VPN Server и нажимаем на кнопку OpenVPN / MS-SSTP Settings. Далее, в следующем окне генерируем файлы конфигурации, кнопка Generate a Sample Configuration File for OpenVPN Clients. Сохраняем архив OpenVPN_Sample_Config_v636096.hosted-by-vdsina.ru_20210519_150311.zip, для дальнейшего подключения потребуется файл f1167ecd086e_openvpn_remote_access_l3.ovpn.


Последовательность действий по получению файлов конфигурации *.ovpn

Настройка OpenVPN на RaspAP


Создание маршрутов
Теперь переходим в консоль Cubietruck и добавляем маршруты:

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADEsudo iptables -A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPTsudo iptables -A FORWARD -i wlan1 -o tun0 -j ACCEPT

Делаем копию существующих маршрутов и сохраняем новые

cp /etc/iptables/rules.v4 /etc/iptables/rules.v4.baksudo iptables-save | sudo tee /etc/iptables/rules.v4

Настройка профиля OpenVPN

Переходим на портал по адресу 192.168.43.12/openvpn_conf и указываем данные для подключения:

  • Username: officeuser1
  • Password: указанный для officeuser1 в SoftEther VPN Server
  • Для конфигурационного файла выбираем файл f1167ecd086e_openvpn_remote_access_l3.ovpn.

Сохраняем настройки и перезапускаем OpenVPN. Если подключение удалось, но в поле IPV4 ADDRESS будет публичный IP-адрес VPN сервера: 94.103.85.152 (v636096.hosted-by-vdsina.ru).

raspap
Страница настроек OpenVPN в RaspAP

Настройка Captive portal


Установка Captive portal в руководстве Captive portal setup.

Для установки выполним следующие действия:

sudo apt-get updatesudo apt-get install -y libmicrohttpd-devcd ~/git clone https://github.com/nodogsplash/nodogsplash.gitcd nodogsplashmakesudo make install

Далее необходимо внести изменения в конфигурационный файл /etc/nodogsplash/nodogsplash.conf. Указать следующие параметры:

...GatewayInterface wlan1...GatewayAddress 10.3.141.1...

Регистрация службы и запуск:

sudo cp ~/nodogsplash/debian/nodogsplash.service /lib/systemd/system/sudo systemctl enable nodogsplash.servicesudo systemctl start nodogsplash.service sudo systemctl status nodogsplash.service

Страницы html для изменение дизайна страниц располагаются по пути: /etc/nodogsplash/htdocs/. Теперь выполним подключение к AP SSID: raspi-webgui.

Устранение проблем


Первым делом необходимо проверить IP-конфигурацию сетевых интерфейсов, командами: ifconfig или ip a.

Проверить занятость портов, командами:

netstat -ntlp | grep LISTENlsof -i | grep LISTENlsof -nP -i | grep LISTEN

Если установка RaspAP выполняется на Ubuntu, то вы можете столкнуться с конфликтом использования 53 порта, который занят службой systemd-resolved. Для отключения данной службы, воспользоваться материалом How to disable systemd-resolved in Ubuntu.

Проверить статусы используемых служб, выполнить следующие команды:

sudo systemctl status hostapd.servicesudo systemctl status dnsmasq.servicesudo systemctl status lighttpd.servicesudo systemctl status openvpn-client@clientsudo systemctl status nodogsplash.servicesudo systemctl status raspapd.service


Что дальше?


Для проверки совместимости необходимо RaspAP развернуть на Banana Pi BPI-M64 (Armbian 21.02.1 на основе Ubuntu 18.04.5 LTS). Далее, развернуть на x86 с другим более новым адаптером, например USB Realtek 8811CU Wireless LAN 802.11ac. На GitHub размещен репозиторий raspap-docker, который оборачивает RaspAP в контейнер, но по факту запускает скрипт автоматической установки, что несколько неудобно и неправильно. Поэтому для более широкого распространения RaspAP необходимо его правильно обернуть в Docker контейнер для ARM и x86 архитектур.

Итог


Проект RaspAP безусловно заслуживает внимания, основные функции работают отлично. Это единственный проект связанный с Wi-Fi сетями, работающий поверх существующей ОС, у которого работает Web-интерфейс (пока есть небольшие баги). Для личного использования, теста, стоит попробовать. Но для продакшен в бизнесе пока лучше не использовать, необходимо более детально просмотреть исходный код и конфигурацию на предмет безопасности. В любом случае, проект добавил себе в закладки, надеюсь баги исправят в скором времени.



На правах рекламы


VDSina предлагает виртуальные серверы на Linux и Windows выбирайте одну из предустановленных ОС, либо устанавливайте из своего образа.

Присоединяйтесь к нашему чату в Telegram.

Подробнее..

Настройка IPsec GRE туннель между FortiOS 6.4.5 и RouterOS 6.48.1

10.03.2021 14:15:34 | Автор: admin

Стояла задача объединить филиалы с головным офисом предприятия, где находилась серверная. Fortigate 60E организовывал доступ в интернет и выполнял роль межсетевого экрана в головном офисе, в филиалах выполняли роль доступа в интернет Микротик разных моделей. Также было необходимо настроить динамическую маршрутизацию OSPF и поднять IPsec VPN туннели с GRE. Порыскав на просторах интернета, нашел пару разрозненных статей о соединении Fortigate c микротик через IPsec VPN и GRE туннель. Решил объединить эту информацию в одной своей статье, чтобы в дальнейшем самому использовать как шпаргалку. О динамической маршрутизации OSPF напишу в следующей статье.

Итак, входные данные:

1.Головной офис предприятия HQ FortiOS 6.4.5:

  • Публичный IP X.X.X.X (сетевой интерфейс port1)

  • Внутренняя сеть 192.168.111.0/24 (сетевой интерфейс port2)

2.Филиал предприятия Branch Mikrotik RouterOS 6.48.1:

  • Публичный IP Y.Y.Y.Y сетевой интерфейс ether1

  • Внутренняя сеть 192.168.112.0/24 (сетевой интерфейс ether2)

На рис. схематично показано подключение главного офиса и филиала.

Опущу основный настройки Fortigate и mikrotik, эта информация есть в интернете, сразу приступим к настройкам IPsec и GRE. Начнем настройку с mikrotik . Начнем с GRE, заходим утилитой Winbox на mikrotik в меню Interfaces->GRE Tunnel->+(нажимаем плюс, чтобы добавить туннель), за тем : - Local Address Y.Y.Y.Y - Remote Address X.X.X.X Укажем параметр "keepalive", который определяет находится ли туннель в рабочем состоянии. Если параметр не включен, то даже, если второй маршрутизатор будет выключен интерфейс все равно будет показывать рабочее состояние, что не удобно для диагностики. Использовать будем значение 10 попыток по 10 секунд. т. е., если в течении 100 секунд не будет никаких сигналов с противоположной стороны туннель перейдет в нерабочее состояние. При этом он автоматически включится, если противоположная сторона попытается установить соединение. В отличии от настройки GRE без IPsec в этой конфигурации должна быть отключена опция "Allow Fast Path", а параметр "Local Address:" является обязательным потому что без него не получится создать автоматические настройки IPsec. Если указать параметр IPsec Secret, то автоматически создадутся необходимые настройки IPsec. Но их поменять будет уже не возможно, поэтому не задаю параметр IPsec Secret.

Назначим IP адрес GRE-туннелю. Зайдем IP->Addresses->+

Команды консоли :

/interface greadd name=gre-tunnel1 keepalive=10s,10 local-address=Y.Y.Y.Y remote-address=X.X.X.X allow-fast-path=no/ip addressadd address=10.10.10.2/30 interface= gre-tunnel1

Настраиваем IPsec . Начнем с phase-1, идентификация устройств между собой, по заранее определенному IP адресу и ключу , настройки в IP->IPsec->Profiles.

Создаем Peer для phase-1, в IP->IPsec->Peers. Указываем имя name Branch-HQ, адрес удаленного FortiGate HQ, локальный адрес и profile1, который соответствует phase-1.

Теперь определяем ключ IPsec phase-1.

Настройка параметров phase-2, он согласует общую политику IPsec, получает общие секретные ключи для алгоритмов протоколов IPsec (AH или ESP), устанавливает IPsec SA. Идем IP->IPsec->Proposals

И создаем политики IPsec , IP->IPsec->Policies->General. Указываем имя Peer Branch-HQ, мы его настраивали выше. Src. Address внешний адрес нашего mikrotik Y.Y.Y.Y, Dst. Address внешний адрес FortiGate HQ X.X.X.X, и указываем протокол GRE в параметре Protocol - 47.

На вкладке Action выбираем Proposal porposal1, который мы тоже настраивали выше.

Настройка в консоли :

 /ip ipsec profileadd dh-group=modp1536,modp2048 enc-algorithm=aes-256 hash-algorithm=sha256 lifetime=24h name=profile1/ip ipsec peeradd address=X.X.X.X local-address=Y.Y.Y.Y name=Branch-HQ profile=profile1/ip ipsec proposaladd auth-algorithms=sha256 enc-algorithms= aes-256-cbc lifetime=30m name=proposal1 pfs-group=modp1536/ip ipsec policyadd peer=Branch-HQ src-address= Y.Y.Y.Y dst-address= X.X.X.X protocol=47 proposal=proposal1/ip ipsec identityadd peer=Branch-HQ secret=#!@BRaNCH@!#

Прописываем правила в файерволе IP->Firewall->Filter Rules:

В терминале :

/ip firewall filteradd chain=input protocol=17 dst-port=500,4500 in-interface=ether1 action=accept

Пока не поднята динамическая маршрутизация , создадим статический маршрут до локальной сети головного офиса :

/ip routeadd dst-address=192.168.111.0/24 gateway=10.10.10.1

На этом настройка mikrotik окончена , перейдем к настройки FortiGate.

На FortiGate настроим IPsec phase-1 в командной строке:

config vpn ipsec phase1-interface edit HQA-Branch set peertype any set proposal aes256-sha256 set dpd on-idle set dhgrp 5 14 set auto-discovery-sender enable set remote-gw Y.Y.Y.Y set psksecret #!@BRaNCH@!# set dpd-retryinterval 5 nextend

Phase-2 , не забываем указать protocol 47 и указать transport-mode (транспортный режим) для туннеля GRE:

config vpn ipsec phase2-interface edit "HQA-Branch" set phase1name "HQA-Branch" set proposal aes256-sha256 set dhgrp 5 14 set auto-negotiate enable set encapsulation transport-mode set protocol 47 nextend

Настроим GRE tunnel:

config system gre-tunnel edit "HQ-Branch" set interface "HQA-Branch" set remote-gw Y.Y.Y.Y set local-gw X.X.X.X nextend

Настроим локальный IP адрес туннельного интерфейса и укажем IP удаленного интерфейса:

config system interface edit "HQ-Branch" set ip 10.10.10.1 255.255.255.255 set remote-ip 10.10.10.2 255.255.255.252 set interface "HQA-Branch" nextend

Трафик GRE, который должен быть защищен IPsec, создается самостоятельно, он не принимается на интерфейсе. Следовательно, не требуется политика форвардинга, чтобы разрешить трафику GRE входить или выходить из интерфейса IPsec. Однако по замыслу FortiOS для согласования IPsec требуется политика форвардинга. Поэтому для активации IPsec используется произвольная политика форвардинга (например, от самого интерфейса IPsec и обратно).

config firewall policy edit 2 set name "Enable IPsec" set srcintf "HQA-Branch" set dstintf "HQA-Branch" set srcaddr "all" set dstaddr "all" set action accept set schedule "always" set service "ALL" next

Разрешим трафик из локальной сети головного офиса port2 в туннель GRE и наоборот:

config firewall policy     edit 3        set name "GRE HQ->Branch"        set srcintf "port2"        set dstintf "HQ-Branch"        set srcaddr "all"        set dstaddr "all"        set action accept        set schedule "always"        set service "ALL"    next    edit 4        set name "GRE Branch->HQ"        set srcintf "HQ-Branch"        set dstintf "port2"        set srcaddr "all"        set dstaddr "all"        set action accept        set schedule "always"        set service "ALL"    nextend

После туннелирования GRE, пакеты GRE должны быть защищены IPsec. Следовательно, remote-gw gre-tunnel должен указывать на интерфейс IPsec. Настраиваем статический маршрут:

config router static edit 1 set dst Y.Y.Y.Y/30 set device "HQA-Branch" next

Создадим статический маршрут до локальной сети филиала

edit 2        set dst 192.168.112.0 255.255.255.0        set device "HQ-Branch"    nextend

И теперь поднялся IPsec и GRE , трафик из локальной сети головного офиса попадает в локальную сеть филиала и наоборот.

Использовал следующие статьи:

1.Fortinet

2.Wiki Микротика

Это мой второй труд , прошу сильно не пинать.

Подробнее..

Сам сломаю, сам и починю как я эпически нажал не туда на проде

14.04.2021 10:21:24 | Автор: admin
Привет, Хабр!

Про такие ошибки обычно говорить не принято, потому что во всех интеграторах работают только безгрешные небесноликие люди. У нас, как известно, на уровне ДНК отсутствует возможность ошибаться или быть неправыми.

Но я рискну. Надеюсь, мой опыт кому-то будет полезен. Есть у нас один крупный заказчик, онлайн-розница, которому мы полностью поддерживаем фабрику Cisco ACI. Своего админа, компетентного по этой системе, у компании нет. Сетевая фабрика это группа коммутаторов, которая имеет единый центр управления. Плюс ещё куча полезных фич, которыми очень гордится производитель, но в итоге, чтобы всё уронить, нужен один админ, а не десятки. И один центр управления, а не десятки консолей.

Начинается история так: заказчик хочет перенести на эту группу коммутаторов ядро всей сети. Такое решение обусловлено тем, что архитектура ACI, в которую собрана эта группа коммутаторов очень отказоустойчивая. Хотя это не типично и в целом фабрика в любом ЦОД не используется как транзитная сеть для других сетей и служит только для подключения конечной нагрузки (stub network). Но такой подход вполне имеет место быть, поэтому заказчик хочет мы делаем.

Дальше произошло банальное я перепутал две кнопки: удаления политики и удаления конфига фрагмента сети:

image

Ну а дальше по классике нужно было собрать заново часть развалившейся сети.

По порядку


Запрос заказчика звучал так: нужно было построить отдельные порт-группы под перенос оборудования непосредственно на эту фабрику.
Коллеги, просьба перенести настройки портов Leaf 1-1 101 и leaf 1-2 102, порты 43 и 44, на Leaf 1-3 103 и leaf 1-4 104, порты 43 и 44. К портам 43 и 44 на Leaf 1-1 и 1-2 подключён стек 3650, он пока не введён в эксплуатацию, переносить настройки портов можно в любое время.

То есть они хотели перевести кластер серверов. Нужно было настроить новую виртуальную порт-группу под серверное окружение. По сути дела, это рутинная задача, простоя сервиса на такой задаче обычно нет. По сути своей порт-группа в терминологии APIC это VPC, который собирается из портов находящихся физически на разных коммутаторах.

Проблема в том, что на фабрике настройки этих порт-групп привязаны к отдельной сущности (которая возникает вследствие того, что фабрика управляется с контроллера). Этот объект называется port policy. То есть к группе портов, которые мы добавляем, нужно ещё сверху применить общую политику как сущность, которая будет управлять этими портами.
То есть нужно было сделать анализ, какие EPG используются на портах 43 и 44 на нодах 101 и 102 для того, чтобы собрать аналогичную конфигурацию на нодах 103-104. После анализа необходимых изменений я начал настраивать ноды 103-104. Для настройки нового VPC в существующей политике интерфейсов для нод 103 и 104 нужно было создать политику, в которую будут заведены интерфейсы 43 и 44.

И там есть в GUI один нюанс. Я создал эту политику и понял, что в процессе конфигурирования допустил незначительную ошибку, назвал её не так, как принято у заказчика. Это не критично потому что политика новая и ни на что не влияет. И мне эту политику нужно было удалить, поскольку изменения в неё уже внести нельзя (название не меняется) можно только удалить и заново политику создать.

Проблема в том, что в GUI есть иконки удаления, которые относятся к политикам интерфейса, а есть иконки, которые относятся к политикам коммутатора. Визуально они почти идентичны. И я вместо того, чтобы удалить политику, которую я создал, удалил всю конфигурацию для интерфейсов на коммутаторах 103-104:

image

Вместо удаления одной группы фактически удалил все VPC из настроек ноды, использовал delete вместо trashbin.

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

В общем, ПО решило, что я Чак Норрис и точно знаю, что делаю. Всё под контролем. Админ не может ошибаться, и даже когда он стреляет себе в ногу это часть хитрого плана.

Но примерно через десять минут меня выкинуло из VPN, что я поначалу не связал с конфигурацией APIC. Но это как минимум подозрительно, и я связался с заказчиком, уточнить, что происходит. Причём следующие несколько минут я думал, что проблема в технических работах, внезапном экскаваторе или сбое питания, но никак не конфиге фабрики.

У заказчика сеть построена сложно. Мы по своим доступам видим только часть окружения. Восстанавливая события, всё похоже на то, что началась ребалансировка трафика, после чего через несколько секунд динамическая маршрутизация оставшихся систем просто не вывезла.
Тот VPN, на котором я сидел, это был админский VPN. Обычные сотрудники сидели с другого, у них всё продолжало работать.

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

Восстановление фабрики


На восстановление фабрики с учётом всех звонков и сбора всех причастных ушло 30 минут.

Нашли другой VPN, через который можно зайти (это потребовало согласования с безопасниками), и я откатил конфигурацию фабрики в Cisco ACI это делается в два клика. Ничего сложного нет. Просто выбирается точка восстановления. Занимает это 1015 секунд. То есть на само восстановление ушло 15 секунд. Всё остальное время было потрачено на то, чтобы понять, как получить удалённое управление.

image

После инцидента


Ещё день мы разбирали логи и восстанавливали цепочку событий. Потом собрали звонок с заказчиком, спокойно изложили суть и причины инцидента, предложили ряд мер, чтобы свести к минимуму риски подобных ситуаций и человеческого фактора.
Договорились, что конфиги фабрики мы трогаем только в нерабочие часы: ночное и вечернее время. Проводим работы обязательно с дублирующим удалённым подключением (есть рабочие VPN-каналы, есть резервные). Заказчик получает от нас предупреждение и в это время наблюдает за сервисами.

Инженер (то есть я) на проекте остался тот же. Могу сказать, что по ощущениям доверия ко мне стало даже больше, чем до инцидента думаю, как раз потому что мы быстро сработали в ситуации и не дали волне паники накрыть заказчика. Главное не пытались спрятать косяк. По практике я знаю, что в этой ситуации легче всего попытаться перевалить на вендора.
Похожие политики работы с сетью мы применили и к другим заказчикам на аутсорсе: это тяжелее для заказчиков (дополнительные VPN-каналы, дополнительные смены админов в нерабочие часы), но многие поняли, зачем это нужно.

Так же мы покопались глубже в ПО Cisco Network Assurance Engine (NAE), где нашли возможность сделать на фабрике ACI две простые, но очень важные вещи:

  • первое NAE позволяет сделать анализ планируемого изменения, еще до того, как мы его выкатили на фабрику и отстрелили себе все, спрогнозировав как позитивно или негативно изменение скажется на существующей конфигурации;
  • второе NAE уже после изменения позволяет измерить общую температуру фабрики и увидеть как это изменение в конечном счете повлияло на состояние ее здоровья.

Если интересно больше деталей у нас завтра вебинар про внутреннюю кухню техподдержки, будем рассказывать, как всё устроено у нас и у вендоров. Ошибки тоже будем разбирать)
Подробнее..

Перевод Дружим WSL и VSCode через Tailscale и упрощаем работу в сети

27.02.2021 20:23:19 | Автор: admin

От переводчика:

Когда-нибудь я подключу к одной сети VPN свою нынешнюю машину в Беларуси и машину в России. Пробовал на зуб ZeroTier, чтобы соединить их вообще, но сервис мне не зашёл, тем более, тогда речь не шла о том, чтобы легко подружить подсистему Linux внутри Windows с любой другой машиной извне. Здесь речь именно об этом. Поэтому, думаю, этот перевод окажется полезным не только мне.


Tailscale это сеть VPN, которая не нуждается в конфигурировании. Она работает поверх других сетей, выравнивает сети и позволяет пользователям и сервисам упростить коммуникацию и сделать её безопаснее. Я подробно писал о том, как подключиться к WSL2 внутри Windows 10 по SSH, с другого компьютера. В инструкции по ссылке не только множество шагов, но и несколько способов подключения.

Кроме того, повторю то, что я говорил в статье об SSH: если вы активный разработчик и хотите поделиться сервисами и сайтами, над которыми работаете, со своими коллегами и соавторами, то придётся разобраться с нетривиально большим объёмом настроек, управления и обслуживания. Другими словами:

Не было бы проще, если бы все были в одной сети и одной подсети?

Поясню. WSL первой версии делит сетевой стек с Windows 10, поэтому машина WSL и Windows рассматривается как одна и та же. Выполняемый на порте 5000 сервис, сервис Windows или работающее в Linux под WSL1 приложение выполняется на одной и той же машине. Однако в WSL2 Linux находится за хостом Windows.

Хотя WSL2 упрощает доступ к http://localhost:5000 через прозрачную переадресацию портов, ваш Linux на WSL на самом деле не является одноранговым узлом в той же сети, что и другие ваши устройства.

Инструмент вроде Tailscale решает проблему, то есть как будто выравнивает сеть. Надо сказать, что из-за некоторых особенностей WSL2 при работе с ней можно допустить несколько ошибок. Я расскажу, что делал, чтобы всё заработало у меня.

Tailscale на WSL2

Установите WSL2 следуйте этой инструкции. Установите дистрибутив Linux. Я работал с Ubuntu 20.04. Погрузитесь в процесс, создайте пользователя и т.д. Установите Windows Terminal работа с командной строкой станет приятнее. Установите Tailscale я руководствовался инструкцией для Ubuntu 20.04.

Настройка WSL2

Сейчас нельзя запустить Tailscale на WSL2 через IPv6, поэтому я отключил протокол:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Здесь мы запускаем демон. На WSL2 пока нет systemd, но если ваша версия сборки Windows 10 выше 21286, можно выполнять команды при запуске WSL. Лично я прописал всё в bash.

sudo tailscaled

Также у нас нет возможности выполнять интерактивный вход в систему WSL, поэтому, чтобы поднять Tailscale внутри WSL, вам нужно сгенерировать ключ предварительной аутентификации и аутентифицировать одну машину. Пропишите сгенерированный ключ с команде запуска, как это сделал я:

tailscale up --authkey=tskey-9e85d94f237c54253cf0

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

В панели администрирования машин Tailscale вы увидите все машины в сети, как показано ниже. Обратите внимание: scottha-proto в списке это Windows, а scottha-proto-1 это Linux. Первая машина это мой хост, вторая экземпляр Linux WSL2, они теперь в одной сети!

У меня получилось пригласить пользователя вне своей сети при помощи новой функции совместного использования узлов. Мой друг Гленн не работает в моей организации, но так же, как и я, пользуется OneDrive или DropBox, чтобы создать ссылку или по созданной ссылке получить доступ к одной сущности системы, а не ко всей системе. Я могу сделать то же самое в смысле Tailscale:

Можно пригласить Гленна, чтобы он подключился к работающему в WSL2 сервису прямо из дома.

Создаём сервис и привязываем его к сети Tailscale

Я установил .NET 5 в Ubuntu на WSL2, создал папку и запустил команду dotnet new web, чтобы сгенерировать микросервисный Hello World. Когда я запускаю сервис .NET, Node, или какой-то ещё, важно, чтобы он прослушивался в сети Tailscale. Linux в WSL2 подключена к нескольким сетям.

По умолчанию мои системы разработчика прослушиваются только локальным хостом; прослушивать сервисы во всех сетях (включая Tailscale) средствами .NET можно по-разному, я запустил прослушивание так:

dotnet run --urls http://*:5100;https://*:5101

Итак, я подключился к IP-адресу в Tailscale, который связан с моим экземпляром WSL2, и постучался к моему сервису внутри Linux:

Что теперь можно сделать? Мы с Гленном находимся в сети Tailscale, кроме того, вся сеть единообразная, а значит, Гленн может легко достучаться до моего сервиса! На скрине ниже я нахожусь в Teams: мой рабочий показывается внизу, а рабочий стол Гленна наверху.

Добавляем VSCode и расширение SSH для удалённой разработки

Окей, у нас есть безопасная, единообразная сеть и полная свобода! Могу ли я превратить мой экземпляр WSL2 в систему удалённой разработки для Гленна? Конечно, почему бы и нет?

Для ясности: это просто разговоры, эксперимент, но в нём что-то есть. Например, кроссплатформенность: можно работать с Mac, Windows, WSL2 и так далее. Этим разделом можно руководствоваться, чтобы поднять виртуальную машину на любом облачном или обычном хостере, установить Tailscale и больше не думать о перенаправлении портов, пользуясь поднятой машиной как песочницей. Да, можно работать с WSL локально, но установка на хосте это весело, так появляется много классных вариантов.

Начнём. В WSL2 я запускаю сервис ssh. Можно было поделиться открытыми ключами и войти в систему с их помощью, но здесь залогинюсь по имени пользователя и отредактирую /etc/ssh/sshd_config, установлю порт, ListenAddressи PasswordAuthenticationв Yes:

Port 22#AddressFamily anyListenAddress 0.0.0.0ListenAddress ::PasswordAuthentication yes

glenn локальный суперпользователь только в моём инстансе WSL2:

sudo adduser glennusermoid -aG sudo glenn

Теперь Гленн устанавливает пакет VS Code Remote Development и при помощи Remote via SSH подключается к моему IP в сети Tailscale. Ниже вы видите VS Code на машине Гленна, где ставится VS Code Server [не перепутайте с code-server для развёртывания VSC в вебе] и удалённую разработку вообще.

С точки зрения архитектуры Гленн и код в VS Code поделены пополам между клиентом на его машине Windows и сервером на моём экземпляре WSL2. Обратите внимание: в левом нижнем углу видно, что его VSCode подключён к IP моей WSL2 в сети Tailscale!

Что вы думаете об этом? Можно сравнить Tailscale с инструментами типа ориентированного на разработчиков типа NGrok, который прокладывает туннели к localhost, но есть кое-какие существенные отличия. Проведите расследование! Я никак не отношусь к компании NGrok, разве что я её фанат.

А спонсор этой недели я! Этот блог и мой подкаст были любимым делом на протяжении девятнадцати лет. Ваше спонсорство оплачивает мой хостинг, благодаря ему я покупаю гаджеты для обзоров, а иногда тако. Присоединяйтесь!

Подробнее..

Powershell настоящий язык программирования. Скрипт оптимизации рутины в техподдержке

20.06.2021 14:08:21 | Автор: admin

Работая в компании IT-аутсорса в качестве руководителя 3 линии поддержки, задумался, как автоматизировать подключение сотрудников по RDP, через VPN к серверам десятков клиентов.

Таблички с адресами, паролями и прочими настройками серверов, конечно, хорошо, но поиск клиента и вбивание адресов с аккаунтами занимает довольно существенное время.
Держать все подключения к VPN в Windows не самая лучшая идея, да и при переустановке оного, создавать VPNы тоже не доставляет удовольствие.
Плюс к тому, в большинстве случаев, требуется установить VPN подключение к клиенту без использования шлюза. дабы не гонять весь интернет-трафик через клиента.
Задача, к тому же, осложняется тем, что у некоторых клиентов pptp, у кого-то l2tp, у некоторых несколько подсетей, туннели и т.п.

В результате, для начала был написан скрипты на Powershell для каждого клиента, но позже, узнав, что в Powershell можно использовать Winforms они переродились в некое приложение, написанное с помощью того же Powershell.

До написания этого скрипта-приложения программированием не занимался вообще, разве что лет 20 назад что-то пописывал на VBS в MS Excel и MS Access, поэтому не гарантирую красивость кода и принимаю критику от опытных программистов, как можно было бы сделать красивее.

В Powershell, начиная с Windows 8 и, конечно в Windows 10, появилась прекрасная возможность создавать VPN подключения командой Add-VpnConnection и указывать какие маршруты использовать с этими соединениями командой Add-VpnConnectionRoute, для использования VPN без шлюза.

На основании этих команд и создано данное приложение. Но, обо всем по порядку.

Для начала, создаем в Google Disk таблицу с именованными столбцами:
Number; Name; VPNname; ServerAddress; RemoteNetwork; VPNLogin; VPNPass; VPNType; l2tpPsk; RDPcomp; RDPuser; RDPpass; DefaultGateway; PortWinbox; WinboxLogin; WinboxPwd; Link; Inform

  • VPNname произвольное имя для VPN соединения

  • ServerAddress адрес VPN сервера

  • RemoteNetwork адреса подсети или подсетей клиента, разделенные ;

  • VPNLogin; VPNPass учетная запись VPN

  • VPNType -тип VPN (пока используется pptp или l2tp)

  • l2tpPsk PSK для l2tp, в случае pptp оставляем пустым

  • RDPcomp адрес сервера RPD

  • RDPuser; RDPpass учетная запись RPD

  • DefaultGateway принимает значение TRUE или FALSE и указывает на то, использовать ли Шлюз по умолчанию для этого соединения. В 90% случаев = FALSE

  • PortWinbox; WinboxLogin; WinboxPwd порт, логин и пароль для Winbox, поскольку у нас большинство клиентов использует Mikrotik)

  • Link ссылка на расширенную информацию о компании, например, на диске Google, или в любом другом месте, будет выводиться в информационном поле для быстрого доступа к нужной информации

Inform примечание

Пример таблицы доступен по ссылке

Number

Name

VPNname

ServerAddress

RemoteNetwork

VPNLogin

VPNPass

VPNType

l2tpPsk

RDPcomp

RDPuser

RDPpass

DefaultGateway

PortWinbox

WinboxLogin

WinboxPwd

Link

Inform

1

Тест1

Test1

a.b.c.d

192.168.10.0/24: 10.10.0.0/24

vpnuser

passWord

pptp

none

192.168.10.1

user

passWord

TRUE

8291

Admin

Admin

http://yandex.ru

тест

2

Тест2

Test2

e.f.j.k

192.168.2.0/24

vpnuser

passWord

l2tp

KdoSDtdP

192.168.2.1

user

passWord

FALSE

8291

Admin

Admin

Скриншот работающего приложения с затертыми данными:

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

function Get-Clients #Функция принимает строку адреса файла в Google Drive и возвращает в виде массива данных о клиентах{param([string]$google_url = "")[string]$xlsFile = $google_url$csvFile = "$env:temp\clients.csv"$Comma = ','Invoke-WebRequest $xlsFile -OutFile $csvFile$clients = Import-Csv -Delimiter $Comma -Path "$env:temp\clients.csv"Remove-Item -Path $csvFilereturn $clients}function Main {<#    Функция, срабатываемая при запуске скрипта#>Param ([String]$Commandline)#Иннициализируем переменные и присваиваем начальные значения. Здесь же, указываем путь к таблице с клиентами$Global:Clients = $null$Global:Current$Global:CurrentRDPcomp$Global:google_file = "https://docs.google.com/spreadsheets/d/1O-W1YCM4x3o5W1w6XahCJZpkTWs8cREXVF69gs1dD0U/export?format=csv" # Таблица скачивается сразу в виде csv-файла$Global:Clients = Get-Clients ($Global:google_file) # Присваиваем значения из таблицы массиву #Скачиваем Winbox64 во временную папку$download_url = "https://download.mikrotik.com/winbox/3.27/winbox64.exe"$Global:local_path = "$env:temp\winbox64.exe"If ((Test-Path $Global:local_path) -ne $true){$WebClient = New-Object System.Net.WebClient$WebClient.DownloadFile($download_url, $Global:local_path)}  #Разрываем все текущие VPN соединения (на всякий случай)foreach ($item in get-vpnconnection | where { $_.ConnectionStatus -eq "Connected" }){Rasdial $item.Name /disconnect}  #Удаляем все, ранее созданные программой временные соединения, если вдруг не удалились при некорректном закрытии приложенияget-vpnconnection | where { $_.Name -match "tmp" } | Remove-VpnConnection -Force#Запускаем приложениеShow-MainForm_psf}#Собственно, само приложениеfunction Show-MainForm_psf{[void][reflection.assembly]::Load('System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')[void][reflection.assembly]::Load('System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')#Создаем форму и объекты формы[System.Windows.Forms.Application]::EnableVisualStyles()$formКлиентыАльбус = New-Object 'System.Windows.Forms.Form'$statusbar1 = New-Object 'System.Windows.Forms.StatusBar'$groupboxTools = New-Object 'System.Windows.Forms.GroupBox'$buttonPing = New-Object 'System.Windows.Forms.Button'$buttonВыход = New-Object 'System.Windows.Forms.Button'$buttonWindox = New-Object 'System.Windows.Forms.Button'$buttonПеречитатьДанные = New-Object 'System.Windows.Forms.Button'$buttonPingAll = New-Object 'System.Windows.Forms.Button'$groupboxRDP = New-Object 'System.Windows.Forms.GroupBox'$comboboxRDP = New-Object 'System.Windows.Forms.ComboBox'$textboxRDPLogin = New-Object 'System.Windows.Forms.TextBox'$textboxRdpPwd = New-Object 'System.Windows.Forms.TextBox'$buttonПодключитьRDP = New-Object 'System.Windows.Forms.Button'$groupboxVPN = New-Object 'System.Windows.Forms.GroupBox'$buttonПодключитьVPN = New-Object 'System.Windows.Forms.Button'$buttonОтключитьVPN = New-Object 'System.Windows.Forms.Button'$checkboxШлюзПоумолчанию = New-Object 'System.Windows.Forms.CheckBox'$richtextboxinfo = New-Object 'System.Windows.Forms.RichTextBox'$listbox_clients = New-Object 'System.Windows.Forms.ListBox'$InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState'  #----------------------------------------------# Обработчики событий#----------------------------------------------$formКлиентыАльбус_Load = {#При загрузке формы очистить поле информации и заполнить поле с клиентами (их названиями) $richtextboxinfo.Clear()$Global:Clients | ForEach-Object {[void]$listbox_clients.Items.Add($_.Name)} # В листбокс добавляем всех наших клиентов по именам и массива при загрузке формы}$listbox_clients_SelectedIndexChanged = {#Прочитать из массива информацию о клиенте при выборе его в поле listbox_clients (массив, как мы помним считан из файла с диска Google)$statusbar1.Text = 'Выбран клиент: ' + $listbox_clients.SelectedItem.ToString() # Пишем клиента в статусбар$Global:Current = $Global:Clients.Where({ $_.Name -eq $listbox_clients.SelectedItem.ToString() })If ($Current.PortWinbox -ne 0) # Если порт Winbox указан, то у клиента Mikrotik, включаем соответствующую кнопку{$buttonWindox.Enabled = $true$buttonWindox.Text = "Winbox"}$VPNname = $Global:Current.VPNname + "-tmp" #Добавляем к имени VPN соединения "-tmp" для указания метки временного соединения, чтобы при выходе удалить только ихswitch ($Global:Current.VPNType) #В зависимости от типа VPN пишем на кнопке "Подключить pptp VPN" или "Подключить l2tp VPN", если у клиента нет VPN, то пишем "Здесь нет VPN"{"pptp" {$buttonПодключитьVPN.Enabled = $true$buttonПодключитьVPN.Text = "Подключить pptp VPN"}"l2tp" {$buttonПодключитьVPN.Enabled = $true$buttonПодключитьVPN.Text = "Подключить l2tp VPN"}DEFAULT{$buttonПодключитьVPN.Enabled = $false$buttonПодключитьVPN.Text = "Здесь нет VPN"}}switch ($Global:Current.DefaultGateway) #Смотрим в массиве, используется ли у клиента "Шлюз по-умолчанию" и заполняем соответствующий чекбокс{"FALSE"{ $checkboxШлюзПоумолчанию.Checked = $false }"Нет"{ $checkboxШлюзПоумолчанию.Checked = $false }"TRUE"{ $checkboxШлюзПоумолчанию.Checked = $true }"Да"{ $checkboxШлюзПоумолчанию.Checked = $true }DEFAULT{ $checkboxШлюзПоумолчанию.Checked = $false }}$VPNStatus = (ipconfig | Select-String $VPNname -Quiet) #Проверяем, не установлено ли уже это VPN соединение?If ($VPNStatus) #Если установлено, то разблокируем кнопку "Подключить RDP"{$buttonПодключитьRDP.Enabled = $true}else{$buttonПодключитьRDP.Enabled = $false}$richtextboxinfo.Clear() #Очищаем информационное поле # И заполняем информацией о клиенте из массива$richtextboxinfo.SelectionColor = 'Black'$richtextboxinfo.Text = "Клиент: " + $Global:Current.Name + [System.Environment]::NewLine + `"Имя VPN: " + $Global:Current.VPNname + [System.Environment]::NewLine + `"Тип VPN: " + $Global:Current.VPNType + [System.Environment]::NewLine + `"Адрес сервера: " + $Global:Current.ServerAddress + [System.Environment]::NewLine + `"Подсеть клиента: " + $Global:Current.RemoteNetwork + [System.Environment]::NewLine + `"Адрес сервера RDP: " + $Global:Current.RDPcomp + [System.Environment]::NewLine + [System.Environment]::NewLine + `"DefaultGateway: " + $Global:Current.DefaultGateway + [System.Environment]::NewLine + [System.Environment]::NewLine + `"Примечание: " + [System.Environment]::NewLine + $Global:Current.Inform + [System.Environment]::NewLine + `"Connection '" + $VPNname + "' status is " + $buttonПодключитьRDP.Enabled + [System.Environment]::NewLine$richtextboxinfo.AppendText($Global:Current.Link)$RDPServers = $Global:Current.RDPcomp.Split(';') -replace '\s', '' #Считываем и разбираем RDP серверы клиента из строки с разделителем в массив#Добавляем из в выпадающее поле выбора сервера$comboboxRDP.Items.Clear()$comboboxRDP.Text = $RDPServers[0]foreach ($RDPServer in $RDPServers){$comboboxRDP.Items.Add($RDPServer)}#Заполняем поля имени и пароля RDP по умолчанию из таблицы о клиенте (при желании, их можно поменять в окне программы)$textboxRdpPwd.Text = $Global:Current.RDPpass$textboxRdpLogin.Text = $Global:Current.RDPuser} # Форма заполнена, при смене выбранного клиента произойдет перезаполнение полей в соответствии с выбранным клиентом$buttonWindox_Click = {#Обработка нажатия кнопки WinboxIf ($Global:Current.PortWinbox -ne 0) #Если порт Winbox заполнен, то открываем скачанный ранее Winbox, подставляем туда имя и пароль к нему и запускаем{$runwinbox = "$env:temp\winbox64.exe"$ServerPort = $Global:Current.ServerAddress + ":" + $Global:Current.PortWinbox$ServerLogin = " """ + $Global:Current.WinboxLogin + """"$ServerPass = " """ + $Global:Current.WinboxPwd + """"$Arg = "$ServerPort $ServerLogin $ServerPass "Start-Process -filePath $runwinbox -ArgumentList $Arg}}$buttonПодключитьVPN_Click = {#Обработка нажатия кнопки ПодключитьVPN$VPNname = $Global:Current.VPNname + "-tmp" #Добавляем к имени VPN соединения "-tmp" для указания метки временного соединения, чтобы при выходе удалить только их$richtextboxinfo.Clear() #Очищаем информационное поля для вывода туда информации о процессе подключения$richtextboxinfo.Text = "Клиент: " + $Global:Current.Name + [System.Environment]::NewLineforeach ($item in get-vpnconnection | where { $_.ConnectionStatus -eq "Connected" }) #Разрываем все установленные соединения{$richtextboxinfo.Text = $richtextboxinfo.Text + "Обнаружено активное соединение " + $item.Name + " разрываем его" + [System.Environment]::NewLineRasdial $item.Name /disconnect}Remove-VpnConnection $VPNname -Force #Удаляем соединение, если ранее оно было создано$RemoteNetworks = $Global:Current.RemoteNetwork.Split(';') -replace '\s', '' #Считываем и разбираем по строкам в массив список подсетей клиента разделенный ;switch ($Global:Current.VPNType) #В зависимости от типа VPNа создаем pptp или l2tp соединение{"pptp" {$richtextboxinfo.Text = $richtextboxinfo.Text + "Создаем pptp подключение " + $VPNname + [System.Environment]::NewLineIf ($checkboxШлюзПоумолчанию.Checked -eq $false) #Если не используется "Шлюз по-умолчанию", то создаем VPN соединение без него и прописываем маршруты{$Errcon = (Add-VpnConnection -Name $VPNname -ServerAddress $Global:Current.ServerAddress -TunnelType $Global:Current.VPNType -SplitTunneling -Force -RememberCredential -PassThru) #Здесь происходит создание VPNforeach ($RemoteNetwork in $RemoteNetworks) #Добавляем все подсети клиента к этому VPN{$richtextboxinfo.AppendText('Добавляем маршрут к ' + $RemoteNetwork + [System.Environment]::NewLine)Add-VpnConnectionRoute -ConnectionName $VPNname -DestinationPrefix $RemoteNetwork -PassThru}}else #Если используется "Шлюз по-умолчанию", то создаем VPN соединение с ним и маршруты к клиенту не нужны{$Errcon = (Add-VpnConnection -Name $VPNname -ServerAddress $Global:Current.ServerAddress -TunnelType $Global:Current.VPNType -Force -RememberCredential -PassThru)}}"l2tp" {$richtextboxinfo.Text = $richtextboxinfo.Text + "Создаем l2tp подключение " + $Global:Current.VPNname + [System.Environment]::NewLineIf ($checkboxШлюзПоумолчанию.Checked -eq $false) #Если не используется "Шлюз по-умолчанию", то создаем VPN соединение без него и прописываем маршруты{$Errcon = (Add-VpnConnection -Name $VPNname -ServerAddress $Global:Current.ServerAddress -TunnelType $Global:Current.VPNType -L2tpPsk $Global:Current.l2tpPsk -SplitTunneling -Force -RememberCredential -PassThru) #Здесь происходит создание VPNforeach ($RemoteNetwork in $RemoteNetworks) #Добавляем все подсети клиента к этому VPN{$richtextboxinfo.AppendText('Добавляем маршрут к ' + $RemoteNetwork + [System.Environment]::NewLine)Add-VpnConnectionRoute -ConnectionName $VPNname -DestinationPrefix $RemoteNetwork -PassThru}}else #Если используется "Шлюз по-умолчанию", то создаем VPN соединение с ним и маршруты к клиенту не нужны{$Errcon = (Add-VpnConnection -Name $VPNname -ServerAddress $Global:Current.ServerAddress -TunnelType $Global:Current.VPNType -L2tpPsk $Global:Current.l2tpPsk -Force -RememberCredential -PassThru)}}}$richtextboxinfo.AppendText("Устанавливаем " + $Global:Current.VPNType + " подключение к " + $VPNname + [System.Environment]::NewLine)$Errcon = Rasdial $VPNname $Global:Current.VPNLogin $Global:Current.VPNPass #Устанавливаем созданное VPN подключение и выводим информацию в поле$richtextboxinfo.Text = $richtextboxinfo.Text + [System.Environment]::NewLine + $Errcon + [System.Environment]::NewLineIf ((ipconfig | Select-String $VPNname -Quiet)) #Проверяем успешность соединения и, если все удачно, разблокируем кнопку RDP  и кнопку "Отключить VPN"{$buttonПодключитьRDP.Enabled = $true$buttonОтключитьVPN.Visible = $true$buttonОтключитьVPN.Enabled = $true$statusbar1.Text = $Global:Current.Name + ' подключен'}}$formКлиентыАльбус_FormClosing = [System.Windows.Forms.FormClosingEventHandler]{#При закрытии формы подчищаем за собой. Разрываем и удаляем все созданные соединения. foreach ($item in get-vpnconnection | where { $_.ConnectionStatus -eq "Connected" }){$richtextboxinfo.Text = $richtextboxinfo.Text + "Обнаружено активное соединение " + $item.Name + " разрываем его" + [System.Environment]::NewLineRasdial $item.Name /disconnect}$richtextboxinfo.Text = $richtextboxinfo.Text + "Удаляем все временные соединения" + [System.Environment]::NewLineget-vpnconnection | where { $_.Name -match "tmp" } | Remove-VpnConnection -Force#Удаляем информацию о RPD-серверах из реестра$Global:Clients | ForEach-Object {$term = "TERMSRV/" + $_.RDPcompcmdkey /delete:$term}}$buttonПодключитьRDP_Click = {#Обработка кнопки ПодключитьRDP$RDPcomp = $comboboxRDP.Text$RDPuser = $textboxRDPLogin.Text$RDPpass = $textboxRdpPwd.Textcmdkey /generic:"TERMSRV/$RDPcomp" /user:"$RDPuser" /pass:"$RDPpass"mstsc /v:$RDPcomp}$buttonОтключитьVPN_Click = {#При отключении VPN подчищаем за собой и оповещаем о процессе в поле информацииforeach ($item in get-vpnconnection | where { $_.ConnectionStatus -eq "Connected" }){$richtextboxinfo.Text = $richtextboxinfo.Text + "Обнаружено активное соединение " + $item.Name + " разрываем его" + [System.Environment]::NewLineRasdial $item.Name /disconnect}$richtextboxinfo.Text = $richtextboxinfo.Text + "Удаляем все временные соединения" + [System.Environment]::NewLineget-vpnconnection | where { $_.Name -match "tmp" } | Remove-VpnConnection -Force$buttonОтключитьVPN.Visible = $false$buttonПодключитьRDP.Enabled = $false$statusbar1.Text = $Global:Current.Name + ' отключен'}$buttonPingAll_Click={#Пингуем всех клиентов и оповещаем о результатах$I=0$richtextboxinfo.Clear()$richtextboxinfo.SelectionColor = 'Black'$clientscount = $Global:Clients.count$Global:Clients | ForEach-Object {if ((test-connection -Count 1 -computer $_.ServerAddress -quiet) -eq $True){$richtextboxinfo.SelectionColor = 'Green'$richtextboxinfo.AppendText($_.Name +' ('+ $_.ServerAddress +') доступен' + [System.Environment]::NewLine)}else{$richtextboxinfo.SelectionColor = 'Red'$richtextboxinfo.AppendText($_.Name + ' (' + $_.ServerAddress + ')  недоступен (или закрыт ICMP)' + [System.Environment]::NewLine)}$richtextboxinfo.ScrollToCaret()$I = $I + 1Write-Progress -Activity "Ping in Progress" -Status "$i clients of $clientscount pinged" -PercentComplete ($i/$clientscount*100)}$richtextboxinfo.SelectionColor = 'Black'Write-Progress -Activity "Ping in Progress" -Status "Ready" -Completed}$buttonПеречитатьДанные_Click={#Перечитываем данные из таблицы Google$Global:Clients = Get-Clients ($Global:google_file)$listbox_clients.Items.Clear()$Global:Clients | ForEach-Object {[void]$listbox_clients.Items.Add($_.Name)}}$buttonВыход_Click = {#Выход$formКлиентыАльбус.Close()}$richtextboxinfo_LinkClicked=[System.Windows.Forms.LinkClickedEventHandler]{#Обработка нажатия на ссылку в окне информацииStart-Process $_.LinkText.ToString()}$buttonPing_Click={#Пингуем ip текущего клиента и выводим результат в поле информацииif ((test-connection -Count 1 -computer $Global:Current.ServerAddress -quiet) -eq $True){$richtextboxinfo.AppendText([System.Environment]::NewLine)$richtextboxinfo.SelectionColor = 'Green'$richtextboxinfo.AppendText($Global:Current.Name + ' (' + $Global:Current.ServerAddress + ') доступен' + [System.Environment]::NewLine)}else{$richtextboxinfo.AppendText([System.Environment]::NewLine)$richtextboxinfo.SelectionColor = 'Red'$richtextboxinfo.AppendText($Global:Current.Name + ' (' + $Global:Current.ServerAddress + ')  недоступен (или закрыт ICMP)' + [System.Environment]::NewLine)}}#----------------------------------------------#Описание объектов формы#----------------------------------------------## formКлиентыАльбус#$formКлиентыАльбус.Controls.Add($statusbar1)$formКлиентыАльбус.Controls.Add($groupboxTools)$formКлиентыАльбус.Controls.Add($groupboxRDP)$formКлиентыАльбус.Controls.Add($groupboxVPN)$formКлиентыАльбус.Controls.Add($richtextboxinfo)$formКлиентыАльбус.Controls.Add($listbox_clients)$formКлиентыАльбус.AutoScaleDimensions = '6, 13'$formКлиентыАльбус.AutoScaleMode = 'Font'$formКлиентыАльбус.AutoSize = $True$formКлиентыАльбус.ClientSize = '763, 446'$formКлиентыАльбус.FormBorderStyle = 'FixedSingle'$formКлиентыАльбус.MaximizeBox = $False$formКлиентыАльбус.Name = 'formКлиентыАльбус'$formКлиентыАльбус.SizeGripStyle = 'Hide'$formКлиентыАльбус.StartPosition = 'CenterScreen'$formКлиентыАльбус.Text = 'Клиенты Альбус'$formКлиентыАльбус.add_FormClosing($formКлиентыАльбус_FormClosing)$formКлиентыАльбус.add_Load($formКлиентыАльбус_Load)## statusbar1#$statusbar1.Location = '0, 424'$statusbar1.Name = 'statusbar1'$statusbar1.Size = '763, 22'$statusbar1.TabIndex = 17## groupboxTools#$groupboxTools.Controls.Add($buttonPing)$groupboxTools.Controls.Add($buttonВыход)$groupboxTools.Controls.Add($buttonWindox)$groupboxTools.Controls.Add($buttonПеречитатьДанные)$groupboxTools.Controls.Add($buttonPingAll)$groupboxTools.Location = '308, 258'$groupboxTools.Name = 'groupboxTools'$groupboxTools.Size = '147, 163'$groupboxTools.TabIndex = 10$groupboxTools.TabStop = $False$groupboxTools.Text = 'Tools'$groupboxTools.UseCompatibleTextRendering = $True## buttonPing#$buttonPing.Location = '7, 44'$buttonPing.Name = 'buttonPing'$buttonPing.Size = '133, 23'$buttonPing.TabIndex = 12$buttonPing.Text = 'Ping'$buttonPing.UseCompatibleTextRendering = $True$buttonPing.UseVisualStyleBackColor = $True$buttonPing.add_Click($buttonPing_Click)## buttonВыход#$buttonВыход.Location = '7, 125'$buttonВыход.Name = 'buttonВыход'$buttonВыход.Size = '133, 23'$buttonВыход.TabIndex = 15$buttonВыход.Text = 'Выход'$buttonВыход.UseCompatibleTextRendering = $True$buttonВыход.UseVisualStyleBackColor = $True$buttonВыход.add_Click($buttonВыход_Click)## buttonWindox#$buttonWindox.Enabled = $False$buttonWindox.Location = '7, 17'$buttonWindox.Name = 'buttonWindox'$buttonWindox.Size = '133, 23'$buttonWindox.TabIndex = 11$buttonWindox.Text = 'Windox'$buttonWindox.UseCompatibleTextRendering = $True$buttonWindox.UseVisualStyleBackColor = $True$buttonWindox.add_Click($buttonWindox_Click)## buttonПеречитатьДанные#$buttonПеречитатьДанные.Location = '7, 98'$buttonПеречитатьДанные.Name = 'buttonПеречитатьДанные'$buttonПеречитатьДанные.Size = '133, 23'$buttonПеречитатьДанные.TabIndex = 14$buttonПеречитатьДанные.Text = 'Перечитать данные'$buttonПеречитатьДанные.UseCompatibleTextRendering = $True$buttonПеречитатьДанные.UseVisualStyleBackColor = $True$buttonПеречитатьДанные.add_Click($buttonПеречитатьДанные_Click)## buttonPingAll#$buttonPingAll.Location = '7, 71'$buttonPingAll.Name = 'buttonPingAll'$buttonPingAll.Size = '133, 23'$buttonPingAll.TabIndex = 13$buttonPingAll.Text = 'Ping All'$buttonPingAll.UseCompatibleTextRendering = $True$buttonPingAll.UseVisualStyleBackColor = $True$buttonPingAll.add_Click($buttonPingAll_Click)## groupboxRDP#$groupboxRDP.Controls.Add($comboboxRDP)$groupboxRDP.Controls.Add($textboxRDPLogin)$groupboxRDP.Controls.Add($textboxRdpPwd)$groupboxRDP.Controls.Add($buttonПодключитьRDP)$groupboxRDP.Location = '308, 128'$groupboxRDP.Name = 'groupboxRDP'$groupboxRDP.Size = '147, 126'$groupboxRDP.TabIndex = 5$groupboxRDP.TabStop = $False$groupboxRDP.Text = 'RDP'$groupboxRDP.UseCompatibleTextRendering = $True## comboboxRDP#$comboboxRDP.FormattingEnabled = $True$comboboxRDP.Location = '7, 17'$comboboxRDP.Name = 'comboboxRDP'$comboboxRDP.Size = '133, 21'$comboboxRDP.TabIndex = 6$comboboxRDP.Text = 'IP RDP сервера'## textboxRDPLogin#$textboxRDPLogin.Location = '7, 44'$textboxRDPLogin.Name = 'textboxRDPLogin'$textboxRDPLogin.Size = '133, 20'$textboxRDPLogin.TabIndex = 7$textboxRDPLogin.Text = 'RDP-login'## textboxRdpPwd#$textboxRdpPwd.Location = '7, 69'$textboxRdpPwd.Name = 'textboxRdpPwd'$textboxRdpPwd.PasswordChar = '*'$textboxRdpPwd.Size = '133, 20'$textboxRdpPwd.TabIndex = 8$textboxRdpPwd.Text = 'RDP-Password'## buttonПодключитьRDP#$buttonПодключитьRDP.Enabled = $False$buttonПодключитьRDP.Location = '7, 94'$buttonПодключитьRDP.Name = 'buttonПодключитьRDP'$buttonПодключитьRDP.Size = '133, 20'$buttonПодключитьRDP.TabIndex = 9$buttonПодключитьRDP.Text = 'Подключить RDP'$buttonПодключитьRDP.UseCompatibleTextRendering = $True$buttonПодключитьRDP.UseVisualStyleBackColor = $True$buttonПодключитьRDP.add_Click($buttonПодключитьRDP_Click)## groupboxVPN#$groupboxVPN.Controls.Add($buttonПодключитьVPN)$groupboxVPN.Controls.Add($buttonОтключитьVPN)$groupboxVPN.Controls.Add($checkboxШлюзПоумолчанию)$groupboxVPN.Location = '308, 27'$groupboxVPN.Name = 'groupboxVPN'$groupboxVPN.Size = '147, 98'$groupboxVPN.TabIndex = 1$groupboxVPN.TabStop = $False$groupboxVPN.Text = 'VPN'$groupboxVPN.UseCompatibleTextRendering = $True## buttonПодключитьVPN#$buttonПодключитьVPN.Enabled = $False$buttonПодключитьVPN.Location = '7, 45'$buttonПодключитьVPN.Name = 'buttonПодключитьVPN'$buttonПодключитьVPN.Size = '133, 20'$buttonПодключитьVPN.TabIndex = 3$buttonПодключитьVPN.Text = 'Подключить VPN'$buttonПодключитьVPN.UseCompatibleTextRendering = $True$buttonПодключитьVPN.UseVisualStyleBackColor = $True$buttonПодключитьVPN.add_Click($buttonПодключитьVPN_Click)## buttonОтключитьVPN#$buttonОтключитьVPN.Enabled = $False$buttonОтключитьVPN.Location = '7, 67'$buttonОтключитьVPN.Name = 'buttonОтключитьVPN'$buttonОтключитьVPN.Size = '133, 20'$buttonОтключитьVPN.TabIndex = 4$buttonОтключитьVPN.Text = 'Отключить VPN'$buttonОтключитьVPN.UseCompatibleTextRendering = $True$buttonОтключитьVPN.UseVisualStyleBackColor = $True$buttonОтключитьVPN.Visible = $False$buttonОтключитьVPN.add_Click($buttonОтключитьVPN_Click)## checkboxШлюзПоумолчанию#$checkboxШлюзПоумолчанию.Location = '7, 19'$checkboxШлюзПоумолчанию.Name = 'checkboxШлюзПоумолчанию'$checkboxШлюзПоумолчанию.Size = '133, 24'$checkboxШлюзПоумолчанию.TabIndex = 2$checkboxШлюзПоумолчанию.Text = 'Шлюз по-умолчанию'$checkboxШлюзПоумолчанию.TextAlign = 'MiddleRight'$checkboxШлюзПоумолчанию.UseCompatibleTextRendering = $True$checkboxШлюзПоумолчанию.UseVisualStyleBackColor = $True## richtextboxinfo#$richtextboxinfo.Cursor = 'Default'$richtextboxinfo.ForeColor = 'WindowText'$richtextboxinfo.HideSelection = $False$richtextboxinfo.Location = '461, 27'$richtextboxinfo.Name = 'richtextboxinfo'$richtextboxinfo.ReadOnly = $True$richtextboxinfo.ScrollBars = 'ForcedVertical'$richtextboxinfo.ShowSelectionMargin = $True$richtextboxinfo.Size = '290, 394'$richtextboxinfo.TabIndex = 16$richtextboxinfo.Text = ''$richtextboxinfo.add_LinkClicked($richtextboxinfo_LinkClicked)## listbox_clients#$listbox_clients.FormattingEnabled = $True$listbox_clients.Location = '12, 27'$listbox_clients.Name = 'listbox_clients'$listbox_clients.Size = '290, 394'$listbox_clients.TabIndex = 0$listbox_clients.add_SelectedIndexChanged($listbox_clients_SelectedIndexChanged)#Save the initial state of the form$InitialFormWindowState = $formКлиентыАльбус.WindowState#Init the OnLoad event to correct the initial state of the form$formКлиентыАльбус.add_Load($Form_StateCorrection_Load)#Clean up the control events$formКлиентыАльбус.add_FormClosed($Form_Cleanup_FormClosed)#Store the control values when form is closing$formКлиентыАльбус.add_Closing($Form_StoreValues_Closing)#Show the Formreturn $formКлиентыАльбус.ShowDialog()}#Запуск приложения!Main ($CommandLine) 

Скрипт можно запускать как скрипт ps1 или скомпилировать в exe через ps2exe и использовать как полноценное приложение

Подробнее..

Даже не пытайтесь повторить это в GUI

19.05.2021 10:20:52 | Автор: admin


Есть такое понятие, как дружественный пользователю Linux. Возникло оно оно очень давно, возможно через несколько минут после того, как Линус Торвальдс анонсировал свою разработку в листе comp.os.minix. Трудно сказать принесла-ли пользу данная концепция и различные её воплощения на рабочей станции. Понятно одно, что прогресс на этом пути довольно-таки ощутимо не совпадает с ожиданиями этого самого пользователя.

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

Предлагаем рассмотреть несколько сценариев из реальной жизни, где хочешь не хочешь, все необходимо сделать в CLI. Таких примеров очень и очень много, это всего лишь пара кейсов в огромном множестве подобных.

Кейс 1 настройка пользовательского окружения


Большинство дистрибутивов Linux дают возможность графической установки ОС, которая для продвинутого пользователя Windows, или macOS не представляет из себя ничего сложного. Есть свидетельства в пользу того, что Ubuntu работает из коробки для пользователя, который впервые ставит Linux.

Однако дальше сразу возникает необходимость ручками внести правки в /etc/sudoers для того, чтобы пользователь имел права на исполнение sudo команд. Входить под учетной записью root в DE окружение не удастся, по умолчанию большинство Desktop Manager-ов отключают эту опцию. Придется вручную снимать эти ограничения в консольном режиме, вот и уловка 22. Остается visudo /etc/sudoers, или в крайнем случае vim /etc/sudoers из под супер пользователя.

Так выгладит моя правка файла.

|18:42:09|admin@srv:[~]> sudo diff /etc/sudoers /etc/sudoers.orig

85c85

< %wheel ALL=(ALL) NOPASSWD: ALL

---

> # %wheel ALL=(ALL) NOPASSWD: ALL


Нужно всего лишь отключить комментирование в соответствующей строке, после чего достаточно включить пользователя в группу wheel. Странно было бы это делать в графике, если можно запустить всего лишь gpasswd -a admin wheel из под пользователя root.

Но раз уж у нас есть права sudo надо уметь ими пользоваться. Самое первое для чего эти права понадобятся для установки и обновления программ. Можно конечно воспользоваться графическим фронтендом программ из репозитория, в конце концов даже Gentoo имеет GUI для своего portage. Однако ограниченность и второсортность этих средств настолько выпирают, что буквально подталкивают пользователя в сторону CLI.

Вы же не собираетесь вместо простого sudo aptitude update / sudo dnf update запускать графический фронтенд и беспомощно кататься вверх-вниз по списку пакетов. Если вы собираетесь оставаться на Linux всерьез и надолго, то необходимо освоить необходимый минимум консольных команд для вашего пакетного менеджера.

Чуть менее привычным делом является настройка шрифтов. Одной установкой шрифтов семейства Liberation, Noto, Dejavu и Droid дело не ограничивается. Нужно еще избавиться от использования древних шрифтов Microsoft из пакета corefonts. Проще всего их не ставить совсем, однако часто они проникают в систему, как зависимость для Wine, или других пакетов. В таком случае придется создать, или редактировать файл ~/.fonts.conf. Вот директива по избавлению от Arial.

<match target=pattern><test name=family qual=any><string>Arial</string></test><edit name=family binding=same mode=assign><string>Noto Sans</string></edit></match>

Хочу подчеркнуть, что проблема не в том, что используются шрифты Microsoft, а в том, что это очень старые версии их. Соответственно, на экране они выглядят не очень, мягко говоря. Только их и разрешено использовать в дистрибутивах Linux. Можно делать это в графическом редакторе, но файлы с точкой в начале имени придется хитрым способом открывать во встроенном файловом менеджере каждый раз, а это неудобно.

Кроме того, возможно придется шаманить с симлинками в /usr/share/fonts, или в /etc/fonts для того, чтобы избавиться от ШГ. Так что лучше сразу все делать в командной строке. На самом деле тут многие сходят с дистанции, стараясь как можно дольше делать все с помощью графических приложений, через какое-то время ломаются обновления, слетают драйвера и все катится в тартарары.

Этого нельзя допустить, поэтому сразу переходим к следующему этапу необходимости освоить консольный текстовый редактор: vim, emacs, или их клоны. Поверьте не стоит привязываться к простеньким nano, или mcedit, в которых даже undo еще не завезли. Освоив эти редакторы вы спокойно можете редактировать конфигурационные файлы в /etc, $HOME и получить надежный контроль над системой.

Кейс 2 настроить сетевое окружение в офисе


Сейчас с NetworkManager настраивать сети стало намного проще, а раньше для настройки беспроводного соединения обязательно нужно было редактировать файл wpa_supplicant.conf. Однако и сегодня функционал NetworkManager во многом пока еще ограничен. Например в нем нельзя подключиться к vpn по протоколу Juniper Pulse с двухфакторной аутентификацией только CLI.

|18:29:57|admin@srv:[~]> sudo openconnect --protocol=pulse \--authgroup ТOTP -u jsmith https://my.company-gateway.com

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

Берем важные подсети главной сети и прописываем их статистическим маршрутом.

sudo ip route add 110.10.0.0/8 via 110.10.10.1;

После чего подключаемся ко второстепенной сети и остальной трафик направляем через нее. Так как метрика главной сети меньше в абсолютном значении, у нее приоритет выше и при двух параллельных default route трафик все же упорно идет через нее. Так как поменять метрику маршрута нельзя, проще удалить ненужный default route.

sudo ip route delete default dev eth0;

Для одного раза достаточно запустить эти две команды, но каждый день так подключаться неудобно, надо это автоматизировать. Для этого нужно создать скрипт в папке /etc/NetworkManager/dispatcher.d/.

|17:43:17|admin@srv:[~]> ls /etc/NetworkManager/dispatcher.d/10-openrc-status no-wait.d pre-down.d pre-up.d|17:43:22|admin@srv:[~]> cd /etc/NetworkManager/dispatcher.d/pre-up.d|17:43:27|admin@srv:[~]> sudo chmod +x 10-office-netw.sh

Скрипты, которые следует выполнить перед активацией сетевого соединения должны находиться в pre-up.d. Соответственно, скрипты на случай отключения сетевого соединения следует класть в pre-down.d. Названия могут быть произвольные, если скриптов несколько, то они будут выполняться в алфавитном порядке.

#!/bin/bashif [ $1 == eth0 ] && [ $2 == up ]; thenip route add 110.10.0.0/8 via 110.10.10.1ip route delete default dev eth0#более высокая метрика, чтобы быть ниже основного gw в ip routeip route add default dev eth0 metric 700fi

Объективности ради надо сказать, что директивы ip route add можно реализовать из интерфейса NetworkManager в свойствах в закладке соединения IPv4 => Routes.

Кейс 3 поднять Wireguard VPN


Буквально каждый день мы получаем новые доказательство в пользу того, что неплохо бы обзавестись собственным VPN решением. Сегодня под запретом торренты, зарубежные букмекерские сайты, завтра решат ограничить социальные сети и онлайн-библиотеки, а затем и новостные ресурсы кому-то не понравятся. Благо технологии тоже не стоят на месте и при соответствующих навыках можно за 15 минут настроить Wireguard VPN и обходить все нелепые ограничения. Самое главное наличие Linux сервера с внешним, т е не российским IP адресом.

Вся настройка происходит исключительно с использование CLI и текстовых конфигурационных файлов. Это не полноценный гайд по настройке, так как весь процесс состоит из следующих этапов.

  1. Установить пакет утилит Wireguard.
    aptitude install wireguard-tools
  2. Установить kernel-headers для более ранних версий ядра.
    aptitude install linux-headers
  3. Открыть наружу связующий UDP порт (в нашем примере 51820) с управляющей консоли сервиса виртуального сервера.
  4. Создать открытый и закрытый ключи для Wireguard на клиенте и сервере.
    umask 077; wg genkey | tee privatekey | wg pubkey > publickey
  5. Создать конфигурационный файл в /etc/wireguard.
  6. Проверить наличие L2 соединения.
    wg show, если есть нечто вроде transfer: 4.80 MiB received, 1833.04 KiB sent, то это хороший признак.
  7. Подключить IP Forwarding с помощью sysctl -w net.ipv4.ip_forward=1 и прописать в /etc/sysctl.conf, если этого еще не было сделано.
  8. Настроить маршрутизацию трафика и NAT masquerade.

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

Конфигурационный файл VPN-сервера содержит собственный закрытый ключ и открытый ключ клиента. Обратное также верно, в конфигурационном файле VPN-клиента прописываем собственный закрытый ключ и открытый ключ сервера.

#client config[Interface]PrivateKey = uJPzgCQ6WNlAUp3s5rabE/EVt1qYh3Ym01sx6oJI0V4Address = 192.168.10.2/24[Peer]PublicKey = qdjdqh2pN3DEMDUDRob8K3bp9BZFJbT59fprBrl99zMAllowedIPs = 0.0.0.0/0Endpoint = 172.105.211.120:51820PersistentKeepalive = 20

Любая неточность в каждом из перечисленных пунктов, кроме проверки OSI L2 соединения приведет к сбою в работе VPN туннеля, но при необходимой сноровке все можно сделать быстро и точно.

#server conifg[Interface]Address = 192.168.10.1/24ListenPort = 51820PrivateKey = eEvqkSJVw/7cGUEcJXmeHiNFDLBGOz8GpScshecvNHUSaveConfig = true[Peer]PublicKey = 2H8vRWKCrddLf8vPwwTLMfZcRhOj10UBdc0j8W7yQAk=AllowedIPs = 192.168.10.2/32

В некоторых примерах AllowedIPs клиента бывает выставлен на внутренний туннельный IP адрес сервера непонятно зачем. Тогда только запросы на этот IP адрес и будут разрешены, если же выставить 0.0.0.0/0 то весь трафик пойдет через Wireguard VPN. Также Endpoint клиента обязательно должен указывать на внешний IP адрес сервера.

Остается настроить NAT masquerade для того, чтобы Wireguard сервер мог осуществлять маршрутизацию трафика в NAT среде.

#IPv4[root@wgsrv ~]$ iptables -A FORWARD -i wg0 -j ACCEPT[root@wgsrv ~]$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE#IPv6[root@wgsrv ~]$ ip6tables -A FORWARD -i wg0 -j ACCEPT[root@wgsrv ~]$ ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE#NAT[root@wgsrv ~]$ iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE

После чего надо сохранить правила в базе iptables, или netfilter. Также и сервис wg-quick, заведующий VPN туннелем Wireguard, необходимо добавить в автозагрузку.

[root@wgsrv ~]$ systemctl enable wg-quick@wg0[root@wgsrv ~]$ systemctl netfilter-persistent save[root@wgsrv ~]$ systemctl enable netfilter-persistent

Заключение


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



Облачные серверы от Маклауд быстрые и безопасные.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Подробнее..

Делаем OpenVPN клиент для iOS

10.06.2021 02:22:28 | Автор: admin
Привет всем!
Давайте рассмотрим как создать собственное приложение, поддерживающее OpenVPN-протокол. Для тех, кто об этом слышит впервые ссылки на обзорные материалы, помимо Википедии, приведены ниже.

С чего начать?


Начнем с фреймворка OpenVPNAdapter написан на Objective-C, ставится с помощью Pods, Carthage, SPM. Минимальная поддерживаемая версия ОС 9.0.
После установки необходимо будет добавить Network Extensions для таргета основного приложения, в данном случае нам понадобится пока Packet tunnel опция.

image

Network Extension


Затем добавляем новый таргет Network Extension.
Сгенерированный после этого класс PacketTunnelProvider приведем к следующему виду:

import NetworkExtensionimport OpenVPNAdapterextension NEPacketTunnelFlow: OpenVPNAdapterPacketFlow {}class PacketTunnelProvider: NEPacketTunnelProvider {    lazy var vpnAdapter: OpenVPNAdapter = {        let adapter = OpenVPNAdapter()        adapter.delegate = self        return adapter    }()    let vpnReachability = OpenVPNReachability()    var startHandler: ((Error?) -> Void)?    var stopHandler: (() -> Void)?    override func startTunnel(options: [String : NSObject]?, completionHandler: @escaping (Error?) -> Void) {        guard            let protocolConfiguration = protocolConfiguration as? NETunnelProviderProtocol,            let providerConfiguration = protocolConfiguration.providerConfiguration        else {            fatalError()        }        guard let ovpnContent = providerConfiguration["ovpn"] as? String else {            fatalError()        }        let configuration = OpenVPNConfiguration()        configuration.fileContent = ovpnContent.data(using: .utf8)        configuration.settings = [:]        configuration.tunPersist = true        let evaluation: OpenVPNConfigurationEvaluation        do {            evaluation = try vpnAdapter.apply(configuration: configuration)        } catch {            completionHandler(error)            return        }        if !evaluation.autologin {            guard let username: String = protocolConfiguration.username else {                fatalError()            }            guard let password: String = providerConfiguration["password"] as? String else {                fatalError()            }            let credentials = OpenVPNCredentials()            credentials.username = username            credentials.password = password            do {                try vpnAdapter.provide(credentials: credentials)            } catch {                completionHandler(error)                return            }        }        vpnReachability.startTracking { [weak self] status in            guard status == .reachableViaWiFi else { return }            self?.vpnAdapter.reconnect(afterTimeInterval: 5)        }        startHandler = completionHandler        vpnAdapter.connect(using: packetFlow)    }    override func stopTunnel(with reason: NEProviderStopReason, completionHandler: @escaping () -> Void) {        stopHandler = completionHandler        if vpnReachability.isTracking {            vpnReachability.stopTracking()        }        vpnAdapter.disconnect()    }}extension PacketTunnelProvider: OpenVPNAdapterDelegate {        func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, configureTunnelWithNetworkSettings networkSettings: NEPacketTunnelNetworkSettings?, completionHandler: @escaping (Error?) -> Void) {        networkSettings?.dnsSettings?.matchDomains = [""]        setTunnelNetworkSettings(networkSettings, completionHandler: completionHandler)    }    func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, handleEvent event: OpenVPNAdapterEvent, message: String?) {        switch event {        case .connected:            if reasserting {                reasserting = false            }            guard let startHandler = startHandler else { return }            startHandler(nil)            self.startHandler = nil        case .disconnected:            guard let stopHandler = stopHandler else { return }            if vpnReachability.isTracking {                vpnReachability.stopTracking()            }            stopHandler()            self.stopHandler = nil        case .reconnecting:            reasserting = true        default:            break        }    }    func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, handleError error: Error) {        guard let fatal = (error as NSError).userInfo[OpenVPNAdapterErrorFatalKey] as? Bool, fatal == true else {            return        }        if vpnReachability.isTracking {            vpnReachability.stopTracking()        }        if let startHandler = startHandler {            startHandler(error)            self.startHandler = nil        } else {            cancelTunnelWithError(error)        }    }    func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, handleLogMessage logMessage: String) {    }}


И снова код


Возвращаемся к основному приложению. Нам необходимо работать с NetworkExtension, предварительно импортировав его. Обращу внимание на классы NETunnelProviderManager, с помощью которого можно управлять VPN-соединением, и NETunnelProviderProtocol, задающий параметры новому соединению. Помимо передачи конфига OpenVPN, задаем возможность передать логин и пароль в случае необходимости.

var providerManager: NETunnelProviderManager!    override func viewDidLoad() {        super.viewDidLoad()        loadProviderManager {            self.configureVPN(serverAddress: "127.0.0.1", username: "", password: "")        }     }    func loadProviderManager(completion:@escaping () -> Void) {       NETunnelProviderManager.loadAllFromPreferences { (managers, error) in           if error == nil {               self.providerManager = managers?.first ?? NETunnelProviderManager()               completion()           }       }    }    func configureVPN(serverAddress: String, username: String, password: String) {      providerManager?.loadFromPreferences { error in         if error == nil {            let tunnelProtocol = NETunnelProviderProtocol()            tunnelProtocol.username = username            tunnelProtocol.serverAddress = serverAddress            tunnelProtocol.providerBundleIdentifier = "com.myBundle.myApp"             tunnelProtocol.providerConfiguration = ["ovpn": configData, "username": username, "password": password]            tunnelProtocol.disconnectOnSleep = false            self.providerManager.protocolConfiguration = tunnelProtocol            self.providerManager.localizedDescription = "Light VPN"            self.providerManager.isEnabled = true            self.providerManager.saveToPreferences(completionHandler: { (error) in                  if error == nil  {                     self.providerManager.loadFromPreferences(completionHandler: { (error) in                         do {                           try self.providerManager.connection.startVPNTunnel()                         } catch let error {                             print(error.localizedDescription)                         }                                                                   })                  }            })          }       }    }


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

image

Добавим возможность выключения VPN-соединения.

do {            try providerManager?.connection.stopVPNTunnel()            completion()        } catch let error {            print(error.localizedDescription)        }


Можно также отключать соединение с помощью метода removeFromPreferences(completionHandler:), но это слишком радикально и предназначено для окончательного и бесповоротного сноса загруженных данных о соединении:)

Проверять статус подключения Вашего VPN в приложении можно с помощью статусов.

if providerManager.connection.status == .connected {      defaults.set(true, forKey: "serverIsOn")}


Всего этих статусов 6.

@available(iOS 8.0, *)public enum NEVPNStatus : Int {    /** @const NEVPNStatusInvalid The VPN is not configured. */    case invalid = 0    /** @const NEVPNStatusDisconnected The VPN is disconnected. */    case disconnected = 1    /** @const NEVPNStatusConnecting The VPN is connecting. */    case connecting = 2    /** @const NEVPNStatusConnected The VPN is connected. */    case connected = 3    /** @const NEVPNStatusReasserting The VPN is reconnecting following loss of underlying network connectivity. */    case reasserting = 4    /** @const NEVPNStatusDisconnecting The VPN is disconnecting. */    case disconnecting = 5}


Данный код позволяет собрать приложение с минимальным требуемым функционалом. Сами конфиги OpenVPN-а лучше все же хранить в отдельном файле, обращаться к которому можно будет для чтения.

Полезные ссылки:
OpenVPNAdapter
Habr
Конфиги для теста
Подробнее..
Категории: Разработка под ios , Vpn , Swift , Ios , Openvpn

Цензура в интернете. Когда базовых мер недостаточно I2P

28.02.2021 12:13:00 | Автор: admin

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

Жаркий август 2020 показал, что базовые меры это слишком мало и неэффективно. Нужно что-то большее

Выбирая решение, я ставил перед собой несколько целей:

  1. Решение должно быть открытым

  2. Решение должно быть бесплатным только так оно может стать массовым

  3. Решение должно быть децентрализованным не должно быть единой точки отказа

  4. Бомж-VPN. Хотелось иметь возможность соединиться с любым узлом сети забесплатно

  5. Бомж-хостинг. Следствие предыдущего пункта. Возможность выкатить тестовый ресурс забесплатно

VPN отвалился сразу: даже рабочий VPN умер. VPN требует централизованного внешнего сервера единая точка отказа. Наконец, VPN платный не назвал бы лично себя нищебродом, но это точно не массовый вариант

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

Я начал осваивать I2P. Идея мне показалась симпатичной. Особенно интересно, что сеть не просто выдержит резкий рост числа пользователей она от этого станет работать лишь надёжнее (но это не точно). На луркеочень вдохновляющее описание возможностей, а wikiспускает с небес на Землю и даёт понять, что I2P не серебряная пуля, и атаки по деанонимизации реальность. Сложно и дорого, но реально. Для сравнения, без I2P это как по паспорту представиться и приготовиться к обыску

Возможности, ограничения и болячки

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

I2P не ограничивает себя каким-то протоколом. Вместо этого сеть предоставляет среду передачи данных. Я пробрасывал через сеть I2P соединение с базой данных. Туннели I2P позволяют пробросить любой ресурс, таким образом сделав его доступным для использования любыми программами. Если кто-то не знаком с туннелями идея проста и состоит в том, чтобы для некоторого открытого порта на удалённом сервере открыть порт на своей машине, и в дальнейшем любой локальной программой подключаться к локальному порту, что точно умеет любая программа, а тонкостями переноса байтов на тот порт удалённой машины и обратно занимается уже туннелирующая программа (частный случай туннеля).

Следствия туннелей бомж-VPN и бомж-хостинг. Я счастлив я могу выкатить ресурс бесплатно. Я могу соединить 2 машины бесплатно. Любой другой участник сети может сделать всё то же самое бесплатно. Вкусно

Функционировать сеть сможет, даже если шаловливые ручки вновь потянутся к Большому Рубильнику белорусские реалии именно такие, онсуществует

Больным местом является изменение маршрутов (следовательно, dest hash). Но я надеюсь, что проблема решаема существует версия для Android, которая подразумевает переход между сетью оператора и разными точками доступа wifi, а в настройках роутера появился экспериментальный Laptop Mode

Ошибки и заблуждения

Я заметил несколько шаблонов заблуждений

Ой, мне по телевизору сказали, что в этом вашем i2p такое показывают! Это вообще законно?

Больше верьте слухам. Ничего там нет такого, чего нет в обычном интернете. I2P ставит своей целью среду передачи данных. Протоколы TCP и UDP, передают более чем 99% информации в интернете, включая незаконный контент. Давайте бороться с контентом, а не транспортом его доставки

Как интернет отключат обязательно установлю

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

Хорошо, я установил, запустил, что-то потыкал и выключил. Как только интернет выключат ух держите меня семеро! Включу I2P и всё у меня станет расчудесно!

Та же проблема. С высокой вероятностью, тебе не удастся найти вообще никого из тех, с кем ты ранее устанавливал соединение. Запусти I2P как службу пусть висит себе в фоне. Она есть не просит (ну кроме памяти). Только так ты встретишь час Ч в готовности

Я на минуточку. Туда и назад

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

Ну и совсем кошерная остановка службы I2P это в консоли роутера нажать кнопочку Shutdown / Выключить. Демон I2P остановися сам в худшем случае через 10 минут как только истекут уже установленные соединения с другими участниками сети i2p

Кнопки Restart / Перезапуск и Shutdown / Выключить находятся на скриншоте в нижнем правом углуКнопки Restart / Перезапуск и Shutdown / Выключить находятся на скриншоте в нижнем правом углу

Установка на desktop

Состоит из двух обязательных частей установки шлюза (inproxy) и настройки браузера (лайт или пожёстче выбираем сами на свой вкус). Важно выполнить оба этапа, по отдельности они не имеют смысла

Установка шлюза

Наоффициальном сайте проекта есть список загрузок можно взять оттуда

В этом же списке присутствует секция Пакеты для Debian/Ubuntu

После установки пытаемся открытьhttp://localhost:7657/ web-консоль роутера. Настоятельно рекомендую добавить страницу в закладки или даже закрепить (Pin Tab). Если страница открылась вы всё сделали правильно

Настройка браузера. Лайт

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

В данном случае нас не пугают утечки информации. Например, сайт в сети i2p может запрашивать какой-нибудь jquery с CDN. Что такого в js-библиотеке, которую запрашивают миллионы, если не миллиарды раз в день?

Мы предполагаем, что не делаем ничего плохого, и нас не интересует сайт-приманка товарища майора Василия Мусорова с какой-то жестью, который загружает ресурсы напрямую в обход I2P или TOR по абсолютным ссылкам, выдавая ваш реальный IP-адрес. Оригинал изображения искать где-то тут: http://vasya-lozhkin.ru/pictures/. Я не нашёл =(Мы предполагаем, что не делаем ничего плохого, и нас не интересует сайт-приманка товарища майора Василия Мусорова с какой-то жестью, который загружает ресурсы напрямую в обход I2P или TOR по абсолютным ссылкам, выдавая ваш реальный IP-адрес. Оригинал изображения искать где-то тут: http://vasya-lozhkin.ru/pictures/. Я не нашёл =(

Для настройки нам потребуется дополнениеSmartProxy. Настройка производится в 2 простых шага необходимо добавить входной шлюз I2P в список proxy-серверов и создать правило проксирования

Добавляем входной шлюз I2P в список proxy-серверовДобавляем входной шлюз I2P в список proxy-серверовСоздаём правила проксирования для i2p-сайтовСоздаём правила проксирования для i2p-сайтов

Настройка браузера. Для любителей пожёстче

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

У меня нет лишнего браузера в системе, чтобы полностью выделить его под I2P. Воспользуюсь уже установленным firefox. Следующий вариант работает в Linux:

FIREFOX_PROFILE="firefox-i2p"FIREFOX_HOME="${HOME}/${FIREFOX_PROFILE}"mkdir -p "$FIREFOX_HOME"env HOME="$FIREFOX_HOME" firefox

То есть идея проста: заставить firefox работать с полностью чистым профилем, который никак не повлияет на основной, и который мы сможем снести при первых же намёках на проблемы, как дедушке яичко. Какие бы мы туда дополнения ни ставили, какие бы настройки там не делали основным профилем можно будет продолжать пользоваться

У меня нет ни одной машины с Windows и MacOS. В комментариях, пожалуйста, расскажите, как сделать похожий финт ушами в Windows. А в MacOS этот фокус должен сработать, но я не тестировал

Открываем настройки и находим Network Settings / Настройки СетиОткрываем настройки и находим Network Settings / Настройки СетиИ указываем входной шлюз I2PИ указываем входной шлюз I2P

Установка на Android

Суть ровно та же, но инструменты немного другие

Установка шлюза

На всё той жестранице загрузок есть секция Android

Секция загрузок для AndroidСекция загрузок для Android

Настройка браузера. Лайт

Находим в менеджере дополнений FoxyProxy и устанавливаемНаходим в менеджере дополнений FoxyProxy и устанавливаемПереходим в его настройки, нажимаем ДобавитьПереходим в его настройки, нажимаем ДобавитьУказываем адрес шлюза, листаем вниз и жмём СохранитьУказываем адрес шлюза, листаем вниз и жмём СохранитьИ добавляем шаблон для всего домена i2pИ добавляем шаблон для всего домена i2pВ настройках FoxyProxy убеждаемся, что он включенВ настройках FoxyProxy убеждаемся, что он включен

Рецепты по настройке

Я расскажу про несколько опциональных шагов

DNS-over-HTTPS

Для тех, что не читалпредыдущую статью: необходимо добавитьi2p иonion в исключения. Иначе браузер будет пытаться резолвить эти домены на Cloudflare с предсказуемым результатом

I2P + uBlock Origin

Мы умеем учиться на ошибках, поэтому добавим в исключения зоны i2p и onion, таким образом полностью отключив блокировщик рекламы для всех ресурсов i2p и onion

Открываем настройки uBlock OriginОткрываем настройки uBlock OriginДобавляем в uBlock Origin исключения для доменов i2p и onionДобавляем в uBlock Origin исключения для доменов i2p и onion

Стало лучше, чем было, но не идеально теряется контроль над загрузкой стороннего контента (3rd party). Хотелось бы только отключить резолв имён i2p и onion

Дополнительные подписки

В список подписок есть смысл добавить адреса:

  1. http://identiguy.i2p/hosts.txt

  2. http://inr.i2p/export/alive-hosts.txt

  3. http://stats.i2p/cgi-bin/newhosts.txt

Покорми java памятью

Входной шлюз I2P написан на языке java. По умолчанию он стартует с ограничением в 128M. Этого хватит для знакомства и неспешного погружения в дивный новый мир невидимого интернета. Больше всего памяти потребляет компонент NetDB база данных о других хостах сети I2P. Чем их больше известно, тем выше надёжность и тем выше вероятность, что в час Ч, когда интернет снова сдохнет, Вам таки удастся найти лазейку доступный хост из списка известных. Правда, гарантий никаких

В случае Ubuntu/Debian:

sudo dpkg-reconfigure i2p

Как это сделать для Windows я не знаю и очень надеюсь на комментарии

Когда нельзя открыть порт меньше 1024, но очень хочется, то можно

Очень спорный рецепт. В общем случае, так делать не надо. Но если очень хочется, то можно. Я проделал это для прощупывания возможностей I2P. То есть just for fun

Приключения начались с вопроса так где же java?

which java | xargs file --mime-type/usr/bin/java: inode/symlink

Окей

which java | xargs readlink | xargs file --mime-type/etc/alternatives/java: inode/symlink

Больше симлинков богу симлинков!

which java | xargs readlink | xargs readlink | xargs file --mime-type/usr/lib/jvm/java-11-openjdk-amd64/bin/java: application/x-pie-executable

Следует понимать, что конфигурация у меня может не совпадать с конфигурацией у Вас. Идея проста добавлять в середину секцию xargs readlink до наступления просветления пока file не скажет application/x-pie-executable. Как только java нашлась из получившейся команды удаляем 2 последних слова file --mime-type, например, нажав ^W дважды, и вместо этого добавляем setcap 'cap_net_bind_service=+ep':

which java | xargs readlink | xargs readlink | xargs setcap 'cap_net_bind_service=+ep'

Возможно, потребуется добавить также возможность открытия сырого сокета setcap 'cap_net_raw=+ep':

which java | xargs readlink | xargs readlink | xargs setcap 'cap_net_raw=+ep'

Но в следующий раз я просто разверну docker с nginx

А что ещё там есть?

Очень рекомендую почитатьрусскоязычную wiki и полистать спискиidentiguy

Внезапно web-версия telegram. Правда, я понятия не имею, знает ли про это зеркало администрация telegram. Впрочем, через выходную ноду можно достучатсья и до оригиналаВнезапно web-версия telegram. Правда, я понятия не имею, знает ли про это зеркало администрация telegram. Впрочем, через выходную ноду можно достучатсья и до оригинала

А ещё естьтелеграмовские MTProto прокси. Идея сводится к созданию туннелей на указанные i2p-хосты. Инструкция на сайте

Ещё есть торренты и почта. Ничего из этого я ещё не пробовал использовать

Находилфлибусту иebooks.i2p последний выглядит вообще дорого-богато

Вместо заключения

Следует понимать, что I2P не самостоятельный ресурс, а в первую очередь фидер среда передачи данных. Поэтому область применимости технологии достаточно широка и упирается, скорее, в воображение

Я ни слова не сказал проi2pd. Проект достоин внимания: он производительнее и при меньшем потреблении ресурсов. Пока что у меня нет экспертизы

Подробнее..

Перевод Делаем своими руками KVM Over IP при помощи Raspberry Pi

09.03.2021 00:06:18 | Автор: admin

На Хабре вряд ли стоит рассказывать о программах удаленного доступа к ПК, вроде TeamViewer. Но все это работает лишь в среде операционной системы. А вот доступа к BIOS, возможности установки, переустановки и прочих операций с операционной системой нет. Для всего этого есть иные решения. Одно из самых доступных KVM Over IP.

Конечно, если покупать брендовую систему, то получится дорого. Но есть иное решение создание собственной системы на основе малинки. Это решение предложил разработчик Максим Деваев (Maxim Devaev). Он собирается начать продавать эту систему по $130. Но собрать все это можно и самостоятельно главное запастись собственными компонентами. Под катом описание того, как это сделать.


Прототип Pi-KVM без корпуса

Необходимые компоненты


  • Raspberry Pi 4 или Raspberry Pi Zero
  • Карточка памяти microSD с объемом памяти 16 ГБ.
  • Переходник HDMI-to-CSI.
  • Сплиттер USB female to dual male Type-A.
  • Кабель
  • USB C to Type-A
  • Источник питания 5В, 3А с портом USB Type-A.

Настройка SD-карты для Raspberry Pi KVM Over IP


Все, что нужно для настройки можно загрузить из сети в виде образа диска и записать потом этот образ на карточку. Сделать это можно при помощи Raspberry Pi или balenaEtcher (есть и другие варианты).

  1. Загрузить образ диска Pi-KVM. Вот ссылка. На исходном ресурсе есть несколько версий образов для разных версий Pi. Кроме того, выбирать нужно исходя из того, что вы используете HDMI-to-CSI или HDMI-to-USB.

  2. Распаковываем образ.
  3. Запускаем Raspberry Pi Imager.
  4. Теперь нужно выбрать опцию Choose OS Use Custom и, соответственно, использовать образ. Еще требуется определить SD карту при помощи не самой сложной опции Choose SD Card.
  5. Write прошиваем.


Собираем и настраиваем Raspberry Pi for KVM Over IP


Теперь можно приступить к сборке железа. Здесь тоже все просто.


  1. Соединяем CSI шлейф нашего HDMI-to-CSI-2 бриджа с портом камеры малинки. Чтобы убедиться, что все правильно подключено, лучше посмотреть на фото. Если вы используете HDMI-to-USB, то просто подключите коннектор к разъему USB. Ну или в случае Pi Zero подключаем microUSB к USB Type-A.
  2. Нужно заизолировать 5В пин на коннекторе USB Type-A сплиттера. Проще всего сделать это при помощи тонкого изолирующего материала. Можно просто убрать и контакты, которые ведут к этим пинам, но все же безопаснее и проще просто заизолировать коннектор. Если этого не сделать, то USB порт компьютера может быть поврежден.
  3. Подключаем кабель USB C-to-A к Type-A

  4. Подключаем кабель USB-C к порту USB-C малинки.
  5. Подключаем коннектор Type-A к питанию.

  6. Подключаем USB Type-A коннектор и HDMI ПК, которым нужно управлять.

  7. Наконец, вставляем карту памяти и включаем малинку.

Настройка ПО Pi-KVM


Теперь мы можем начать работу с Pi-KVM. Первая загрузка будет довольно продолжительной, так что придется подождать. Но в итоге все запустится, после чего можно начать настройку.
1. Определяем IP малинки. Собственно, вряд ли на Хабре нужно рассказывать, как это сделать, но на всякий случай сделать это можно при помощи роутера, в панели которого отображаются IP всех подключенных девайсов.

Кроме того, можно запустить командную строку Windows и выполнить команду arp -a. После этого вы увидите все адреса устройств, подключенных к локальной сети. Любой девайс, адрес которого начинается с b8:27:eb: или dc:a6:32: и является Raspberry Pi.


2. Вводим IP в браузере клиентского ПК, после чего открывается страничка входа.

3. Дефолтные значения входа admin и admin.


4. Кликаем по иконке KVM.


Теперь должен загрузится экран, как показано на скриншоте ниже. Он предоставляет доступ к удаленному ПК при помощи меню. Можно получить и больше меню, чем указано на картинке, вот ссылка, где рассказывается, как это сделать.


Чем больше объем вашей SD-карты, тем больше образов ISO можно загрузить и использовать в дальнейшем, расширяя функциональность системы.


Если все правильно подключено и настроено, инструменты управления уже должны быть доступны.


Для расширения функциональности системы, например, использования дополнительных дисплеев, можно использовать подключение HDMI 4.


А вот прототип нашей системы без корпуса и 4-х портовый KVM switch.

Обновление Pi-KVM до последней версии


Pi-KVM часто получает обновления, поэтому постарайтесь держать актуальную версию. Для обновления нужно:

  1. Выбираем иконку консоли в главном меню Pi-KVM, после чего запускается консоль.
  2. Вводим su и получаем суперпользователя. Пароль root
  3. Вводим rw и открываем систему для записи.

  4. Обновляемся при последовательном вводе команд pacman -Syu и Y.



Удаленное управление


Лучше всего использовать такой инструмент, как Tailscale. Он удобен, бесплатен для обычных пользователей, плюс с его помощью можно без труда развернуть небольшую VPN-сеть.

  1. Заводим учетку в Tailscale, выбирая бесплатный тариф Solo Plan для частного использования.
  2. Нажимаем на иконку консоли в главном меню Pi-KVM

  3. Становимся супер-пользователем при помощи su и пароля root
  4. Открываем систему для записи.

  5. Вводим команду pacman -S tailscale-pikvm для запуска VPN-сервиса на нашей системе.
  6. Вводим reboot для перезагрузки.
  7. После этого нужно снова получить доступ к системе, повторяем шаги 1-4.
  8. Вводим systemctl enable --now tailscaled для активации сервиса.
  9. Инициализируем начало работы, вводя tailscale up.

  10. Авторизуем все.

  11. Если все прошло хорошо, то вы увидите сообщение Success в консоли.
  12. Заходим вот по этой ссылке для того, чтобы увидеть IP, назначенный нашему VPN.

Сторона клиента


Теперь настроим tailscale на клиенте. Tailscale поддерживает большинство операционных систем, включая windows, mac и linux.

  1. Загружаем версию для своей ОС по этой ссылке.
  2. Переходим по этой ссылке для отображения IP VPN.

  3. Вводим IP в строку браузера, что позволяет подключиться к PI-KVM.


В целом, это и все. Благодаря этой инструкции получаем недорогой, быстрый и простой в использовании KVM over IP сервис. Если нужны дополнительные подробности, то они доступны по этой ссылке.

Подробнее..

Как проверить децентрализацию?

15.04.2021 10:21:55 | Автор: admin

Итак, спасибо всем за вопросы и интерес проявленный к NewNode.

Приложение для доступа к децентрализованной сети не пока имеет никаких настроек и работает автоматически: если нет доступа к сайтам традиционными способами, NewNode ищет альтернативный маршрут передачи данных, обходя помехи и блокировки.

Нам нужна ваша помощь, что бы сделать NewNode еще лучше.

Мы столкнулись с тем, что у всех оно работает по разному: где-то все работает, где-то нет это особенность растущей децентрализованной сети.

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

Спасибо!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru