Linux iptables
Модераторы: SLEDopit, Модераторы разделов
-
- Сообщения: 17
Linux iptables
Добрый день. Подскажите плз, как можно используя iptables (или что-то аналогичное) ограничить кол-во подключений с каждого компа за какое-то время? Т.е. надо чтобы от каждого клиентского компа да секунду можно было установить не более, например, 5 соединений с сервером (на нем же и настраивать надо)
-
- Сообщения: 2910
Re: Linux iptables
DrewBlin писал(а): ↑13.06.2006 17:56Добрый день. Подскажите плз, как можно используя iptables (или что-то аналогичное) ограничить кол-во подключений с каждого компа за какое-то время? Т.е. надо чтобы от каждого клиентского компа да секунду можно было установить не более, например, 5 соединений с сервером (на нем же и настраивать надо)
Какого типа соединения? Необязательно иптаблезом.
-
- Сообщения: 17
Re: Linux iptables
TCP cоединение. У меня этот комп выполняет роль фаервола перед локальной сетью. Так вот таким образом я хотел сделать нечто вроде защиты от того чтобы не закидали syn пакетами и не повесили web-сервер (он в локалке), а заодно и сам фаервол.
А чем еще кроме iptables пользоваться даже не знаю. любому совету буду рад
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Linux iptables
См. например shorewall, firestarter, guarddog - надстройки и морды к iptables
-
- Сообщения: 128
- ОС: Slackware 12.0
Re: Linux iptables
смотри в man`е, конкретнее ищи по ключевому слову limit.
С помощью limit можно задать ограничение количества срабатываний правила за определенный период времени (минута, час)... Полчается что в твоем случае надо сделать цепочку и зафигарить такие команды (сори не охота писать это все командами iptables):
таблица mangle
цепочка INPUT
1. Если пакет c внутренего интерфейса с флагом syn то его в цепочку МОЯ-ЦЕПОЧКА
2. если пакет c внутренего интерфейса с флагом syn то DROP
цепочка МОЯ-ЦЕПОЧКА
1. источник IP1, limit 5/hour - ACCEPT
2. источник IP2, limit 5/hour - ACCEPT
3. источник IP3, limit 5/hour - ACCEPT
...
Алгоритм такой:
1 машина в твоей сети хочет с кем-то в инете соединиться и генерит SYN-пакет.
2 Этот попадает на внутрений интерфейс linuxbox
3 В самой первой таблице mangle - кой хер его тащить дальше? - он заворачивается в пользовательскую цепочку МОЯ-ЦЕПОЧКА
4 В моей цепочке если пакет удовлетворяет условию (т.е. его выдал один из IP1,IP2 Или IP3 и лимит 5 пакетов в час еще не исчерпан), то пакет принимается
5 Если пакет не удовлетворяет ни одному правилу в МОЕЙ ЦЕПОЧКЕ то он возвращается в INPUT
6 в INPUT следующее правило для него DROP!!!
Что не совсем удобно так это то что каждый IP придется вбивать отдельно. Ну и дофига записей может появиться... Хотя если у тебя адресов мало то проблемм нет?
PS вобщем-то если у тебя linux как сервер работает а не как прокси или рутер то можно и таблицу FILTER использовать
С помощью limit можно задать ограничение количества срабатываний правила за определенный период времени (минута, час)... Полчается что в твоем случае надо сделать цепочку и зафигарить такие команды (сори не охота писать это все командами iptables):
таблица mangle
цепочка INPUT
1. Если пакет c внутренего интерфейса с флагом syn то его в цепочку МОЯ-ЦЕПОЧКА
2. если пакет c внутренего интерфейса с флагом syn то DROP
цепочка МОЯ-ЦЕПОЧКА
1. источник IP1, limit 5/hour - ACCEPT
2. источник IP2, limit 5/hour - ACCEPT
3. источник IP3, limit 5/hour - ACCEPT
...
Алгоритм такой:
1 машина в твоей сети хочет с кем-то в инете соединиться и генерит SYN-пакет.
2 Этот попадает на внутрений интерфейс linuxbox
3 В самой первой таблице mangle - кой хер его тащить дальше? - он заворачивается в пользовательскую цепочку МОЯ-ЦЕПОЧКА
4 В моей цепочке если пакет удовлетворяет условию (т.е. его выдал один из IP1,IP2 Или IP3 и лимит 5 пакетов в час еще не исчерпан), то пакет принимается
5 Если пакет не удовлетворяет ни одному правилу в МОЕЙ ЦЕПОЧКЕ то он возвращается в INPUT
6 в INPUT следующее правило для него DROP!!!
Что не совсем удобно так это то что каждый IP придется вбивать отдельно. Ну и дофига записей может появиться... Хотя если у тебя адресов мало то проблемм нет?
PS вобщем-то если у тебя linux как сервер работает а не как прокси или рутер то можно и таблицу FILTER использовать
-
- Сообщения: 17
Re: Linux iptables
цепочка МОЯ-ЦЕПОЧКА
1. источник IP1, limit 5/hour - ACCEPT
2. источник IP2, limit 5/hour - ACCEPT
3. источник IP3, limit 5/hour - ACCEPT
...
Может я коряво выразился, но защита нужна от подключений не из локалки, а из Internet. Не буду же я писать все мыслимые IP!!!!!!

-
- Сообщения: 216
Re: Linux iptables
DrewBlin писал(а): ↑14.06.2006 14:44
цепочка МОЯ-ЦЕПОЧКА
1. источник IP1, limit 5/hour - ACCEPT
2. источник IP2, limit 5/hour - ACCEPT
3. источник IP3, limit 5/hour - ACCEPT
...
Может я коряво выразился, но защита нужна от подключений не из локалки, а из Internet. Не буду же я писать все мыслимые IP!!!!!!
А что мешает тебе повесить правило на интерфейс?
ASP Linux 10.0 / 2.6.12-1.1386.1asp / KDE 3.3
-
- Сообщения: 162
Re: Linux iptables
(DrewBlin @ Jun 14 2006, в 20:44) писал(а):Может я коряво выразился, но защита нужна от подключений не из локалки, а из Internet. Не буду же я писать все мыслимые IP!!!!!! blink.gif
Подключений к чему? К твоему компу?
-A INPUT -s 0.0.0.0/0 -d localip -j DROP
Хватит?
-
- Сообщения: 17
-
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Linux iptables
очень странное у тебя понимание защиты от флуда....Мне же надо контролировать подключения какбы с каждого компа в инете, чтобы он не пытался подключиться более 5 ряз в секунду
т.е. если 5 миллионов _различных_ хостов обратятся к тебе одновременно - это, типа, нормальная ситуация и все тогда пучком будет? а вот если 6 раз _одна_ машина обратится - тогда все ляжет?
есть поток запросов, которые система может нормально обработать. и какая разница, от одной машины они идут, или от нескольких?
слава роботам!
-
- Сообщения: 162
Re: Linux iptables
если не в курсе что такое 0.0.0.0/0 - покури man iptables
-
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
-
- Сообщения: 162
-
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Linux iptables
steepz
и как это соотносится с
может перед тем, как начинать разбрасывать понты, стоит все-таки читать вопрос? "какбы с каждого" и "весь Internet" - это две очень большие разницы.
и как это соотносится с
а?надо контролировать подключения какбы с каждого компа в инете
может перед тем, как начинать разбрасывать понты, стоит все-таки читать вопрос? "какбы с каждого" и "весь Internet" - это две очень большие разницы.
слава роботам!
-
- Сообщения: 162
Re: Linux iptables
и как контролировать по твоему подключение с КАЖДОГО?
0.0.0.0/0 как раз и включает каждый комп в инете.
-
- Сообщения: 215
- ОС: Fedora Core 5
Re: Linux iptables
steepz, если принять Ваше правило, то ограничение правила будет 5 срабатываний в интервал времени для всех компьютеров Интернета. то есть 2 раза правило сработает на машину 1.2.3.4 и 3 раза на 2.3.4.5 и всё. следующие пакеты пропускать не будет.
человеку же необходимо (оч странное всё-таки требование с точки зрения защиты): 5 срабатываний правила для машины 1.2.3.4 и 5 раз для 2.3.4.5 и по 5 раз на все остальные машины Интернета. надеюсь, Ваша ошибка теперь ясна
человеку же необходимо (оч странное всё-таки требование с точки зрения защиты): 5 срабатываний правила для машины 1.2.3.4 и 5 раз для 2.3.4.5 и по 5 раз на все остальные машины Интернета. надеюсь, Ваша ошибка теперь ясна

Suum cuique
-
- Сообщения: 128
- ОС: Slackware 12.0
Re: Linux iptables
Ну вобще у меня задача как раз обратная стоит - фильтровать пакеты из моей сети, потому я тебя сразу и не понял... ну раз не хочешь забивать все ip из инета
, то есть и другие варианты, хотя я их не проверял:
1. Вопервых если память мне не измеяет, то portsentry может динамически вносить изменения в таблици iptables - а поскольку он и предназначен для обнаружения сканирования, то это для тебя)
2. Во вторых если память мне всетаки изменяет, то можно попробовать snort+snortsam, правда наверное использовать препроцессор portscan не удастся. Но можно написать своих правил, используя ключевое слово tag с тегом host и параметром src. Тут наверное ситуация будет под большим контролем чем с portsentry.

1. Вопервых если память мне не измеяет, то portsentry может динамически вносить изменения в таблици iptables - а поскольку он и предназначен для обнаружения сканирования, то это для тебя)
2. Во вторых если память мне всетаки изменяет, то можно попробовать snort+snortsam, правда наверное использовать препроцессор portscan не удастся. Но можно написать своих правил, используя ключевое слово tag с тегом host и параметром src. Тут наверное ситуация будет под большим контролем чем с portsentry.
-
- Сообщения: 128
- ОС: Slackware 12.0
Re: Linux iptables
elide писал(а): ↑14.06.2006 20:05очень странное у тебя понимание защиты от флуда....Мне же надо контролировать подключения какбы с каждого компа в инете, чтобы он не пытался подключиться более 5 ряз в секунду
т.е. если 5 миллионов _различных_ хостов обратятся к тебе одновременно - это, типа, нормальная ситуация и все тогда пучком будет? а вот если 6 раз _одна_ машина обратится - тогда все ляжет?
есть поток запросов, которые система может нормально обработать. и какая разница, от одной машины они идут, или от нескольких?
А вобще разделяю мнение товарища.
Уж если тебя и будут флудить то каким-нибудь ботнетом, отсюда выводы у тебя будет туева хуча источников syn-пакетов и столькоже записей в iptables. Очевидно что чем больше записей тем больше уходит времени на их обработку (для легального пакета придется проверять их все, а для каждого запрещеного в среднем половину - прикидываешь размеры бедствия?).
Следующий вопрос сколько надо syn-пакетов чтоб система легла? У тебя канал-то какой? Вероятно они забьют его весь!

Кстати еще можно собрать ядро с опцией "syncocies" - или как-то так, и поплевывать на 5 соединений в секунду...