мая 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
QR Code - Take this post Mobile!
Use this unique QR (Quick Response) code with your smart device. The code will save the url of this webpage to the device for mobile sharing and storage.
Понравилось? Поделитесь:

:

Sorry, the comment form is closed at this time.