URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 11868
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Лимитирование числа запросов в единицу времени через iptables"

Отправлено auto_tips , 22-Июл-05 15:47 
Разрешаем производить только 4 коннекта к 22 порту в течении 60 секунд:

   iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set

   iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent \
      --update --seconds 60 --hitcount 4 -j DROP


URL: http://www.debian-administration.org/articles/187
Обсуждается: http://www.opennet.me/tips/info/874.shtml


Содержание

Сообщения в этом обсуждении
"Лимитирование числа запросов в единицу времени через iptables"
Отправлено CR , 22-Июл-05 15:47 
А ещё ipt_recent-ом удобно ловушки для сканеров делать -- временно блокировать ip-адреса, с которых пытаются ломиться на некоторые порты

"Лимитирование числа запросов в единицу времени через iptable..."
Отправлено bat , 28-Июл-05 14:20 
а можна пример (всмысле скрипт) ???

"Лимитирование числа запросов в единицу времени через iptable..."
Отправлено Heckfy , 28-Июл-08 22:15 
Не могу найти пример, который видел буквально вчера и чуть ли не на опеннете. :-/
А пока посмотри сюда: http://www.opennet.me/openforum/vsluhforumID3/41732.html#32

А то, что я потерял, содержало строчку для открытия нужного порта по стуку в другой и строку для закрытия соединений на второй по стуку в третий порт.

:-/


"Лимитирование числа запросов в единицу времени через iptable..."
Отправлено Lombre , 27-Янв-10 16:10 
Защищаем SSH при помощи технологии "Port Knocking"    [исправить]
Реализация идеи динамического открытия доступа к 22 порту, при предварительном
обращении telnet-ом на определенный сетевой порт (в примере 333 - открыть
доступ и 334 - закрыть). Идея реализована средствами iptables, без привлечения
дополнительных утилит и анализаторов логов.

   # Создаю цепочку с именем SSH
   iptables -N SSH
   # Правило по умолчанию в INPUT - DROP
   iptables -P INPUT DROP
   # Всё что пришло на 22 порт - в цепочку SSH
   iptables -A INPUT -p tcp --dport 22 -j SSH
   # Всё что пришло на 333 порт - в цепочку SSH
   iptables -A INPUT -p tcp --dport 333 -j SSH
   # Всё что пришло на 334 порт - в цепочку SSH
   iptables -A INPUT -p tcp --dport 334 -j SSH

Разделения на цепочки сделано для своего удобства, от этого можно и отказаться.

Теперь заполняем цепочку SSH.

   # Проверяем на наличие имени "SSH" у IP адреса устанавливающего соединение на 22 порт.
   # И если оно присутствует - то ACCEPT
   iptables -A SSH -p tcp -m state --state NEW -m tcp --dport 22 -m recent --rcheck --name SSH --rsource -j ACCEPT

   # Устанавливает имя SSH любому IP адресу с которого пришло новое TCP соединение на указанный порт. (порт 333)
   iptables -A SSH -p tcp -m state --state NEW -m tcp --dport 333 -m recent --set --name SSH --rsource -j DROP

   # Удаляет имя "SSH" с IP адреса установившего соединение на этот порт. (порт 334)
   iptables -A SSH -p tcp -m state --state NEW -m tcp --dport 334 -m recent --remove --name SSH --rsource -j DROP

Насладимся итоговым результатом:

Делаем:
   telnet ip_address_or_domain_name 333
После чего спокойно подключаемся по SSH.

Когда прекращаем работу закрываем за собой 22 порт:
   telnet ip_address_or_domain_name 334


"Лимитирование числа запросов в единицу времени через iptable..."
Отправлено Heckfy , 29-Июл-08 20:01 
> а можна пример (всмысле скрипт) ???

http://silverghost.org.ua/2007/06/13/ssh-portknocking/ :
$IP=’/sbin/iptables’
$EXTIP=<Your external IP>

$IPT -A INPUT -d $EXTIP -p tcp –dport 1500 -j LOG
$IPT -A INPUT -d $EXTIP -m state –state NEW -m tcp -p tcp –dport 22 -m recent –rcheck –name SSH -j ACCEPT
$IPT -A INPUT -d $EXTIP -m state –state NEW -m tcp -p tcp –dport 1499 -m recent –name SSH –remove -j DROP
$IPT -A INPUT -d $EXTIP -m state –state NEW -m tcp -p tcp –dport 1500 -m recent –name SSH –set -j DROP
$IPT -A INPUT -d $EXTIP -m state –state NEW -m tcp -p tcp –dport 1501 -m recent –name SSH –remove -j DROP
$IPT -A INPUT -d $EXTIP -p tcp –dport 22 -j DROP

Немного не в две строки. ;)