Linux: IpTables ограничиваем количество соединений с одного ipОчень часто мы сталкиваемся с необходимостью ограничить количество соединений с одного хоста. Эта задача актуальна для администраторов, которые не хотят получить переполнение стека tcp/ip из-за пользователя который решил включить торрент клиент и забыл выключить DHT.

[ad#ad-2]
IpTables синтаксис команды ограничения соединений:

/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 исспользуя IpTables

/sbin/iptables  -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 с одного ip исспользуя IpTables

/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

Пример ограничения количества соединений на порт http с с одной сети исспользуя IpTables

/sbin/iptables  -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

Пример ограничения количества соединений на порт http с одного ip если он отсылает более 10 пакетов в 100 секунд исспользуя IpTables

#!/bin/bash
IPT=/sbin/iptables
# Max connection in seconds
SECONDS=100
# Max connections per IP
BLOCKCOUNT=10
# ....
# ..
# default action can be DROP or REJECT
DACTION="DROP"
$IPT -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds ${SECONDS} --hitcount ${BLOCKCOUNT} -j ${DACTION}
# ....
# ..

Пример проверки работоспособности указанных правил IpTables

#!/bin/bash
ip="10.10.10.10"
port="80"
for i in {1..100}
do
  # коннектимся, ничего не делаем  и выходим :) 
  echo "exit" | nc ${ip} ${port};
done



Similar Posts:

Теги:
 

2 Responses to Linux: IpTables ограничиваем количество соединений с одного ip

  1. Billgates:

    исправте ошибку в скрипте где
    IPT=/sbin/iptales
    пропустили букву b

  2. admin:

    спасибо! поправили!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">