LINUX.ORG.RU
ФорумAdmin

iptables connlimit не работает?


1

0

нужно ограничить число подключений к httpd,

на сервере:
iptables -A INPUT -p tcp -m connlimit --connlimit-above 5 --dport 80 -j DROP

на клиенте для теста запускаем slowloris..

на сервере после запуска атаки:
netstat -nta | grep :80 | grep ESTABLISHED | wc -l
180

судя по 'iptables -L -n -v' правило ниразу не сработало

где я не прав?
linux 2.6.30-2, iptables 1.4.4-2


Ответ на: комментарий от sidor

выкинуты. только одно это правило указано.

urykhy
() автор топика
Ответ на: комментарий от sidor

Chain INPUT (policy ACCEPT 138K packets, 26M bytes)
pkts bytes target prot opt in out source destination
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 #conn/32 > 5 tcp dpt:80

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

Возможно следует обновиться. У меня все заработало. И без --syn тоже. На хосте пятый дебиан, ядро с поддержкой OpenVZ, последние обновления...

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

>man iptables на предмет --connlimit-mask

mask у него 32. Т.е. учет по отдельным айпишникам.
Как видно из первого поста, тестил он с одной клиентской машины. Навряд ли там использовались несколько адресов.

Скорее всего просто ядро кривое.

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

Правильно. По IPшникам. Но при этом показывает в качестве числа подключений - общее число. Там вполне может сидеть сколько-у-него-там юзеров по одному подключению. Если он хочет сделать всего пять подключений - нужно указывать маску 0. Если он хочет сделать пять подключений на ип - нужно показать что у него один ип имеет больше пяти подключений.

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

И правда.
Из первого поста видно, что с 80 портом есть 180 одновременных коннектов (причем не факт, что все они входящие).
Но совершенно не видно, что там наберется хотя бы пять коннектов на порт 80 с одного айпишника.

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

Конечно всё зависит от ситуации, но имхо должны быть очень серьезные причины чтобы так делать. Но в любом случае лучше наоборот, это очевидно.

И еще по поводу «7» уровня я бы поспорил - недавно столкнулся в вебе с интерестной интерпретацией модели iso/osi - там на 7м уровне различают тип информации как его понимает пользователь, то бишь - текст это, или веб-страничка, или это звук, или видео. В этой статье реализация iso/osi модели в tcp/ip приведена к 7 уровням, при чем очень красиво и логично. К сожалению я потерял линк на эту статью и не могу ее найти.

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

>Конечно всё зависит от ситуации, но имхо должны быть очень серьезные причины чтобы так делать. Но в любом случае лучше наоборот, это очевидно.
Ситуация, когда так надо будет делать - если к одному вирт.хосту разрешено максимум 5 одновременных подключений, а к другому 10. Во всех остальных случаях iptables

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

На тестовом сервере

[root@lenin ~]# iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 1 -j REJECT
На тестовом клиенте первый телнет запускается нормально
[user@fel-2 ~]$ telnet lenin 80
Trying 10.134.0.126...
Connected to lenin (10.134.0.126).
Escape character is '^]'.
а второго уже отшивают
[user@fel-2 ~]$ telnet lenin 80
Trying 10.134.0.126...
telnet: connect to address 10.134.0.126: Connection refused
telnet: Unable to connect to remote host: Connection refused

После чего на сервере

[root@lenin ~]# iptables -vnL
Chain INPUT (policy ACCEPT 1711 packets, 151K bytes)
 pkts bytes target     prot opt in     out     source               destination
    1    60 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 #conn/32 > 1 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 1278 packets, 158K bytes)
 pkts bytes target     prot opt in     out     source               destination
[root@lenin ~]# uname -a
Linux lenin 2.6.26-2-686 #1 SMP Fri Aug 14 01:27:18 UTC 2009 i686 GNU/Linux
[root@lenin ~]# dpkg -l iptables
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name                          Version                       Description
+++-=============================-=============================-==========================================================================
ii  iptables                      1.4.4-2                       administration tools for packet filtering and NAT

В общем, со штатным ядром из stable работает.

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

>>Linux lenin 2.6.26-2-686
>>В общем, со штатным ядром из stable работает.


спасибо!

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