Поиск по сайту:

Как установить osquery на Debian 10


На этой странице

  1. Предпосылки
  2. Начало работы
  3. Установить osquery
  4. Работа с osquery
  5. Система мониторинга с osquery
  6. Заключение

osquery — это бесплатный инструмент с открытым исходным кодом, разработанный Facebook, который можно использовать для запроса информации, связанной с операционной системой, включая использование памяти, установленные пакеты, информацию о процессах, пользователях для входа в систему, портах прослушивания и многом другом. Его можно запустить в нескольких операционных системах, включая Windows, Linux, FreeBSD и MacOS. Это очень полезный инструмент для решения различных задач, связанных с производительностью и эксплуатацией. Он поставляется с множеством инструментов, которые помогут вам выполнять аналитику и мониторинг ОС.

В этом руководстве мы узнаем, как установить и использовать osquery в Debian 10.

Предпосылки

  • Сервер под управлением Debian 10.
  • На вашем сервере настроен пароль root.

Начиная

Перед запуском рекомендуется обновить системный пакет до последней версии. Вы можете обновить все пакеты с помощью следующей команды:

apt-get update -y
apt-get upgrade -y

После обновления всех пакетов перезагрузите систему, чтобы изменения вступили в силу.

Установить осквери

По умолчанию osquery недоступен в стандартном репозитории Debian 10. Поэтому вам нужно будет добавить репозиторий osquery в вашу систему.

Сначала загрузите и добавьте ключ GPG с помощью следующей команды:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B

Затем добавьте репозиторий osquery с помощью следующей команды:

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

Затем обновите репозиторий и установите osquery с помощью следующей команды:

apt-get update -y
apt-get install osquery -y

После завершения установки запустите службу osquery с помощью следующей команды:

osqueryctl start osqueryd

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

osqueryctl status osqueryd

Вы должны увидеть следующий вывод:

? osqueryd.service - The osquery Daemon
   Loaded: loaded (/lib/systemd/system/osqueryd.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-19 15:21:57 UTC; 6s ago
  Process: 25333 ExecStartPre=/bin/sh -c if [ ! -f $CONFIG_FILE ]; then echo {} > $CONFIG_FILE; fi (code=exited, status=0/SUCCESS)
  Process: 25334 ExecStartPre=/bin/sh -c if [ ! -f $FLAG_FILE ]; then touch $FLAG_FILE; fi (code=exited, status=0/SUCCESS)
  Process: 25336 ExecStartPre=/bin/sh -c if [ -f $LOCAL_PIDFILE ]; then mv $LOCAL_PIDFILE $PIDFILE; fi (code=exited, status=0/SUCCESS)
 Main PID: 25337 (osqueryd)
    Tasks: 13 (limit: 4701)
   Memory: 6.4M
   CGroup: /system.slice/osqueryd.service
           ??25337 /usr/bin/osqueryd --flagfile /etc/osquery/osquery.flags --config_path /etc/osquery/osquery.conf
           ??25339 /usr/bin/osqueryd

Apr 19 15:21:57 debian10 systemd[1]: Starting The osquery Daemon...
Apr 19 15:21:57 debian10 systemd[1]: Started The osquery Daemon.
Apr 19 15:21:57 debian10 osqueryd[25337]: osqueryd started [version=4.2.0]
Apr 19 15:21:57 debian10 osqueryd[25337]: I0419 15:21:57.261158 25339 events.cpp:863] Event publisher not enabled: auditeventpublisher: Publish
Apr 19 15:21:57 debian10 osqueryd[25337]: I0419 15:21:57.261485 25339 events.cpp:863] Event publisher not enabled: syslog: Publisher disabled v

Работа с осквери

osquery поставляется с тремя полезными компонентами: osqueryi, osqueryd и osqueryctl. osqueryi — это интерактивная оболочка osquery, которая не взаимодействует с демоном. Вы можете использовать оболочку для выполнения запросов и изучения текущего состояния вашей операционной системы. osqueryd — это демон мониторинга хоста, который можно использовать для планирования запросов и записи изменений состояния ОС. osqueryctl — это вспомогательный скрипт для тестирования конфигурации.

Вы можете запустить следующую команду для подключения к оболочке osquery:

osqueryi

Вы должны получить следующий результат:

Using a virtual database. Need help, type '.help'

Затем запустите команду .help, чтобы увидеть все опции, доступные в osquery:

osquery> .help

Вы должны получить следующий результат:

Welcome to the osquery shell. Please explore your OS!
You are connected to a transient 'in-memory' virtual database.

.all [TABLE]     Select all from a table
.bail ON|OFF     Stop after hitting an error
.echo ON|OFF     Turn command echo on or off
.exit            Exit this program
.features        List osquery's features and their statuses
.headers ON|OFF  Turn display of headers on or off
.help            Show this message
.mode MODE       Set output mode where MODE is one of:
                   csv      Comma-separated values
                   column   Left-aligned columns see .width
                   line     One value per line
                   list     Values delimited by .separator string
                   pretty   Pretty printed SQL results (default)
.nullvalue STR   Use STRING in place of NULL values
.print STR...    Print literal STRING
.quit            Exit this program
.schema [TABLE]  Show the CREATE statements
.separator STR   Change separator used by output mode
.socket          Show the osquery extensions socket path
.show            Show the current values for various settings
.summary         Alias for the show meta command
.tables [TABLE]  List names of tables
.types [SQL]     Show result of getQueryColumns for the given query
.width [NUM1]+   Set column widths for "column" mode
.timer ON|OFF      Turn the CPU timer measurement on or off
osquery> 

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

osquery> .table

Вы должны получить следующий результат:

  => acpi_tables
  => apparmor_profiles
  => apt_sources
  => arp_cache
  => atom_packages
  => augeas
  => authorized_keys
  => block_devices
  => carbon_black_info
  => carves
  => chrome_extensions
  => cpu_time
  => cpuid
  => crontab
  => curl
  => curl_certificate
  => deb_packages
  => device_file
  => device_hash
  => device_partitions
  => disk_encryption
  => dns_resolvers
  => docker_container_labels
  => docker_container_mounts

Вы можете найти различную системную информацию, используя приведенную выше таблицу с osquery.

Система мониторинга с osquery

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

Сначала запустите оболочку osquery с помощью следующей команды:

osqueryi

Затем вы можете получить информацию об имени хоста вашей системы, ядре процессора и физической памяти с помощью следующей команды:

osquery> select hostname,cpu_physical_cores,physical_memory from system_info;

Вы должны получить следующий результат:

+------------+--------------------+-----------------+
| hostname   | cpu_physical_cores | physical_memory |
+------------+--------------------+-----------------+
| debian10   | 1                  | 1032937472      |
+------------+--------------------+-----------------+

Чтобы получить информацию о файле ssh_config, выполните следующий запрос:

osquery> select * from ssh_configs;

Вы должны получить следующий результат:

W0419 15:47:17.043509 25397 virtual_table.cpp:959] The ssh_configs table returns data based on the current user by default, consider JOINing against the users table
W0419 15:47:17.043740 25397 virtual_table.cpp:974] Please see the table documentation: https://osquery.io/schema/#ssh_configs
+-----+--------+--------------------------+---------------------+
| uid | block  | option                   | ssh_config_file     |
+-----+--------+--------------------------+---------------------+
| 0   | host * | sendenv lang lc_*        | /etc/ssh/ssh_config |
| 0   | host * | hashknownhosts yes       | /etc/ssh/ssh_config |
| 0   | host * | gssapiauthentication yes | /etc/ssh/ssh_config |
+-----+--------+--------------------------+---------------------+
osquery> 

Чтобы получить список всех пользователей в вашей системе, выполните следующий запрос:

osquery> SELECT * FROM users;

Вы должны получить следующий результат:

+-------+-------+------------+------------+-----------------+------------------------------------+----------------------+-------------------+------+
| uid   | gid   | uid_signed | gid_signed | username        | description                        | directory            | shell             | uuid |
+-------+-------+------------+------------+-----------------+------------------------------------+----------------------+-------------------+------+
| 0     | 0     | 0          | 0          | root            | root                               | /root                | /bin/bash         |      |
| 1     | 1     | 1          | 1          | daemon          | daemon                             | /usr/sbin            | /usr/sbin/nologin |      |
| 2     | 2     | 2          | 2          | bin             | bin                                | /bin                 | /usr/sbin/nologin |      |
| 3     | 3     | 3          | 3          | sys             | sys                                | /dev                 | /usr/sbin/nologin |      |
| 4     | 65534 | 4          | 65534      | sync            | sync                               | /bin                 | /bin/sync         |      |
| 5     | 60    | 5          | 60         | games           | games                              | /usr/games           | /usr/sbin/nologin |      |
| 6     | 12    | 6          | 12         | man             | man                                | /var/cache/man       | /usr/sbin/nologin |      |
| 7     | 7     | 7          | 7          | lp              | lp                                 | /var/spool/lpd       | /usr/sbin/nologin |      |

Если вы хотите получить список всех несистемных пользователей в вашей системе, выполните следующий запрос:

osquery> select * from users where uid <= 1000 limit 3;

Вы должны получить следующий результат:

+-----+-----+------------+------------+----------+-------------+-----------+-------------------+------+
| uid | gid | uid_signed | gid_signed | username | description | directory | shell             | uuid |
+-----+-----+------------+------------+----------+-------------+-----------+-------------------+------+
| 0   | 0   | 0          | 0          | root     | root        | /root     | /bin/bash         |      |
| 1   | 1   | 1          | 1          | daemon   | daemon      | /usr/sbin | /usr/sbin/nologin |      |
| 2   | 2   | 2          | 2          | bin      | bin         | /bin      | /usr/sbin/nologin |      |
+-----+-----+------------+------------+----------+-------------+-----------+-------------------+------+

Чтобы получить список пользователей, которые в данный момент вошли в систему, выполните следующий запрос:

osquery> select * from logged_in_users where type = 'user';

Вы должны получить следующий результат:

+------+------+-------+--------------+------------+-------+
| type | user | tty   | host         | time       | pid   |
+------+------+-------+--------------+------------+-------+
| user | root | pts/0 | 27.61.217.59 | 1587309538 | 19279 |
| user | root | pts/1 | 27.61.217.59 | 1587310737 | 25378 |
| user | root | pts/2 | 27.61.217.59 | 1587310997 | 25394 |
+------+------+-------+--------------+------------+-------+

Чтобы отобразить информацию о памяти вашей системы, выполните следующий запрос:

osquery> select * from memory_info;

Вы должны получить следующий результат:

+--------------+-------------+----------+------------+-------------+-----------+-----------+------------+-----------+
| memory_total | memory_free | buffers  | cached     | swap_cached | active    | inactive  | swap_total | swap_free |
+--------------+-------------+----------+------------+-------------+-----------+-----------+------------+-----------+
| 4138455040   | 2407211008  | 79745024 | 1384751104 | 0           | 556371968 | 954744832 | 0          | 0         |
+--------------+-------------+----------+------------+-------------+-----------+-----------+------------+-----------+
osquery> 

Чтобы найти среднюю загрузку вашей системы, выполните следующий запрос:

osquery> select * from load_average;

Вы должны получить следующий результат:

+--------+----------+
| period | average  |
+--------+----------+
| 1m     | 0.000000 |
| 5m     | 0.000000 |
| 15m    | 0.000000 |
+--------+----------+
osquery> 

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

osquery> select * from deb_packages top limit 5;

Вы должны получить следующий результат:

+-------------------+------------+--------------+------+-------+----------+
| name              | version    | source       | size | arch  | revision |
+-------------------+------------+--------------+------+-------+----------+
| acpi-support-base | 0.142-8    | acpi-support | 43   | all   | 8        |
| acpid             | 1:2.0.31-1 |              | 146  | amd64 | 1        |
| adduser           | 3.118      |              | 849  | all   |          |
| apparmor          | 2.13.2-10  |              | 1833 | amd64 | 10       |
| apt               | 1.8.2      |              | 4064 | amd64 |          |
+-------------------+------------+--------------+------+-------+----------+

Чтобы получить информацию о запущенных процессах в вашей системе, выполните следующий запрос:

osquery> SELECT DISTINCT processes.name, listening_ports.port, processes.pid FROM listening_ports JOIN processes USING (pid) WHERE listening_ports.address = '0.0.0.0';

Вы должны получить следующий результат:

+------+------+-----+
| name | port | pid |
+------+------+-----+
| sshd | 22   | 729 |
+------+------+-----+

Чтобы найти все предыдущие входы в систему, выполните следующий запрос:

osquery> select * from last;

Вы должны получить следующий результат:

+----------+-------+-------+------+------------+--------------+
| username | tty   | pid   | type | time       | host         |
+----------+-------+-------+------+------------+--------------+
| root     | pts/0 | 1448  | 7    | 1587365277 | 27.61.217.41 |
| root     | pts/1 | 13392 | 7    | 1587368569 | 27.61.217.41 |
|          | pts/0 | 1004  | 8    | 1587376329 |              |
|          | pts/1 | 13321 | 8    | 1587376821 |              |
|          | ttyS0 | 748   | 8    | 1587465619 |              |
|          | tty1  | 749   | 8    | 1587465619 |              |
| root     | pts/0 | 1057  | 7    | 1587465664 | 27.61.217.9  |
| root     | pts/1 | 1375  | 7    | 1587465846 | 27.61.217.9  |
+----------+-------+-------+------+------------+--------------+

Чтобы получить список всех заданий, запланированных crontab, выполните следующий запрос:

osquery> select command, path from crontab ;

Вы должны получить следующий результат:

+----------------------------------------------------------------------------------------------------------------------------------------+-------------------+
| command                                                                                                                                | path              |
+----------------------------------------------------------------------------------------------------------------------------------------+-------------------+
| root cd / && run-parts --report /etc/cron.hourly                                                                                       | /etc/crontab      |
| root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )                                                       | /etc/crontab      |
| root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )                                                      | /etc/crontab      |
| root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )                                                     | /etc/crontab      |
| root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi | /etc/cron.d/mdadm |

Чтобы найти все открытые порты в вашей системе, выполните следующий запрос:

osquery> select * from listening_ports;

Вы должны получить следующий результат:

+------+------+----------+--------+------------+-----+--------+----------------------------------------+---------------+
| pid  | port | protocol | family | address    | fd  | socket | path                                   | net_namespace |
+------+------+----------+--------+------------+-----+--------+----------------------------------------+---------------+
| 444  | 53   | 6        | 2      | 127.0.0.53 | 13  | 14910  |                                        | 4026531993    |
| 729  | 22   | 6        | 2      | 0.0.0.0    | 3   | 16940  |                                        | 4026531993    |
| 664  | 3306 | 6        | 2      | 127.0.0.1  | 69  | 15824  |                                        | 4026531993    |
| 544  | 6379 | 6        | 2      | 127.0.0.1  | 6   | 15472  |                                        | 4026531993    |
| 729  | 22   | 6        | 10     | ::         | 4   | 16951  |                                        | 4026531993    |
| 544  | 6379 | 6        | 10     | ::1        | 7   | 15473  |                                        | 4026531993    |
| 759  | 80   | 6        | 10     | ::         | 4   | 17009  |                                        | 4026531993    |
| 444  | 53   | 17       | 2      | 127.0.0.53 | 12  | 14909  |                                        | 4026531993    |
| 405  | 58   | 255      | 10     | ::         | 15  | 16039  |                                        | 4026531993    |

Чтобы получить список 5 самых активных процессов, выполните следующий запрос:

osquery> select count(pid) as total, name from processes group by name order by total desc limit 5;

Вы должны получить следующий результат:

+-------+---------+
| total | name    |
+-------+---------+
| 4     | sshd    |
| 3     | apache2 |
| 2     | systemd |
| 2     | bash    |
| 2     | agetty  |
+-------+---------+

Заключение

В приведенном выше руководстве мы узнали, как установить и использовать osquery в Debian 10. osquery — очень полезный инструмент для поиска любых бэкдоров, вредоносных программ или любых зомби-процессов в вашей системе. Для получения дополнительной информации о osquery посетите страницу документации osquery.