Jump to content

А если флуд?


Recommended Posts

Надысь глядел в исходники старгейзера у увидел в cap.cpp(для линукса) такое:

capSock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));

и вот соб-но в чем вопрос - а почему бы не сделать ETH_P_IP вместо ETH_P_ALL, ведь потом все равно отсекается все кроме IP трафика(в функции ParsePacket). Так стг не будет отвлекаться на левый трафик.

 

Если вдуматься, то главная проблема здесь такая, что сокеты не обеспечивают гарантии доставки пакетов приложению - и если оно не будет успевать их обрабатывать то некоторые пакеты потеряются, но форвард для этих пакетов все равно будет - то есть если кто-то вздумает флудить машину левыми пакетами то стг может не успевать считать реальный трафик. А так стг можно будет зафлудить только ИП пакетами - который сам стг сможет отследить. + сделать чтоб ИП трафик который стг не считает, резало пакетным фильтром по пакетам в секунду, а флудить трафиком за который надо платить никто не станет :)

Link to post
Share on other sites

очень даже интересное предложение

но тогда куда пихать пинг и АРП и много всего другого

самое главное в ентом деле - это подсчет (правильный и своевременный)

а там пускай он хоть че ентот пользователь делает - хоть мегатоннами пинга заливает сервак

 

самое главное своевременно это заметить и наказать такого неродивого пользователя (методы бывают разные)!

Link to post
Share on other sites

Пинг(icmp) это тоже IP протокол(icmp+udp+tcp+gre+(ещё парочка)=IP)

 

самое главное своевременно это заметить и наказать такого неродивого пользователя (методы бывают разные)!

 

В том и дело если оставить ETH_P_ALL заметить не получиться - флудить можно будет хоть чем - лишь бы ethernet заголовок был корректен и стг всё поймает.

Link to post
Share on other sites
  • 4 weeks later...

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...