Отсюда http://guruadmin.ru/page/iptables-ogranichenie-kolichestva-podkljuchenij-s-ip
В данной статье мы рассмотрим как можно ограничить количество подключений с одного IP адреса к нашему серверу. В этом нам поможет модуль connlimit, который позволяет ограничить количество параллельных TCP коннектов к серверу с IP адреса, либо блока адресов.
Синтаксис:
Синтаксис используемой поманды следующий:
/sbin/iptables -A INPUT -p tcp --syn --dport $port -m connlimit --connlimit-above N -j REJECT --reject-with tcp-reset # save the changes see iptables-save man page, the following is redhat and friends specific command service iptables save
Пример: Ограничение SSH подключений с IP/хоста
Разрешим только 3 ssh подключения:
/sbin/iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT # save the changes see iptables-save man page, the following is redhat and friends specific command service iptables save
Пример: Ограничим HTTP подключения
Разрешим только 20 http подключений с одного IP (параметр MaxClients в httpd.conf установлен в значение 60):
Внимание! Обратите внимание что в случае больших прокси-серверов или большой сети за натом нам необходимо сделать исключения. Мы можем исключить данные IP с помощью синтаксиса !
/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset # save the changes see iptables-save man page, the following is redhat and friends specific command service iptables save
Уберем для прокси 1.2.3.4 данное ограничение:
/sbin/iptables -A INPUT -p tcp --syn --dport 80 -d ! 1.2.3.4 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset
Пример: Ограничение на подсеть класса C
В данном примере мы ограничим параллельные http запросы для всей сети класса C (сетевая маска содержит 24 бита)
/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT --reject-with tcp-reset # save the changes see iptables-save man page service iptables save
Как я могу протестировать работу iptables?
Используйте следующий shell скрипт для подключения к веб серверу с адресом 202.1.2.3:
#!/bin/bash ip="202.1.2.3" port="80" for i in {1..100} do # do nothing just connect and exit echo "exit" | nc ${ip} ${port}; done
Sorry, the comment form is closed at this time.