GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo monitorear la seguridad del servidor Linux con Osquery

Osquery es una herramienta de monitoreo de amenazas de seguridad de código abierto desarrollada por Facebook. Se utiliza para consultar información del sistema, incluida la versión del sistema, la información del kernel, los procesos en ejecución, la información de la memoria, los puertos de escucha, los usuarios de inicio de sesión y más. Osquery ayuda a los administradores de sistemas a escribir consultas SQL para identificar, investigar y eliminar varios tipos de amenazas. Es compatible con varios sistemas operativos, incluidos Windows, Linux, FreeBSD y macOS.

En esta publicación, explicaremos cómo instalar y usar Osquery en Ubuntu 20.04.

Requisitos

  • Un servidor Ubuntu 20.04 en Atlantic.Net Cloud Platform
  • Una contraseña de root configurada en su servidor

Paso 1:crear el servidor en la nube de Atlantic.Net

Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo Ubuntu 20.04 como sistema operativo con al menos 2 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.

Una vez que haya iniciado sesión en su servidor Ubuntu 20.04, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.

apt-get update -y

Paso 2:instalar Osquery

Primero, instale las dependencias requeridas usando el siguiente comando:

apt-get install gnupg2 software-properties-common wget unzip -y

A continuación, agregue la clave GPG de Osquery con el siguiente comando:

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

Luego, agregue el repositorio de Osquery a APT usando el siguiente comando:

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

Una vez que se agrega el repositorio, actualice el repositorio e instale Osquery con el siguiente comando:

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

Paso 3:Conéctese a la Consola Osquery

Osquery proporciona un shell interactivo para ejecutar consultas y explorar el estado actual de su sistema operativo.

Puede conectarse al shell de Osquery usando el siguiente comando:

osqueryi

Una vez que esté conectado, debería obtener el siguiente resultado:

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

A continuación, muestre la configuración predeterminada de Osquery con el siguiente comando:

osquery> .show

Debería ver el siguiente resultado:

osquery - being built, with love.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
osquery 4.9.0
using SQLite 3.35.5

General settings:
     Flagfile: 
       Config: filesystem (/etc/osquery/osquery.conf)
       Logger: filesystem (/var/log/osquery/)
  Distributed: tls
     Database: ephemeral
   Extensions: core
       Socket: /root/.osquery/shell.em

Shell settings:
         echo: off
      headers: on
         mode: pretty
    nullvalue: ""
       output: stdout
    separator: "|"
        width: 

Non-default flags/options:
  database_path: /root/.osquery/shell.db
  disable_database: true
  disable_events: true
  disable_logging: true
  disable_watchdog: true
  extensions_socket: /root/.osquery/shell.em
  hash_delay: 0
  logtostderr: true
  stderrthreshold: 0

Osquery tiene muchas tablas disponibles para consulta. Puede enumerarlos con el siguiente comando:

osquery> .tables

Salida de muestra:

  => acpi_tables
  => apparmor_events
  => apparmor_profiles
  => apt_sources
  => arp_cache
  => atom_packages
  => augeas
  => authorized_keys
  => azure_instance_metadata
  => azure_instance_tags
  => block_devices
  => bpf_process_events
  => bpf_socket_events
  => carbon_black_info
  => carves
  => chrome_extension_content_scripts
  => chrome_extensions
  => cpu_time
  => cpuid
  => crontab
  => curl
  => curl_certificate
  => deb_packages
  => device_file
  => device_hash
  => device_partitions
  => disk_encryption
  => dns_resolvers
  => docker_container_fs_changes
  => docker_container_labels
  => docker_container_mounts
  => docker_container_networks
  => docker_container_ports 

Osquery tiene varios modos para mostrar el resultado de la consulta. Aquí, usaremos el modo de línea para mostrar la salida.

Para configurar el modo de línea, ejecute el siguiente comando:

osquery> .mode line

Paso 4:Cómo usar Osquery

Para obtener información sobre su sistema operativo en ejecución, ejecute:

osquery> SELECT * FROM system_info;

Salida de muestra:

          hostname = ubuntu2004
              uuid = a83cffe2-50f4-4fea-9ef4-423853fdc122
          cpu_type = x86_64
       cpu_subtype = 6
         cpu_brand = QEMU Virtual CPU version 2.5+
cpu_physical_cores = 1
 cpu_logical_cores = 1
     cpu_microcode = 0x1
   physical_memory = 2084278272
   hardware_vendor = QEMU
    hardware_model = Standard PC (i440FX + PIIX, 1996)
  hardware_version = pc-i440fx-bionic
   hardware_serial = 
      board_vendor = 
       board_model = 
     board_version = 
      board_serial = 
     computer_name = ubuntu2004
    local_hostname = ubuntu2004

Para filtrar la salida de información del sistema, ejecute:

osquery> SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;

Salida de muestra:

       hostname = ubuntu2004
       cpu_type = x86_64
physical_memory = 2084278272
hardware_vendor = QEMU
 hardware_model = Standard PC (i440FX + PIIX, 1996)

Para mostrar la versión de su sistema operativo, ejecute:

osquery> SELECT * FROM os_version;

Salida de muestra:

         name = Ubuntu
      version = 20.04 LTS (Focal Fossa)
        major = 20
        minor = 4
        patch = 0
        build = 
     platform = ubuntu
platform_like = debian
     codename = focal
         arch = x86_64

Para mostrar la información de su núcleo, ejecute:

osquery> SELECT * FROM kernel_info;

Salida de muestra:

  version = 5.4.0-29-generic
arguments = ro net.ifnames=0 biosdevname=0 console=ttyS0 console=tty0
     path = /boot/vmlinuz-5.4.0-29-generic
   device = UUID=29a0b164-1ba1-45a7-b23a-cdb98f23edbc

Para mostrar todos los puertos de escucha con el nombre del servicio y el PID, ejecute:

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';

Salida de muestra:

 name = unbound
 port = 53
  pid = 3407

 name = sshd
 port = 22
  pid = 649

 name = unbound
 port = 953
  pid = 3407

 name = darkstat
 port = 666
  pid = 6100

 name = darkstat
 port = 667
  pid = 6109

 name = apt-cacher-ng
 port = 3142
  pid = 4071

 name = ntpd
 port = 123
  pid = 483

Para mostrar información del paquete de Apache, ejecute:

osquery> SELECT name, version FROM deb_packages WHERE name="apache2";

Salida de muestra:

+---------+-------------------+
| name    | version           |
+---------+-------------------+
| apache2 | 2.4.41-4ubuntu3.4 |
+---------+-------------------+

Para mostrar la información de la memoria del sistema, ejecute:

osquery> SELECT * FROM memory_info;

Salida de muestra:

+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+
| memory_total | memory_free | buffers  | cached    | swap_cached | active    | inactive  | swap_total | swap_free |
+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+
| 2084278272   | 1358233600  | 44519424 | 520896512 | 0           | 406622208 | 222449664 | 495411200  | 495411200 |
+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+

Para mostrar información de todas las interfaces de red, ejecute:

osquery> SELECT * FROM interface_addresses;

Salida de muestra:

+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+
| interface | address                       | mask                                    | broadcast     | point_to_point | type    |
+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+
| lo        | 127.0.0.1                     | 255.0.0.0                               |               | 127.0.0.1      | unknown |
| eth0      | 69.87.221.220                 | 255.255.255.0                           | 69.87.221.255 |                | unknown |
| lo        | ::1                           | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff |               |                | unknown |
| eth0      | fe80::200:45ff:fe57:dddc%eth0 | ffff:ffff:ffff:ffff::                   |               |                | unknown |
+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+

Para verificar el tiempo de actividad del sistema, ejecute:

osquery> SELECT * FROM uptime;

Salida de muestra:

+------+-------+---------+---------+---------------+
| days | hours | minutes | seconds | total_seconds |
+------+-------+---------+---------+---------------+
| 0    | 1     | 55      | 5       | 6905          |
+------+-------+---------+---------+---------------+

Para enumerar todos los usuarios cuyo UID es mayor que 1000, ejecute:

osquery> SELECT * FROM users WHERE uid>=1000;

Salida de muestra:

+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+
| uid   | gid   | uid_signed | gid_signed | username | description | directory    | shell             | uuid |
+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+
| 65534 | 65534 | 65534      | 65534      | nobody   | nobody      | /nonexistent | /usr/sbin/nologin |      |
| 65534 | 65534 | 65534      | 65534      | nobody   | nobody      | /            | /usr/sbin/nologin |      |
+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+

Para verificar los últimos usuarios que iniciaron sesión, ejecute:

osquery> SELECT * FROM last;

Salida de muestra:

+----------+-------+------+------+------------+-----------------+
| username | tty   | pid  | type | time       | host            |
+----------+-------+------+------+------------+-----------------+
| root     | pts/0 | 1013 | 7    | 1629008887 | 106.213.193.155 |
| root     | pts/1 | 3372 | 7    | 1629010656 | 106.213.193.155 |
| root     | pts/2 | 4158 | 7    | 1629013021 | 106.213.193.155 |
+----------+-------+------+------+------------+-----------------+

Para mostrar todos los usuarios registrados, ejecute:

osquery> SELECT * FROM logged_in_users;

Salida de muestra:

+-----------+----------+------------+------------------+------------+------+
| type      | user     | tty        | host             | time       | pid  |
+-----------+----------+------------+------------------+------------+------+
| boot_time | reboot   | ~          | 5.4.0-29-generic | 1629008369 | 0    |
| init      |          | /dev/tty1  |                  | 1629008378 | 491  |
| init      |          | /dev/ttyS0 |                  | 1629008378 | 484  |
| login     | LOGIN    | ttyS0      |                  | 1629008378 | 484  |
| login     | LOGIN    | tty1       |                  | 1629008378 | 491  |
| runlevel  | runlevel | ~          | 5.4.0-29-generic | 1629008383 | 53   |
| user      | root     | pts/0      | 106.213.193.155  | 1629008887 | 1013 |
| user      | root     | pts/1      | 106.213.193.155  | 1629010656 | 3372 |
| user      | root     | pts/2      | 106.213.193.155  | 1629013021 | 4158 |
+-----------+----------+------------+------------------+------------+------+

Conclusión

En la guía anterior, explicamos cómo instalar y usar Osquery para obtener datos del sistema operativo ejecutando consultas basadas en SQL. Es una herramienta muy útil y fácil de usar para encontrar puertas traseras, malware, procesos zombie y más. ¡Comience hoy con Osquery en su VPS de Atlantic.Net!


Linux
  1. ¿Cómo monitorear su servidor Linux?

  2. Cómo monitorear el rendimiento del sistema Linux con Sysstat

  3. Monitoree el servidor Linux con Prometheus y Grafana

  4. Cómo trabajar con el cliente SFTP en Linux:10 comandos sftp

  5. ¿Cómo monitorear el uso de la red con nload en Linux?

Cómo monitorear servidores Linux usando CloudStats

Cómo monitorear el uso de la red con nload en Linux

Cómo administrar de forma remota un servidor Linux con SSH

Cómo monitorear sus servidores Linux con Checkmk

Cómo monitorear el estado del servidor Linux con herramientas de línea de comandos

Cómo verificar los parámetros del servidor VPS con el comando Linux