Здравствуйте! Есть задача отслеживать количество коннектов к серверу с каждого адреса. Этим хочу предотвратить нездоровую активность. Т.е. например, я знаю что нормальное количество одновременных tcp коннектов к моему серверу с одного адреса не должно превышать 100. Если я вижу что откуда-то одновременно 200 сессий, то значит что-то не так. Все это хочу реализовать на linux'e. netstat не подходит, т.к. он медленно работает, а я хочу дергать эту тулзу довольно часто, как плагин nagios'a. Пробовал парсить /proc/net/ip_conntrack, но какая-то там недостоверная информация. Я так понимаю, если коннекшн ESTABLISHED, то он все равно далеко не сразу переходит в состояние ASSURED. Но в тоже время, если tcp-коннекшн был оборван (если я правильно механизм понимаю), то коннекшн тоже далеко не сразу переходит в состояние UNREPLIED. Т.е. по каким критериям парсить - пока не совсем понятно. Сильно снижать timeout для ESTABLISHED коннектов тоже не хочется, т.к. тогда можно получить не совсем корректно работающий iptables с conntrack. Как лучше всего реализовать такую задачу? И вообще, кто какие методы применяет для борьбы/предотвращения (Д)ДоС на сервер? Я понимаю что по-хорошему нужно бороться с ними _до_ сервера, но все же, если всего одна машина, то что даст относительно неплохой результат и при этом не будет отжирать львиную долю ресурсов, и есть ли вообще такое? :) Спасибо. -- Alexander Burnos =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
patch-o-matic connlimit On Mon, Dec 12, 2005 at 03:58:42PM +0200, Alexander Burnos wrote: AB> Здравствуйте! AB> Есть задача отслеживать количество коннектов к серверу с каждого адреса. AB> Этим хочу предотвратить нездоровую активность. Т.е. например, я знаю что AB> нормальное количество одновременных tcp коннектов к моему серверу с одного AB> адреса не должно превышать 100. Если я вижу что откуда-то одновременно AB> 200 сессий, то значит что-то не так. AB> Все это хочу реализовать на linux'e. AB> netstat не подходит, т.к. он медленно работает, а я хочу дергать эту AB> тулзу довольно часто, как плагин nagios'a. AB> Пробовал парсить /proc/net/ip_conntrack, но какая-то там недостоверная AB> информация. Я так понимаю, если коннекшн ESTABLISHED, то он все равно AB> далеко не сразу переходит в состояние ASSURED. Но в тоже время, если AB> tcp-коннекшн был оборван (если я правильно механизм понимаю), то AB> коннекшн тоже далеко не сразу переходит в состояние UNREPLIED. AB> Т.е. по каким критериям парсить - пока не совсем понятно. AB> Сильно снижать timeout для ESTABLISHED коннектов тоже не хочется, т.к. AB> тогда можно получить не совсем корректно работающий iptables с AB> conntrack. AB> Как лучше всего реализовать такую задачу? AB> И вообще, кто какие методы применяет для борьбы/предотвращения (Д)ДоС на AB> сервер? Я понимаю что по-хорошему нужно бороться с ними _до_ сервера, но AB> все же, если всего одна машина, то что даст относительно неплохой AB> результат и при этом не будет отжирать львиную долю ресурсов, и есть ли AB> вообще такое? :) AB> Спасибо. AB> -- AB> Alexander Burnos AB> =================================================================== AB> uanog mailing list. AB> To Unsubscribe: send mail to majordomo@uanog.kiev.ua AB> with "unsubscribe uanog" in the body of the message -- Best regard, Aleksander Trotsai aka MAGE-RIPE aka MAGE-UANIC My PGP key at ftp://blackhole.adamant.ua/pgp/trotsai.key[.asc] Серверное сияние. =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
Здравствуйте! On Mon, Dec 12, 2005 at 04:08:33PM +0200, Alexander Trotsai wrote:
patch-o-matic connlimit
Вроде бы connlimit использует conntrack. Т.е. если с какого-то адреса было сделано 100 коннектов, но они по каким-то причинам оборвались, то conntrack их все равно будет считать как ESTABLISHED и будет дальше отбивать коннекты с этого адреса (при условном лимите в 100), не смотря на то, что реальных 100 tcp-коннектов уже не будет. Или нет?
On Mon, Dec 12, 2005 at 03:58:42PM +0200, Alexander Burnos wrote: AB> Здравствуйте!
AB> Есть задача отслеживать количество коннектов к серверу с каждого адреса. AB> Этим хочу предотвратить нездоровую активность. Т.е. например, я знаю что AB> нормальное количество одновременных tcp коннектов к моему серверу с одного AB> адреса не должно превышать 100. Если я вижу что откуда-то одновременно AB> 200 сессий, то значит что-то не так.
AB> Все это хочу реализовать на linux'e. AB> netstat не подходит, т.к. он медленно работает, а я хочу дергать эту AB> тулзу довольно часто, как плагин nagios'a.
AB> Пробовал парсить /proc/net/ip_conntrack, но какая-то там недостоверная AB> информация. Я так понимаю, если коннекшн ESTABLISHED, то он все равно AB> далеко не сразу переходит в состояние ASSURED. Но в тоже время, если AB> tcp-коннекшн был оборван (если я правильно механизм понимаю), то AB> коннекшн тоже далеко не сразу переходит в состояние UNREPLIED. AB> Т.е. по каким критериям парсить - пока не совсем понятно. AB> Сильно снижать timeout для ESTABLISHED коннектов тоже не хочется, т.к. AB> тогда можно получить не совсем корректно работающий iptables с AB> conntrack.
AB> Как лучше всего реализовать такую задачу?
AB> И вообще, кто какие методы применяет для борьбы/предотвращения (Д)ДоС на AB> сервер? Я понимаю что по-хорошему нужно бороться с ними _до_ сервера, но AB> все же, если всего одна машина, то что даст относительно неплохой AB> результат и при этом не будет отжирать львиную долю ресурсов, и есть ли AB> вообще такое? :)
-- Alexander Burnos =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
On Mon, 12 Dec 2005, Alexander Burnos wrote:
Здравствуйте!
On Mon, Dec 12, 2005 at 04:08:33PM +0200, Alexander Trotsai wrote:
patch-o-matic connlimit
Вроде бы connlimit использует conntrack. Т.е. если с какого-то адреса было сделано 100 коннектов, но они по каким-то причинам оборвались, то conntrack их все равно будет считать как ESTABLISHED и будет дальше отбивать коннекты с этого адреса (при условном лимите в 100), не смотря на то, что реальных 100 tcp-коннектов уже не будет.
Или нет? после некоего таймаута порядка минуты(точно не помню) - все придет в норму
On Mon, Dec 12, 2005 at 03:58:42PM +0200, Alexander Burnos wrote: AB> Здравствуйте!
AB> Есть задача отслеживать количество коннектов к серверу с каждого адреса. AB> Этим хочу предотвратить нездоровую активность. Т.е. например, я знаю что AB> нормальное количество одновременных tcp коннектов к моему серверу с одного AB> адреса не должно превышать 100. Если я вижу что откуда-то одновременно AB> 200 сессий, то значит что-то не так.
AB> Все это хочу реализовать на linux'e. AB> netstat не подходит, т.к. он медленно работает, а я хочу дергать эту AB> тулзу довольно часто, как плагин nagios'a.
AB> Пробовал парсить /proc/net/ip_conntrack, но какая-то там недостоверная AB> информация. Я так понимаю, если коннекшн ESTABLISHED, то он все равно AB> далеко не сразу переходит в состояние ASSURED. Но в тоже время, если AB> tcp-коннекшн был оборван (если я правильно механизм понимаю), то AB> коннекшн тоже далеко не сразу переходит в состояние UNREPLIED. AB> Т.е. по каким критериям парсить - пока не совсем понятно. AB> Сильно снижать timeout для ESTABLISHED коннектов тоже не хочется, т.к. AB> тогда можно получить не совсем корректно работающий iptables с AB> conntrack.
AB> Как лучше всего реализовать такую задачу?
AB> И вообще, кто какие методы применяет для борьбы/предотвращения (Д)ДоС на AB> сервер? Я понимаю что по-хорошему нужно бороться с ними _до_ сервера, но AB> все же, если всего одна машина, то что даст относительно неплохой AB> результат и при этом не будет отжирать львиную долю ресурсов, и есть ли AB> вообще такое? :)
=================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
Здравствуйте! On Mon, Dec 12, 2005 at 04:22:09PM +0200, Alexey Kolyada wrote:
On Mon, 12 Dec 2005, Alexander Burnos wrote:
Здравствуйте!
On Mon, Dec 12, 2005 at 04:08:33PM +0200, Alexander Trotsai wrote:
patch-o-matic connlimit
Вроде бы connlimit использует conntrack. Т.е. если с какого-то адреса было сделано 100 коннектов, но они по каким-то причинам оборвались, то conntrack их все равно будет считать как ESTABLISHED и будет дальше отбивать коннекты с этого адреса (при условном лимите в 100), не смотря на то, что реальных 100 tcp-коннектов уже не будет.
Или нет? после некоего таймаута порядка минуты(точно не помню) - все придет в норму
Вообще по дефолту net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 432000 Т.е. 5 суток :) Я не знаю зачем такой безумный таймаут, но возможно есть какой-то тайный смысл, почему его не стоит особо менять? -- Alexander Burnos =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
On Mon, Dec 12, 2005 at 04:15:59PM +0200, Alexander Burnos wrote: AB> Здравствуйте! AB> On Mon, Dec 12, 2005 at 04:08:33PM +0200, Alexander Trotsai wrote: AB> > patch-o-matic AB> > connlimit AB> Вроде бы connlimit использует conntrack. Т.е. если с какого-то адреса использует AB> было сделано 100 коннектов, но они по каким-то причинам оборвались, то оборвались - очень разные бывают бываюn _c_ RST или FIN, а бывают и без последние считаются открытыми AB> conntrack их все равно будет считать как ESTABLISHED и будет дальше AB> отбивать коннекты с этого адреса (при условном лимите в 100), не смотря AB> на то, что реальных 100 tcp-коннектов уже не будет. что считать реальным коннектом? после прохождения syn / ack - это реальный коннект? а если потом ничего нет? в целом target на Дозе достаточно успешно отбивается от настойчивых посетителей AB> Или нет? AB> > On Mon, Dec 12, 2005 at 03:58:42PM +0200, Alexander Burnos wrote: AB> > AB> Здравствуйте! AB> > AB> > AB> Есть задача отслеживать количество коннектов к серверу с каждого адреса. AB> > AB> Этим хочу предотвратить нездоровую активность. Т.е. например, я знаю что AB> > AB> нормальное количество одновременных tcp коннектов к моему серверу с одного AB> > AB> адреса не должно превышать 100. Если я вижу что откуда-то одновременно AB> > AB> 200 сессий, то значит что-то не так. AB> > AB> > AB> Все это хочу реализовать на linux'e. AB> > AB> netstat не подходит, т.к. он медленно работает, а я хочу дергать эту AB> > AB> тулзу довольно часто, как плагин nagios'a. AB> > AB> > AB> Пробовал парсить /proc/net/ip_conntrack, но какая-то там недостоверная AB> > AB> информация. Я так понимаю, если коннекшн ESTABLISHED, то он все равно AB> > AB> далеко не сразу переходит в состояние ASSURED. Но в тоже время, если AB> > AB> tcp-коннекшн был оборван (если я правильно механизм понимаю), то AB> > AB> коннекшн тоже далеко не сразу переходит в состояние UNREPLIED. AB> > AB> Т.е. по каким критериям парсить - пока не совсем понятно. AB> > AB> Сильно снижать timeout для ESTABLISHED коннектов тоже не хочется, т.к. AB> > AB> тогда можно получить не совсем корректно работающий iptables с AB> > AB> conntrack. AB> > AB> > AB> Как лучше всего реализовать такую задачу? AB> > AB> > AB> И вообще, кто какие методы применяет для борьбы/предотвращения (Д)ДоС на AB> > AB> сервер? Я понимаю что по-хорошему нужно бороться с ними _до_ сервера, но AB> > AB> все же, если всего одна машина, то что даст относительно неплохой AB> > AB> результат и при этом не будет отжирать львиную долю ресурсов, и есть ли AB> > AB> вообще такое? :) AB> > AB> -- AB> Alexander Burnos AB> =================================================================== AB> uanog mailing list. AB> To Unsubscribe: send mail to majordomo@uanog.kiev.ua AB> with "unsubscribe uanog" in the body of the message -- Best regard, Aleksander Trotsai aka MAGE-RIPE aka MAGE-UANIC My PGP key at ftp://blackhole.adamant.ua/pgp/trotsai.key[.asc] Стипендия необходима, но недостаточна =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
Здравствуйте! On Mon, Dec 12, 2005 at 04:32:45PM +0200, Alexander Trotsai wrote:
AB> > patch-o-matic AB> > connlimit
AB> Вроде бы connlimit использует conntrack. Т.е. если с какого-то адреса
использует
AB> было сделано 100 коннектов, но они по каким-то причинам оборвались, то
оборвались - очень разные бывают бываюn _c_ RST или FIN, а бывают и без последние считаются открытыми
Имел в виду те, которые без RST или FIN. Дефолтные 5 суток - уж слишком большой timeout для них :)
AB> conntrack их все равно будет считать как ESTABLISHED и будет дальше AB> отбивать коннекты с этого адреса (при условном лимите в 100), не смотря AB> на то, что реальных 100 tcp-коннектов уже не будет.
что считать реальным коннектом? после прохождения syn / ack - это реальный коннект? а если потом ничего нет?
в целом target на Дозе достаточно успешно отбивается от настойчивых посетителей
Понял, спасибо. Буду пробовать. Только разве что стоит поиграться с timeout_established, т.к. редкая tcp-сессия должна столько жить. -- Alexander Burnos =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
Hi! On Mon, Dec 12, 2005 at 04:43:10PM +0200, Alexander Burnos writes:
AB> >> patch-o-matic AB> >> connlimit
AB>> Вроде бы connlimit использует conntrack. Т.е. если с какого-то адреса
использует
AB>> было сделано 100 коннектов, но они по каким-то причинам оборвались, то
оборвались - очень разные бывают бываюn _c_ RST или FIN, а бывают и без последние считаются открытыми
AB> Имел в виду те, которые без RST или FIN. AB> Дефолтные 5 суток - уж слишком большой timeout для них :) Иногда ssh надолго оставляют, особенно под скринами или в hybernate. И как знать - просто никто кнопочки не нажимает, или оно оборвалось?
AB>> conntrack их все равно будет считать как ESTABLISHED и будет дальше AB>> отбивать коннекты с этого адреса (при условном лимите в 100), не смотря AB>> на то, что реальных 100 tcp-коннектов уже не будет.
что считать реальным коннектом? после прохождения syn / ack - это реальный коннект? а если потом ничего нет?
в целом target на Дозе достаточно успешно отбивается от настойчивых посетителей
AB> Понял, спасибо. Буду пробовать. AB> Только разве что стоит поиграться с timeout_established, т.к. редкая AB> tcp-сессия должна столько жить. -- Lucky carrier, Паша. =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
On Mon, Dec 12, 2005 at 04:58:08PM +0200, Pavel Gulchouck wrote: PG> AB> Имел в виду те, которые без RST или FIN. PG> AB> Дефолтные 5 суток - уж слишком большой timeout для них :) PG> Иногда ssh надолго оставляют, особенно под скринами или в PG> hybernate. И как знать - просто никто кнопочки не нажимает, PG> или оно оборвалось? полезная весчь - tcp keepalive? :) -- Best regard, Aleksander Trotsai aka MAGE-RIPE aka MAGE-UANIC My PGP key at ftp://blackhole.adamant.ua/pgp/trotsai.key[.asc] Идея пришла в его голову и теперь упорно ищет мозг =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
On Mon, Dec 12, 2005 at 05:04:31PM +0200, Alexander Trotsai writes: PG> AB>> Имел в виду те, которые без RST или FIN. PG> AB>> Дефолтные 5 суток - уж слишком большой timeout для них :) PG>> Иногда ssh надолго оставляют, особенно под скринами или в PG>> hybernate. И как знать - просто никто кнопочки не нажимает, PG>> или оно оборвалось? AT> полезная весчь - tcp keepalive? :) В случае hybernate - скорее, мешающая. ;-) -- Lucky carrier, Паша. =================================================================== uanog mailing list. To Unsubscribe: send mail to majordomo@uanog.kiev.ua with "unsubscribe uanog" in the body of the message
participants (4)
-
Alexander Burnos
-
Alexander Trotsai
-
Alexey Kolyada
-
Pavel Gulchouck