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, так как только сам программист точно знает какие данные должны поступать и как эти данные должны обрабатываться.

Ссылки:


10 comments:

  1. Kuzya, 28. June 2008, 22:03

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

     
  2. NOmeR1, 29. June 2008, 10:26

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

     
  3. Kuzya, 29. June 2008, 13:21
  4. Raz0r, 30. June 2008, 13:50

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

     
  5. Foxcool, 20. July 2008, 14:13

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

     
  6. Raz0r, 29. July 2008, 22:58

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

     
  7. Andrey, 6. October 2008, 16:48

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

     
  8. Raz0r, 6. October 2008, 20:46

    >Для Автора вместо 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)

     
  9. shr, 6. December 2009, 18:01

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

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

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

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

     
  10.  

    […] не менее известного продукта из этой же категории – PHP-IDS. Однако сделано это было не совсем правильно. […]

     

Write a comment: