Входящий и исходящий трафик: Понятие трафика. Входящий и исходящий трафик сайта

Содержание

Входящий и исходящий трафик — Azure Digital Twins


  • Статья



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

Azure Digital Twins может получать данные из вышестоящих служб, таких как Центр Интернета вещей или Logic Apps, которые используются для доставки данных телеметрии и уведомлений.

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

Прием данных

Azure Digital Twins можно управлять с помощью данных и событий из любой службы — Центра Интернета вещей, Logic Apps, вашей собственной службы и т. д. Подобный поток данных позволяет собирать телеметрию с физических устройств в вашей среде и обрабатывать эти данные с помощью графа Azure Digital Twins в облаке.

Вместо того, чтобы иметь встроенный Центр Интернета вещей за кулисами, Azure Digital Twins позволяет вам «принести свой» Центр Интернета вещей для использования со службой. Вы можете использовать существующий Центр Интернета вещей, который у вас в настоящее время находится в производстве, или развернуть новый, который будет использоваться для этой цели. Эти функции обеспечивают полный доступ ко всем возможностям управления устройствами в Центре Интернета вещей.

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

Вы также можете интегрировать Azure Digital Twins в поток Microsoft Power Platform или Azure Logic Apps с помощью соединителя Azure Digital Twins Power Platform. Дополнительные сведения о соединителях см. в статье Общие сведения о соединителях.

Отправка данных

Вы можете отправить данные Azure Digital Twins в другие подчиненные службы для хранения или дополнительной обработки.

В Azure Digital Twins есть два основных варианта исходящего трафика. Данные цифрового двойника можно отправлять в большинство служб Azure с помощью конечных точек. Или, если вы используете azure Data Explorer, вы можете использовать журнал данных для автоматической отправки обновлений графа в кластер Azure Data Explorer, где они хранятся в виде исторических данных и могут запрашиваться как таковые.

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

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

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

Конечные точки

Чтобы отправить данные Azure Digital Twins в большинство служб Azure, таких как Azure Maps, Аналитика временных рядов или служба хранилища Azure, сначала подключите целевую службу к конечной точке.

Конечные точки могут быть экземплярами любой из следующих служб Azure:

  • Центры событий
  • Сетка событий
  • Служебная шина

Конечная точка подключена к экземпляру Azure Digital Twins с помощью API-интерфейсов управления или портал Azure и может передавать данные из экземпляра в другие службы прослушивания. Дополнительные сведения о конечных точках Azure Digital Twins см. в статье Конечные точки и маршруты событий.

Подробные инструкции по отправке данных Azure Digital Twins в Azure Maps см. в статье Использование Azure Digital Twins для обновления Azure Maps схемы помещений. Подробные инструкции по отправке данных Azure Digital Twins в Аналитику временных рядов см. в статье Интеграция с Аналитикой временных рядов.

Журнал данных

Чтобы отправить данные двойника в azure Data Explorer, настройте подключение к журналу данных, которое автоматически выполняет журнал обновлений графа из экземпляра Azure Digital Twins в кластер azure Data Explorer. Для подключения к журналу данных требуется концентратор событий, но не требуется явная конечная точка.

После того как данные будут сохранены, вы можете запросить эти данные в Azure Data Explorer с помощью подключаемого модуля запросов Azure Digital Twins для azure Data Explorer.

Вы также можете использовать журнал данных в сочетании с Azure Synapse Analytics для агрегирования данных из разрозненных источников. Это может быть полезно во многих сценариях. Вот два примера.

  • Объедините данные ит-технологий из систем ERP или CRM (таких как Dynamics 365, SAP или Salesforce) с данными операционной технологии (OT) из устройств Интернета вещей и систем управления производством. Пример, иллюстрирующий, как компания может объединить эти данные, см. в следующей записи блога: Интеграция ДАННЫХ ИТ и OT с Azure Digital Twins, Azure Data Explorer и Azure Synapse.
  • Интеграция с многопараметрической Детектор аномалий Azure ИИ и Cognitive Services, чтобы быстро подключить данные Azure Digital Twins к нижестоящему решению искусственного интеллекта или машинного обучения, которое специализируется на обнаружении аномалий. Azure Digital Twins Multivariate Anomaly Detection Toolkit — это пример проекта, который предоставляет рабочий процесс для обучения нескольких моделей многопараметрического Детектор аномалий для нескольких анализов сценариев на основе исторических данных цифрового двойника. Затем он использует обученные модели для обнаружения аномальных операций и аномалий в смоделированных средах Azure Digital Twins практически в реальном времени.

Дальнейшие действия

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

  • Конечные точки и маршруты событий

Узнайте, как настроить Azure Digital Twins для приема данных из Центра Интернета вещей:

  • Прием данных телеметрии из Центра Интернета вещей

Ограничиваем входящий и исходящий трафик в Linux / Хабр

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

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

Какие есть способы ограничения трафика?

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

Взяв за основу мою сеть из, примерно, 50 рабочих мест, которые выходят в интернет через шлюз, под управлением ОС Ubuntu и некоторые из пользователей пользуются локальными ресурсами на этом сервере по протоколу SMB.

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

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

1. Ограничение с помощью прокси-сервера Squid.

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

2. Использование traffic control из iproute2.

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

3. Конечно возможно ограничить скорость путём использования модуля –m limit для iptables – но считаю это неприемлемым.

В общем я решил остановиться на методе ограничения трафика с помощью пакета iproute2.

Что, где и как?

Как уже упоминал, я использую сервер: OS Ubuntu 10.04, ядро 2.6.32-30. В сервере 3 интерфейса: eth0 – внутренняя сеть, eth2 — провайдер 1, eth3 – провайдер 2.

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

Немного теории

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

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

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

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

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

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

Для того чтобы во время занятия пользователем всей полосы пропускания, ограниченной ему на шлюзе, для скачивания какого-нибудь большого объема данных и при этом мог нормально пользоваться ssh и чтобы у него работал ping – я использовал приоритезацию трафика.

Я расставил следующие приоритеты трафика:

  1. icmp
  2. udp,ssh
  3. tcp sport 80
  4. остальной неклассифицированный трафик


Чем ниже параметр – тем выше приоритет трафика.

Дисциплины, классы, фильтры

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

Для инициализации интерфейса ifb0 нужно сначала загрузить модуль управления интерфейсом:
/sbin/modprobe ifb

После успешной загрузки модуля нужно включить интерфейс:
/sbin/ip link set dev ifb0 up

Затем, после того, как интерфейс будет поднят, нужно организовать переадресацию всего исходящего трафика от пользователей на этот интерфейс:
/sbin/tc qdisc add dev eth0 ingress

/sbin/tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0


Теперь можно смело начинать строить классы и фильтры для входящего к пользователям трафика на интерфейсе eth0, а исходящего – на интерфейсе ifb0.

Для ограничения трафика используется следующий принцип:

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


Классы могут быть вложенными. То есть, если класс 1: описывает максимальную пропускную способность в 1Мбит, то класс 1:1, который является его подклассом, не может превысить ограничения по скорости его родителя.

Ограничиваем входящий к пользователям трафик

Все манипуляции с трафиком будем проводить на интерфейсе eth0.

Для начала создадим корневой обработчик очереди на интерфейсе:
/sbin/tc qdisc add dev eth0 root handle 1: htb default 900

Тем самым мы привязали корневой обработчик очереди к интерфейсу eth0, присвоили ему номер 1: и указали на использование планировщика HTB с отправкой всего неклассифицированного трафика в класс с номером 900.

Затем создадим дочерний класс 1:1 с шириной канала, равной скорости интерфейса:
/sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 100Mbit burst 15k

Все последующие классы будут подклассами только что созданного нами класса. Это дает нам более точную приоритезацию и обработку скорости потока данных.

Создадим класс для локального трафика, адресом назначения или исходным адресом которого будет являться внутренний адрес сервера. Это нужно для удобства пользования ресурсами сервера, такими как SSH, SMB, FTP, WWW и так далее. Скорость, описанная классом – 50Mbit, но в случае, если скорость потока родительского класса не меньше 100Mbit, то разрешаем использовать 80Mbit, в качестве максимальной скорости передачи данных.
/sbin/tc class add dev eth0 parent 1:1 classid 1:10 htb rate 50Mbit ceil 80Mbit burst 15k

Далее создаем класс, скорость которого будет равно ширине полосы пропускания, которую нам предоставляет провайдер. В моем случае – это 15Mbit.
/sbin/tc class add dev eth0 parent 1:1 classid 1:100 htb rate 15Mbit burst 15k

Даже если провайдер предоставляет большую скорость, к примеру 18Mbit, я рекомендую снижать эту скорость для шейпера на 1-2 Mbit для более «мягкого» ограничения трафика.

Далее создадим класс, в который будут отправляться все пакеты данных, которые не попадут ни в один из созданных ранее классов.
/sbin/tc class add dev eth0 parent 1:1 classid 1:900 htb rate 56Kbit ceil 128Kbit

Для каждого пользователя я создавал отдельный подкласс, с выделенной полосой пропускания, а затем создавал подклассы этого класса для приоритезации трафика:
/sbin/tc class add dev eth0 parent 1:100 classid 1:101 htb rate 4Mbit ceil 6Mbit

Данной командой мы указали на создание класса с номером 1:101, который является подклассом класса с номером 1:100 и указали пропускную способность класса в 4Mbit, а в случае свободной полосу пропускания у родительского класса, разрешить максимальное прохождение данных по классу на скорости 6Mbit.

Далее создаем подклассы для приоритезации трафика:
# PRIO 1 -> icmp traffic - самый низкий приоритет

/sbin/tc class add dev eth0 parent 1:101 classid 1:102 htb rate 33kbit ceil 6Mbit prio 1

# PRIO 2 -> udp, ssh

/sbin/tc class add dev eth0 parent 1:101 classid 1:103 htb rate 33kbit ceil 6Mbit prio 2

# PRIO 3 -> tcp sport 80 – WWW трафик из мира

/sbin/tc class add dev eth0 parent 1:101 classid 1:104 htb rate 33kbit ceil 6Mbit prio 3

# PRIO 4 -> unclassified traffic – трафик, который не попал под условия, указанные в предыдущих классах

/sbin/tc class add dev eth0 parent 1:101 classid 1:105 htb rate 33kbit ceil 6Mbit prio 4

После создания классов пришло время создания фильтров, которые будут классифицировать трафик по определенным критериям.

Есть несколько способов классифицировать трафик.

Самые удобные из них – это u32 классификаторы, позволяющие классифицировать пакеты исходя из адреса назначения или отправителя, используемого протокола, номера порта и так далее, и классификаторы на основе меток iptables. Для использования последних необходимо сначала маркировать пакеты при помощи iptables в цепочке PREROUTING, на основе каких-либо условий, а затем при помощи tc направлять пакеты с соответствующей меткой в нужные классы.

Я предпочел использовать u32 классификатор.

Присваиваем icmp-трафику самый низкий приоритет и отправляем его в класс 1:102
/sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.10.78 \

match ip protocol 1 0xff flowid 1:102

UDP и SSH трафик отправляем в класс 1:103
/sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.10.78 \

match ip protocol 17 0xff flowid 1:103

/sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.10.78 \

match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:103

WWW-трафик, пришедший с tcp-порта 80 отправляем в класс 1:104
/sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32 match ip dst 192. 168.10.78 \

match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:104

Трафик, не соответствующий ни одному из условий отправляем в класс 1:105
/sbin/tc filter add dev eth0 protocol ip parent 1:0 prio 4 u32 match ip dst 192.168.10.78 flowid 1:105

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

Ограничиваем исходящий трафик

Для ограничения исходящего от пользователей трафика выполняются такие же действия как и для входящего, только в ход идет виртуальный интерфейс ifb0. Также нужно изменить назначение следования трафика: вместо dst 192.168.10.78 – нужно указать src 192. 168.10.78 соответственно.

Автоматизация и принцип работы скриптов

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

root@mixer:/etc/rc.d/shape# cat ./users
#CLIENT	IP	DOWN	CEIL	UP	CEIL	PROVIDER	ID
user1	192.168.10.78	1Mbit	2Mbit	1Mbit	4Mbit	mageal	10
user2	192.168.10.44	1Mbit	1Mbit	2Mbit	3Mbit	ukrtel	11

Файл представляет из себя поля, разделенный знаком табуляции либо пробелом со следующими значениями:
CLIENT – Имя пользователя. Нужно для удобства предоставления данных
IP – адрес пользователя в сети
DOWN – скорость потока данных к пользователю
CEIL – максимальная скорость входящего трафика к пользователю при доступности данной полосы у родительского класса
UP — скорость потока данных от пользователя
CEIL – то же, что и у CEIL для входящего трафика к пользователю
PROVIDER – какой из провайдеров используется для обслуживания запросов пользователя (при наличии нескольких)
ID – номер класса для пользователя. Подробнее о номерах классов ниже.

Также я использую несколько bash-скриптов.

root@steel:/etc/rc.d/shape# cat ./rc.shape

#!/bin/bash

. /etc/init.d/functions

/sbin/modprobe ifb

/sbin/ip link set dev ifb0 up

TC=»/sbin/tc»

DEV_P1_DOWN=»eth0″

DEV_P1_UP=»ifb0″

stop(){

$TC qdisc del dev $DEV_P1_DOWN root

$TC qdisc del dev $DEV_P1_UP root

$TC qdisc del dev $DEV_P1_DOWN ingress

}

start(){

# Удаляем все обработчики на интерфейсе

$TC qdisc del dev $DEV_P1_DOWN root

$TC qdisc del dev $DEV_P1_UP root

$TC qdisc del dev $DEV_P1_DOWN ingress

## Перенаправляем весь исходящий от пользователей трафик на виртуальный интерфейс ifb0

$TC qdisc add dev $DEV_P1_DOWN ingress

$TC filter add dev $DEV_P1_DOWN parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev $DEV_P1_UP

# Подгружаем скрипты с описанием классов входящего и исходящего трафика

. /etc/rc.d/shape/rc.shape.down.classes

. /etc/rc.d/shape/rc.shape.up.classes

# Весь трафик, который следует на шлюз или от него ограничиваем в 50Мбит с максимумом в 80Мбит.

$TC filter add dev $DEV_P1_UP protocol ip parent 1:0 prio 1 u32 match ip dst 10.0.0.1 flowid 1:10

$TC filter add dev $DEV_P1_DOWN protocol ip parent 1:0 prio 1 u32 match ip src 10.0.0.1 flowid 1:10

# Подгружаем скрипт с описанием фильтров

. /etc/rc.d/shape/rc.shape.filters

}

case «$1» in

start)

start

;;

stop)

stop

;;

restart|reload)

start

;;

*)

msg_usage «${0##*/} {restart|start|stop}»

RETVAL=1

esac

Далее код, который подгружается:

Классы

root@steel:/etc/rc.d/shape# cat ./rc.shape.down.classes

#!/bin/bash

## DOWNLOAD CLASSES

##########################################################

# Создаем корневой обработчик очереди

$TC qdisc add dev $DEV_P1_DOWN root handle 1: htb default 900

# Описание классов для входящего к пользователям трафика

$TC class add dev $DEV_P1_DOWN parent 1: classid 1:1 htb rate 100Mbit burst 15k

# Локльный трафик (SERVER -> CLIENTS)

$TC class add dev $DEV_P1_DOWN parent 1:1 classid 1:10 htb rate 50Mbit ceil 80Mbit burst 15k

# Трафик от провайдера (SERVER -> CLIENTS)

$TC class add dev $DEV_P1_DOWN parent 1:1 classid 1:100 htb rate 15Mbit burst 15k

# Неклассифицированный трафик будет отправлен в этот класс (SERVER -> CLIENTS)

$TC class add dev $DEV_P1_DOWN parent 1:1 classid 1:900 htb rate 128Kbit ceil 128Kbit

root@steel:/etc/rc. d/shape# cat ./rc.shape.up.classes

#!/bin/bash

## UPLOAD CLASSES

#############################################################

# Создаем корневой обработчик очереди

$TC qdisc add dev ifb0 root handle 1: htb default 900

# Описание классов для исходящего от пользователей трафика

$TC class add dev ifb0 parent 1: classid 1:1 htb rate 100Mbit burst 15k

# Локальный трафик (CLIENTS -> SERVER)

$TC class add dev $DEV_P1_UP parent 1:1 classid 1:10 htb rate 50Mbit ceil 80Mbit burst 15k

# Трафик к провайдеру (CLIENTS -> SERVER)

$TC class add dev $DEV_P1_UP parent 1:1 classid 1:100 htb rate 5Mbit burst 15k

# Неклассифицированный трафик будет отправлен в этот класс (CLIENTS -> SERVER)

$TC class add dev $DEV_P1_UP parent 1:1 classid 1:900 htb rate 128Kbit ceil 128Kbit

И фильтры:

root@steel:/etc/rc.d/shape# cat ./rc.shape.filters

#!/bin/bash

# читаем построчно файл “users”

while read LINE

do

set -- $LINE

if [[ $1 =~ '^\#' ]]

then

continue

fi

################################################################

CLIENT_IP=$2

CLIENT_DOWN_RATE=$3

CLIENT_DOWN_CEIL=$4

################################################################

# DOWNSTREAM

#####################

# создаем отдельный подкласс для пользователя

$TC class add dev $DEV_P1_DOWN parent 1:100 classid 1:${8}1 htb rate $CLIENT_DOWN_RATE ceil $CLIENT_DOWN_CEIL

# PRIO 1 -> icmp traffic

$TC class add dev $DEV_P1_DOWN parent 1:${8}1 classid 1:${8}2 htb rate 33kbit ceil $CLIENT_DOWN_CEIL prio 1

# PRIO 2 -> udp, ssh

$TC class add dev $DEV_P1_DOWN parent 1:${8}1 classid 1:${8}3 htb rate 33kbit ceil $CLIENT_DOWN_CEIL prio 2

# PRIO 3 -> tcp sport 80

$TC class add dev $DEV_P1_DOWN parent 1:${8}1 classid 1:${8}4 htb rate 33kbit ceil $CLIENT_DOWN_CEIL prio 3

# PRIO 4 -> unclassified traffic

$TC class add dev $DEV_P1_DOWN parent 1:${8}1 classid 1:${8}5 htb rate 33kbit ceil $CLIENT_DOWN_CEIL prio 4

# фильтруем icmp-пакеты в ранее созданный нами класс для icmp-трафика с приоритетот 1

$TC filter add dev $DEV_P1_DOWN protocol ip parent 1:0 prio 1 u32 match ip dst $CLIENT_IP \

match ip protocol 1 0xff flowid 1:${8}2

# фильтрация udp

$TC filter add dev $DEV_P1_DOWN protocol ip parent 1:0 prio 2 u32 match ip dst $CLIENT_IP \

match ip protocol 17 0xff flowid 1:${8}3

# ssh

$TC filter add dev $DEV_P1_DOWN protocol ip parent 1:0 prio 2 u32 match ip dst $CLIENT_IP \

match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:${8}3

# WWW, sport 80

$TC filter add dev $DEV_P1_DOWN protocol ip parent 1:0 prio 3 u32 match ip dst $CLIENT_IP \

match ip protocol 6 0xff match ip sport 80 0xffff flowid 1:${8}4

# самый высокий приоритет – трафику, не попавшему под предыдущие фильтры

$TC filter add dev $DEV_P1_DOWN protocol ip parent 1:0 prio 4 u32 match ip dst $CLIENT_IP flowid 1:${8}5

# UPSTREAM

#####################

CLIENT_UP_RATE=$5

CLIENT_UP_CEIL=$6

### ТАКИЕ ЖЕ ПРАВИЛА И ДЛЯ ИСХОДЯЩЕГО ТРАФИКА

$TC class add dev $DEV_P1_UP parent 1:100 classid 1:${8}1 htb rate $CLIENT_UP_RATE ceil $CLIENT_UP_CEIL

# PRIO 1 -> icmp traffic

$TC class add dev $DEV_P1_UP parent 1:${8}1 classid 1:${8}2 htb rate 1kbit ceil $CLIENT_UP_CEIL prio 1

# PRIO 2 -> udp, ssh

$TC class add dev $DEV_P1_UP parent 1:${8}1 classid 1:${8}3 htb rate 1kbit ceil $CLIENT_UP_CEIL prio 2

# PRIO 3 -> unclassified traffic

$TC class add dev $DEV_P1_UP parent 1:${8}1 classid 1:${8}4 htb rate 1kbit ceil $CLIENT_UP_CEIL prio 3

$TC filter add dev $DEV_P1_UP protocol ip parent 1:0 prio 1 u32 match ip src $CLIENT_IP \

match ip protocol 1 0xff flowid 1:${8}2

$TC filter add dev $DEV_P1_UP protocol ip parent 1:0 prio 2 u32 match ip src $CLIENT_IP \

match ip protocol 17 0xff flowid 1:${8}3

$TC filter add dev $DEV_P1_UP protocol ip parent 1:0 prio 2 u32 match ip src $CLIENT_IP \

match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:${8}3

$TC filter add dev $DEV_P1_UP protocol ip parent 1:0 prio 3 u32 match ip src $CLIENT_IP flowid 1:${8}4

done < . /users

Данные скрипты нужно положить в один каталог, Выполнить:

chmod +x ./rc.shape

и затем

./rc.shape start

Я описал один из методов ограничения трафика. Утилита tc – очень мощная вещь в вопросах об ограничениях трафика. Рекомендую ознакомиться с документом: LARTC-HOWTO для более глубокого изучения данного вопроса.

Важность блокировки исходящего трафика

Блог

31.01.2023
Билл Франклин

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

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

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

В чем разница между входящим и исходящим трафиком?

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

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

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

Почему исходящий трафик так часто упускается из виду?

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

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

  • Фишинг
  • Целевой фишинг
  • Внутренние угрозы
  • Вставка учетных данных
  • USB-атаки
  • …и любой другой код
  • , который придумают киберпреступники.

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

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

6 Проблемы Активная блокировка исходящего трафика предотвращает

От финансовых предприятий, таких как Travelex, до нарушения кибербезопасности Colonial Pipeline — ни одна компания не застрахована от злоумышленников. По мере того, как мир становится все более связанным через Интернет и другие формы технологий, хакеры находят новые и все более изощренные способы нападения на организации. Компании должны вкладывать средства в меры безопасности, чтобы защитить себя от этих угроз.

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

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

1. Программы-вымогатели

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

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

Несмотря на то, что технологии резервного копирования и аварийного восстановления (BDR), такие как EDR, MDR, XDR и т. д., могут смягчить последствия этих атак, лучшее решение — блокировать эти атаки, прежде всего, путем предотвращение «звонка домой», который позволяет программам-вымогателям делать свое дело. ThreatBlockr — лучшее решение на рынке сегодня для этого. ThreatBlockr автоматически блокирует эти обращения к известным злоумышленникам, эффективно останавливая атаки программ-вымогателей.

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

2. Эксфильтрация данных 

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

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

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

3. Удаленные пользователи, входящие в сеть 

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

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

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

5. Атаки с использованием USB

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

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

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

6. Атаки на цепочку поставок 

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

Самая крупная кибератака 2020 года использовала эту уязвимость. Атака SolarWinds была совершена против многих частных и государственных предприятий в Соединенных Штатах из-за того, что они использовали инструмент мониторинга сети Orion от SolarWinds. Внедрив вредоносный код в программное обеспечение, злоумышленники смогли получить бэкдор-доступ к компаниям в Соединенных Штатах, которые были клиентами SolarWinds.

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

Пример атаки на исходящий трафик

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

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

Мониторинг исходящего сетевого трафика с помощью ThreatBlockr

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

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

Хотите узнать, как ThreatBlockr может повлиять на вашу сеть? Свяжитесь с нами сегодня для собственной оценки рисков.

Автор

Билл Франклин

Билл Франклин в настоящее время является вице-президентом по развитию бизнеса в Threatblockr. Он имеет более чем 10-летний опыт продаж технологий как аппаратного, так и программного обеспечения. У него обширный опыт в области инфраструктуры, сетей, SDWAN/SASE и кибербезопасности, а также совместного использования нескольких технологий.

networking — Как использовать другой IP-адрес для исходящего трафика?

Задавать вопрос

спросил

Изменено
6 лет, 10 месяцев назад

Просмотрено
2к раз

Фон

Я запускаю сервер с двумя внешними IPv4-адресами. IP-адрес A (IP-A) и IP-адрес B (IP-B).

Цель

Я хочу получить доступ к IP-A только через HTTPS-порт 443 и SSH-порт 22. IP-B не должен прослушивать входящий трафик.

Затем я хочу, чтобы сервер использовал IP-B только для всего исходящего трафика. Или хотя бы указать серверу использовать IP-B для исходящего трафика только для определенных команд.

Пример в псевдокоде:

 1: Я подключаюсь к серверу по IP-A и вызываю `ping example.com`
2: сервер выполняет его и отправляет пинг-запросы, исходящие с IP-B, на example.com.
3: я могу прочитать вывод команды при моем соединении с IP-A
 

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

Поскольку консоль управления, которую я буду использовать, находится на IP-A. Я хочу, чтобы IP-A не был напрямую связан с IP-B (по крайней мере, для внешнего мира). Вместо этого я хочу, чтобы example.com увидел «Я получил запрос ping от IP-B». И когда кто-то подключается к IP-B, этот IP-адрес ничего не слушает. Пока IP-A нигде нет в их логах.

В конечном итоге я хотел бы добавить еще больше адресов и иметь возможность указывать IP-A:

  1. Использовать IP-B для этой команды
  2. Используйте IP-C для этой команды
  3. Используйте IP-D для этой команды

Любые мысли о том, как настроить вышеуказанный сценарий? В настоящее время я использую Ubuntu, но я открыт для предложений по другим дистрибутивам Linux.

  • networking
  • ip-address
  • ip-routing
  • инфраструктура
  • network-design

Большинство сетевых инструментов, таких как ping, имеют возможность выбрать исходный IP-адрес, который они будут использовать для выхода. идущие соединения, например с пингом можно использовать пинг -I IP-B .

Чтобы весь трафик использовал IP-B, вам необходимо настроить основной/первый IP-адрес для интерфейса, на который указывает ваш маршрут по умолчанию, на IP-B. Что делает Linux, так это ищет маршрут для вашего пункта назначения, скажем, 8. 8.8.8, видит, что в этом случае используется маршрут по умолчанию, а затем, если источник пакета не указан, то есть 0.0.0.0, он заменяет его на основной IP-адрес интерфейса, который указывает на этот пункт назначения.

Однако, если вы в конечном итоге хотите добиться более точного контроля исходного IP-адреса для любого трафика, исходящего с вашего сервера, вам следует прочитать HOWTO по расширенной маршрутизации и управлению трафиком Linux, а также найти примеры того, как объединить это с netfilter/iptables fwmark для манипулирования таблицей маршрутизации на основе правил брандмауэра, которые позволят вам направлять трафик категории B через маршрут по умолчанию, для которого IP-адрес B установлен в качестве источника, и так далее.

Ключевые слова для поиска здесь — маршрутизация на основе политик (PBR).

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

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

This entry was posted in Популярное