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!