Контрмеры: защита от сканирования портов
В табл. 2.2 приведен перечень различных популярных утилит сканирования, а также типы сканирования, которые эти утилиты позволяют выполнять.
Таблица 2.2. Популярные утилиты сканирования портов и их возможности.
| Утилита | Сканирование | Ресурс | ||
|---|---|---|---|---|
| UNIX | TCP | UDP | Скрытое | |
| Strobe | X | ftp://ftp.FreeBSD.orgpub/FreeBSD/ports/distfiles/strobe-1.06.tgz |
||
| Tcp_scan | X | http://wwdsilx.ww.dsi.com/saint/ |
||
| Udp_scan | X | http://wwdsilx.wwdsi.com/saint/ | ||
| Nmap | X | X | X | http://www .inscure .org/nmap |
| Netcat | X | X | http://www.10pht.com/users/10pht/nc110.tgz | |
| Windows Netcat | X | X | http://www.10pht.com/users/10pht/ncllnt.zip | |
| NetScanTools Pro 2000 | X | X | http://www.nwpsw.com | |
| SuperScan | X | http://members.home.com/rkeir/software.html | ||
| NTOScanner | X | http://www.ntobjectives.com | ||
| WinScan | X | http://www.prosolve.com | ||
| IpEye | X | http://ntsecurity.nu | ||
| WUPS | X | http://ntsecurity.nu | ||
| Fscan | X | X | http://www.foundstone.com | |
Выявление факта сканирования
Как правило, взломщики прибегают к сканированию TCP- и UDP-портов удаленного компьютера, чтобы установить, какие из них находятся в состоянии ожидания запросов. Поэтому выявить факт сканирования – значит, установить, в каком месте и кем будет предпринята попытка взлома. Основные методы выявления факта сканирования состоят либо в использовании специальной программы, предназначенной для выявления вторжений на уровне сети (IDS), такой как NFR, либо в использовании механизма защиты на уровне отдельного узла.
Метод UDP-сканирования утилиты netcat не работает в операционной системе Windows NT, поэтому пользователям этой ОС не стоит доверять полученным результатам.
# Алгоритм выявления факта сканирования
# Автор – Стюарт Мак-Клар (Stuart McClure)
# Данный алгоритм выявляет неудачные попытки сканирования портов,
# которые приводят к генерации сообщений ACK/RST.
В процессе настройки
# можно поэкспериментировать со значениями
# maxcount и maxtime.
port_schema = library_schema:new(1, ["time", "ip", "ip", "int"],
scope() };
time = 0;
count = 0;
maxcount =2; t Максимально допустимое количество ACK/RST.
maxtime =5; tt Максимально допустимое время, в течение
# которого может достигаться значение maxcount.
source = 0; port = 0; target = 0;
filter portscan ip ()
{
if (tcp.is)
(
# Проверка АСК, RST и источника поступления.
if (byte(ip.blob, 13) == 20)
# Установлены флаги АСК, RST
{
count = count + 1;
source = ip.dest;
target = ip.source;
port = tcp.sport;
time = system.time;
} } on tick = timeout
(sec: maxtime, repeat)
call checkout;
}
func checkout {
if (count >= maxcount) {
echo("Попытка сканирования порта,
Время: ", time, "\n); record system.time, source, target,
port to the_recorder_portscan; count = 0; }
else
count = 0;
}
the_recorder_portscan=recorder("
bin/histogram packages/sandbox/portscan.cfg",
"port_schema"
);
