Существует ли правило для iptables для ограничения суммы пакетов SYN, которые может отправить/24 диапазон дюйм/с?

Как я могу заблокировать все блоки IP класса C, когда они отправляют слишком много пакетов SYN на мой сервер человечности 12.04?

Пример того, что я вижу во время нападения лавинной рассылки SYN:

image

Каждый различный IP только отправляет 1 пакет SYN, таким образом, брандмауэр не блокирует его. Но диапазон 192.132.209.* все вместе отправляют много пакетов SYN в очень маленький период времени.

5
задан 29 March 2017 в 12:39

3 ответа

Я нашел похожее решение. Не совсем то, что я хотел, но очень похоже:

/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT --reject-with tcp-reset

Ограничивает новые соединения tcp (порт 80) до 20 для блока класса C. Я нашел это здесь:
Пример: ограничения класса C

0
ответ дан 29 March 2017 в 12:39

IP-адрес класса C: с 192.0.0.0 по 223.255.255.255.

В этом случае опция --connlimit-mask должна быть 192.0.0.0/3 в нотации CIDR.

Если вы укажете маску 24, она будет применяться также к классам А и В. Вы должны использовать нотацию CIDR, чтобы точно указать класс.

--connlimit-mask 192.0.0.0/24 
0
ответ дан 29 March 2017 в 12:39

Взяв 10.0.0.0/24 в качестве примера, что-то вроде

iptables -A INPUT -p tcp -s 10.0.0.0/24 --syn -m limit --limit 1/s --limit-burst 3 -j RETURN

должно делать эту работу и достаточно информативно, так что я не думаю, что мне нужно объяснение Вот хорошая, легко читаемая статья о том, как предотвратить атаки TCP SYN: Linux Iptables Ограничить количество входящих атак tcp connection / syn-flood . Это объясняет больше о вариантах, и предоставляет более обширный способ (регистрация, отдельная цепочка и т. Д.).

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


В комментариях, которые вы упомянули, вы ищете автоматический способ обнаружения этих блоков IP. Что ж, я должен просто пропустить фильтр адреса источника в команде (-s 10.0.0.0/8), чтобы ограничение распространялось на весь мир.

0
ответ дан 29 March 2017 в 12:39

Другие вопросы по тегам:

Похожие вопросы: