LINUX.ORG.RU
ФорумAdmin

iptables много соединений с одного IP на один порт


0

0

Есть сервер который обслуживает ну скажем прот 5225 на ip 10.1.1.1 и есть пользователь на ip 10.1.1.2 который стучится на порт 5225 сервера 10.1.1.1 и создает несколько соединений пример в одно и тоже время sourse_ip port dest_ip port 10.1.1.2 32001 10.1.1.1 5225 10.1.1.2 32002 10.1.1.1 5225 10.1.1.2 32003 10.1.1.1 5225 10.1.1.2 32004 10.1.1.1 5225 10.1.1.2 32XXX 10.1.1.1 5225 10.1.1.2 32999 10.1.1.1 5225

и вот встал вопрос нужно запретить несколько соединений а разрешить только одно тоесть если этот ip адрес у нас уже есть то запретить ему подключаться к данному порту как только этот порт не занят с данного ip адреса то разрешить но одному пока он работает не кто не может с этого ip присоеденится к данному порту за ответы спасибо

anonymous

Есть сервер который обслуживает ну скажем прот 5225 на ip 10.1.1.1
и есть пользователь на ip 10.1.1.2 который стучится на порт 5225
сервера 10.1.1.1 и создает несколько соединений пример в одно и тоже время
sourse_ip port dest_ip port
10.1.1.2 32001 10.1.1.1 5225
10.1.1.2 32002 10.1.1.1 5225
10.1.1.2 32003 10.1.1.1 5225
10.1.1.2 32004 10.1.1.1 5225
10.1.1.2 32XXX 10.1.1.1 5225
10.1.1.2 32999 10.1.1.1 5225

и вот встал вопрос нужно запретить несколько соединений а разрешить только одно
тоесть если этот ip адрес у нас уже есть то запретить ему подключаться к данному
порту как только этот порт не занят с данного ip адреса то разрешить но одному
пока он работает не кто не может с этого ip присоеденится к данному порту
за ответы спасибо
(от форматировал)

anonymous
()
Ответ на: комментарий от anonymous

Вот пример ограничения SSH подключений. IPT=/usr/sbin/iptables $IPT -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK $IPT -A SSH_CHECK -m recent --set --name SSH $IPT -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j LOG --log-prefix "SSH_FLOOD " --log-level 6 $IPT -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

anonymous
()
Ответ на: комментарий от anonymous

Вот пример ограничения SSH подключений.
IPT=/usr/sbin/iptables
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
$IPT -A SSH_CHECK -m recent --set --name SSH
$IPT -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j LOG --log-prefix "SSH_FLOOD " --log-level 6
$IPT -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

anonymous
()

Попробуйте iptables -m connlimit

spirit ★★★★★
()
Ответ на: комментарий от anonymous

iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --update --seconds 20 -j DROP
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --set -j ACCEPT

Пробовал и это не помогло
может я не так выразился или вопрос некоректно задал
УТОЧНЮ
Есть сервер на нем открыт порт 5225 к ниму конектятся юзера локальной сети
Но с одной машины т.е. можно подключить несколько клиентов а этого не должно
быть соединения длинные по 2 часа и более могут быть ну и вот задача
чтоб юзер злой мог запустить только одного клиента и все на втором ему
должен быть облом

anonymous
()
Ответ на: комментарий от anonymous

А не приходило в голову, использовать xinetd?
Вообще, сейчас модно по каждому чиху использовать iptables,
но есть и более классические методы.
А вообще-то это при любом раскладе очень плохой метод борьбы с юзерами. 
Приведу пример:
Коннектим юзера.
Выдергиваем у юзера LAN.
Перезагружаем юзера и втыкаем ему LAN.
Юзер не может приконнектиться к серверу в течение 2-х часов.
См. /proc/sys/net/ipv4/tcp_keepalive_time
И то, если tcp_keepalive вообще включен.

ansky ★★★★★
()
Ответ на: комментарий от ansky

Не нужно xinted, не нужно -m recent, для этого ИДЕАЛЬНО подходит -m connlimit:
connlimit v1.3.3 options:
[!] --connlimit-above n match if the number of existing tcp connections is (not) above n
--connlimit-mask n group hosts using mask

Т.е. нужно всего лишь одно правило:
iptables -A INPUT -p tcp --dport 5225 -m connlimit --connlimit-above 1 --connlimit-mask 0 -j DROP

spirit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.