Обнаружение вторжений в сеть с помощью Наблюдатель за сетями Azure и средств с открытым кодом

Сбор пакетов — это ключевой компонент для реализации систем обнаружения сетевых вторжений (IDS) и выполнения мониторинга безопасности сети. Несколько средств idS с открытым исходным кодом обрабатывают захват пакетов и ищут подписи возможных сетевых вторжений и вредоносных действий. Используя записи пакетов, предоставляемые azure Наблюдатель за сетями, можно проанализировать сеть для вредоносных вторжений или уязвимостей.

Одним из таких средств с открытым кодом является Suricata, подсистема IDS, использующая наборы правил для мониторинга сетевого трафика и активации оповещений при возникновении подозрительных событий. Suricata предлагает многопоточный модуль для выполнения анализа сетевого трафика с повышенной скоростью и эффективностью. Дополнительные сведения о Сурикате и его возможностях см. на веб-сайте Suricata.

Сценарий

В этой статье объясняется, как настроить среду для обнаружения вторжений в сеть с помощью Наблюдатель за сетями, Suricata и Elastic Stack.

Наблюдатель за сетями предоставляет записи пакетов для обнаружения вторжений в сеть. Suricata обрабатывает сбор и активацию оповещений на основе пакетов, соответствующих набору правил угроз. Suricata сохраняет эти оповещения в файле журнала на локальном компьютере.

С помощью Эластичного стека можно индексировать журналы, создаваемые Suricata, а затем использовать их для создания панели мониторинга Kibana. Панель мониторинга предоставляет визуальное представление журналов и способ быстро получить аналитические сведения о потенциальных уязвимостях сети.

Diagram that shows a simple web application scenario.

Вы можете настроить оба средства с открытым исходным кодом на виртуальной машине Azure, чтобы выполнить этот анализ в собственной сетевой среде Azure.

Установка Suricata

  1. В терминале командной строки виртуальной машины выполните следующие команды:

    sudo add-apt-repository ppa:oisf/suricata-stable
    sudo apt-get update
    sudo apt-get install suricata
    
  2. Чтобы проверить установку, выполните команду 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

  1. Для эластичного стека версии 5.0 и более поздних версий требуется Java 8. Выполните команду java -version, чтобы проверить установленную версию. Если у вас нет установленной версии Java, обратитесь к документации по пакетам разработки Java, поддерживаемым Azure.

  2. Скачайте правильный двоичный пакет для своей системы.

    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.

  3. Убедитесь, что 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

  1. Установите Logstash, выполнив следующие команды:

    curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb
    sudo dpkg -i logstash-5.2.0.deb
    
  2. Настройте Logstash для чтения из выходных данных файла eve.json . Создайте файл logstash.conf с помощью этой команды:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Добавьте в этот файл содержимое ниже. Убедитесь, что путь к файлу 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"
    }
    }
    
  4. Предоставьте правильные разрешения eve.json файлу, чтобы Logstash смог принять файл:

    sudo chmod 775 /var/log/suricata/eve.json
    
  5. Запустите Logstash, выполнив следующую команду:

    sudo /etc/init.d/logstash start
    

Дополнительные инструкции по установке Logstash см. в официальной документации по Elastic.

Установка Kibana

  1. Введите следующие команды для установки 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
    
  2. Запустите Kibana с помощью следующих команд:

    cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana
    
  3. Перейдите к http://localhost:5601веб-интерфейсу Kibana.

    Для этого сценария используется шаблон индекса, используемый для журналов logstash-*Suricata.

  4. Если вы хотите удаленно просматривать панель мониторинга Kibana, создайте правило группы безопасности сети (NSG), позволяющее получить доступ к порту 5601.

Создание панели мониторинга Kibana

В этой статье представлен пример панели мониторинга для просмотра тенденций и сведений в оповещениях. Чтобы ее использовать, сделайте следующее:

  1. Скачайте файл панели мониторинга, файл визуализации и сохраненный файл поиска.

  2. На вкладке "Управление" Kibana перейдите в раздел "Сохраненные объекты" и импортируйте все три файла. Затем на вкладке "Панель мониторинга " можно открыть и загрузить пример панели мониторинга.

Вы также можете создавать собственные визуализации и панели мониторинга, адаптированные для метрик собственного интереса. Дополнительные сведения о визуализациях Kibana можно получить в официальной документации по Kibana.

Screenshot that shows a Kibana dashboard.

Визуализация журналов оповещений IDS

Пример панели мониторинга содержит несколько визуализаций для журналов оповещений Suricata:

  • Оповещение по геоИП: карта, показывающая распределение оповещений по их стране или региону происхождения на основе географического расположения (определяется IP-адресом).

    Screenshot shows a map for geographic IP alerts.

  • Первые 10 оповещений: сводка по 10 наиболее часто активированных оповещений и их описания. Выбор отдельного оповещения фильтрует панель мониторинга на сведения, относящиеся к этому конкретному оповещению.

    Screenshot that shows the most frequently triggered alerts.

  • Количество оповещений: общее количество оповещений, активированных набором правил.

    Screenshot shows the number of alerts.

  • Top 20 ScrIP - Alerts, Top 20 DestIP - Alerts, Top 20 SrcPort - Alerts, Top 20 DestPort - Alerts: Круговая диаграмма, показывающая источники и назначения для лучших 20 IP-адресов и портов, на которые были активированы оповещения. Вы можете отфильтровать определенные IP-адреса или порты, чтобы узнать, сколько и какие типы оповещений активируются.

    Screenshot that shows pie charts of the top 20 IPs and ports that alerts were triggered on.

  • Сводка оповещений: таблица, в которую приведены конкретные сведения о каждом оповещении. Можно настроить эту таблицу для отображения разных параметров по каждому оповещению.

    Screenshot shows a summary table with details about individual alerts.

Дополнительные сведения о создании пользовательских визуализаций и панелей мониторинга см . в официальной документации Kibana.

Заключение

Объединение записей пакетов из Наблюдатель за сетями и средств idS с открытым кодом, таких как Suricata, позволяет выполнять обнаружение сетевых вторжений для широкого спектра угроз.

Панели мониторинга помогают быстро обнаружить тенденции и аномалии в сети. Вы также можете использовать панели мониторинга для проверки данных для обнаружения первопричин оповещений, таких как вредоносные агенты пользователей или уязвимые порты. С помощью этих извлеченных данных вы можете принимать обоснованные решения о том, как:

  • Отреагируйте и защитите сеть от вредоносных попыток вторжения.
  • Создайте правила, чтобы предотвратить будущие вторжения в сеть.

Следующий шаг

Узнайте, как активировать записи пакетов на основе оповещений: