Страница 1 из 1

Re: dst-limit и защита от DoS

Добавлено: 26 май 2017, 12:51
Antares
Вопрос решился переходом на последнюю версию RouterOS для CHR. Спасибо за ответы!

Re: dst-limit и защита от DoS

Добавлено: 21 июн 2017, 13:29
Antares
Предлагаю несколько усовершенствований (исходя из своего опыта).
1. Добавить
add chain=input connection-state=new action=jump jump-target=block-ddos
поскольку атаковать могут и сам роутер.
2. При необходимости создать адрес-лист, в который включить адреса, создающие большое кол-во легитимных соединений. И исключить этот лист из проверки. То есть, получаем что-то типа такого:
add chain=forward action=jump connection-state=new jump-target=block-ddos src-address-list=!exclude_from_ddos
3. Перенести непосредственно drop в секцию Raw, что исключит все дропающиеся пакеты из трэкинга, соответственно снизится нагрузка на процессор во время атаки.

Re: dst-limit и защита от DoS

Добавлено: 21 июн 2017, 15:27
Chupaka
1. Для самого роутера я предпочитаю реализовывать куда более жёсткие правила. Приведённые выше - слегка защищают неопределённый сервис. Для критической инфраструктуры доступ должен быть только из доверенной зоны :)

2. Можно и так, я для большей ясности и компоновки однотипного рядом перед dst-limit-правилом в цепочке block-ddos просто добавляю action=return для адресов-исключений.

3. Резонно. Просто на момент написания правил таблица Raw в RouterOS ещё не была доступна :)

Re: dst-limit и защита от DoS

Добавлено: 03 авг 2017, 21:44
promychev
Здравствуйте, хотел сообщить по поводу блокировок легитимных пользователей. Мучился я долго пришел к выводу. Есть другой способ, а есть этот же "Первый". в dst-limit надо прописывать dst-limit=32,32 как раз для apache2 сервера. В гайде Chupaka идет DROP адресов не соответствующих dst-limit, но я так же использовал tarpit и разницы почти никакой (только нагрузка на CPU).
Суть не в самой блокировке или тарпите, а в том что именно этот браст защищает от SYN атак как методов torshammer и GOldenEYe не блокируя настоящих пользователей. Остальные брасты как 50 на 50 блокировали даже запросы на check-host.net
Гайд Chupaka написал хороший - молодец, прочел его на форуме EU.
"Второй" способ - надо включить функцию TCP SYNcookie ,но с первым методом он снова блокирует легитимных посетителей.
Правила идут такие :

/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

Что бы микротик не блочил уже легитимных подключенных пользователей ( в обоих случаях желательно прописать эти правила )
/ip firewall filter
add chain=forward connection-state=established comment="allow established connections"
add chain=forward connection-state=related comment="allow related connections"
add chain=forward connection-state=invalid action=drop comment="drop invalid connections"

Тестировал я работу Mikrotik OS на VPS сервере, отключит CISCO ASA оборудование что бы проверить оптимальность фильтрации трафика на Mikrotik. Основан на кернел - так что работать очень удобно за исключением Packet Sniffer. Правда не много функционален, но очень удобный.
В общем - самая геморойная защита - это защита http от syn флуда, защита игровых серверов проще ( ограничение по длине или размеру пакета
или тот же Layer7 protocol). Описывайте свой опыт, всегда рад поделиться своим опытом.

Re: dst-limit и защита от DoS

Добавлено: 04 авг 2017, 09:20
Chupaka
promychev писал(а): 03 авг 2017, 21:44 limit=400,5
здесь надо быть осторожным: это ограничение на общее число пакетов, а не для каждого пользователя

ну и последние модные веяния - это использование таблицы Firewall RAW вместо Firewall Filter, чтобы не беспокоить Connection Tracking

Re: dst-limit и защита от DoS

Добавлено: 05 авг 2017, 17:26
promychev
Снова здравствуйте. Провел я несколько тестирований с сервера debian на котором стоял torshammer и GoldenEye L7, запускал атаки по apache2 который роутер защищал и понял то - что во время старта атаки, роутер не успевает обработать все запросы разом, и из-за сервера апач2 он все запросы видит такими (что привыщают наш dst-limit). Так как нормального анализатора пакетов в Mikrotik к сожалению, пришлось все таки с ним работать на скорую руку. Начал замечать что изначально TTL ботов < 63 а TTL нормального посетителя >100, так как бот запрашивает определенный контент. Подумал подумал, ок пусть правила Chupaka видят меня и положительных ботов как "ddoser" и закидывают меня в return. Но в правило дроп, я прописал проверку на бота на скорую руку. Кстати боты torshammer и GoldenEye так же и xml-rpc бьют за каждый запрос 50-51 TTL.
В итоге что получилось.
Chain = forward , dst port = tcp 80-443 , Conection State = new | Аction = jump , jump-Target=block-ddos

Chain = forward , dst port = tcp 80-443 , Conection State = new | Src. address list = ddoser, Dst. address list = ddosed , TTL = less than 63 Аction = drop

Chain = block ddos , dst port = tcp 80-443 , Dst. Limit 10s 50 brust limit by dst.address expire = 50.00 , Аction = return

Chain = block ddos , dst port = tcp 80-443 , Action = add src. address list to = ddoser timeout=00.10.00

Chain = block ddos , dst port = tcp 80-443 , Action = add dst. address list to = ddosed timeout=00.10.00

Если есть у кого идеи по лучше, пишите.

Re: dst-limit и защита от DoS

Добавлено: 07 авг 2017, 08:09
Chupaka
Есть подозрение, что TTL у ботов такой маленький потому, что они работают на Linux (default TTL = 63), а вы под "нормальным" понимаете Windows (default TTL = 128). В частности, под признак "TTL ниже 63" попадают мобильные телефоны (как минимум Андроиды и Айоси)

Ну и порт вы явно хотели писать не диапазоном (80-443, куда попадают все 81,82 и прочие 440), а через запятую: "80,443"

Re: dst-limit и защита от DoS

Добавлено: 08 авг 2017, 03:08
promychev
Chupaka писал(а): 07 авг 2017, 08:09 Есть подозрение, что TTL у ботов такой маленький потому, что они работают на Linux (default TTL = 63), а вы под "нормальным" понимаете Windows (default TTL = 128). В частности, под признак "TTL ниже 63" попадают мобильные телефоны (как минимум Андроиды и Айоси)

Ну и порт вы явно хотели писать не диапазоном (80-443, куда попадают все 81,82 и прочие 440), а через запятую: "80,443"
Да я заметил что андроиды попадают под блокировку. Но если прописать в цепочке проверку на dst. limit , то думаю после этого проблем быть не должно. Они пройдут проверку на TTL, естественно попадают в список под подозрение - дальше проверяются по Dst. limit.
Единственное что мы с вами обсудили в ЛС, это защита GET/POST для Apache2 сервера.
В общем добавил правила на размер пакетов и на con. limit.
Все работает. Надо будет потом написать полный гайд с вашего позволения. Ну и в добавок могли бы загрузить для пользователей Router OS 5.20 c ключем активации лицензии.
Еще хотелось бы поднять тему для Layer7 protocol и regexp для них (под веб серверы, игровые серверы и всякие приложения)
Еще раз спасибо за форум и его развитие.

Re: dst-limit и защита от DoS

Добавлено: 08 авг 2017, 08:18
Chupaka
promychev писал(а): 08 авг 2017, 03:08 Ну и в добавок могли бы загрузить для пользователей Router OS 5.20 c ключем активации лицензии.
Спасибо, но распространять старые неактуальные версии у меня рука не поднимется =) А если хочется поиграться - есть бесплатный Cloud Hosted Router, который можно развернуть на многих гипервизорах и VDS'ах. По-моему, ломать RouterOS уже давно не очень актуально

Re: dst-limit и защита от DoS

Добавлено: 05 окт 2017, 18:14
promychev
Chupaka писал(а): 21 июн 2017, 15:27 1. Для самого роутера я предпочитаю реализовывать куда более жёсткие правила. Приведённые выше - слегка защищают неопределённый сервис. Для критической инфраструктуры доступ должен быть только из доверенной зоны :)

2. Можно и так, я для большей ясности и компоновки однотипного рядом перед dst-limit-правилом в цепочке block-ddos просто добавляю action=return для адресов-исключений.

3. Резонно. Просто на момент написания правил таблица Raw в RouterOS ещё не была доступна :)
Здравствуйте чупака, на сколько я знаю в RAW нет функции connection state = а что означает что нельзя будет написать доп проверку на легитимных пользователей для connection state = new.

Re: dst-limit и защита от DoS

Добавлено: 06 окт 2017, 09:43
Chupaka
Да, connection-state в RAW отсутствует. Как вариант - проверять пакеты TCP SYN, начинающие новое TCP-соединение. С UDP - думать отдельно.

С другой стороны, если в RAW делать только drop, а всю логику оставить в том же forward - то там всё это будет. Таким образом, в RAW уничтожаются заведомо вредные пакеты, а уже нормальные и подозрительные идут в Connection Tracking для полноценной обработки.