Введение
Сегодня о безопасности беспроводных сетей говорят часто и много, но взлом сети воспринимается как что-то очень далёкое. Мы уже публиковали материал о том, как взломать защиту WEP. Кроме того, через некоторое время вышло продолжение о том, как защитить сеть. Сегодня же наше внимание будет посвящено инструментам проверки защиты беспроводной сети. А также системам обнаружения атак – своеобразной “пожарной сигнализации” вашей WLAN.
Кстати, если уж говорить о взломе WLAN, то особенно уязвимыми нам кажутся пользователи домашних и небольших офисных сетей. Это связано, прежде всего, с тем, что у них есть другие задачи, кроме как защищать свою беспроводную сеть. Да и, в отличие от крупных компаний, у них нет возможности принять на работу профессионалов.
Однако, не всё так печально, как кажется. В природе существуют способы для оценки защищённости беспроводной сети, несмотря на кажущуюся абсурдность сочетания слов “безопасность” и “беспроводная сеть”. Системы распознавания атак (Intrusion Detection Systems – IDS) позволяют обнаружить возможные способы вторжения ещё до того, как они произойдут, пока враг ищет лазейку. Конечно, такие системы не могут гарантировать полную защищённость (а что, кстати, может?), но в сочетании с брандмауэрами и другими средствами защиты они могут оказаться весьма полезными. Принято считать, что IDS это своего рода охранная сигнализация: то есть она лишь оповещает об атаке, оставляя работу с атакующим на другие системы и средства (вплоть до физических).
Рис. 1. Snort IDS.
Одной из систем IDS является Snort. Она основана на открытом исходном коде и легко настраивается на конфигурацию любой WLAN. Отметим, что Snort сегодня считается стандартом де-факто для систем обнаружения атак. Snort гибка, быстра и, что также немаловажно, свободно распространяема. Всё это позволяет использовать её для мониторинга беспроводного трафика.
Snort, также как и другие IDS, особенно эффективно срабатывает при осуществлении атак на беспроводную сеть. Ранее мы уже рассказывали о том, как можно взломать защиту WEP. Добавим, что даже более стойкие методы шифрования можно взломать, а также преодолеть схемы аутентификации, используемые в беспроводной сети. Всё это позволяет использовать Snort для выявления подобных атак и блокирования их до того, как они сработают.
Кстати, для пользователей беспроводных сетей существует специальная версия Snort. Она носит соответствующее название Snort Wireless и содержит правила для определения наиболее распространённых атак на точки доступа. Конечно же, систему можно более тонко настроить на нужды конкретной WLAN. В нашем материале мы рассмотрим работу Snort и покажем, как систему можно реализовать в вашей беспроводной сети.
Snort в деталях
Snort является целым комплексом. Про Snort написано множество руководств, книг и даже лекций, описывающих настройку и работу с системой. Мы не будем вдаваться в мельчайшие детали Snort и рассмотрим только основы, которые помогут настроить программу и работать с ней.
Snort работает с предварительно заданными шаблонами вредоносного трафика, называемыми правилами (rules) (Рис. 2), которые позволяют определить, какой трафик в сети является вредоносным, а какой – нет. Это похоже на антивирусные программы, так как правила нужно периодически обновлять. Snort может обнаружить только известные атаки, так что здесь не забывайте регулярно обновлять базы правил.
Рис. 2. Набор правил Snort.
Правила имеют достаточно простой синтаксис, который показан ниже.
<action> <protocol> <first host> <first port> <direction> <second host> <second port> (<rule options>;) |
Срабатывание одного из правил может включить тревогу (alert), как указано в настройках IDS, включить запись пакетов в журнал (log) или просто будет проигнорировано (pass). Опции правил (rule options) позволяют задать определённое содержимое пакета (например, конкретный байт или размер пакета), а также указать сообщение, выводимое в журнал. Ниже приведён пример правила, которое поднимает тревогу, если кто-то “пингует” компьютер.
alert icmp any any -> 192.168.1.1 any (msg: “Да это же ping!”;) |
Это правило ждёт ICMP-пакеты с любого узла, направленные на маршрутизатор (в нашем случае 192.168.1.1), и при появлении таковых выводит сообщение “Да это же ping!”. Более сложные правила могут содержать переменные (например, диапазоны IP-адресов для внутренней или внешней сети) или даже включать файлы. Если вы хотите задавать правила самостоятельно, рекомендуем ознакомиться с пунктом How to Write Snort Rules and Keep Your Sanity в документации Snort (на английском).
Кроме правил, Snort позволяет настраивать так называемые предпроцессоры (preprocessors), которые сканируют трафик до того, как начинают действовать обычные правила. Предпроцессоры особенно полезны при работе с обычным или известным трафиком, например сканированием портов и ping-пакетов, которые могут снижать скорость обработки через обычные правила, требующие больше ресурсов.
Установка
Перед тем, как начать настройку, нужно найти систему, на которой можно не только запустить Snort, но и которая, в то же время, может работать в качестве точки доступа. Мы решили воспользоваться старым добрым беспроводным маршрутизатором Linksys WRT54G (см. наш обзор). Этот маршрутизатор работает под управлением прошивки с открытым исходным кодом, которую всегда можно заменить любой другой с расширенными возможностями, включая поддержку Snort. Конечно, для Snort вы можете использовать запасной компьютер с беспроводной картой и обычным сетевым адаптером Ethernet, если установите его в режим точки доступа.
Рис. 3. Linksys WRT54G.
Ниже мы будем приводить примеры на основе WRT54G с прошивкой OpenWRT RC 2 (с кодовым названием “White Russian”). На самом деле существует множество дистрибутивов Linux для беспроводных маршрутизаторов, но мы остановились именно на прошивке OpenWRT, поскольку она простая, “лёгкая” и поставляется в пакетном виде наподобие Debian Linux.
Рис. 4. OpenWRT в работе.
Предупреждение. Загрузка OpenWRT, Snort Wireless или других альтернативных версий прошивки в WRT54G лишает гарантии. Перед тем, как начать прошивку альтернативной версии, рекомендуем скачать копию текущей версии прошивки
Мы не будем детально рассматривать установку OpenWRT, так как на сайте OpenWRT можно найти прекрасное руководство по инсталляции. После завершения установки можно подключиться к маршрутизатору при помощи Telnet (здесь приведены инструкции) и насладиться результатом.
После установки OpenWRT на маршрутизатор, можно скачивать и устанавливать программу Snort Wireless. Всё это можно сделать через упомянутую пакетную систему OpenWRT – выполнить команду ipkg со следующими параметрами.
ipkg install http://nthill.free.fr/openwrt/ipkg/testing/20041204/snort-wireless_2.1.1-1_mipsel.ipk |
Некоторым может не понравиться, что этому пакету уже больше года. Но ничего страшного в этом нет, поскольку все необходимые функции IDS здесь присутствуют, а все более поздние правила Snort можно тоже скачать через ipkg (подробнее: OpenWRT tracker page). Если вы решили организовать точку доступа на ПК, то можете скачать исходный код Snort Wireless и скомпилировать его прямо на компьютере. Отметим, что при этом следует добавить флаг –enable-wireless, иначе предпроцессоры Wi-Fi не будут работать.
Snort Wireless работает подобно обычному Snort, однако специально предназначен для беспроводных точек доступа, позволяя эффективно защитить их от атак. В частности, он содержит новый протокол правил, названный wifi и позволяющий IDS правильно выделять беспроводной трафик, типичный для распространённых атак на WLAN. Например, тех же атак при помощи Netstumbler или попыток взлома WEP. Использование протокола wifi в Snort Wireless очень похоже на настройку обычных правил для Snort, но с одним исключением: вместо ввода IP-адресов и портов первого и второго узлов, следует использовать их МАС-адреса.
Настройка и запуск
На этом этапе у нас есть работающий Snort Wireless. Переходим к его настройке для использования в выбранной сети. При запуске ipkg Snort устанавливается в каталог /etc/snort на маршрутизаторе. Как и другие программы для Unix, Snort использует редактируемый конфигурационный файл, где можно указать информацию о сетевом окружении и шаблонах различных атак, которые нужно отслеживать. Файл носит название snort.conf (Рис. 5) и располагается в каталоге /etc/snort. Его нужно открыть в любом текстовом редакторе (если такового на маршрутизаторе нет, скачайте с помощью ipkg).
Рис. 5. Конфигурационный файл snort.conf.
Теперь можно настроить все необходимые параметры сети, включая имя точки доступа, на которой работает IDS, и MAC-адреса тех клиентов, которых нужно отслеживать. Здесь можно настроить множество параметров, так что внимательно просмотрите все из них, чтобы ничего не пропустить.
В частности, обратите внимание на предпроцессоры, специфичные для Wi-Fi в Snort Wireless. Они включают предпроцессоры для определения пассивного сканирования сети с помощью программ вроде NetStumbler и попытки подмены MAC-адресов. Мы решили рассмотреть важные предпроцессоры отдельно.
Рис. 6. Предпроцессор AntiStumbler позволяет оповещать об атаке recon.
- AntiStumbler. Такие программы, как NetStumbler и MacStumbler (Рис. 6), используют для обнаружения точек доступа нулевые SSID. Эти SSID работают как широковещательные и заставляют другие точки доступа прислать свои SSID на запросивший узел. Подобная функция полезна при поиске доступных беспроводных сетей. Предпроцессор AntiStumbler распознаёт рассылку слишком большого количества нулевых SSID с одного MAC-адреса и может поднять тревогу.
Примечание. Этот предпроцессор не позволяет определять такие программы, как Kismet, поскольку те всего лишь пассивно прослушивают кадры 802.11, а не посылают запросы. - DeauthFlood. Эта атака была подробно описана в нашем материале о взломе WEP. Используется для отключения хостов от точек доступа и принудительной активации попытки повторного подключения, что даёт дополнительные пакеты для анализа во время взлома WEP. Кроме того, атаку можно использовать для “отказа в обслуживании” (Denial of Service, DoS) точки доступа. Предпроцессор DeauthFlood распознаёт этот тип атаки, подсчитывая количество кадров деаутентификации в единицу времени и, в случае необходимости, поднимает тревогу.
- AuthFlood. Атака похожа на предыдущую, но предпроцессор AuthFlood определяет слишком частое число попыток аутентификации, то есть попыток подключения клиентов к беспроводной сети, что может использоваться в качестве DoS-атаки на точку доступа.
- MacSpoof. Один из наиболее эффективных способов ограничения доступа к точке доступа – это создание списка MAC-адресов разрешённых клиентов. К сожалению, атакующий может подделать MAC-адрес своей машины и подключиться к точке доступа. Препроцессор MacSpoof проверяет номера пакетов и при обнаружении каких-либо несоответствий, указывающих на возможную подмену MAC-адреса, поднимает тревогу.
- RogueAP. Чужие (“вражеские”) точки доступа маскируются под обычные для того, чтобы пользователь ошибочно подключался к ним и передавал какие-либо личные данные. Этот предпроцессор пока не реализован, однако в будущих выпусках он сможет сообщать о близости чужих точек доступа.
Кроме того, Snort Wireless включает множество предопределённых правил для огромного количества ситуаций. В зависимости от конфигурации сети, некоторые из правил могут оказаться очень удобными. Например, все правила web, если в вашей сети работает web-сервер. Для активации правила достаточно просто убрать комментарий с соответствующей строки в конфигурационном файле Snort. Отдельные наборы правил по умолчанию сохраняются в каталоге /etc/snort/rules, причём любые из них можно просмотреть при помощи текстового редактора. Правила в наборах заданы точно так же, как и в самом Snort. Кстати, следуя примерам, можно легко написать правило самостоятельно.
Рис. 7. Правило Snort обнаружило машину, сканирующую порты.
В работе
Когда файл snort.conf готов, можно запускать Snort. При запуске можно указать множество параметров, которые определяют всё, начиная от вывода и заканчивая режимом работы. Для начала давайте запустим Snort со следующими параметрами (в строек Telnet).
snort -D -A full |
Эта команда запускает Snort в виде фонового процесса, так что вы можете и дальше спокойно работать с оболочкой. Во время срабатывания тревоги в журнал будет заноситься полная информация.
Теперь, когда Snort работает, можно подумать над дополнительными способами защиты беспроводной сети. Скажем, можно обратиться к Kismet – утилите, подобной Snort, которую можно развернуть в качестве дополнительной системы обнаружения атак. Snort работает лишь на третьем уровне модели OSI – сетевом, отвечающем за IP и другой трафик. А Kismet работает на втором уровне – канальном, ответственном за кадры Ethernet. Таким образом, развёртывание обеих систем в паре позволит существенно повысить общую защищённость.
Рис. 8. Kismet в работе.
Можно настроить Snort на запись журналов в базу данных, что упрощает дальнейший анализ. Дэниэл Уолтер (Daniel Walther) написал руководство о том, как настроить запись в базы MySQL и PostgreSQL. Если вы используете Gentoo Linux на машине, работающей в качестве точки доступа, то можно пойти дальше: установить Apache и настроить отображение журналов через web. На сайте Gentoo Wiki можно найти подробное описание подобной настройки.
Рис. 9. Просмотр журналов Snort через MySQL, ACID и Apache.
Заключение
Мы затронули лишь основные принципы работы Snort. В принципе, по материалам статьи вы сможете настроить систему на точке доступа. Однако у Snort гораздо больше возможностей, чем описано в статье. В частности, вы можете заняться созданием правил самостоятельно, что поможет глубже интегрировать Snort в сеть.
Наконец, не забывайте, что для эффективной защиты беспроводной сети необходимо постоянно обновлять как Snort, так и правила. Не забывайте регулярно посещать Snort Wireless, а также ipkg package tracker (для инсталляций OpenWRT) или Snort rules page (для остальных).
Как и другие средства обеспечения безопасности, Snort не является панацеей для защиты сети. Это всего лишь один из бастионов вашей крепости. Но в комплексе защиты он работает очень даже неплохо.