Строим SOC на бесплатном ПО
Security Operation Center (далее – SOC) – это прежде всего команда, которая хорошо понимает и знает все возможные нюансы в работе, регистрации, реагировании и ликвидации последствий инцидентов информационной безопасности. Для построения бесплатного SOC в правильном его понимании необходимо наличие квалифицированного штата сотрудников и сильный инструментарий.

Есть два пути построения SOC:

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

В данной статье рассмотрим основные принципы, на что нужно обратить внимание и с чего начать.

Работа с событиями

Первое, что необходимо для будущего SOC – это выбор пути и инструментария для реализации своих планов.

Необходимо реализовать следующую схему:

Источники->События->Сбор и хранение событий->Обработка событий и выявление инцидентов->Работа с инцидентами->Решение и закрытие инцидентов с предотвращением их в дальнейшем.

Для работы с событиями мы остановились на свободно распространяемом продукте, состоящем из стека трех компонентов:

  • Elastic
  • Logstash
  • Kibana
Выбор основывался на масштабируемости, широких возможностях, быстрой реализации и хорошей совместимости с другими системами.

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

Настройка инструментария

Рассмотрим реализацию стека в реальных условиях:

  1. Произведем установку трех основных компонентов с сайта производителя https://www.elastic.co/start.
elasticsearch-7.*

logstash-7.*

kibana-7.*

Установка возможна практически на все дистрибутивы Linux, а также на операционную систему Windows.

  1. Переконфигурируем файлы:
elasticsearch.yml

необходимо изменить следующие строки:

  1. с #network.host: 192.168.0.1 на network.host: "указать ip-адрес хоста где расположена elasticsearch";
  2. с #http.port: 9200 на http.port: 9200;
  3. c #node.name: node-1 (or preferred name) на node.name: node-1 (or preferred name);
  4. с #cluster.initial_master_nodes: node-1 (or preferred name) на cluster.initial_master_nodes: node-1 (or preferred name)
kibana.yml

необходимо изменить следующие строки:

  1. с #server.host: "localhost" на server.host: "указать ip-адрес хоста где расположена kibana";
  2. с #server.port: 5601 на server.port: 5601
  1. Создаем конфигурационный файл с расширением *.conf в директории /etc/logstash/conf.d и наполняем его. В качестве примера рассмотрим конфигурацию с подключением beats (winlogbeat для сбора лог-журналов из ОС Windows), базу данных (mssql express, mariadb-zabbix):
    input {
    
            beats {
    
            port => "5044"
    
            type => "WINLOG"
    
            }
    
            jdbc {
    
            jdbc_driver_library => ""
    
            jdbc_driver_class=> "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    
            jdbc_connection_string => "jdbc:sqlserver://”указать ip-адрес сервера sql и TCP-порт для удаленного подключения”;databaseName=”указать имя базы данных из которой берем события”;"
    
            jdbc_user => "имя пользователя с правами на чтение"
    
            jdbc_password => "пароль"
    
            schedule => "* * * * *"
    
            statement => "SELECT “указать таблицы с той информацией которую хотим получить” from “указать базу данных, например, dbo.* WHERE timegenerated > :sql_last_value"
    
            use_column_value => true
    
            tracking_column => timegenerated
    
            tracking_column_type => "timestamp"
    
            type => "указать произвольный тип"
    
            }
    
            jdbc {
    
            jdbc_validate_connection => true
    
            jdbc_driver_library => ""
    
            jdbc_driver_class => "Java::org.mariadb.jdbc.Driver"
    
            jdbc_connection_string => "jdbc:mariadb://”указать ip сервера где расположена база данных”:3306/zabbix"
    
            jdbc_user => "zabbix"
    
            jdbc_password => "пароль"
    
            schedule => "* * * * *"
    
            statement => "SELECT * from hosts"
    
            jdbc_paging_enabled => true
    
            jdbc_page_size => 200000
    
            type => "zabbix_log"
    
            }
    
    }
    
    output {
    
            if [type] == "WINLOG" {
    
            elasticsearch {
    
            hosts => [ "ip-адрес elasticsearch:9200" ]
    
            index => "произвольное понятное значение-%{+YYYY.MM}"
    
            }
    
            }
    
            else if [type] == "тип указанные для сервера sql" {
    
            elasticsearch {
    
            hosts => [ "ip-адрес elasticsearch:9200" ]
    
            index => "произвольное и понятное значение"
    
            }
    
            }
    
            else if [type] == "zabbix_log" {
    
            elasticsearch {
    
            hosts => [ "ip-адрес elasticsearch:9200" ]
    
            index => "zabbix"
    
            }
    
            }
    
           }
    Для того чтобы конфигурация работала обязательно необходимо установить java и jdbc driver соответствующей версии.

    4. Далее необходимо настроить базу данных, настроить TCP соединения с сервером по этому порту:
    • В области консоли диспетчера конфигурации SQL Server разверните узел Сетевая конфигурация SQL Server, Протоколы для <instance name>, а затем дважды щелкните TCP/IP. В диалоговом окне Свойства TCP/IP на вкладке IP-адреса появится несколько IP-адресов в формате IP1, IP2 до IPAll. Одним из приведенных IP-адресов является адрес адаптера заглушки 127.0.0.1. Для каждого IP-адреса на компьютере появляются дополнительные IP-адреса. (Возможно, вы увидите адреса как IPv4, так и IPv6.) Чтобы определить настраиваемый IP-адрес, щелкните правой кнопкой мыши каждый адрес и выберите пункт Свойства.
    • Если в диалоговом окне Динамические порты TCPсодержится значение 0, означающее прослушивание компонентом. Компонент Database Engine динамических портов, удалите его.
    systemctl daemon-reload
    <ol start="2">
    
    Включаем автоматическую загрузку сервисов после перезагрузки системы
    
    systemctl enable elasticsearch
    
    systemctl enable logstash
    
    systemctl enable kibana
    
     	Запускаем сервисы
    
    systemctl start elasticsearch
    
    systemctl start logstash
    
    systemctl start kibana
    
     	И в завершение проверяем статус сервисов
    
    systemctl status elasticsearch
    
    systemctl status logstash
    
    systemctl status kibana
    
    На примерах мы выполнили минимальные настройки для сбора наиболее популярных событий, используя свободное ПО.
    Напишите нам!
    Имя
    Телефон
    Email
    Какой у Вас вопрос?
    Нажимая на кнопку Вы соглашаетесь с политикой обработки персональных данных