мая 222013
 

Отсюда 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.