Как настроить File Integrity Monitoring (FIM) с использованием osquery в Linux

Osquery — это операционная система с открытым исходным кодом, мониторинга и аналитики.

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

Osquery — это многоплатформенное программное обеспечение, которое может быть установлено на Linux, Windows, MacOS и FreeBSD.

Она позволяет нам исследовать все профили, производительность, безопасность и т. д. этих операционных систем, используя запросы на основе SQL.

В этом уроке мы покажем вам, как настроить File Integrity Monitoring (FIM) с osquery.

Мы будем использовать операционные системы Linux Ubuntu 18.04 и CentOS 7.

Предпосылки

  • Linux (Ubuntu или CentOS)
  • Привилегии root

Шаг 1 — Установите osquery на Linux Server

Osquery предоставляет собственный репозиторий для установки на платформе, и первым шагом, который мы собираемся сделать, является установка пакета osquery из официального репозитория osquery.

На Ubuntu

Добавьте в систему ключ osquery.

export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY\

Добавьте репозиторий osquery и установите пакет.

sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt install osquery -y

На CentOS

Добавьте в систему ключ osquery.

curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery

Добавьте и включите репозиторий osquery и установите пакет.

sudo yum-config-manager --add-repo https://pkg.osquery.io/rpm/osquery-s3-rpm.repo
sudo yum-config-manager --enable osquery-s3-rpm
sudo yum install osquery -y

Подождите, пока все пакеты будут установлены.

Если вы получите сообщение об ошибке команды yum-config-manager:

sudo: yum-config-manager: command not found

Установите пакет «yum-utils».

yum -y install yum-utils

Шаг 2 — Включите обработку Syslog в osquery

Osquery предоставляет функции для чтения или использования системных журналов на Apple MacOS с использованием системного журнала Apple (ASL), а для Linux используется syslog.

На этом этапе мы включим syslog для osquery через rsyslog.

На Ubuntu

Установите пакет rsyslog, используя команду apt, приведенную ниже:

sudo apt install rsyslog -y

На CentOS

Установите пакет rsyslog с помощью команды yum :

sudo yum install rsyslog -y

По завершении установки перейдите в каталог ‘/etc/rsyslog.d’ и создайте новый файл конфигурации osquery.conf.

cd /etc/rsyslog.d/
vim osquery.conf 

Вставьте следующую конфигурацию:

template(
  name="OsqueryCsvFormat"
  type="string"
  string="%timestamp:::date-rfc3339,csv%,%hostname:::csv%,%syslogseverity:::csv%,%syslogfacility-text:::csv%,%syslogtag:::csv%,%msg:::csv%\n"
)
*.* action(type="ompipe" Pipe="/var/osquery/syslog_pipe" template="OsqueryCsvFormat")

Сохраните и закройте файл.

Шаг 3 — Основная настройка osquery

Конфигурационный файл по умолчанию — это «osquery.conf», обычно находящийся в каталоге «/etc/osquery».

Имеются образцы конфигурации osquery ‘/usr/share/osquery/osquery.conf’ и образец конфигурации пакетов osquery.

На этом этапе мы узнаем о компонентах конфигурации osquery, создадим настраиваемую конфигурацию osquery и затем развернем osqueryd в качестве службы.

Конфигурация osquery, отформатированная как файл JSON, содержит спецификации конфигурации osquery, описанные ниже.

  • Options: часть команды CLI osqueryd, она определяет запуск и инициализацию приложений.
  • Schedule: Определяет поток запланированных имен запросов к деталям запроса.
  • Decorators: используются для добавления дополнительных «decoration»
  • Packs: группа запросов по расписанию.
  • More: Путь к файлу, YARA, Prometheus, Views, EC2, Конфигурация Chef

Перейдите в каталог «/etc/osquery» и создайте новую конфигурацию «osquery.conf».

cd /etc/osquery/
vim osquery.conf 

Вставьте в этот файл следующую конфигурацию:

{
    "options": {
        "config_plugin": "filesystem",
        "logger_plugin": "filesystem",
        "logger_path": "/var/log/osquery",
        "disable_logging": "false",
        "log_result_events": "true",
        "schedule_splay_percent": "10",
        "pidfile": "/var/osquery/osquery.pidfile",
        "events_expiry": "3600",
        "database_path": "/var/osquery/osquery.db",
        "verbose": "false",
        "worker_threads": "2",
        "enable_monitor": "true",
        "disable_events": "false",
        "disable_audit": "false",
        "audit_allow_config": "true",
        "host_identifier": "hakase-labs",
        "enable_syslog": "true",
        "syslog_pipe_path": "/var/osquery/syslog_pipe",
        "force": "true",
        "audit_allow_sockets": "true",
        "schedule_default_interval": "3600"
    },


    "schedule": {
        "crontab": {
            "query": "SELECT * FROM crontab;",
            "interval": 300
        },
        "system_info": {
            "query": "SELECT hostname, cpu_brand, physical_memory FROM system_info;",
            "interval": 3600
        },
        "ssh_login": {
            "query": "SELECT username, time, host FROM last WHERE type=7",
            "interval": 360
        }
    },

    "decorators": {
        "load": [
            "SELECT uuid AS host_uuid FROM system_info;",
            "SELECT user AS username FROM logged_in_users ORDER BY time DESC LIMIT 1;"
        ]
    },

    "packs": {
        "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf"
    }
}

Сохраните и закройте.

Мы используем «filesystem» в качестве плагина конфигурации и регистратора.
Определите путь регистрации в каталоге ‘/ var / log / osquery’.
Включите syslog в файл ‘/ var / syslog / syslog_pipe’.
В планировщике мы определяем три запроса для проверки crontab, системной информации и входа ssh.
Включите пакеты osquery с именем «osquery-monitoring» и упаковывайте файлы, расположенные в каталоге «/ usr / share / osquery / packs».
Теперь запустите службу daemon osqueryd и включите ее для запуска каждый раз при загрузке системы.

systemctl start osqueryd
systemctl enable osqueryd

И перезагрузите службу rsyslog

systemctl restart rsyslog

На этом завершена основная настройка osquery.

Шаг 4 — Настройка контроля целостности файлов (FIM) используя osquery

Osquery обеспечивает мониторинг целостности файлов в Linux и MacOS Darwin с использованием inotify и FSEvents.

Просто он отслеживает и обнаруживает любые изменения файлов в определенном каталоге с помощью «file_path», а затем сохраняет всю активность в таблице file_events.

На этом этапе мы сконфигурируем osquery для мониторинга важных каталогов, таких как home, ssh и т. д., Tmp и корневой каталог www web, используя пользовательские пакеты FIM.

Перейдите в каталог ‘/usr/share/osquery/packs’ и создайте новый файл конфигурации ff.conf.

cd /usr/share/osquery/packs
vim fim.conf

Вставьте в него содержимое ниже:

{
  "queries": {
    "file_events": {
      "query": "SELECT * FROM file_events;",
      "removed": false,
      "interval": 300
    }
  },
  "file_paths": {
    "homes": [
      "/root/.ssh/%%",
      "/home/%/.ssh/%%"
    ],
      "etc": [
      "/etc/%%"
    ],
      "home": [
      "/home/%%"
    ],
      "tmp": [
      "/tmp/%%"
    ],
      "www": [
      "/var/www/%%"
      ]
  }
}

Сохраните и закройте файл.

Вернитесь в каталог конфигурации «/etc/osquery» и отредактируйте файл osquery.conf.

cd /etc/osquery/
vim osquery.conf 

Добавьте конфигурацию пакетов контроля целостности файла в разделе «packs».

 "packs": {
        "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf",
        "fim": "/usr/share/osquery/packs/fim.conf"
    }

Сохраните и выйдите, а затем перезапустите службу osqueryd.

systemctl restart osqueryd

Продолжайте проверять конфигурационный файл JSON с помощью JSON linter ‘http://jsonlint.com/’ и убедитесь, что ошибок нет.

Шаг 5 — Тестирование

Мы проверим пакеты контроля целостности файлов, создав новый файл в определенном каталоге «home» и «www».

Перейдите в каталог ‘/var/www/’ и создайте новый файл с именем ‘howtoforge.md’.

cd /var/www/
touch howtoforge.md

Перейдите в каталог «/home/youruser /» и создайте новый файл с именем «hakase-labs.md».

cd /home/vagrant/
touch hakase-labs.md

Теперь мы проверим мониторинг всех журналов с помощью интерактивного режима osqueryi в реальном времени и журналов результатов osquery.

osqueryi

Запустите команду osqueryi:

osqueryi --config-path /etc/osquery/osquery.conf

Теперь проверьте все журналы изменений файла в таблице «file_events».

Для глобальных изменений.

select * from file_events;

Для каталога «home».

select target_path, category, action, atime, ctime, mtime from file_events WHERE category="home";

Для корневого каталога веб-сайта www.

select target_path, category, action, atime, ctime, mtime from file_events WHERE category="www";

журнал результатов osqueryd

Перейдите в каталог ‘/var/log/osquery’, и вы получите файл ‘osqueryd.results.log’.

cd /var/log/osquery/
ls -lah osqueryd.results.log

Отфильтруйте журналы osquery с помощью команды grep.

grep -rin howtoforge.md osqueryd.results.log
grep -rin hakase-labs.md osqueryd.results.log 

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40