GNU/Linux >> Belajar Linux >  >> Linux

Cara Memantau Keamanan Server Linux dengan Osquery

Osquery adalah alat pemantauan ancaman keamanan sumber terbuka yang dikembangkan oleh Facebook. Ini digunakan untuk menanyakan informasi sistem termasuk versi sistem, informasi kernel, proses yang berjalan, informasi memori, port mendengarkan, pengguna login, dan banyak lagi. Osquery membantu administrator sistem untuk menulis kueri SQL untuk mengidentifikasi, menyelidiki, dan menghilangkan berbagai jenis ancaman. Ini mendukung beberapa sistem operasi termasuk Windows, Linux, FreeBSD, dan macOS.

Dalam posting ini, kami akan menjelaskan cara menginstal dan menggunakan Osquery di Ubuntu 20.04.

Prasyarat

  • Server Ubuntu 20.04 di Atlantic.Net Cloud Platform
  • Kata sandi root yang dikonfigurasi di server Anda

Langkah 1 – Buat Server Cloud Atlantic.Net

Pertama, masuk ke Server Cloud Atlantic.Net Anda. Buat server baru, pilih Ubuntu 20.04 sebagai sistem operasi dengan setidaknya 2GB RAM. Hubungkan ke Server Cloud Anda melalui SSH dan masuk menggunakan kredensial yang disorot di bagian atas halaman.

Setelah Anda masuk ke server Ubuntu 20.04 Anda, jalankan perintah berikut untuk memperbarui sistem dasar Anda dengan paket terbaru yang tersedia.

apt-get update -y

Langkah 2 – Instal Osquery

Pertama, instal dependensi yang diperlukan menggunakan perintah berikut:

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

Selanjutnya, tambahkan kunci GPG Osquery dengan perintah berikut:

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

Selanjutnya, tambahkan repositori Osquery ke APT menggunakan perintah berikut:

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

Setelah repositori ditambahkan, perbarui repositori dan instal Osquery dengan perintah berikut:

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

Langkah 3 – Hubungkan ke Konsol Osquery

Osquery menyediakan shell interaktif untuk mengeksekusi kueri dan menjelajahi status sistem operasi Anda saat ini.

Anda dapat terhubung ke shell Osquery menggunakan perintah berikut:

osqueryi

Setelah Anda terhubung, Anda akan mendapatkan output berikut:

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

Selanjutnya, tampilkan pengaturan default Osquery menggunakan perintah berikut:

osquery> .show

Anda akan melihat output berikut:

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 memiliki banyak tabel yang tersedia untuk query. Anda dapat mendaftarkannya dengan perintah berikut:

osquery> .tables

Contoh keluaran:

  => 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 memiliki beberapa mode untuk menampilkan output query. Di sini, kita akan menggunakan mode garis untuk menampilkan output.

Untuk mengatur mode garis, jalankan perintah berikut:

osquery> .mode line

Langkah 4 – Cara Menggunakan Osquery

Untuk mendapatkan informasi tentang sistem operasi Anda yang sedang berjalan, jalankan:

osquery> SELECT * FROM system_info;

Contoh keluaran:

          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

Untuk memfilter keluaran informasi sistem, jalankan:

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

Contoh keluaran:

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

Untuk menampilkan versi sistem operasi Anda, jalankan:

osquery> SELECT * FROM os_version;

Contoh keluaran:

         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

Untuk menampilkan informasi kernel Anda, jalankan:

osquery> SELECT * FROM kernel_info;

Contoh keluaran:

  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

Untuk menampilkan semua port mendengarkan dengan nama layanan dan PID, jalankan:

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

Contoh keluaran:

 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

Untuk menampilkan informasi paket Apache, jalankan:

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

Contoh keluaran:

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

Untuk menampilkan informasi memori sistem, jalankan:

osquery> SELECT * FROM memory_info;

Contoh keluaran:

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

Untuk menampilkan informasi semua antarmuka jaringan, jalankan:

osquery> SELECT * FROM interface_addresses;

Contoh keluaran:

+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+
| 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 |
+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+

Untuk memeriksa waktu aktif sistem, jalankan:

osquery> SELECT * FROM uptime;

Contoh keluaran:

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

Untuk membuat daftar semua pengguna yang UID-nya lebih besar dari 1000, jalankan:

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

Contoh keluaran:

+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+
| 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 |      |
+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+

Untuk memeriksa pengguna yang terakhir masuk, jalankan:

osquery> SELECT * FROM last;

Contoh keluaran:

+----------+-------+------+------+------------+-----------------+
| 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 |
+----------+-------+------+------+------------+-----------------+

Untuk menampilkan semua pengguna yang masuk, jalankan:

osquery> SELECT * FROM logged_in_users;

Contoh keluaran:

+-----------+----------+------------+------------------+------------+------+
| 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 |
+-----------+----------+------------+------------------+------------+------+

Kesimpulan

Dalam panduan di atas, kami menjelaskan cara menginstal dan menggunakan Osquery untuk mendapatkan data dari sistem operasi dengan menjalankan kueri berbasis SQL. Ini adalah alat yang sangat berguna dan mudah digunakan untuk menemukan pintu belakang, malware, proses zombie, dan banyak lagi. Mulai Osquery di VPS Anda dari Atlantic.Net hari ini!


Linux
  1. Bagaimana cara memonitor server Linux Anda?

  2. 5 tips untuk memulai dengan keamanan server Linux

  3. Pantau Server Linux Dengan Prometheus dan Grafana

  1. Cara Memantau Kinerja Sistem Linux dengan Sysstat

  2. Bagaimana Memantau Penggunaan Jaringan dengan nload di Linux?

  3. Cara Mengatur Server Linux Sebagai Router dengan NAT

  1. Pantau server Linux Anda dengan Checkmk

  2. Cara bekerja dengan klien SFTP di Linux – 10 perintah sftp

  3. Bagaimana cara mendaftarkan server Linux dengan server DNS Windows