Захист від сканування портів
У таблиці. 2.2 приведений перелік різних популярних утиліт сканування, а також типи сканування, які ці утиліти дозволяють виконувати.
Контрзаходи: захист від сканування портів
Виявлення факту сканування
Як правило, зломщики удаються до сканування TCP- і UDP-портов видаленого комп'ютера, щоб встановити, які з них знаходяться в стані очікування запитів. Тому виявити факт сканування — значить, встановити, в якому місці і ким буде зроблена спроба злому. Основні методи виявлення факту сканування полягають або у використанні спеціальної програми, призначеної для виявлення вторгнень на рівні мережі (IDS), такий як NFR, або у використанні механізму захисту на рівні окремого вузла.
Таблиця 2.2. Популярні утиліти сканування портів і їх можливості
Утиліта
|
Сканування
|
Ресурс
|
UNIX
|
TCP
|
UDP
|
Приховане
|
|
Strobe
|
X
|
|
|
ftp://f tp.FreeBSD.org/
pub/freebsd /ports/distfiles/strobe-1.06.tgz
|
Tcp_scan
|
X
|
|
|
http://wwdsilx.
wwdsi.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
|
Метод 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"
);
Для виявлення спроб сканування портів можна також скористатися утилітою snort
(www.snort.org) (див. також http://spyjurenet.com/linuxrc.org/projects/
snort/). Як ви могли здогадатися, ця утиліта є одній з програм IDS, що віддаються перевага нами (відмітимо, що її версії 1.x не дозволяють виявляти фрагментацію пакетів). Ось приклад лістингу, що містить дані про спробу сканування портів.
[**] spp_portscan: PORTSCAN DETECTED from 192.168.1.10 [**]
05/22-18:48:53.681227
[**] spp_portscan: portscan status from 192.168.1.10: 4 connections
across 1 hosts: TCP(O), UDP(4) [**]
05/22-18:49:14.180505
[**] spp_portscan: End of portscan from 192.168.1.10 [**]
05/22-18:49:34.180236
Для платформи UNIX існує немало утиліт, таких, наприклад, як Утиліта: scanlogd
(http://www.openwall.com/scanlogd/) компанії Solar Designer, які виявляють і реєструють спроби сканування. Крім того, утиліту Psionic Portsentry, створену в рамках проекту Abacus
(http://www.psionic.com/abacus),
можна набудувати не тільки на реєстрацію, але і на ухвалення контрзаходів при виявленні факту активного сканування. Одін із способів боротьби із спробами сканування портів полягає в автоматичній установці для ядра правил фільтрації, коли до вже існує додається нове правило, що забороняє доступ з боку вузла-порушника. Таке правило можна задати в конфігураційному файлі утиліти Portsentry. При цьому одне і те ж правило може відрізнятися в різних системах. Для системи Linux 2.2.x, в якій є підтримка ядра брандмауера, у файл portsentry.conf потрібно додати запис, аналогічний наступною.
# New ipchain support for Linux kernel version 2.102+
Kill_route="/sbin/ipchains -i input -s $TARGET$ -j DENY -1"
Утиліта Portsentry сумісна з більшістю версій UNIX, включаючи Solaris. Незалежно від того, чи застосовуєте ви які-небудь утиліти чи ні, необхідно пам'ятати, що масовані спроби сканування портів, що ініціюються яким-небудь вузлом або якою-небудь мережею, можуть означати, що хтось вивчає вашу мережу. Завжди звертайте найпильнішу увагу на такі дії, оскільки за ними може послідувати повномасштабне вторгнення. І нарешті, не забувайте про те, що є можливість активного протистояння або блокування спроб сканування портів. Всі ці питання розглядаються в статті, опублікованою компанією Solar Designer
(http://www. openwall.com/scanlogd/P53-13.gz). У цій статті містяться додаткові раді з розробки і використання систем виявлення спроб сканування.
Більшість
брандмауерів не тільки можуть, але і повинні настроюватися на режим виявлення спроб сканування. Проте одні брандмауери справляються з цим завданням краще, інші гірше. Наприклад, деякі брандмауери уміють виявляти приховане сканування. Проте багато хто з них, підтримуючи режим виявлення SYN-сканирования, абсолютно ігнорує FiN-сканирование. Найбільшою проблемою при виявленні факту сканування є завдання аналізу величезних системних журналів, що накопичуються при щоденній роботі серверів мережі. Для спрощення рішення цієї задачі можна скористатися утилітою Psionic Logcheck
(http: //www.-psionic.com/abacus/logcheck/ ). Крім того, ми рекомендуємо набудувати утиліти так, щоб вони реагували на виявлені спроби сканування в реальному часі, посилаючи повідомлення по електронній пошті. Скрізь, де це тільки можливо, встановлюйте порогові значення для кількості реєстрованих подій (threshold logging), щоб зломщик не завалив вашу поштову скриньку купою повідомлень, в яких буде так само важко знайти інформацію, як і в системних журналах. Крім того, в цьому випадку може також виникнути умова DOS. При використанні порогових значень всі попередження групуватимуться, а не оброблятися поодинці. Як мінімум необхідно набудувати систему безпеки на видачу звітів про сам факт виявленої спроби сканування. Для брандмауера Firewall-1 з цією метою можна використовувати утиліту Ланца Спітцнера (Lance Spitzner) alert, sh
(http://www. enteract.com/~lspitz/intrusion.html ). Ця утиліта виявлятиме і відстежуватиме спроби сканування портів, працюючи під управлінням Firewall-1 як засіб захисту, заданий користувачем.
Для
платформи Windows NT також є декілька утиліт, призначених для виявлення спроб сканування. Перш за все, необхідно відзначити таку утиліту, як Genius 2.0, розроблену компанією Independent Software
(http://www. indiesoft.com) для платформ Windows 95/98 і Windows NT. Цей програмний продукт надає значно більше можливостей, чим простий засіб виявлення TCP-сканирования портів. Проте необхідно відзначити, що навіть з урахуванням цього, має сенс його використовувати. Утиліта Genius відстежує численні запити до відкритих портів і при виявленні спроб сканування відображає на екрані застережливе діалогове вікно, в якому міститься IP-адрес зломщика і доменне ім'я його вузла.
Утиліта Genius дозволяє виявляти як спроби звичайного сканування, тобто зі встановленням TCP-соединения, так і SYN-сканирования.
Ще одним детектором сканування для системи Windows, заслуговуючому окремої згадки, є програма BLACKICE (мал. 2.7) компанії Network ICE
(http://www.-networkice.com). Дана програма представляє перший заснований на використанні агентів засіб виявлення вторгнень, яке можна використовувати як в Windows 9х, так і в NT. У момент написання даної книги цей програмний продукт був комерційним, хоча в найближчому майбутньому компанія обіцяє підготувати вільно поширювану версію. І нарешті, програма Zonealarm
(http://www.zonelabs.com/zonealarm.htm ) добре підходить для платформи Windows і може застосовуватися як засіб IDS на рівні брандмауера.
Мал.
2.7. Окрім виявлення звичайного TCP-сканирования портів, програма BLACKICE може виявляти також VDP-сканирование, запити на відкриття нульових сеансів NT, pir.q-прослушивание за допомогою пакету pcanywhere, спроби злому за допомогою Winnuke, множинні запити, застосування утиліти tracerovte, Smurf-взломы і багато що інше
Запобігання скануванню
Навряд чи можна перешкодити кому-небудь зробити спробу сканування портів на вашому комп'ютері, проте цілком реально звести до мінімуму пов'язаний з цим ризик. Для цього потрібно заблокувати всі служби, в роботі яких немає необхідності. У середовищі UNIX дане завдання вирішується за допомогою додавання символів коментаря у відповідні рядки файлу /etc/inetd. corif, а також відключення автоматичного запуску непотрібних служб в сценарії початкового завантаження. Детальніше ці питання освітлені в розділі 8, "Хакинг UNIX".
У системі Windows NT також доцільно відключити всі непотрібні служби. Проте зробити це складніше, оскільки із-за мережевої архітектури Windows NT принаймні Порт 139 повинен працювати постійно. Проте, решту служб можна відключити, запустивши аплет Services панелі управління. Способи порушення безпеки системи Windows NT і контрзаходи, які можна зробити для їх запобігання, детальніше будуть розглянуті в розділі 5. Тут же варто згадати про те, що компанією Tiny Software
(www.tinysoftware.com) розповсюджується модуль ядра, що дозволяє виконувати фільтрацію вхідних пакетів. За допомогою цього модуля можна захистити більшість важливих портів.
Що ж до інших операційних систем і пристроїв, то нам залишається лише порадити якомога уважніше прочитати відповідне довідкове керівництво. Постарайтеся знайти в них інформацію про те, які порти вам дійсно необхідні і як відключити останні, щоб звести ризик до мінімуму.
Активне визначення операційної системи
Отже, ми переконалися,
що існує безліч різних прийомів і засобів сканування портів. Пригадаєте, що при скануванні портів переслідується дві основна мета. По-перше, потрібно встановити, які TCP- і UDP-порты на досліджуваному комп'ютері знаходяться в стані очікування запитів. По-друге, необхідно визначити тип операційної системи, використовуваної на видаленому вузлі. Інформація про операційну систему знадобиться на подальших етапах, при складанні схеми уразливих ділянок. Про це мова піде в подальших розділах. Важливо пам'ятати, що при цьому необхідно бути особливо точним і уважним до дрібниць. Саме тому дуже важливо абсолютно правильно встановити тип видаленої операційної системи. При визначенні типу ОС дуже корисною виявляється непряма інформація, що отримується, наприклад за допомогою збору маркерів, про які ми поговоримо в розділі 3. При цьому буде зібрана інформація про такі служби, як FTP, telnet, SMTP, HTTP, POP і інших. Збір маркерів — це один з найпростіших методів визначення типу операційної системи, а також версій служб, що працюють під її управлінням. Неважко здогадатися, що існують різні засоби, покликані допомогти в рішенні цієї задачі. Серед доступних можна відзначити дві утиліти, що дозволяють отримати найточніші результати, — вже добре нам відома nmар і
утиліта queso. Точність результатів, що видаються обома утилітами, пояснюється, перш за все, тим, що обидві вони надають можливість дослідження стека протоколів Tcp/ip (stack fingerprinting).
|