Как стать автором
Обновить

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

А почему не использовать брокер для межпроцессового взаимодействия RabbitMQ например? Библиотеки есть под множество языков, формат сообщений — бинарный (см AMQP), маршруты сообщений, приоритеты и прочие прелести в наличии.
Можно. А публичные серверы с белыми IP есть?
Что-то я не пойму… xmpp — это уровень приложений, а на сетевом-то уровне машины как связаны? учитывая, что «способ связи компьютеров не должен базироваться на TCP\IP, UDP» — если не айпи, то что?
На сетевом — хоть через Modbus. Вопрос не в этом. Как обеспечить связь компьютеров находящихся чёрт знает где.
Ну, чтобы отправить сообщение по XMPP, компьютеры уже должны быть соединены, разве нет? Если они уже подключены к интернету, то они уже соединены, хотя бы опосредовано через сервер.

В статье озвучивается задача — «Есть несколько компьютеров, которые необходимо соединить в одну сеть». Данная задача не решается, вместо этого предполагается, что компьютеры уже подключены к интернету и мы шлём сообщения на джаббер-сервер. Технически это ничем не отличается от посылания tcp пакета с произвольными данными на сервер, т.е. тут не совсем понятно, как выполняется условие «способ связи компьютеров не должен базироваться на TCP\IP, UDP»…
Вот этого опосредованного сервера — нет!!!
И не будет!!!
А выезжать из дома, ради того, чтобы тупо сбросить контроллер — конечно можно, но совершенно не хочется. Особенно в 2 часа ночи.
И каким образом XMPP решает проблему отсутствия сервера? В статье про это не сказано (либо я не нашёл)

Предполагается использовать в продакшн публичный сервер типа jabber.ru?
По исходному коду — именно это и следует.
Я думал, это для примера… т.е. для предприятия приемлемо, что публичный бесплатный сервер периодически отключается, а сообщения на корпоративный компьютер может отправлять любой произвольный пользователь jabber.ru (если он узнает jid)?
даже не jabber.ru, а вообще любого XMPP сервера в интернете

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

Информация тупо в ответ на «Хелло, Ворлд!» — от бота не пойдёт!
Ну, идея не в том, чтобы послать «Хелло, Ворлд!». В скрипте имеются минимум два вектора атаки:
1. Переполнение буфера
2. ДДоС
Ну и ладно. В цикле отдельного процесса перезапускаем бот, который будет принудительно завершаться при любой ошибке. Заваливание бота — не критично. Это дополнительная возможность («третья рука»). И я сильно сомневаюсь, что сервер пропустит диких размеров сообщение.
Опять же — python — интерпретатор, и проконтролировать длину сообщения едва ли что-то помешает.
1) Если отключится один сервер — ничто не мешает подключить автоматически другой. Или сообщения присылать сразу по трём серверам. Программно организовать — это меньше всего проблема.
2) Произвольный пользователь — может слать всё что угодно. Бот всё-равно не воспримет, так как произвольный пользователь не будет знать формат сообщения, и вообще сами сообщения отправляются только тем, кому надо, а на приём — jid не совпадает, да ещё пароль на саму команду в сообщении нужно указать. попробуйте реализовать? ;)
В целом — при использовании такого подхода возникает ряд проблем, которые в стандартых схемах давно решены.

Я не имел в виду, что произвольный пользователь сразу получает возможность управлять корпоративный компом. Просто чтобы проанализировать команду и пароль, скрипт уже должен принять сообщение, таким образом открывается дополнительный вектор атаки. В этом смысле любая VPN всё же на порядок безопасней, т.к. даже полное заДДоСивание смотрящего наружу VPN-сервера не приведёт к отказу компьютеров внутри сети…

Безусловно заДДОСить таким образом можно, именно поэтому я даже не рассматриваю вариант расположения бота на том же компьютере, что и АРМ (это вообще будет швах).
Предлагаемый вариант — как раз сводится к тому, что есть развязка между критической частью, и не критической. Флуд можно устроить и на VPN-сервере через ICMP. VPN точно так же пользуется механизмами TCP/IP/UDP, и зачастую преодолеть NAT, когда и пароля от роутера нет — кругом засада.

Вот в этом проблема — стндартные средства — или стоят денег, а начальство на такие вещи смотрит криво, да и, думаю, не против устроить структуру «РегионБаблоПопил». Соответственно — дешёвые решения начальство не устроят. ;)

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

И не нужно забывать, про такую вещь, как квитирование, например номер сообщения. Атакующий должен будет его передать. Или ответную часть от сгенерированного ботом проверочного кода. Подобрать нужную последовательность не реально.
Компьютеры вовсе не обязаны быть соединены через TCP\IP. По крайней мере, на заводе с площадью с полтора десятка гектар — это не элементарное решение.
Если компьютер не подключен к сети через айпи, как до него дойдёт XMPP сообщение из интернета?
Здесь уже написал. Сеть, TCP\IP — не ограничивается. Ещё есть Modbus, да и если я имею возможность напрямую обращаться к COM\LPT — я могу реализовать и свой проткол (от АРМа оператора, до своего компьютера). По хорошему — так и надо сделать, иначе чревато атаками, ддосами и т. д.
Не холивара ради, а в ответ на «В промышленных целях крайней не рекомендуется использовать операционные системы семейства Windows», я бы написал, что «в промышленных целях крайне не рекомендуется использование всякого рода подобных прослоек». Максимум на что подобная система может сгодиться, это оповещение о событиях, не требующих оперативного реагирования.
Речь не идёт об отдаче команды аварийного/экстренного останова, например. Хотя и такую возможность предусмотреть стоит. Но, например, отдать команду поднять/понизить производительность по всему цеху — почему нет.
Например, VPN. В указанном случае неудобно то, что придётся перелопатить прошивку промышленного компьютера, или вмешаться в логику работы АРМа.
Эмм, зачем? Автор не слышал о VPN-шлюзах? Ставим на каждой площадке маленькое vpn-устройство, в условном «центре» — побольше, получаем единую L3-сеть (при желании хоть L2). Нет, мы придумаем свой велосипед с квадратными колесами и специальную дорожку для него, ага.
)))) VPN-устройство — ключевое слово. Где его ставить? Где нельзя? Его видимо придётся купить? А устройство сертифицировано для промышленного применения? А VPN-сервер бесплатно и пожизненно к нему идёт?
Ок, твое решение сертифицировано, как я понял? И написал ты его забесплатно и поддерживать будешь бесплатно пожизненно?
Моё решение не вмешивается во внутреннюю логику работы АРМа и контроллеров, а отдача команд узаконенными способами — не наказуемо.
Решение, главным образом — для меня, а не для дяди.
В конечном итоге, не вижу ничего зазорного в том, чтобы дяд заплатил за обслуживание, если ему понравится. почему нет?
Мое решение тоже никуда не вмешивается. И является стандартом.
У тебя наколенный колхоз с задействованием чужих публичных серверов.
Теперь пойди и спроси владельцев бизнеса, какой вариант они хотели бы применять.
Владельцы бизнеса хотят вообще не вкладывать ни копейки в оборудование, софт и зарплаты. И хотят извлекать прибыль. (Спрашивать не буду, я вижу ответ по текущей ситуации).
(Собственно, владелец на предприятии появляется раз в пятилетку, ему некогда он бабло осваивает).
Ты просто не умеешь правильно преподнести задачу и методы ее решения. Потому так и будешь фигачить шаткие поделия за одну зарплату, пока не поменяешь свой подход к этим вопросам.
Не вижу чего-то такого, чтобы не преодолеть эту шаткость. Я в тексте указал, что если решение плохое — была плохая постановка вопроса. Чтобы доказать, что постановка вопроса, не такая уж и плохая, я запускаю бота на сутки, jid не меняю. Просто подберите пароль. ;)
Что касается вообще моего образования — я не программист, и лезть в такие сферы по большому счёту — мне никак не можно. Поэтому, логичное продолжение — надо мне закруглиться обсуждать эту тему. В любом случае, мне интересны дельные предложения.
апускаю бота на сутки
Да хоть на год. Кроме смеха все равно ничего не вызывает.
Понятно. Ну, хоть посмейтесь.
Какая-то феерическая херня. Я так и не понял, что мешает использовать уже сделанное ранее, например ipsec? Для обеспечения времени доставки (оперативности) существует rrtp… Есть куча разных rpc от сана до майкрософта, есть сотни разных технологий обеспечения быстрой передачи данных даже по tcp.

К чему весь этот кошмар?
В обосновании, вроде кое-какие соображения дал. Написать отдельный развёрнутый топик, почему инженер АСУТП будет ходить битый, если весь завод зарплаты не получит?
Не дали. Вообще, задача не с того конца рассматривается, происходит неадекватное прыгание с уровня на уровень, а когда решение предлагается, не анализируются результаты (нафига использовать xmpp over tcp, когда можно просто по tcp?)
Нельзя. В этом вся проблема.
Джаббер можно, а TCP нет? Скажите, а, случайно, IP там не запрещён?

И у вас xmpp ходит святым духом или over secure guy postmail?
Дело не в этом. TCP можно. Нет возможности дать IP видимый из сети. Устраивать переделки на машине с АРМом — нельзя. Как это отразится на работоспособности?
А вообще выражения «феерическая херня», «полный бред» и т.д. — это тролль детектед.
Я понимаю, что что-то может не нравться, или совсем не нравтися. Обычно в таких случаях грамотные оппоненты поступают так:
Высказывание А.
Возражение А.

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

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

Если бы статья называлась «Простейший пример отправки XMPP-сообщения» и размещалась бы в блоге Python — никто бы не назвал её «хернёй».
) Я думаю, размести статью в разделе «Python», рецензия была бы та же.
Автор, ни в одном месте, по заголовку не обещал реализацию VPN.
А именно способ связи компьютер-компьютер в любой точке мира.
По факту — реализация есть. Не вижу повода к претензиями по отношению к заявленной тематике.
Что касается раздела — два компьютера — это уже _система_ компьютеров.
По второму доводу, имхо, претензия также не обоснована.
И называть «хернёй» даже плохие вещи можно, но опять же — не в публичном обсуждении.
Это даже не моё имхо. Хотя, если есть желание опустить Хабрахабр до уровня городской канализации (а можно и глубже) — почему бы и нет?
Статья называется «Способ связать разные компьютеры в одну сеть». «Сеть» предполагает использование стандартного протокола. Например, соединив компьютеры в VPN, можно слать айпи пакеты, инкапсулировав в них что угодно — хоть тот же XMPP, хоть RDP, хоть свой протокол.

У вас же связь между компьютерами наличествует, но стандартного протокола нет (вместо этого вы придумываете свой протокол, инкапсулированный внутрь сообщений XMPP). Следовательно, говорить про то, что вы таким образом «связываете компьютеры в одну сеть» нельзя, вы просто описываете способ как послать произвольное текстовое сообщение с одного компьютера на другой и обработать его скриптом на питоне. Что, впрочем, не даёт людям права грубить в комментариях…
Формально, в олдскульных книжках описывали message-based networks, но это было где-то в 70ые и возвращаться к этой технологии смысла нет.
Я не говорил про message-based. Хотя, это очень простое решение, почему бы и нет? Мне хватит. (это не значит, что в message-based не присутствуют средства контроля и повышения надёжности). В любом случае — _способ_ представлен и реализован.
Не вижу повода выдвигать претензии.
В каком месте я написал _предлагаю_протокол_???
Я говорю — _способ_связи_. Вы, уважаемый, передёргиваете заявленную тему.
Вы обещали «способ связать в сеть», а «сеть» — это как среда, так и протокол связи. Без протокола не будет сети. Говоря формально, протокол у вас есть, но ваш собственный, поверх XMPP. Инкапсулировать в него другой протокол уровня приложения (например, RDP) штатными средствами невозможно.
RDP? Можно. А штатные средства это обязательно?
Но лично мне — RDP — не нужен.
Давайте посмотрим на википедию:
ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%82%D1%8C_%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
— Компьютерная сеть (вычислительная сеть, сеть передачи данных) — система связи компьютеров и/или компьютерного оборудования (серверы, маршрутизаторы и другое оборудование). Для передачи информации могут быть использованы различные физические явления, как правило — различные виды электрических сигналов, световых сигналов или электромагнитного излучения.
— Как видно из приведённого определения сетевое оборудование включено через связку «или», что позволяет не включать последнее в состав сети. Формально, я требования выполнил. В приведённом определении ни слова нет про протокол. Ваше замечание не по теме.
Я лишь попытался объяснить, почему заметка вызвала негативную реакцию.

По определению из википедии назвать «сетью» можно любую чушь. Например, возьмём два компьютера, закрепим мышь одного над сидиромом другого. Теперь напишем программку, которая по изменению положения курсора мыши будет определять, был ли открыт сидиром на втором компьютере.

Система связи компьютеров есть? Есть. Физические являния для передачи информации используются? Используются. Но можно ли это назвать «сетью» и отправлять на хабр «способ связать компьютеры в сеть с помощью сидирома и мыши»? Я бы не стал.
Я понял, что имелось в виду, и видимо, действительно я полез уже в дебри. Ну нет, так нет. 5 человек, видимо, не таких умных, смотрю уже в заметки себе добавили статью.
А может и умных, но не каких-то не таких, в отличии от некоторых их тех, кто кое-кто здесь. ))
Херню надо называть херней, если она таковой является.
Ты можешь сколько угодно смотреть на собаку и говорить, что это не собака, ведь на собаку она совсем не похожа, но кто в итоге будет прав?
© Нянюшка Ягг
Может он и тролль (что очень сомнительно), но он прав. Задача поставлена одна, решение представлено для другой задачи совершенно… и с безопасностью ситуация интересная =).
Выше написал. Задача поставлена, и она решена.
Что касается безопасности — это задача вполне решаема. Тем более, что даже прямой перехват трафика ни к чему не приведёт.
Когда я пишу «феерическая херня» это обычно значает, что предложение собеседника не прошло первичную валидацию, то есть я не могу говорить о частностях, ибо всё предложение сформулировано неверно.

Я напихал не «умных слов», я написал, что существуют быстро работающие RPC стеки авторства Сан и Майкрософт (и, наверняка, много других).

Сервера у него нет, а клиенты с обеих сторон сидят за NATом.
Ну. И что из этого следует?
Я ответил amarao на его вопрос «что мешает использовать уже сделанное ранее, например ipsec».
Чтобы его использовать (и уже написал выше) — нужно настраивать роутер. Он запаролен, пароля нет, и никто не знает. Сбросить роутер — значит оставить предприятие без связи. Догадайтесь сами, что будет дальше.
Если там нет каких-то специфичных конфигураций, то я эту задачу смогу решить с помощью обычного компьютера с лагом секунд в пять на переключении. После этого дылинк (или что у них там висит) можно ковырять сколько душе влезет.
Есть там пару странных настроек. Настраивали литовцы. И если ковырнуть роутер — не факт, что факир не был пьян.
В смысле, нет? Он xmpp-сервер за сервер не считает?
он предлагает использовать бесплатный jabber.ru (см. комментарии выше)
И это предлагается считать индустриальным решением? И после ЭТОГО решения задают многозначительные вопросы о применимости dlink'ов на промышленных объектах?
Вы меня спрашиваете? Если вам интересно моё мнение, рискну предположить — «индустриальность» решения зависит от самой индустрии…

См. выше — «нужно настраивать роутер. Он запаролен, пароля нет, и никто не знает...»

А то! Промышленный объект.
В целом такой подход ясен. И я склонен с ним согласится. Для этого интернет и нужен.

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

Предыдущие комментаторы, видимо, искренне не понимают что значит «приведёт к потери гарантии» или «потребуется провести проектные мероприятия, лицензирование, перерегистрацию».

«РегионБаблоПопил». :'-(
По безопасности тему не заявлял. Я, наверное, ещё пару статей попробую тут разместить, если реакция будет такой же — не вижу смысла здесь дальше находиться.

Что касается вопросов взаимодействия с госорганами, наверно да. Комментирующие плохо себе представляют. Ну, что делать. Счастливые люди. Я им по хорошему завидую.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории