Отправить заявку

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

Это решение, поможет в большом количестве задач, которые рано или поздно возникают перед любым пользователем или администратором, который настраивает фаервол iptables.

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

Например, нам необходимо установить до 50 одновременных соединений на 443 порт веб-сервера с любого IP-адреса.

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

iptables -A INPUT -i eth0 -p tcp --dport 443 -m connlimit --connlimit-mask 0 --connlimit-upto 50 -j ACCEPT

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

  • -p tcp - протокол, который мы используем
  • --dport 443 - порт на сервере, на котором необходимо ограничить количество соединений
  • --connlimit-mask 0 - маска сети. Если указан 0, то правило действует на все IP-адреса (0.0.0.0). Если же задать маску, например, 32 - то ограничения будет действовать для каждого IP-адреса.
  • --connlimit-upto 50 - максимальное допустимое количество одновременных соединений. Когда количество соединений превысит заданное значение в 50 коннектов - пакеты будут отбрасываться.
Другие публикации