Строим 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
    
    
    На примерах мы выполнили минимальные настройки для сбора наиболее популярных событий, используя свободное ПО.