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!