Sunday, 29 November 2020

Ansible Ltd.

Всем привет.

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


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

Броский дизайн очередной рекламной кампании с ярким текстом: 

"Уважаемый клиент! Мы - логистическая кампания Будущего, которое для вас может уже стать Настоящим. Мы - это новое слово в доставке чего угодно и куда угодно. Для Вас сегодня Акция - первые три посылки для Вас совершенно бесплатны. Любой формат, любое место назначение, 100% гарантия. Наш сервис Вас приятно удивит!"

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

"Наша миссия - сокращать расстояния!".

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

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

В отправителях sms значилось: Ansible Ltd., четверг.

Джейк быстро вернул взгляд на стол, конверта там не оказалось. Чисто по привычке заглянул под стол, пошарил взглядом направо налево. Конверта не было. Прочитал еще раз смс. Слабо веря в новые веяния логистики он через пару минут решил еше раз перечитать буклет. От чтения его отвлек звонок Макса. Тот спрашивал что у него за шутки в 5-ть утра присылать чистые листы бумаги..., кое как промямлив в ответ, Джейк погрузился в раздумья: 

- Но сегодня пятница. - Я запечатал конверт полчаса тому.

- Хм, и что за странная sms? Эта фирма доставки не придает значения ни часам ни минутам, а? Может они и время считают по другому?

- Спокойно, это только доказывает, что их логистика находится в тропической стране. В тропиках время почти ничего не значит. Отметка "четверг" свидетельствует, что Ansible Ltd. в Центральной Америке. Если бы эта страна находилась в Индии или еще где-нибудь на востоке, в sms была бы "среда", согласен?

- Точно. Супер-скоростная почта! - воскликнул Джейк. - Еще бы! Да "Новая почта" ей в подметки не годится. Если за время, прошедшее от того, как я получил sms, до момента, когда оно упало в ящик Макса, письмо пропутешествовало не просто отсюда до него, а сначала побывало в Центральной Америке, было обработано и только потом попало к нему, тогда его средняя скорость будет...

- Ок, я знаю как вас вычислить. Посмотрим как вы поступите с недоставкой! - Джейк взял случайную книгу с полки, аккуратно завернул ее и написал только что выдуманный им адрес: "Mr. Jake Faraday, 711, Pаradise Road, Nirvana». Но чтобы вероятность возврата посылки была стопроцентной он указал в качестве адресата себя. Он прикрепил вторую наклейку и положил книгу на стол не сводя с нее взгляда. Секунда, другая, он даже зевнул, но она не исчезла.

- Ага, все таки развод! - заиграли эмоции у Джейка.- Какие только фокусы не придумают во времена карантина.

Еще через секунду пришла sms:

"Возврат отправителю. По указанному адресу получатель временно не проживает. Мы рады что вы с нами. Ansible Ltd., пятница."

- Вот черт! - вырвалось у Джейка. - Они издеваются? Что значит "временно не проживает"? Адрес был взят с потолка!

- Ладно ребята, но я так просто не отступлю, сейчас я вам устрою... любой формат, говорите?, Ну-ну..., - Джейк притащил с балкона большую коробку.

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

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

Телефон принял очередную sms: 

"Ваша посылка доставлена. Мы постоянно развиваем наш сервис - теперь в акции участвуют посылки с доставкой в места назначения где время отличается от вашего более чем на 24 часа. Мы рады что вы с нами. Ansible Ltd., суббота."


Saturday, 28 November 2020

Разведка из открытых источников, часть 3.

Всем привет.

Решив отдать должное автору статьи "Разведка из открытых источников, часть 2" Андрею Бирюкову я публикую еще одну часть из его журнальной серии "Системный администратор". 3-я часть посвящена технической стороне разведки, а именно сканированию сети.

Сканирование сети является неотъемлемой частью сетевых атак. Для успешной защиты необходимо понимать, как осуществляется обнаружение узлов в сети. Мы проведем исследование тех служб, которые при­меняются в сети. Сначала рассмотрим, как злоумышленник может идентифицировать работающие узлы. Затем перей­дем к тому, как определить, какие службы запущены на дан­ных машинах. Для идентификации активных узлов в локальной сети можно использовать различные протоколы сетевого и транспортного уровня, такие как ICMP, UDP и TCP. Но обо всем по порядку.

ICMP как простой инструмент исследования сети

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

Прежде всего рассмотрим основные принципы работы данного протокола. Сообщения ICMP передаются в виде IP- датаграмм, то есть к ним прибавляется заголовок IP. 

Существует несколько типов сообщений ICMP, каждый имеет свой формат, при этом все они содержат следующие три поля:

-    8-битного целого числа, обозначающего тип сообще­ния (TYPE);

-    8-битного поля кода (CODE), который конкретизирует назначение сообщения;

-    16-битного поля контрольной суммы (CHECKSUM).

Все типы сообщений ICMP можно условно поделить на две группы.

-    Сообщения об ошибках (например, Destination Unreachable).

-    Запросы и ответы (например, Echo Request и Echo Reply).

Начнем с рассмотрения сообщений об ошибках. Они содержат заголовок и первые 64 бита данных пакета IP, при передаче которого возникла ошибка. Это делается для того, чтобы узел-отправитель смог более точно проана­лизировать причину ошибки, так как все протоколы при­кладного уровня стека TCP/IP содержат наиболее важную информацию для анализа именно в первых 64 битах своих сообщений. Для сообщений об ошибках задействовано поле кода. В основном для исследования сети используют­ся Echo Reply, Echo Request и Timestamp.

Наилучшим методом определения доступности узла явля­ется посылка сообщения ICMP Echo (Туре 8). Если система работает и отсутствует фильтрация графика данного типа, то в ответ придет сообщение ICMP Echo Reply (Type 0).

Идентификация (то есть обнаружение) сетевых уст­ройств с помощью протокола ICMP может быть выполнена двумя способами.

-   посылкой запроса, получением ответа;

-   вызовом ситуации ошибки, получением сообщения об ошибке.

В основу идентификации заложен следующий принцип. Узел, отправляющий ICMP-запрос, устанавливает значения полей Identifier, эти значения позволяют определить ответы, пришедшие от разных узлов. А для того, чтобы отличить не­сколько ответов, пришедших от одного узла, используется поле Sequence Number. В поле Code записывается ноль, поле данных произвольно (например, алфавит). Отвечаю­щая сторона должна заменить значение поля Туре на 0 и от­править датаграмму обратно.

Для выполнения обнаружения узла обычно используется утилита ping, входящая в состав большинства ОС. В качест­ве параметра ping указывается IP/имя, и в результате получа­ем ответ удаленной системы. Однако у нее есть существен­ный недостаток - все узлы опрашиваются последовательно, что заметно увеличивает продолжительность опроса.

Wednesday, 25 November 2020

Поведенческие параметры в Ansible.

Всем привет.

Для описания хостов в файле реестра Ansible (Ansible.cfg) необходимо явно указывать имя хоста(или IP-адрес) и порт, к которому будет подключаться SSH-клиент Ansible. Это может быть важно если вы управляете хостами с помощью, например, системой Vagrаnt. В Ansible такие перемененные называются поведенческими параметрами (см. таблицу).


ansible_connection

Ansible поддерживает несколько транспортов - механизмов подключения к хостам. По умолчанию используется транспорт smart. Он проверяет поддержку локальным SSН-клиентом функции ControlPersist. Если SSH-клиент поддерживает ее, Ansible использует локальный SSH-клиент. Если локальный клиент не поддерживает ControlPersist, тогда транспорт smart будет использовать библиотеку SSH-клиента на Python с названием Paramiko.

Monday, 23 November 2020

Пользовательский модуль в Ansible.


Всем привет.

На данный момент вам может начать казаться, что управление сетевыми средствами в Ansible во многом зависит от обнаружения правильного модуля для своего устройства. Модули предоставляют некий способ абстрактного взаимодействия между управляемым хостом и самой управляющей машиной, в то время как он делает для вас возможным сосредоточиться на самой логике вашей работы. До этого момента мы знаем что все основные производители предоставляют некий широкий диапазон поддержки модулей для Cisco, Juniper и Arista.

Рассмотрим в качестве примера модули Cisco Nexus - помимо конкретных задач, таких как управление соседним BGP (nxos_bgp) и сервером aaa (nxos_aaa_server), большинство производителей также предоставляют способы исполнения произвольного отображения (nxos_config) и настройки (nxos_config) команд. 

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

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

1-й пользовательский модуль.

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

Saturday, 21 November 2020

Различия между grep, egrep и fgrep.


Всем привет.

Одним из известных инструментов поиска в Linux системах, которые можно использовать для поиска всего, будь то файл или строка или несколько строк в файле, - это утилита grep. Он очень обширен в функциональности, за счет большого количества поддерживаемых им опций, таких как: поиск с использованием строкового шаблона или регулярных выражений шаблон или perl based регулярных выражений  и т.д.

Из-за его различных функциональных возможностей инструмент grep имеет множество вариантов, включая egrep (Extended GREP), fgrep (Fixed GREP), pgrep (Process GREP), rgrep (рекурсивный GREP) и т.д. Но эти варианты имеют незначительные отличия от оригинального grep. Давайте разберемся с различиями между тремя основными вариантами: «grep», «egrep» и «fgrep». Чтобы мы знали, что выбирать в соответствии со своими требованиями.

Некоторые специальные метасимволы grep:

+ - эквивалентно одному или нескольким вхождениям предыдущего символа.

? - это означает хотя-бы одно повторение предыдущего символа. Так запись «a?» будет соответствовать «a» или «aa».

(- начало выражения чередования.

) - конец выражения чередования.

| - сопоставление любого из выражений, разделенных символом ‘|‘. Например: «(a | b) cde» будет соответствовать «acde», либо «bcde».

{- этот метасимвол указывает начало спецификатора диапазона. Например: «a {2}» соответствует вхождению «aa» в файле 2 раза.

} - этот метасимвол указывает конец спецификатора диапазона.

Некоторые основные различия между grep, egrep и fgrep можно выделить следующим образом. Для этого набора примеров мы принимаем файл, в котором выполняется операция:

grep is acommand that can be used on unix-like systems. 

it searches for any string in list of strings or file. 

It is very fast. 

(f|g)ile 

Версия на печать

Популярное