АНДРЕЙ ДУГИН, системный администратор Группы Безопасности информационных систем «МТС-Украина».
Специализируется на системах IDS и IPS. Интересы: системная и сетевая безопасность
Cisco IDS/IPS
Безопасная настройка
Системы обнаружения вторжений должны быть правильно сконфигурированы для предотвращения несанкционированного доступа.
Самый первый этап защиты – информационный. Очень ограниченное количество специалистов знает о том, что существуют такие устройства, как IDS/IPS, и еще меньше догадывается о том, что они используются в той или иной корпоративной сети. Дальнейшая защита осуществляется технологическими методами.
Командная строка в Cisco IPS/IDS очень похожа на Cisco IOS CLI. В то же время Cisco IPS основаны на Linux RedHat, поэтому возможно управление как IPS, так и ОС.
Примечание: статья не является полным и универсальным руководством по настройке, эксплуатации и обеспечению безопасности систем обнаружения и предотвращения вторжений производства Cisco Systems. Более подробная информация доступна на сайте производителя [1].
Управление учетными записями пользователей
В Cisco IPS определены 4 уровня доступа пользователей:
Administrator – «суперпользователь» IPS. Имеет право на произведение любых действий в IPS CLI, но не имеет доступа в консоль операционной системы.
Operator – доступно большинство функций CLI IPS, кроме управления конфигурационными файлами, пользователями и рестарта/выключения системы.
Viewer – уровень доступа без возможности редактирования.
Service – пользователь консоли Linux.
Рекомендую создать хотя бы одну учетную запись пользователя с уровнем доступа service на случай сбоя mainApp-сенсора, и, как результат, отсутствия возможности входа в Cisco IPS CLI. Доступ в консоль операционной системы позволит диагностировать и, возможно, решить возникшую проблему. Как минимум будет инструмент для сбора необходимой для службы поддержки производителя информации (cidDump, tech-support, logs). Пароль пользователя уровня service используется также для перехода в режим суперпользователя root командой su консоли Linux. Производитель официально предупреждает о том, что вносить изменения, используя уровень доступа service, рекомендуется только в случае прямых указаний службы поддержки [2].
Создание учетной записи пользователя
Производится в режиме глобальной конфигурации. Пароль для пользователя можно ввести как в открытом виде:
ids(config)# username test privilege operator password u$erp@$$
так и в безопасном:
ids# configure terminal
ids(config)# username test privilege operator
Enter new login password : **********
Re-enter new login password : ********** |
Увидеть всех пользователей в Cisco IPS CLI можно в режиме, аналогичном EXEC-режиму Cisco IOS, с помощью команды:\
ids# show users all
CLI ID User Privilege
* 12528 admin administrator
andrey service
cisco administrator
soc viewer
test operator |
Изменение пароля для учетной записи пользователя
Когда возникает необходимость изменить пароль пользователя, например, при компрометации или стандартной ситуации «забыл пароль», администратор IPS может осуществить операцию с помощью команды (в данном случае для пользователя test):
ids(config)# password test
Enter new login password : *********
Re-enter new login password : ********* |
Удаление учетной записи пользователя
В случае необходимости удалить учетную запись пользователя можно командой:
ids(config)# no username test
При попытке удалить встроенного пользователя cisco получим:
ids(config)# no username cisco
Error: this account cannot be removed.
Use the 'no password' command to disable account. |
Парольная политика Cisco IPS не позволяет использовать «слабые» пароли для пользователей, однако для большей безопасности рекомендую создать пользователя с правами администратора IPS, а аккаунт cisco заблокировать:
ids(config)# no password cisco
Определить то, что пользователь cisco заблокирован, можно по круглым скобкам:
ids# show users all
CLI ID User Privilege
* 12528 admin administrator
andrey service
(cisco) administrator
soc viewer |
Настройка парольной политики
Парольная политика Cisco IPS по умолчанию предъявляет строгие требования к паролям, однако если есть необходимость ужесточить ее – предоставляется возможность задать:
- длину пароля;
- количество символов верхнего и нижнего регистра в пароле;
- количество цифр и спецсимволов в пароле;
- количество старых паролей, которые помнит сенсор.
Настройки производятся через режим конфигурации службы аутентификации:
ids# configure terminal
ids(config)# service authentication
Сброс сессии
Определить, что пользователь в данный момент работает с Cisco IPS через CLI, возможно с помощью той же команды show users all. Звездочкой (*) обозначена сессия текущего пользователя:
ids# show users all
CLI ID User Privilege
* 12528 admin administrator
14167 soc viewer
andrey service
(cisco) administrator |
Если возникает необходимость сбросить сессию другого пользователя, например, по причине зависания ssh-клиента, тайм-аута, принятия решения о нелегитимности сессии и т.п., определяем ее CLI ID (в данном случае для soc – 14167) и принудительно обрываем:
ids# clear line 14167
Изменение привилегий пользователя
При необходимости изменения уровня доступа пользователя администратор IPS может произвести эту операцию с существующими пользователями:
ids(config)# privilege user test viewer
Warning: The privilege change does not apply to current CLI sessions.
It will be applied to subsequent logins. |
Как предупреждает IPS, если пользователь, которому переназначили права доступа, на момент их реконфигурации использует активную сессию, изменения коснутся его только после повторного логина. Соответственно, нужно либо сообщить пользователю о такой необходимости, либо сбросить его сессию.
Для аккаунта cisco также возможно изменение уровня доступа.
Настройки узла
Структура настроек Cisco IPS организована таким образом, что из знакомого всем по IOS режима global config возможен переход в режимы специфической конфигурации каждого сервиса:
ids# configure terminal
ids(config)# service host
Сетевой доступ
Достаточно важной частью обеспечения безопасности любого сетевого устройства является ограничение доступа по сети. Само собой разумеется, что IP-адрес интерфейса управления сенсора должен находиться в максимально защищенном корпоративными файерволами административном (management) VLAN. Однако для комплексности защиты не помешает настройка собственного брандмауэра IPS. Из режима конфигурации хоста переход в режим конфигурации доступа по сети к сенсору осуществляется так:
ids(config-hos)# network-settings
В режиме конфигурации любого сервиса возможен просмотр настроек, касающихся сугубо текущего специфического режима с помощью команды:
ids(config-hos-net)# show settings
network-settings
-----------------------------------------------
host-ip: 10.0.1.50/24,10.0.1.1
default: 192.168.1.2/24,192.168.1.1
host-name: ids default: sensor
telnet-option: disabled default: disabled
access-list (min: 0, max: 512, current: 6)
-----------------------------------------------
network-address: 10.0.11.11/32
-----------------------------------------------
network-address: 10.0.16.154/32
-----------------------------------------------
network-address: 10.0.12.0/27
-----------------------------------------------
-----------------------------------------------
ftp-timeout: 300 seconds <defaulted>
login-banner-text: <defaulted>
dns-primary-server
-----------------------------------------------
enabled
-----------------------------------------------
address: 10.0.2.5
-----------------------------------------------
-----------------------------------------------
dns-secondary-server
-----------------------------------------------
enabled
-----------------------------------------------
address: 10.0.2.6
-----------------------------------------------
-----------------------------------------------
dns-tertiary-server
-----------------------------------------------
disabled
-----------------------------------------------
-----------------------------------------------
-----------------------------------------------
http-proxy
-----------------------------------------------
proxy-server
-----------------------------------------------
address: 10.0.2.7
port: 3128
-----------------------------------------------
-----------------------------------------------
----------------------------------------------- |
В access-list указаны хосты и сети, с которых разрешен доступ на IPS по SSH, Telnet (если включен), HTTP (если включен), HTTPS, SNMP (если включен), ICMP.
Если обнаруживаем в списке доступа подсети или хосты, которым в данный момент не нужен доступ к management-интерфейсу и не понадобится в ближайшем будущем, либо в случае критической ситуации – удаляем:
ids(config-hos-net)# no access-list 10.0.16.154/32
Назначаем banner login
Для того, чтобы иметь возможность предупредить потенциального взломщика об уголовной ответственности, определяем текст баннера при логине, указывающий на преследование незаконных попыток подбора пароля:
ids(config-hos-net)# login-banner-text
This system is restricted to authorized users.
Individuals attempting unauthorized access will be prosecuted. |
Отключение telnet
Telnet отключен по умолчанию, как требуют нормы безопасности. Если же он оказался включен предыдущим администратором, рекомендуется его отключить:
ids(config-hos-net)# telnet-option disabled
Автоматические обновления
Для поддержания в актуальном состоянии систем обнаружения вторжений необходимо периодическое обновление сигнатур и системы. Для этого нужна лицензия производителя. Когда в распоряжении администратора 1-2 сенсора, обновление вручную может не создавать особого труда, но если их гораздо больше, стоит настроить автоматическое обновление в целях экономии времени. Автоматическое обновление возможно по протоколам FTP, SCP, HTTP, HTTPS.
Рассмотрим обновление по SCP. Необходим UNIX-сервер обновлений, на котором только создается учетная запись для сенсора с минимальными привилегиями. Корпоративными файерволами обеспечивается доступ по порту 22 от управляющих интерфейсов IDS/IPS к серверу обновлений, если они находятся не в одной подсети. Администратором IPS по мере выхода обновлений и анализа их необходимости файлы выкладываются в определенную папку, а сенсоры рациональнее всего настроить на периодическую проверку наличия обновлений. Файлы, загруженные с сайта производителя, переименовывать категорически не рекомендуется. При обновлении по SCP на сервере, где будут располагаться обновления, должна быть включена поддержка SSHv1 в sshd_config.
На сенсоре для корректной работы обновлений по SCP необходимо добавить ssh-ключ сервера обновлений в список доверенных узлов сенсора:
ids# configure terminal
ids(config)# ssh host-key 10.0.105.50
MD5 fingerprint is DE:0E:FE:AE:77:F9:4B:0D:69:49:D4:60:26:55:67:52
Bubble Babble is xulir-tyhoc-tehyb-dupez-byvat-tapiz-fepur-povok-sadem-luhyt-taxux
Would you like to add this to the known hosts table for this host?[y |
Затем можно приступать непосредственно к настройке автоапгрейда. Включаем обновление с сервера в корпоративной сети:
ids(config)# service host
ids(config-hos)# auto-upgrade
ids(config-hos-aut)# user-server enabled
Указываем IP-адрес сервера обновлений:
ids(config-hos-aut-ena)# ip-address 10.0.5.5
Указываем директорию, в которую будут выкладываться файлы обновлений, относительно пути /home/<username>:
ids(config-hos-aut-ena)# directory up
Имя пользователя на сервере обновлений:
ids(config-hos-aut-ena)# user-name ips
Указываем пароль учетной записи сенсора на сервере обновлений:
ids(config-hos-aut-ena)# password
Затем конфигурируем на обновление либо по календарю, либо периодическое обновление. Я предпочитаю последнее:
ids(config-hos-aut-ena)# schedule-option periodic-schedule
Задаем интервал в часах:
ids(config-hos-aut-ena-per)# interval 24
и время обновления. Поскольку в данном случае объем трафика в большинстве случаев будет генерироваться небольшой (объем файла сигнатур порядка 200-300 Кб), критичного влияния нет, я предпочел поставить дневное время, чтобы наблюдать за процессом:
ids(config-hos-aut-ena-per)# start-time 12:00
Рекомендую настраивать обновления на всех сенсорах в разное время с интервалом порядка 15 минут.
В случае обнаружения некорректной работы обновления сигнатур или движка (engine) либо принятия решения о возврате на предыдущую конфигурацию в CLI используется команда downgrade режима глобальной конфигурации:
ids(config)# downgrade
Производитель в своей онлайн-документации официально уведомляет о том, что возврат к предыдущей Minor- или Major-версии с помощью команды downgrade осуществить невозможно [3].
Настройка параметров времени
Для того чтобы время отработанных событий совпадало со всеми остальными информационными системами компании, рекомендую настроить синхронизацию времени с корпоративным NTP-сервером. Параметры времени сенсора настраиваются следующим образом:
ids(config-hos)# time-zone-settings
Указываем смещение в минутах относительно GMT:
ids(config-hos-tim)# offset 120
И название часового пояса:
# EET – название зоны
ids(config-hos-tim)# standard-time-zone-name EET
Настраиваем синхронизацию по NTP с сервером, не требующим аутентификации:
ids(config-hos)# ntp-option enabled-ntp-unauthenticated
ids(config-hos-ena)# ntp-server 10.0.2.123
ids(config-hos-ena)# exit
Настраиваем автоматический переход на летнее время:
ids(config-hos)# summertime-option recurringids(config-hos-rec)# offset 60ids(config-hos-rec)# summertime-zone-name EESTids(config-hos-rec)# start-summertimeids(config-hos-rec-sta)# month marchids(config-hos-rec-sta)# week-of-month lastids(config-hos-rec-sta)# day-of-week sundayids(config-hos-rec-sta)# time-of-day 03:00:00ids(config-hos-rec-sta)# exitids(config-hos-rec)# end-summertimeids(config-hos-rec-end)# month octoberids(config-hos-rec-end)# week-of-month lastids(config-hos-rec-end)# day-of-week sundayids(config-hos-rec-end)# time-of-day 04:00:00
ids(config-hos-rec-end)# exit
Сохранение изменений
Сохраняются нововведения не сразу, а при выходе из подрежима конфигурации хоста в режим global config:
ids(config-hos)# exit
Настройка SNMP
По умолчанию управление сенсором по SNMP отключено, но может возникнуть необходимость использования этого протокола для мониторинга и анализа работы сенсора. В этом случае стоит обратить внимание на то, что доступ по SNMP открывается и на чтение, и на запись, даже если нет необходимости в редактировании по SNMP – такова особенность работы Cisco IPS. Потенциальная опасность ясна: каждый, кто знает значения read-write community, имеет возможность конфигурировать сенсор с помощью set-команд. Отдельный access-list для SNMP не создается, используются общие ACL из настроек service host. Аутентификация и шифрование не поддерживаются, поэтому возможны варианты защиты:
- нетривиальные значения community, которые сложно подобрать;
- ограничение доступа по сети как на уровне корпоративных файерволов и ACL-роутеров, так и списков доступа service host;
- использование протокола транспортного уровня TCP, поскольку защита от spoofing в UDP не реализована;
- использование нестандартного порта.
Безопасная настройка производится следующим образом:
ids#configure terminal
ids(config)#service notification
ids(config-not)#enable-set-get true
ids(config-not)#read-only-community DlY@_$en$0r@
ids(config-not)#read-write-community DlY@_AdM1n@_$en$orA
ids(config-not)#snmp-agent-protocol tcp
ids(config-not)#snmp-agent-port 1961
ids(config-not)#exit
Настройка веб-вервера
Обезопасить веб-вервер необходимо включением TLS (активировано по умолчанию), также можно изменить порт, на котором он слушает (по умолчанию назначен 443 порт):
ids(config)# service web-server
ids(config-web)# enable-tls true
ids(config-web)# port 7001
ids(config-web)# exit
Настройка логгирования
По умолчанию уровень логгирования на каждую категорию системных событий установлен как warning. В случае необходимости, например, для диагностики возникших проблем, можно внести свои корректировки методом конфигурации service logger. Делать это необходимо очень аккуратно, во избежание перегрузок [4]:
ids(config-not)#exit
Настройка дампов
При использовании Cisco IDS/IPS может возникнуть необходимость записи дампов трафика определенного пользователя, сервера и т.п. Нужно учесть, что по умолчанию количество дампов, которые могут одновременно находиться на сенсоре, равно 20. Возможно увеличение до 100, однако необходимо обращать внимание на заполненность дискового пространства и загруженность процессоров IDS. Запись трафика может производиться как вручную, так и автоматически – как реакция на срабатывание сигнатуры.
Количество дампов конфигурируется так:
ids(config)# service analysis-engine
ids(config-ana)# global-parameters
ids(config-ana-glo)# ip-logging
ids(config-ana-glo-ip)# max-open-iplog-files 100
При записи дампа трафика вручную необходимо указать следующие параметры:
- виртуальный сенсор, на котором слушается трафик;
- IP-адрес, трафик которого пишется;
- количество байт для записи (опционально);
- количество пакетов для записи (опционально, по умолчанию 1000);
- длительность записи в минутах (опционально, по умолчанию 10).
При уточнении всех трех опциональных параметров запись трафика прекращается при достижении любого из указанных ограничений. Пример:
ids# iplog vs0 1.2.3.4 bytes 500000 duration 50 packets 10000
Logging started for virtual sensor vs0, IP address 1.2.3.4,
Log ID 1701737004
Warning: IP Logging will affect system performance. |
Просмотреть состояние текущих записей дампов, на мой взгляд, удобнее всего с помощью команды:
ids# iplog-status brief
Если запись iplog вызвана срабатыванием сигнатуры, то в колонке Event ID будет отображаться ID отработанного события, взаимосвязь с которым можно увидеть в системе мониторинга IPS Manager Express.
По каждому отдельно iplog статус просматривается с помощью команды:
ids# iplog-status log-id 1701737004
Что немаловажно: можно отменить текущую запись одного или нескольких дампов с помощью команды no iplog, однако невозможно управлять iplog'ами в состоянии completed, их можно только скопировать на другой сервер с помощью CLI, либо скачать на ПК через веб-интерфейс или IPS Manager Express для дальнейшего анализа сниффером.
Конфигурация параметров автоматической записи трафика при срабатывании сигнатур производится так:
ids(config)# service signature-definition sig0
ids(config-sig)# ip-log
Настраиваются ограничения:
- время записи в секундах (от 30 по умолчанию до 300);
- количество пакетов (опционально);
- количество байт (опционально).
Пример:
ids(config-sig-ip)# ip-log-time 30
ids(config-sig-ip)# ip-log-bytes 5000
ids(config-sig-ip)# ip-log-packets 100
***
Подводя итоги, можно сказать, что защита и безопасная конфигурация IPS/IDS осуществляются следующими средствами:
- Административно-информационные меры. Чем меньше людей знает о наличии сенсоров, тем лучше.
- Расположение управляющего интерфейса в специальном, административном VLAN, защищенном корпоративными файерволами и списками доступа на маршрутизаторах.
- Управление пользователями и разграничение прав доступа. Блокировка встроенной учетной записи пользователя cisco, создание отдельных пользователей с правами администратора IPS и уровня service.
- Настройка парольной политики в соответствии с корпоративными нормами безопасности.
- Конфигурация параметров сетевого доступа. Разрешение доступа с ограниченного количества хостов/подсетей.
- Предупреждение потенциального взломщика с помощью баннера при логине.
- Отключение возможности администрирования сенсора с помощью telnet.
- Настройка автоматического обновления и синхронизации времени.
- В случае включения администрирования по SNMP назначить сложноугадываемые community и по возможности использовать протокол TCP и нестандартный порт.
- Включение шифрования TLS в веб-сервере и смена номера порта.
- http://www.cisco.com.
- http://www.cisco.com/en/US/docs/security/ips/7.0/configuration/guide/cli/cli_setup.html#wp1073485.
- http://www.cisco.com/en/US/docs/security/ips/7.0/configuration/guide/cli/cli_system_images.html#wp1044573.
- http://www.cisco.com/en/US/docs/security/ips/7.0/configuration/guide/cli/cli_troubleshooting.html#wp1009781.