Ограничить количество соединений на определенный порт через iptables

Недавно, для целей тестирования возникла необходимость ограничить количество одновременных соединений (со всех ip адресов) на 80 порт.

В моем случае дефолтная политика для iptables — DROP.
Т.е. все сетевые пакеты, для которых не найдены правила, сервером отбрасываются.

Описание

Для того, чтобы этого сделать, можно воспользоваться следующей командой:

sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -m connlimit --connlimit-mask 0 --connlimit-upto 1000 -j ACCEPT

-p tcp — используемый протокол.
—dport 80 — порт на сервере, для которого мы ограничиваем количество соединений.
—connlimit-mask 0 — маска сети. Т.к. 0 — то это правило действует на все ip адреса (0.0.0.0). Если задать маску, например, 32 — то это ограничение будет действовать для каждого конкретного ip адреса. Т.е. с любого IP адреса можно будет установить до 1000 одновременных соединений на 80 порт, но не более.
—connlimit-upto 1000 — максимальное количество соединений, для которых действует это правило. Т.е. если количество соединений превысит заданное значение 1000 — пакеты будут отбрасываться, т.к. дефолтная политика сервера — DROP.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *