Syn sent mikrotik что это

от admin

Name already in use

mikrotik-mtcna / m6-firewall.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink
  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

Принципы брандмауэра (фаерволла)

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

Как работает брандмауэр

  • Брандмауэр работает по правилам. Они состоят из двух частей
    • Совпадение: условия, которые нужны для совпадения
    • Действие: что я буду делать, когда у меня будет совпадение
    • MAC-адрес источника
    • IP-адреса (сеть или список) и типы адресов (широковещательный, локальный, многоадресный, одноадресный)
    • Порт или диапазон портов
    • Протокол
    • Параметры протокола (поля типа и кода ICMP, флаги TCP, параметры IP)
    • Интерфейс: пакет приходит от или через
    • Байт DSCP
    • И многое другое…

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

    Хорошо быть знакомым с ними, чтобы знать, что происходит с пакетами и в каком порядке

    Для этого курса мы будем держать его простым

    Потоки пакетов, пример*

    • Сложно? Добро пожаловать в клуб!
    • Этот следующий пример может помочь проиллюстрировать простой поток пакетов: Pinging a (несуществующий узел) на интерфейсе локальной сети маршрутизатора через его интерфейс WAN
      • IP узла, выполняющего пинг : 172.16.2.100
      • IP-адрес узла, который пингуется : 192.168.3.2
      • IP WAN маршрутизатора (ether1): 192.168.0.3

      Ping in

      Reply out

      Потоки пакетов, объяснение примера

      Отслеживание соединений и состояний

      • Отслеживание соединений управляет информацией обо всех активных соединениях.
      • Прежде чем создавать фильтры брандмауэра (или правила), полезно знать какой трафик проходит через ваш маршрутизатор. Отслеживание соединений покажет вам именно это.
      • Если вы отключите отслеживание по какой-либо причине, следующие функции не будут работать:
        • NAT
        • Брандмауэр
          • connection-bytes connection-mark
          • connection-type connection-state
          • connection-limit connection-rate
          • layer7-protocol p2p
          • new-connection-mark tarpit

          Состояния соединения являются (предполагая, что клиент-A инициирует соединение с клиентом-B):

          • Использование отслеживания соединений позволяет отслеживать соединения UDP, даже если UDP не имеет состояния. Таким образом, брандмауэр MikroTik может фильтровать по UDP «состояниям».

          Структура: цепочки и действия

          Цепочка — это группировка правил, основанная на одних и тех же критериях. Существует три цепочки по умолчанию, основанные на предопределенных критериях.

          • Input: Трафик идущий к маршрутизатору
          • Forward: Трафик идущий через маршрутизатор
          • Output: Трафик, исходящий от маршрутизатора

          Вы можете иметь пользовательские цепочки, основанные на пользовательских критериях. Например:

          • Весь icmp-трафик
          • Трафик приходящий из Ether2 и идущий к интерфейсу моста «LAN»

          Определенные пользователем цепочки создаются путем выбора желаемых «сопоставлений» и выбора действия «прыжок». Вы дадите определяемой пользователем цепочке имя в поле «jump target» (цель прыжка).

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

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

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

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

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

          Фильтры брандмауэра в действии

          Основная философия безопасности

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

            Основные советы и рекомендации

            • Перед настройкой или изменением правил активируйте «safe mode».
            • После настройки или изменения правил протестируйте их с помощью такого инструмента, как ShieldsUP.(https://www.grc.com/x/ne.dll?bh0bkyd2)
              • Это даст вам отчет о слабых сторонах.
              • Как только вы поймете их и согласитесь с ними, введите их в маршрутизатор.
              • Если вы новичок в безопасности, это не поможет вам стрелять во всех направлениях. Делайте основы, но делайте их хорошо.
              • Просто не ждите слишком долго, чтобы добавить следующие правила. Одно дело — хорошо работать, но совсем другое — оставлять дыры открытыми, потому что вы хотите проверить первые правила.
              • Перед выполнением «действия» над пакетом его необходимо идентифицировать.
              • Совпадений много!

              • Как только пакет сопоставлен с правилом, к нему будет применено действие.
              • Фильтры брандмауэра MikroTik имеют 10 действий.

              Защита вашего маршрутизатора (вход)

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

              Защита вашего маршрутизатора (пример)

              • Ниже приведены предложения!
                • Предположим, что ether01 подключен к WAN (ненадежной сети), и мы используем политику «доверяй внутреннему».
                  • Принимайте ICMP эхо-ответы (Возможно, вы захотите проверить связь с сервером в Интернете. Это было бы полезно для вас, чтобы получать ответы!)
                  • Отбрасывайте эхо-запросы icmp (Вы не хотите чтобы другие пинговали вас. Оставайтесь под радаром!)
                  • Принимайте весь «established» и «related» входящий трафик (Вам понадобятся ответы на все запросы маршрутизатора, такие как запросы NTP и DNS)
                  • Отбрасывайте весь «invalid» входящий трафик (Когда маршрутизатор получает то, что он не запрашивал)
                  • Протоколируйте остальной входящий трафик (Я пропустил что-нибудь важное?)
                  • Отбрасывайте остальной входящий трафик (Я хочу быть в безопасности!)

                  Защита ваших клиентов (forward)

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

                  Защита ваших клиентов (пример)

                  • Ниже приведены предложения!
                    • Опять же, предположим, что ether01 подключен к WAN (ненадежной сети), и мы используем политику «доверяй внутреннему».
                      • Принимаем все «established» и «related» проходящий трафик (вам понадобятся ответы на все, что вы запросили, например HTTP и запросы электронной почты)
                      • Отбрасываем весь «invalid» проходящий трафик (Все, что вы получаете, вы не запрашивали)
                      • Протоколируем остаток прямого трафика (Я пропустил что-нибудь важное?)
                      • Отбросим остальную часть проходящего трафика (Я хочу быть в безопасности!)

                      Как это выглядит в конце концов

                      Синтаксис фильтра брандмауэра

                      Просмотр существующих правил фильтрации -/ip firewall filter print (производит более четкий, читаемый вывод)

                      • /ip firewall filter export (показывает полный синтаксис)

                      Создание различных правил (от /ip firewall filter)

                      • add chain=input comment=»Established-Related (in)» connection-state=established in-interface=ether01
                      • add chain=forward comment=»Established-Related (fwd)» connection-state=established in-interface=ether01
                      • add action=log chain=input comment=»===CATCH-ALL==» in-interface=ether01 log-prefix=»CATCH-ALL(in)»
                      • add action=drop chain=input in-interface=ether01
                      • add action=add-dst-to-address-list address-list=temp-list address-list-timeout=3d1h1m1s chain=input protocol=tcp src-address=172.16.2.0/24

                      Списки адресов — это группы IP-адресов.

                      Их можно использовать для упрощения правил фильтрации.

                      • Например, вы можете создать 100 правил для блокировки 100 адресов, или!!
                      • Вы можете создать одну группу с этими 100 адресами и создать только одно правило фильтра.

                      Группы (списки адресов) могут представлять

                      • IT-администраторы с особыми правами
                      • Хакеры
                      • Что-нибудь еще ты можешь придумать…

                      Их можно использовать в фильтрах брандмауэра, средствах mangle и NAT.

                      Создание адрес-листов может быть автоматизировано с помощью действия add-src-to-address-list или add-dst-to-address-list в фильтре брандмауэра, mangle или NAT объектов.

                      Mikrotik firewall: защита от DDOS атак и SYN-flood

                      Целью DDoS-атаки является вывод из строя маршрутизатора. Для выстраивания защиты от DDoS-атак необходимо понимать как они устроены. На данный момент наиболее известные типы DDoS-атак основаны на ICMP-flood, UDP-flood, HTTP-flood и SYN-flood и. Названия этих атак говорят о способе воздействия на сетевое устройство и какой протокол при этом используется.

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

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

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

                      Виды DDoS-атак

                      Рассмотрим более подробно виды DDoS-атак, чтобы понять каким образом настраивать firewall mikrotik.

                      ICMP-flood

                      ICMP-flood — отправка большего числа поддельных icmp-запросов (многим известно как ping). ICMP-пакеты не требуют подтверждения, в отличии от TCP и поэтому трудно отделить мусорный трафик от легитимного.

                      В случае использования правила «нормально закрытого firewall» никаких дополнительных действий предпринимать не надо — весь icmp-трафик будет отклонен, если он отдельно не разрешен. Чтобы позволить «пинговать» роутер с определенных адресов нужно создать разрешающее правило.

                      UDP-flood

                      UDP-flood схож с icmp-flood в том плане, что его пакеты так же не требуют подтверждения и отсутствует контроль над процессом обмена данными.

                      Бороться с udp-flood можно так же как и с icmp-flood путем полной блокировки трафика, если это допустимо в ваших условиях. Стоит отдельно отметить, что протокол UDP часто используется в VoIP телефонии. Если вы используете подключение к АТС из интернета, то это необходимо учесть и разрешить подключения на необходимые порты, обычно это порт 5060.

                      SYN-flood

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

                      Мы не можем просто блокировать TCP-соединения как это было с icmp и udp т.к это основной сетевой протокол. Но мы можем выявлять и блокировать случаи, когда соединения слишком много.

                      Обнаружение DDoS и защита от атак.

                      Для настройки firewall Mikrotik на обнаружение и защиты от DDOS-атак взята за основу статья на официальном Wiki Mikrotik.

                      Для того, чтобы выявить DDoS атаку нам необходимо захватывать все новые соединения и перенаправлять их в отдельную цепочку chain=detect-ddos.

                      Далее создаем новую цепочку chain=ddos, в которой для каждой пары хостов «SrcIP:DstIP» разрешаем определенное количество соединений. Для избежания блокирования важных хостов, например DNS-сервер с адресом 192.168.0.1, можно добавить правило, которое будет возвращать соединения с сервером в стандартную цепочку.

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

                      Здесь стоит обратить внимание на параметр dst-limit. Первое значение rate, второе burst. Для burst задано значение 42 и интервал в 1 секунду — это значит, что в течении первой секунды количество соединений может быть увеличено до 42. Значение burst не должно быть меньше rate, потому-что в этом случае правило будет пропускать в первую секунду меньшее количество соединений и по истечении секунды сработает Rate.

                      Если говорить простым языком, то Burst это одноразовое разрешение на превышение скорости. А превышение скорости не может быть меньше той скорости, которую вы установили как норму — Rate.

                      Сейчас нам надо обработать те соединения, которые превысили заданные лимиты — их мы добавим в address-list ‘ddoser’ (атакующий) и ‘ddosed’ (атакуемый). Тайм-аут жизни списка 10 минут или определите сами для себя.

                      Теперь мы можем блокировать хосты ведущие DDoS атаку на основе созданных списков. Сбрасывать пакеты можно в стандартной цепочке firewall таким образом:

                      Либо создать правило в Raw, чтобы отбрасывать пакеты до их маршрутизации и снизить нагрузку на процессор.

                      Защита от SYN-flood.

                      Для защиты конкретно от SYN-flood атак правила настраиваются примерно таким же образом, но нужно будет указать protocol=tcp и tcpflag=syn. То есть правило для переброса в цепочку ddos для дальнейшей обработки будет выглядеть примерно так:

                      P.S. По-моему тема защиты Mikrotik от DDoS недостаточно подробно рассмотрена в рунете на данный момент. Поэтому жду вопросов, предложений и комментариев от вас.

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

                      10 thoughts on “ Mikrotik firewall: защита от DDOS атак и SYN-flood ”

                      Думаю, в некоторых случаях требуется более глубокий анализ траффика.

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

                      Имеется RB4011. Защита от DDoS настроена по тому же принципу, что описан у Вас — сбор адресов в листы и дроп в raw (дроп в filter не годится, потому как даже при не самой серьёзной атаке процессор уходит в 100%). В большинстве случаев работает отлично. Даже мой домашний hAP ac2 таким образом переваривает большинство атак до 900 Мбит/с, оставляя ещё сотку для выхода в интернет (у меня дома гигабит). Процессор при этом нагружен всего в 25-35%. Но.

                      Столкнулся с атакой, которая для КАЖДОГО пакета подменяет src-address. В итоге простая атака всего в 50000 пакетов в секунду забивает адрес-лист тремя миллионами адресов за минуту. На RB4011 гигабайт оперативки заканчивается, kernel crash, ребут. Конечно, вопрос с оперативкой решается ограничением времени жизни листа десятью секундами, но в целом задачу это не решает, т.к. в raw попадают только пакеты начиная со второго от адрес-листа. А в случае с подменой исходящего адреса для каждого пакета все пакеты являются первыми. Как следствие — вся атака попадает в filter, процессор уходит в 100%, роутер лежит, цель атаки достигнута при ширине атаки всего в 200 Мбит/с.

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

                      1. admin Автор записи 26.06.2020 в 15:35

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

                      я понимаю что это перевод вот этого https://wiki.mikrotik.com/wiki/DDoS_Detection_and_Blocking , но,
                      jump-target=ddos
                      add chain=detect-ddos
                      имя цепочки почему не совпадает? в оригинале всё совпадает.

                      1. admin Автор записи 19.08.2020 в 17:48

                      Благодарю за указание на допущенную ошибку в имени цепочки — будет исправлено.

                      Добрый день. Читаю, не сходится.
                      Вы пишете правило:
                      add chain=detect-ddos dst-limit=32,42,src-and-dst-addresses/1s action=return

                      Описываете функцию как:
                      Здесь стоит обратить внимание на параметр dst-limit. Первое значение rate, второе burst. Для burst задано значение 42 и интервал в 1 секунду — это значит, что в течении первой секунды количество соединений может быть увеличено до 42. Значение burst не должно быть меньше rate, потому-что в этом случае правило правило будет пропускать в первую секунду меньшее количество соединений и по истечении секунды сработает Rate.

                      Вопрос: Ошибка где — вместо 32 надо ставить 1 или Вы ведете речь про 32 секунды, тгда при чем здесь 1 секунда?

                      Как функцию-то правильно писать?

                      1. admin Автор записи 04.09.2020 в 06:26

                      Здравствуйте.
                      dst-limit=32,42,src-and-dst-addresses/1s
                      В конце dst-limit указан интервал /1s.
                      32 — rate, 42 — burst.
                      32 и 42 это количество соединений разрешенных в этот интервал.

                      Добрый вечер. Прошу ногами не пинать, Микротик только начинаю осваивать. Прописал все команды как в статье, но фильтр не срабатывает. Такое впечатление что он определяет пакеты которые атакуют, и сервер который атакует, но пакеты не отбрасывает. Что проделываю не так? Если нужны какие то данные могу предоставить.

                      1. admin Автор записи 30.10.2020 в 06:59

                      Привет. Давай для начала правила твои посмотрим.
                      В консоли набери /ip/firewall/filter export file=filter.rsc
                      Файл скачай и отправь на почту info@soft-setup.ru

                      А есть примеры для настройки аналогичной защиты для ipv6?

                      1. admin Автор записи 08.05.2022 в 08:38

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

                      Теория:Протоколы:TCP

                      TCP (transmission control protocol — протокол управления передачей) — один из основных протоколов передачи данных интернета, предназначенный для управления передачей данных. Сети и подсети, в которых совместно используются протоколы TCP и IP называются сетями TCP/IP.

                      В стеке протоколов IP TCP выполняет функции протокола транспортного уровня модели OSI.

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

                      Реализации TCP обычно встроены в ядра ОС. Существуют реализации TCP, работающие в пространстве пользователя.

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

                      Содержание

                      Заголовок сегмента TCP

                      Структура заголовка

                      Бит 0 — 3 4 — 9 10 — 15 16 — 31
                      0 Порт источника Порт назначения
                      32 Порядковый номер
                      64 Номер подтверждения
                      96 Длина заголовка Зарезервировано Флаги Размер Окна
                      128 Контрольная сумма Указатель важности
                      160 Опции (необязательное, но используется практически всегда)
                      160/192+ Данные

                      Порт источника, Порт назначения

                      Эти 16-битные поля содержат номера портов — числа, которые определяются по специальному списку.

                      Порт источника идентифицирует приложение клиента, с которого отправлены пакеты. Ответные данные передаются клиенту на основании этого номера.

                      Порт назначения идентифицирует порт, на который отправлен пакет.

                      Порядковый номер

                      Порядковый номер выполняет две задачи:

                      1. Если установлен флаг SYN, то это изначальный порядковый номер — ISN (Initial Sequence Number), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер, равный ISN + 1.
                      2. В противном случае, если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот порядковый номер

                      Поскольку поток TCP в общем случае может быть длиннее, чем число различных состояний этого поля, то все операции с порядковым номером должны выполняться по модулю 2 32 . Это накладывает практическое ограничение на использование TCP. Если скорость передачи коммуникационной системы такова, чтобы в течение MSL (максимального времени жизни сегмента) произошло переполнение порядкового номера, то в сети может появиться два сегмента с одинаковым номером, относящихся к разным частям потока, и приёмник получит некорректные данные.

                      Номер подтверждения

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

                      Длина заголовка (смещение данных)

                      Это поле определяет размер заголовка пакета TCP в 4-байтных (4-октетных) словах. Минимальный размер составляет 5 слов, а максимальный — 15, что составляет 20 и 60 байт соответственно. Смещение считается от начала заголовка TCP.

                      Зарезервировано

                      Зарезервировано (6 бит) для будущего использования и должно устанавливаться в ноль. Из них два (5-й и 6-й) уже определены:

                      • CWR (Congestion Window Reduced) — Поле «Окно перегрузки уменьшено» — флаг установлен отправителем, чтобы указать, что получен пакет с установленным флагом ECE (RFC 3168)
                      • ECE (ECN-Echo) — Поле «Эхо ECN» — указывает, что данный узел способен на ECN (явное уведомление перегрузки) и для указания отправителю о перегрузках в сети (RFC 3168)

                      Флаги (управляющие биты)

                      Это поле содержит 6 битовых флагов:

                      • URG — поле «Указатель важности» задействовано (Urgent pointer field is significant)
                      • ACK — поле «Номер подтверждения» задействовано (Acknowledgement field is significant)
                      • PSH — (Push function) инструктирует получателя протолкнуть данные, накопившиеся в приёмном буфере, в приложение пользователя
                      • RST — оборвать соединения, сбросить буфер (очистка буфера) (Reset the connection)
                      • SYN — синхронизация номеров последовательности (Synchronize sequence numbers)
                      • FIN (final, бит) — флаг, будучи установлен, указывает на завершение соединения (FIN bit used for connection termination).

                      Размер окна

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

                      Контрольная сумма

                      Поле контрольной суммы — это 16-битное дополнение к сумме всех 16-битных слов заголовка(включая псевдозаголовок) и данных. Если сегмент, по которому вычисляется контрольная сумма, имеет длину не кратную 16-ти битам, то длина сегмента увеличивается до кратной 16-ти, за счет дополнения к нему справа нулевых битов заполнения. Биты заполнения (0) не передаются в сообщении и служат только для расчёта контрольной суммы. При расчёте контрольной суммы значение самого поля контрольной суммы принимается равным 0.

                      Указатель важности

                      16-битовое значение положительного смещения от порядкового номера в данном сегменте. Это поле указывает порядковый номер октета, которым заканчиваются важные (urgent) данные. Поле принимается во внимание только для пакетов с установленным флагом URG.

                      Опции

                      Могут применяться в некоторых случаях для расширения протокола. Иногда используются для тестирования. На данный момент в опции практически всегда включают 2 байта NOP (в данном случае 0x01) и 10 байт, задающих timestamps. Вычислить длину поля опции можно через значение поля смещения.

                      Механизм действия протокола

                      В отличие от традиционной альтернативы — UDP, который может сразу же начать передачу пакетов, TCP устанавливает соединения, которые должны быть созданы перед передачей данных. TCP соединение можно разделить на 3 стадии:

                      • Установка соединения
                      • Передача данных
                      • Завершение соединения

                      Состояния сеанса TCP

                      Состояния сеанса TCP
                      CLOSED Начальное состояние узла. Фактически фиктивное
                      LISTEN Сервер ожидает запросов установления соединения от клиента
                      SYN-SENT Клиент отправил запрос серверу на установление соединения и ожидает ответа
                      SYN-RECEIVED Сервер получил запрос на соединение, отправил ответный запрос и ожидает подтверждения
                      ESTABLISHED Соединение установлено, идёт передача данных
                      FIN-WAIT-1 Одна из сторон (назовём её узел-1) завершает соединение, отправив сегмент с флагом FIN
                      CLOSE-WAIT Другая сторона (узел-2) переходит в это состояние, отправив, в свою очередь сегмент ACK и продолжает одностороннюю передачу
                      FIN-WAIT-2 Узел-1 получает ACK, продолжает чтение и ждёт получения сегмента с флагом FIN
                      LAST-ACK Узел-2 заканчивает передачу и отправляет сегмент с флагом FIN
                      TIME-WAIT Узел-1 получил сегмент с флагом FIN, отправил сегмент с флагом ACK и ждёт 2*MSL секунд, перед окончательным закрытием соединения
                      CLOSING Обе стороны инициировали закрытие соединения одновременно: после отправки сегмента с флагом FIN узел-1 также получает сегмент FIN, отправляет ACK и находится в ожидании сегмента ACK (подтверждения на свой запрос о разъединении)

                      Установка соединения

                      Процесс начала сеанса TCP (также называемый «рукопожатие» (handshake)), состоит из трёх шагов.

                      1. Клиент, который намеревается установить соединение, посылает серверу сегмент с номером последовательности и флагом SYN.

                      • Сервер получает сегмент, запоминает номер последовательности и пытается создать сокет (буферы и управляющие структуры памяти) для обслуживания нового клиента.
                        • В случае успеха сервер посылает клиенту сегмент с номером последовательности и флагами SYN и ACK, и переходит в состояние SYN-RECEIVED.
                        • В случае неудачи сервер посылает клиенту сегмент с флагом RST.

                        2. Если клиент получает сегмент с флагом SYN, то он запоминает номер последовательности и посылает сегмент с флагом ACK.

                        • Если он одновременно получает и флаг ACK (что обычно и происходит), то он переходит в состояние ESTABLISHED.
                        • Если клиент получает сегмент с флагом RST, то он прекращает попытки соединиться.
                        • Если клиент не получает ответа в течение 10 секунд, то он повторяет процесс соединения заново.

                        3. Если сервер в состоянии SYN-RECEIVED получает сегмент с флагом ACK, то он переходит в состояние ESTABLISHED.

                        • В противном случае после тайм-аута он закрывает сокет и переходит в состояние CLOSED.

                        Процесс называется «трёхэтапным согласованием» (three way handshake), так как несмотря на то что возможен процесс установления соединения с использованием четырёх сегментов (SYN в сторону сервера, ACK в сторону клиента, SYN в сторону клиента, ACK в сторону сервера), на практике для экономии времени используется три сегмента.

                        Пример базового 3-этапного согласования:

                        В строке 2 TCP A начинает передачу сегмента SYN, говорящего об использовании номеров последовательности, начиная со 100. В строке 3 TCP B передает SYN и подтверждение для принятого SYN в адрес TCP A. Надо отметить, что поле подтверждения показывает ожидание TCP B приёма номера последовательности 101, подтверждающего SYN с номером 100.

                        В строке 4 TCP A отвечает пустым сегментом с подтверждением ACK для сегмента SYN от TCP B; в строке 5 TCP B передает некоторые данные. Отметим, что номер подтверждения сегмента в строке 5 (ACK=101) совпадает с номером последовательности в строке 4 (SEQ=101), поскольку ACK не занимает пространства номеров последовательности (если это сделать, придется подтверждать подтверждения — ACK для ACK).

                        Существуют экспериментальные расширения протокола TCP, сокращающие количество пакетов при установлении соединения, например TCP Fast Open. Ранее также существовало расширение T/TCP. Для прозрачного шифрования данных предлагается использовать расширение tcpcrypt.

                        Передача данных

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

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

                        В некоторых случаях передающее приложение может явно затребовать протолкнуть данные до некоторой последовательности принимающему приложению, не буферизируя их. Для этого используется флаг PSH. Если в полученном сегменте обнаруживается флаг PSH, то реализация TCP отдает все буферизированные на текущий момент данные принимающему приложению. «Проталкивание» используется, например, в интерактивных приложениях. В сетевых терминалах нет смысла ожидать ввода пользователя после того, как он закончил набирать команду. Поэтому последний сегмент, содержащий команду, обязан содержать флаг PSH, чтобы приложение на принимающей стороне смогло начать её выполнение.

                        Завершение соединения

                        Завершение соединения можно рассмотреть в три этапа:

                        1. Посылка серверу от клиента флага FIN на завершение соединения.
                        2. Сервер посылает клиенту флаги ответа ACK , FIN, что соединение закрыто.
                        3. После получения этих флагов клиент закрывает соединение и в подтверждение отправляет серверу ACK , что соединение закрыто.

                        Известные проблемы

                        Максимальный размер сегмента

                        TCP требует явного указания максимального размера сегмента (MSS) в случае, если виртуальное соединение осуществляется через сегмент сети, где максимальный размер блока (MTU) менее, чем стандартный MTU Ethernet (1500 байт).

                        В протоколах туннелирования, таких как GRE, IPIP, а также PPPoE MTU туннель меньше, чем стандартный, поэтому сегмент TCP максимального размера имеет длину пакета больше, чем MTU. Это приводит к фрагментации и уменьшению скорости передачи полезных данных. Если на каком-либо узле фрагментация запрещена, то со стороны пользователя это выглядит как «зависание» соединений. При этом «зависание» может происходить в произвольные моменты времени, а именно тогда, когда отправитель использовал сегменты длиннее допустимого размера. Для решения этой проблемы на маршрутизаторах применяются правила Firewall-а, добавляющие параметр MSS во все пакеты, инициирующие соединения, чтобы отправитель использовал сегменты допустимого размера.

                        MSS может также управляться параметрами операционной системы.

                        Обнаружение ошибок при передаче данных

                        Хотя протокол осуществляет проверку контрольной суммы по каждому сегменту, используемый алгоритм считается слабым. Так, в 2008 году ошибка в передаче одного бита, не обнаруженная сетевыми средствами, привела к остановке серверов системы Amazon Web Services.

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

                        Атаки на протокол

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

                        Реализация

                        Псевдозаголовок

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

                        TCP-псевдозаголовок IPv4

                        Биты 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
                        0-31 IP-адрес отправителя (Source address)
                        32-63 IP-адрес получателя (Destination address)
                        64-95 0 0 0 0 0 0 0 0 Протокол (Protocol) Длина TCP-сегмента (TCP length)

                        TCP-псевдозаголовок IPv6

                        • Протокол (Protocol)/Протокол верхнего уровня (Next header) — содержит в себе значение 6 (00000110 в двоичном виде, 0x6 — в шестнадцатеричном) — идентификатор TCP-протокола.
                        • Длина TCP-сегмента (TCP length) — содержит в себе длину TCP-сегмента в байтах (TCP-заголовок + данные; длина псевдозаголовка не учитывается).

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

                        Освобождение от расчёта контрольной суммы

                        Многие реализации стека TCP/IP предоставляют возможности использования аппаратной поддержки для автоматического расчёта контрольной суммы в сетевом адаптере до передачи в сеть или после приёма из сети для верификации. Это может освобождать операционную систему от использования ценных тактов процессора при вычислении контрольной суммы.

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

                        IT Config

                        Настройка cisco, edge core, microtik, dlink, tplink, ubnt, linux, freebsd, mac os. Администрирование и конфигурация.

                        среда, 3 апреля 2013 г.

                        Защита от DoS атак на роутерах Mikrotik и Router OS

                        DoS (отказ в обслуживании) атаки могут привести к перегрузке маршрутизатора. Это означает, что загрузка процессора возрастает до 100%, а маршрутизатор может стать недоступным.

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

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

                        Диагностика DoS атаки на роутере миротик. (TCP SYN flood)

                        Проверяем не слишком ли много связей с SYN-SENT настоящее время?

                        /ip firewall connection print

                        Проверфем не слишком ли много пакетов в секунду происходит через интерфейс?

                        /interface monitor-traffic ether2

                        Проверяем загрузку процессора 100%?

                        /system resource monitor

                        Проверяем колличество подозрительных соединений.

                        Защита от таких атак.

                        Лимит входящих соединений.

                        Если с одного IP адреса подключений больше лимита, то этот IP попадает в «черный список» и в дльнейшем блокируется.
                        /ip firewall filter add chain=input protocol=tcp connection-limit=LIMIT,32 \
                        action=add-src-to-address-list address-list=blocked-addr address-list-timeout=1d

                        Где LIMIT — максимальное количество соединений в определенного IP. Предел должен быть от 100 и выше, так как многие услуги, используют несколько соединений (HTTP, Torrent, и другие P2P-программы).

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

                        /ip firewall filter add chain=input protocol=tcp src-address-list=blocked-addr \
                        connection-limit=3,32 action=tarpit

                        SYN Фильтрация

                        Некоторые расширенные возможности фильтрации может влиять на состояние пакетов TCP.

                        /ip firewall filter add chain=forward protocol=tcp tcp-flags=syn connection-state=new \
                        action=jump jump-target=SYN-Protect comment=»SYN Flood protect» disabled=yes
                        /ip firewall filter add chain=SYN-Protect protocol=tcp tcp-flags=syn limit=400,5 connection-state=new \
                        action=accept comment=»» disabled=no
                        /ip firewall filter add chain=SYN-Protect protocol=tcp tcp-flags=syn connection-state=new \
                        action=drop comment=»» disabled=no

                        «syn limit = 400″ является лимитом пакетов, просто включите правило в цепочке первым для пакетов SYN, чтобы пакеты удалялись (для избежания чрезмерного количества новых подключений)

                        SYN cookies

                        /ip firewall connection tracking set tcp-syncookie=yes

                        Читать:
                        Video keeper что это такое

Похожие статьи