Разрешаем производить только 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
А ещё ipt_recent-ом удобно ловушки для сканеров делать -- временно блокировать ip-адреса, с которых пытаются ломиться на некоторые порты
а можна пример (всмысле скрипт) ???
Не могу найти пример, который видел буквально вчера и чуть ли не на опеннете. :-/
А пока посмотри сюда: http://www.opennet.me/openforum/vsluhforumID3/41732.html#32А то, что я потерял, содержало строчку для открытия нужного порта по стуку в другой и строку для закрытия соединений на второй по стуку в третий порт.
:-/
Защищаем 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
> а можна пример (всмысле скрипт) ???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Немного не в две строки. ;)