Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.



Iptables - ограничение количества подключений с IP

Рубрика: Shell -> Firewall
Метки: |
Вторник, 9 февраля 2010 г.
Просмотров: 24758
Подписаться на комментарии по RSS


В данной статье мы рассмотрим как можно ограничить количество подключений с одного 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   

 

 

Интересные ссылки:

Давно хочу обновить себе ванную, и вот наконец пришла пора. Уже пару дней сижу и выбираю, особенно понравились гидромассажные ванны, да и цена вообщем не смертельна для кошелька.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)