Обнаружение вторжений в сеть с помощью Наблюдатель за сетями Azure и средств с открытым кодом
Сбор пакетов — это ключевой компонент для реализации систем обнаружения сетевых вторжений (IDS) и выполнения мониторинга безопасности сети. Несколько средств idS с открытым исходным кодом обрабатывают захват пакетов и ищут подписи возможных сетевых вторжений и вредоносных действий. Используя записи пакетов, предоставляемые azure Наблюдатель за сетями, можно проанализировать сеть для вредоносных вторжений или уязвимостей.
Одним из таких средств с открытым кодом является Suricata, подсистема IDS, использующая наборы правил для мониторинга сетевого трафика и активации оповещений при возникновении подозрительных событий. Suricata предлагает многопоточный модуль для выполнения анализа сетевого трафика с повышенной скоростью и эффективностью. Дополнительные сведения о Сурикате и его возможностях см. на веб-сайте Suricata.
Сценарий
В этой статье объясняется, как настроить среду для обнаружения вторжений в сеть с помощью Наблюдатель за сетями, Suricata и Elastic Stack.
Наблюдатель за сетями предоставляет записи пакетов для обнаружения вторжений в сеть. Suricata обрабатывает сбор и активацию оповещений на основе пакетов, соответствующих набору правил угроз. Suricata сохраняет эти оповещения в файле журнала на локальном компьютере.
С помощью Эластичного стека можно индексировать журналы, создаваемые Suricata, а затем использовать их для создания панели мониторинга Kibana. Панель мониторинга предоставляет визуальное представление журналов и способ быстро получить аналитические сведения о потенциальных уязвимостях сети.
Вы можете настроить оба средства с открытым исходным кодом на виртуальной машине Azure, чтобы выполнить этот анализ в собственной сетевой среде Azure.
Установка Suricata
В терминале командной строки виртуальной машины выполните следующие команды:
sudo add-apt-repository ppa:oisf/suricata-stable sudo apt-get update sudo apt-get install suricata
Чтобы проверить установку, выполните команду
suricata -h
, которая должна отобразить полный список команд.
Другие методы установки см. в кратком руководстве по установке Suricata.
Скачайте набор правил новых угроз
На этом этапе у вас нет правил для запуска Suricata. Вы можете создать собственные правила, если вы хотите обнаружить определенные угрозы для вашей сети. Вы также можете использовать разработанные наборы правил от различных поставщиков, таких как новые угрозы или правила Talos из Snort. В этой статье вы используете бесплатный набор правил новых угроз.
Скачайте набор правил и скопируйте его в каталог:
wget https://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
tar zxf emerging.rules.tar.gz
sudo cp -r rules /etc/suricata/
Сбор пакетов обработки с помощью Suricata
Чтобы обработать записи пакетов с помощью Suricata, выполните следующую команду:
sudo suricata -c /etc/suricata/suricata.yaml -r <location_of_pcapfile>
Чтобы проверить полученные оповещения, ознакомьтесь с файлом fast.log :
tail -f /var/log/suricata/fast.log
Настройка Elastic Stack
Журналы, создаваемые Suricata, содержат ценные сведения о том, что происходит в вашей сети, но эти файлы журналов не являются простыми для чтения и понимания. Подключив Suricata к Elastic Stack, вы можете создать панель мониторинга Kibana для поиска, графа, анализа и получения аналитических сведений из журналов.
Установка Elasticsearch
Для эластичного стека версии 5.0 и более поздних версий требуется Java 8. Выполните команду
java -version
, чтобы проверить установленную версию. Если у вас нет установленной версии Java, обратитесь к документации по пакетам разработки Java, поддерживаемым Azure.Скачайте правильный двоичный пакет для своей системы.
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.deb sudo dpkg -i elasticsearch-5.2.0.deb sudo /etc/init.d/elasticsearch start
Другие методы установки можно найти на веб-странице Elastic для установки Elasticsearch.
Убедитесь, что Elasticsearch выполняется с помощью этой команды:
curl http://127.0.0.1:9200
Вы должны получить ответ, аналогичный этому примеру:
{ "name" : "Angela Del Toro", "cluster_name" : "elasticsearch", "version" : { "number" : "5.2.0", "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe", "build_timestamp" : "2016-01-27T13:32:39Z", "build_snapshot" : false, "lucene_version" : "6.1.0" }, "tagline" : "You Know, for Search" }
Дополнительные инструкции по установке Elasticsearch см. на веб-странице Elastic о установке.
Установка Logstash
Установите Logstash, выполнив следующие команды:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Настройте Logstash для чтения из выходных данных файла eve.json . Создайте файл logstash.conf с помощью этой команды:
sudo touch /etc/logstash/conf.d/logstash.conf
Добавьте в этот файл содержимое ниже. Убедитесь, что путь к файлу eve.json правильно.
input { file { path => ["/var/log/suricata/eve.json"] codec => "json" type => "SuricataIDPS" } } filter { if [type] == "SuricataIDPS" { date { match => [ "timestamp", "ISO8601" ] } ruby { code => " if event.get('[event_type]') == 'fileinfo' event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0]) end " } ruby{ code => " if event.get('[event_type]') == 'alert' sp = event.get('[alert][signature]').to_s.split(' group ') if (sp.length == 2) and /\A\d+\z/.match(sp[1]) event.set('[alert][signature]', sp[0]) end end " } } if [src_ip] { geoip { source => "src_ip" target => "geoip" #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] } mutate { convert => [ "[geoip][coordinates]", "float" ] } if ![geoip.ip] { if [dest_ip] { geoip { source => "dest_ip" target => "geoip" #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] } mutate { convert => [ "[geoip][coordinates]", "float" ] } } } } } output { elasticsearch { hosts => "localhost" } }
Предоставьте правильные разрешения eve.json файлу, чтобы Logstash смог принять файл:
sudo chmod 775 /var/log/suricata/eve.json
Запустите Logstash, выполнив следующую команду:
sudo /etc/init.d/logstash start
Дополнительные инструкции по установке Logstash см. в официальной документации по Elastic.
Установка Kibana
Введите следующие команды для установки Kibana.
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-linux-x86_64.tar.gz tar xzvf kibana-5.2.0-linux-x86_64.tar.gz
Запустите Kibana с помощью следующих команд:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Перейдите к
http://localhost:5601
веб-интерфейсу Kibana.Для этого сценария используется шаблон индекса, используемый для журналов
logstash-*
Suricata.Если вы хотите удаленно просматривать панель мониторинга Kibana, создайте правило группы безопасности сети (NSG), позволяющее получить доступ к порту 5601.
Создание панели мониторинга Kibana
В этой статье представлен пример панели мониторинга для просмотра тенденций и сведений в оповещениях. Чтобы ее использовать, сделайте следующее:
Скачайте файл панели мониторинга, файл визуализации и сохраненный файл поиска.
На вкладке "Управление" Kibana перейдите в раздел "Сохраненные объекты" и импортируйте все три файла. Затем на вкладке "Панель мониторинга " можно открыть и загрузить пример панели мониторинга.
Вы также можете создавать собственные визуализации и панели мониторинга, адаптированные для метрик собственного интереса. Дополнительные сведения о визуализациях Kibana можно получить в официальной документации по Kibana.
Визуализация журналов оповещений IDS
Пример панели мониторинга содержит несколько визуализаций для журналов оповещений Suricata:
Оповещение по геоИП: карта, показывающая распределение оповещений по их стране или региону происхождения на основе географического расположения (определяется IP-адресом).
Первые 10 оповещений: сводка по 10 наиболее часто активированных оповещений и их описания. Выбор отдельного оповещения фильтрует панель мониторинга на сведения, относящиеся к этому конкретному оповещению.
Количество оповещений: общее количество оповещений, активированных набором правил.
Top 20 ScrIP - Alerts, Top 20 DestIP - Alerts, Top 20 SrcPort - Alerts, Top 20 DestPort - Alerts: Круговая диаграмма, показывающая источники и назначения для лучших 20 IP-адресов и портов, на которые были активированы оповещения. Вы можете отфильтровать определенные IP-адреса или порты, чтобы узнать, сколько и какие типы оповещений активируются.
Сводка оповещений: таблица, в которую приведены конкретные сведения о каждом оповещении. Можно настроить эту таблицу для отображения разных параметров по каждому оповещению.
Дополнительные сведения о создании пользовательских визуализаций и панелей мониторинга см . в официальной документации Kibana.
Заключение
Объединение записей пакетов из Наблюдатель за сетями и средств idS с открытым кодом, таких как Suricata, позволяет выполнять обнаружение сетевых вторжений для широкого спектра угроз.
Панели мониторинга помогают быстро обнаружить тенденции и аномалии в сети. Вы также можете использовать панели мониторинга для проверки данных для обнаружения первопричин оповещений, таких как вредоносные агенты пользователей или уязвимые порты. С помощью этих извлеченных данных вы можете принимать обоснованные решения о том, как:
- Отреагируйте и защитите сеть от вредоносных попыток вторжения.
- Создайте правила, чтобы предотвратить будущие вторжения в сеть.
Следующий шаг
Узнайте, как активировать записи пакетов на основе оповещений: