Оглавление |
---|
Описание
WIPS/WIDS - внутренний сервис точки доступа (ТД) по предотвращению и обнаружению вторжений в беспроводную сеть.
По своей сути этот механизм анализирует весь трафик в радио окружении ТД, делает вывод о наличии в сети угроз безопасности, оповещает о них администратора СУ и, при необходимости, предпринимает действия по подавлению этих угроз.
В текущем релизе ПО точки доступа (1.18.0) поддерживается следующий функционал:
- Детектирование DDoS атаки;
- Отслеживание перебора паролей;
- Отслеживание небезопасной конфигурации;
- Детектирование точек, имитирующих SSID;
- Детектирование точек, имитирующих MAC;
- Отключение клиентов от вражеских ТД;
- Отправка трапа о попытке несанкционированного доступа к ТД в СУ.
eltex-wids-service - вспомогательный сервис на серверной стороне, отвечающий за распространение белых/черных списков "вражеских" ТД между участниками WIPS/WIDS.
Лицензирование
Лицензия ограничивает настройку и мониторинг сервиса WIPS/WIDS в СУ.
В демо-лицензии EMS (лицензия по-умолчанию) доступна активация сервиса на 2-х ТД.
Количество доступных и использованных на сервере лицензий можно увидеть в GUI EMS в разделе Справка → Лицензии:
Либо непосредственно в самом файле лицензий /usr/lib/eltex-ems/conf/licence/licence.xml:
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
<group> <title>Wireless WIPSWIDS</title> <count>10</count> <typeList> <type>WiFi</type> </typeList> </group> |
Если лицензия на WIPS/WIDS присутствует в списке, то в GUI EMS в меню "Wireless" будет доступна для настройки вкладка "WIDS manager":
А на вкладке "Доступ" точки доступа появятся соответствующие флаги активации сервиса.
Управление
Активация сервиса на точке доступа
В GUI EMS явно регулируется какой точке доступа отдать лицензию. Для этого в параметрах доступа точки есть две настройки :
- параметр "Вкл WIDS/WIPS сервис" - определяет точку доступа, которая будет использовать сервис. При установке флага, количество доступных устройств, которые могут использовать сервис WIDS/WIPS, уменьшится в лицензии на 1. По-умолчанию флаг снят - сервис WIPS/WIDS не доступен.
- параметр "Реальное применение WIDS/WIPS" - это не редактируемый флаг, он отражает смогла ли система активировать сервис или нет. Может получиться так, что в базе данных параметр "Вкл WIDS/WIPS сервис" выставлен для большего количества точек, чем фактически разрешено в лицензии, тогда для части точек этот флаг будет снят, хотя флаг активации выставлен.
Определить, что сервис успешно активирован, можно по нескольким признакам:
- на странице "Доступ" выставлено оба флага:
- "Вкл WIDS/WIPS сервис";
- "Реальное применение WIDS/WIPS".
- на вкладке "Конфигурация" появился новый раздел - "WIDS/WIPS"
Настройка сервиса на точке доступа и логика работы
Все точки доступа в эфире можно разделить на три группы:
- "не доверенные" ТД - точки, которые присутствуют в эфире, но о них более ничего не известно;
- "доверенные" ТД - точки, которые установлены и управляются оператором;
- "вражеские" ТД - точки, которые однозначно несут угрозу для остальных точек доступа в сети - это ТД, которые имитируют MAC-адрес или SSID исходной ТД.
Для однозначного выявления всех "не доверенных" ТД эфире, в Beacon пакет точек доступа, использующих сервис WIDS, добавляется динамически изменяющаяся зашифрованная подпись.
Расшифровать пакет могут лишь те точки, на которых настроен идентичный ключ Shared key в конфигурации сервиса.
Если подписи в пакете нет, либо при его декодировании получен не ожидаемый результат, точка доступа, от которой был получен пакет, будет считаться "не доверенной". Иначе "доверенной"
Если "не доверенная" точка доступа имеет MAC-адрес или SSID, совпадающий с текущими значениями на сканирующей ТД, то такая точка будет считаться "вражеской", о чем будет сообщено администратору СУ, посредством отправки с ТД соответствующего трапа в систему управления.
Раскрыть | |||||||
---|---|---|---|---|---|---|---|
| |||||||
|
Для более гибкой работы сервиса, есть возможность явно указать список ТД, которые должны или не должны считаться "доверенными" ТД. Этот список распространяется между точками доступа вспомогательным сервисом eltex-wids-service.
Основная настройка сервиса происходит во вкладке "WIDS/WIPS" в меню "Конфигурация".
Имя параметра | Допустимые значения | Описание | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
WIDS Parameters | ||||||||||||||
Status | Full/Down/Key-only | Full - активировать работу сервиса отслеживания атак. Down - отключить сервис. Значение по-умолчанию. Key-only - активировать сервис, но отключить детектирование угроз. В режиме Key-only точка будет добавлять шифрованную подпись в Beacon для того, чтобы на встречных ТД попасть в список "доверенных" ТД, но сама детектировать угрозы не будет. Для настройки доступно лишь поле Shared key. | ||||||||||||
Shared key | ASCII строка от 10 до 32 символов | Общий ключ, используемый для отслеживание доверенных точек доступа в радиоэфире. По-умолчанию значение не выставлено и активировать сервис нельзя, пока оно не будет установлено. | ||||||||||||
WIDS list URL | ws://<ip>:<port>/MacLists | Путь до вспомогательного сервиса eltex-wids-service. Не обязательная настройка. | ||||||||||||
WIDS MAC list | Имя списка мак адресов | Предоставляется возможность выбрать один из списков MAC-адресов, созданных в разделе "Wireless - WIDS Manager" Не обязательная настройка. | ||||||||||||
Scan mode | Passive/Sentry/Home-only | Режим сканирования эфира. Passive - в этом режиме точка доступа через заданные промежутки времени (Passive scan interval) будет кратковременно (Passive scan duration) менять свой текущий канал (на котором идет работа с клиентами) на очередной канал из общего списка, для обнаружения других ТД в эфире. Качество услуги, предоставляемой клиенту, в момент сканирования не ухудшается. Значение по-умолчанию. Sentry - режим сканера - в данном режиме не предусмотрена работа точки доступа с клиентами. Точка постоянно сканирует весь список каналов и максимально быстро обнаруживает угрозы. Home-only - режим, при котором точка работает с клиентом и периодически сканирует эфир только на рабочем канале. Отличие от режима Passive заключается в том, что точка в момент сканирования не меняет канал. | ||||||||||||
Passive scan interval, sec | 5..3600 | Период пассивного сканирования. Значение по-умолчанию: 20 сек. | ||||||||||||
Passive scan duration, ms | 10..2000 | Длительность пассивного сканировании. Значение по-умолчанию: 100 мс. | ||||||||||||
Home-only scan interval, sec | 5..3600 | Период сканирования в режиме Home-only. Значение по-умолчанию: 20 сек. | ||||||||||||
Home-only scan duration, ms | 10..2000 | Длительность сканирования в режиме Home-only. Значение по-умолчанию: 100 мс. | ||||||||||||
Prevention mode | None/Rogue/All | Режим подавления угроз. None - режим выключен. Значение по-умолчанию. Rogue - сканирующая ТД детектирует MAC-адреса клиентов, которые подключены к "вражеским" ТД, и отравляет DeAuth пакеты от имени "вражеской" ТД клиенту и от имени клиента "вражеской" ТД. All - в данном режиме форсированный DeAuth пакет отправляется не только клиентам, подключенным к "вражеским" ТД, а вообще всем, кто подключен к "не доверенной" ТД. | ||||||||||||
Misconfigure detection | Off/On | Функционал, при включении которого точка доступа отправляет в систему управления трап при каждом изменении в настройках конфигурации, если итоговая конфигурация небезопасна. Значение по-умолчанию: off С критериями небезопасной конфигурации можно ознакомиться в статье - v1.23_Критерии небезопасной конфигурации
| ||||||||||||
DoS Detection Parameters | ||||||||||||||
Mode | Up/Down | Активирование функции детектирования DoS-атак. Значение по-умолчанию: down. DoS атака определяется превышением лимита управляющих фреймов разных типов в радиоэфире. Анализируются только фреймы, в которых destination mac совпадает с mac-адресом сканирующей ТД. (исключение Beacon) | ||||||||||||
Interval, sec | 1..86400 | Интервал, в течение которого идет подсчет фреймов. Если за это время заданный лимит превышен, то будет сгенерирован SNMP-трап об обнаружении атаки.
Значение по-умолчанию: 1 сек. | ||||||||||||
DoS-trigger | 1..1000000000 | Параметр показывает, насколько должно измениться количество пакетов по сравнению с предыдущим периодом, чтобы был отправлен трап о DoS-атаке. Значение по-умолчанию: 250. | ||||||||||||
... treshlold | 1..10000 | Пороговый лимит для каждого типа управляющего фрейма (Assoc, ReAssoc, DiAssoc, Auth, DeAuth, RTS, CTS, Prob, Beacon, BlockAck, BlockAckReq, Pspoll ) Значение по-умолчанию: 500. | ||||||||||||
Bruteforce Detection Parameters | ||||||||||||||
Interval, sec | 0..86400 | Функция детектирования атаки перебора паролей. В течение указанного интервала считается количество неуспешных авторизаций пользователей на SSID с шифрованием (Personal и Enterprise) активных на сканирующей ТД. Если порог Threshold был превышен, в СУ отправляется трап об обнаружении атаки "перебор паролей".
Значение по-умолчанию: 5 сек. При значении параметра Interval = 0, детектирование атаки "перебор паролей" будет отключено. | ||||||||||||
Threshold | 1..10000 | Пороговый лимит количества неуспешных авторизаций. Значение по-умолчанию: 25. | ||||||||||||
Enable MAC Blacklist | On/Off | При включении данной функции MAC-адреса клиентских устройств, замеченных за атакой "перебор паролей", будут добавлены в черный список на период времени Timeout. При попадании в "MAC Blacklist" устройство будет игнорироваться точкой доступа на период времени Timeout, в результате чего, клиент не сможет подключиться к сети. Значение по-умолчанию: off | ||||||||||||
Timeout, sec | 1..86400 | Время хранения MAC-адреса клиентского устройства в черном списке. Значение по-умолчанию: 1800 сек |
Начиная с версии ПО точки доступа 1.18.0 появилась возможность отправки трапа о попытке несанкционированного доступа к ТД в СУ. Данный функционал (ap-security) включен на точке по-умолчанию и работает следующим образом:
Если в течение 180 секунд будет совершено 3 попытки входа в интерфейс управления ТД с неверными учетными данными (login/password) посредством telnet/ssh/web/consol, то ip-адрес устройства, с которого были совершены неудачные попытки входа, будет добавлен в черный список на 5 минут, а в СУ отправится предупреждающий трап.
Раскрыть | |||||||
---|---|---|---|---|---|---|---|
| |||||||
|
Имя параметра | Допустимые значения | Описание |
---|---|---|
logon-snmp-retries | 0..127 | Количество неудачных попыток входа в интерфейс управления ТД, при достижении которых за интервал logon-snmp-interval, ip-адрес устройства будет добавлен в "черный список". Значение по умолчанию: 3 |
logon-snmp-interva, sec | 1..86400 | Интервал, в течение которого ведется подсчет неудачных попыток входа в интерфейс управления ТД. Значение по умолчанию: 180 сек |
logon-snmp-freeze-interval, sec | 0..600 | Время, в течение которого ip-адрес устройства, с которого была зафиксирована попытка входа в интерфейс управления ТД с неверными учетными данными, будет находиться в черном списке. Значение по умолчанию: 300 сек |
Редактировать и просматривать значения параметров, а также включать/выключать функционал отправки трапов о попытке несанкционированного входа в интерфейс управления ТД, можно только через CLI точки доступа.
Блок кода | ||||
---|---|---|---|---|
| ||||
Команда для вывода значений параметров: get ap-security Пример вывода команды: Property Value --------------------------------- logon-snmp-retries 3 logon-snmp-interval 180 logon-snmp-freeze-interval 300 Команда для изменения значения параметра: set ap-security <имя_параметра> <значение> Пример: set ap-security logon-snmp-interval 86400 Команда для выключения работы функционала: set ap-security logon-snmp-retries 0 Для сохранения внесенных изменений введите команду: save-running |
Настройка вспомогательного сервиса eltex-wids-service
Переопределение "доверенных" и "вражеских" точек доступа происходит путем явного задания списков в GUI EMS (раздел "Wireless → WIDS Manager") и дальнейшего их указания в поле "WIDS MAC list" на вкладке "WIDS/WIPS" в меню "Конфигурация" ТД.
/etc/eltex-wids-service/config.hocon
Конфигурационный файл сервиса.
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
serviceConfiguration = { ApplicationConfiguration = { ServicePort = 9095 // service listen port // if this environment equals to 'production', all logs will transmit to graylog // else if this environment equals to 'k8s', all logs will be written to stdout Environment = "production" SleepDaemonQueueTime = 5 // time for sleep (unit: milliseconds) FoulTime = 60 // time of raw event, they disappear (unit: seconds) GelfEnabled = false // inclusion of sending logs to graylog DatabaseName = "wids" // database name MongoConnectionString = "mongodb://127.0.0.1:27017" // database connection string } } logs = { LoggerConfiguration = { LogLevel = "error" FileLog = "/var/log/eltex-wids/wids.log" // name of log file MaxSize = 5 // maximal size of log file (unit: megabyte) MaxAge = 30 // maximum log lifetime (unit: days) MaxBackups = 10 // maximum number of backups (unit: amount of log files) Compress = true // the need of compression GelfHostWithPort = "localhost:12201" // address of graylog server } } |
- Порт, на котором работает сервис:
Блок кода |
---|
ServicePort = 9095 |
- Среда логирования. Доступны 2 значения: "production" - отправка логов в Graylog, "k8s" - вывод логов в stdout.
Блок кода |
---|
Environment = "production" |
- Активация отправки в Graylog:
Блок кода |
---|
GelfEnabled = false |
- Название коллекции, с которой работает сервис:
Блок кода |
---|
DatabaseName = "wids" |
- Путь к БД:
Блок кода |
---|
MongoConnectionString = "mongodb://127.0.0.1:27017" |
- Уровень логирования:
Блок кода |
---|
LogLevel = "error" |
- Расположение папки хранения логов:
Блок кода |
---|
FileLog = "/var/log/eltex-wids/wids.log" |
- Максимальный размер файла логов:
Блок кода |
---|
MaxSize = 5 |
- Максимальный период хранения файлов логов:
Блок кода |
---|
MaxAge = 30 |
- Максимальное число бэкапов:
Блок кода |
---|
MaxBackups = 10 |
- Активация сжатия файлов логов:
Блок кода |
---|
Compress = true |
- Адрес и порт Graylog:
Блок кода |
---|
GelfHostWithPort = "localhost:12201" |
Докеризация сервиса
Сервис может быть запущен в docker-контейнере. Для этого необходимо подготовить файл с переменными окружения .env и docker-compose.yml
Блок кода | ||||
---|---|---|---|---|
| ||||
version: "3" services: wids: image: hub.eltex-co.ru/softwlc/eltex-wids:1.21-<tag> ports: - 9095:9095 volumes: - "/var/log/eltex-wids:/var/log/eltex-wids" - "/etc/eltex-wids-service/config.hocon:/etc/eltex-wids-service/config.hocon" environment: - LogLevel=${WIDS_LOG_LEVEL} - MongoUrl=${WIDS_MONGO_URL} - DBName=${WIDS_DB_NAME} - SleepDaemonQueueTime=${WIDS_SLEEP_DAEMON_QUEUE_TIME} - FoulTime=${WIDS_FOUL_TIME} |
Подсказка |
---|
Вместо <tag> необходимо указать актуальную версию, которую можно посмотреть по ссылке. |
Блок кода | ||||
---|---|---|---|---|
| ||||
WIDS_LOG_LEVEL=error WIDS_MONGO_URL=mongodb://<IP-address>:27017 WIDS_DB_NAME=wids WIDS_SLEEP_DAEMON_QUEUE_TIME=5 WIDS_FOUL_TIME=60 |
Описание переменных окружения
Запуск сервиса
- ServicePort - порт, на котором будет стартовать сервис внутри контейнера.
Параметры работы сервиса
- SleepDaemonQueueTime - время задержки обработки очереди;
- FoulTime - время до удаления необработанных событий.
Подключение к MongoDB
- DBName - имя базы данных
- MongoUrl - адрес MongoDB-сервера.
Логирование
- LogLevel - уровень логирования (ERROR, INFO, DEBUG);
- FileLog - путь до файла с логами;
- MaxSizeFileLog - максимальный размер лог-файла в Мб;
- MaxAgeFileLog - максимальное время хранения лог-файла в днях;
- MaxBackupsFileLog - максимальное количество файлов логов;
- CompressLogs - архивировать ли лог-файлы;
- GelfHostWithPort - хост и порт подключения к GrayLog;
- LogEnvironment - среда работы сервера; определяет место, куда будут писаться логи (file/stdout);
- GelfEnabled - отправлять ли логи в GrayLog.