Контрмеры: защита от прослушивания сети
Поскольку прослушивание сети в лучшем случае может вызывать раздражение, то очень важно выявлять все попытки таких действий. В зависимости от принятой в организации политики обеспечения безопасности можно также заблокировать прохождение пакетов, передаваемых при ping-прослушивании. В этом разделе рассматриваются обе возможности.
Выявление факта прослушивания
Как уже говорилось, ICMP- и TCP-прослушивание является общепринятым методом исследования сети перед непосредственной попыткой проникновения в сеть. Поэтому выявление факта прослушивания очень важно с точки зрения возможности получения информации о потенциальном месте проникновения и источнике угрозы. Один из основных методов выявления прослушивания состоит в использовании сетевой программы выявления вторжений, такой как Network Flight Recorder (NFR), или программы, установленной на исследуемом взломщиком узле. Ниже приведен алгоритм, который можно реализовать в программе, предназначенной для выявления факта прослушивания.
# Обнаружение прослушивания с помощью ICMP/Ping # Автор – Стюарт Мак-Клар (Stuart McClure) # Эта программа предназначена для выявления ping-сканера, изучающего вашу сеть # Для получения наилучших результатов # установите нужные значения maxtime и maxcount. ping_schema = library_schema::new(1,["time", "ip", "ip","ethmac", "ethmac" ], scope()); count = 0; maxtime =10; # Время в секундах maxcount =5; # Количество ICMP-запросов ECHO или запросов ARP, # которое рассматривается как допустимое dest = 0; source = 0; ethsrc = 0; ethdst = 0; time = 0; filter icmp_paskets icmp() { if (icmp.type == 0x08) # Проверка на ICMP-пакеты ECHO. { if ((source == ip.src) && (dest!= ip.dst)) # Попался! { count = count + 1; time = system.time; } else count = 1; dest = ip.dest; source = ip.src; ethsrc = eth.src; ethdst = eth.dst; }. on tick = timeout (sec: maxtime, repeat) call checkit; } func checkit; { if (count >= maxcount) { echo ("Обнаружен.ping-сканнер! Время: ", time, "\n"); record system.time, source, dest, eth.src, eth.dst to the_record_ping; count = 0; dest = 0; } else { dest = 0; count = 0; } return; } the_record_ping=recorder("bin/histogram packages/sandbox/pingscan.cfg", "ping_schema");
Что касается защиты на уровне отдельного узла, для этого можно с успехом применять утилиты UNIX, которые позволяют выявлять и регистрировать попытки прослушивания. Если, просматривая файл журнала, созданный такой утилитой, вы обнаружите массированные ICMP-запросы ECHO, исходящие из одной и той же сети или от одного и того же узла, это, скорее всего, означает, что вашу сеть кто-то исследует. На такие факты необходимо обращать самое пристальное внимание, так как после изучения сети обычно предпринимается реальная попытка проникновения.
К сожалению, найти аналогичные утилиты для платформы Windows достаточно сложно. Одним из немногих бесплатных или условно бесплатных пакетов, заслуживающих внимания, является Genius 3.1. Краткую информацию о новой версии этого программного продукта можно найти по адресу http://softseek.com/Internet/General/Review_20507_index.html, а более подробные сведения о нем и загружаемый файл содержатся по адресу http://www.indiesoft.com/. Эта программа не позволяет регистрировать попытки ping-прослушивания, а предназначена лишь для выявления TCP-сканирования определенного порта. Среди коммерческих пакетов аналогичного назначения можно отметить BlackICE от компании Network ICE (http://www.networkice.com). Этот программный продукт позволяет не только обнаруживать факты JCMP- и TCP-прослушивания, но и решать много других задач. В табл. 2.1 перечислены некоторые дополнительные утилиты, которые могут значительно облегчить выявление попыток прослушивания вашей сети.
Таблица 2.1. Некоторые утилиты UNIX, предназначенные для зашиты от прослушивания на уровне узла.
Программа | Ресурс |
---|---|
Scanlogd | http://www.openwall.com/scanlogd |
Courtney 1.3 | ftp://ciac.llnl.gov/pubс/сiac/sectools /unix |
Ippl1.4.10 | http://pltplp.net/ippl/ |
Protolog 1.0.8 | http://packetstorm.securify.com/UNIX/loggers/protolog-1.0.8.tar.gz |