PHPIDS. За и против

IDS (Intrusion Detection System) или система предотвращения вторжений является одним из средств защиты от различных атак. Среди типов IDS можно выделить сетевые и локальные IDS. Сетевая IDS обеспечивает безопасность целой подсети; как правило, она работает на аппаратном уровне, т.е. встроена в маршрутизатор или другие сетевые устройства. Локальная IDS располагается непосредственно на том компьютере, который необходимо защищать от различных атак извне. В этом случае контроль обеспечивается на программном уровне. Многие файрволы и брэндмауэры так или иначе включают в себя модуль IDS, а самой известной системой подобного рода является Snort. Главное назначение IDS – это предотравщение таких атак, как переполнение буфера, сканирование портов, отказ в обслуживании (DoS).

PHPIDS в этом отношении выделяется среди традиционных систем обнаружения вторжений, так как проводит контроль на уровне web-приложений и распознает следующие виды атак: XSS, SQL-инъекции, header-инъекции, directory traversal, инклуды и многие другие. Стоит отметить, что благодаря большому набору правил PHPIDS справляется со своей задачей довольно хорошо: провести XSS, даже используя различные методы обхода фильтрации, вам не удастся, не говоря уже о простейших SQL-инъекциях, основанных на UNION SELECT; в то же время количество ложных срабатаваний практически сведено к нулю. Попробовать обхитирить IDS можно на этой странице. Однако любая IDS – это система, которая прежде всего распознает и фиксирует факт атаки, т.е. проводит проверку данных, но не фильтрацию. Это значит, что обнаружив в одном из параметров запроса строку 0′ OR 1=1/*, сработает правило, в результате которого PHPIDS завершит выполнение скрипта и выдаст предупреждение (при стандартной конфигурации). Безусловно, в данном примере более грамотным подходом была бы фильтрация с помощью функции intval(). Тем не менее, результат в обоих случаях будет одинаков: любые попытки провести какую-либо атаку завершатся неудачей.

Таким образом, я рекомендую данное решение тем, кто использует веб-приложения с открытым исходным кодом и не силен в программировании. Многие опытные веб-разработчики скорее всего откажутся от PHPIDS, так как только сам программист точно знает какие данные должны поступать и как эти данные должны обрабатываться.

Ссылки:

Join the Conversation

10 Comments

  1. Побаловался с ней минут 5, обойти то можно 100% но вот у меня этого не получилось =)
    А обойти можно всё.

  2. Имхо – лучше всего защищать скрипт внутри, а не ставить никаких систем для защиты. Всё ровно только на эту систему расчитывать нельзя!

  3. >лучше всего защищать скрипт внутри, а не ставить никаких систем для защиты
    иногда оказывается, что IDS знает больше методов (или векторов) атак, и порой не все программисты догадываются об их существовании, так что если кодер не имеет глубоких знаний в области безопасности, то ему стоит переложить обеспечение безопасности именно на IDS. Правда грош цена таким программистам, всегда лучше доверять себе и только себе

  4. А ты ставил эту ИДС на свой вордпресс? Я вот блог скоро открываю, и эта статья заставила меня задуматься…

  5. пока не ставил, если будешь на свой блог ставить, то сообщи о результатах )

  6. Мне кажется что лучше собственным кодом все делать, больше запонится 🙂
    Для Автора вместо intval() сейчас используют is_numeric насколько я знаю.

  7. >Для Автора вместо intval() сейчас используют is_numeric насколько я знаю.
    Чем не угодил intval()? Вообще-то я говорил о фильтрации данных, т.е. их обработке, а не просто проверке. Если же просто проверять, тогда необходимо использовать ctype_digit(), т.к. is_numeric() пропускает значения в hex:
    echo var_dump(ctype_digit(0x3a)); -> bool(false)
    echo var_dump(is_numeric(0x3a)); -> bool(true)

  8. В дипломном проекте я писал систему, использующую php-ids (дописал реакцию при детекте и настройки, когда он работает) вместе с контролем за цеолстностью файлов. Назвал ее php-ips 😉

    пробовал на нескольких своих сайтах – у php-ips все-таки есть проблемы с ложными срабатываниями, особенно на русском тексте со знаками вроде смайлов.

    Как-нибудь потом выложу у себя на сайте 😉 Я просто сейчас в армии.

    З.Ы. спасибо, Raz0r, за интересный блог. Давно подписался и читаю даже в армии =)

Leave a comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.