Osquery adalah perangkat lunak pemantauan, kueri, dan analitik Sistem Operasi open source. Dibuat oleh Facebook, ini memperlihatkan sistem operasi sebagai database relasional berkinerja tinggi yang dapat dikueri menggunakan kueri berbasis SQL.
Osquery adalah software multi-platform, dapat diinstal di Linux, Windows, MacOS, dan FreeBSD. Osquery memungkinkan kami menjelajahi profil sistem operasi, performa, keamanan, dan metrik lainnya dengan menggunakan kueri berbasis SQL.
Dalam tutorial ini, saya akan menunjukkan cara menginstal osquery pada distribusi Linux Ubuntu 18.04 LTS dan CentOS 7. Kami akan menginstal osquery, mempelajari cara menggunakan mode interaktif 'osqueryi', dan cara memantau sistem langsung menggunakan osquery.
Prasyarat
- Linux OS (Ubuntu 18.04 atau CentOS 7)
- Hak istimewa root
Apa yang akan kami lakukan
- Instal osquery di Sistem Operasi Linux
- Penggunaan Dasar Mode Interaktif osqueryi
- Sistem Pemantauan menggunakan osquery
Langkah 1 - Instal osquery di Sistem Operasi Linux
osquery menyediakan repositorinya sendiri untuk setiap platform. Pada langkah ini, kita akan menginstal paket osquery dari repositori resmi osquery.
Di Ubuntu
Tambahkan kunci osquery.
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY
Instal paket osquery di Ubuntu.
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt install osquery -y
Di CentOS
Tambahkan kunci osquery.
curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery
Instal paket osquery di CentOS 7.
sudo yum-config-manager --add-repo https://pkg.osquery.io/rpm/osquery-s3-rpm.repo
sudo yum-config-manager --enable osquery-s3-rpm
sudo yum install osquery
Tunggu hingga semua paket terinstal.
Langkah 2 - Penggunaan Dasar Mode Interaktif osqueryi
osquery menyediakan dua antarmuka utama bagi pengguna, osqueryi, dan osqueryd.
osqueryi adalah konsol kueri interaktif osquery. Ini seperti shell perintah 'mysql' di MySQL dan shell 'psql' di database PostgreSQL.
Pada langkah ini, kita akan mempelajari penggunaan dasar mode interaktif 'osqueryi'.
Ketik perintah 'osqueryi' di terminal server, dan Anda akan mendapatkan mode konsol interaktif osquery.
osqueryi
Selanjutnya, kita akan mempelajari tentang perintah dasar dari mode konsol osqueryi.
Tampilkan semua perintah dasar yang tersedia pada mode interaktif osqueryi.
.help
Tampilkan konfigurasi dan pengaturan osquery saat ini.
.show
Osquery menyediakan beberapa mode tampilan untuk menampilkan hasil kueri. Mode default adalah mode 'cantik'.
Sekarang kita akan mengubah mode tampilan hasil kueri, untuk panduan ini, kita akan menggunakan mode 'garis'.
.mode csv
.mode list
.mode column
.mode line
.mode pretty
Osquery memaparkan sistem operasi sebagai sistem basis data relasional. Semua info tentang sistem disimpan dalam tabel osquery dan kita dapat menjelajahi seluruh info sistem dengan menanyakan semua tabel yang tersedia.
Untuk mendapatkan daftar semua tabel yang tersedia di osquery, jalankan perintah di bawah ini.
.tables
Setelah kita mengetahui semua tabel yang tersedia di sistem osquery, kita akan melihat kolomnya.
Gunakan perintah berikut untuk mendapatkan skema (kolom, tipe) tabel.
.schema users
.schema processes
Dan Anda akan mendapatkan semua kolom skema tabel.
Langkah 3 - Pemantauan Linux Dasar menggunakan kueri
Pada langkah ini, kita akan memantau sistem Linux langsung menggunakan osquery. Kami akan memantau info profil sistem, pengguna, antarmuka jaringan, dll melalui mode interaktif osqueryi.
Dapatkan Info Sistem
Tampilkan detail tentang perangkat keras sistem.
SELECT * FROM system_info;
SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;
Dapatkan Versi OS
Tampilkan info sistem operasi saat ini, termasuk versi os, platform, patch os, dan nama kode.
SELECT * FROM os_version;
Melihat Versi dan Modul Kernel
Untuk memeriksa info kernel sistem, osquery menyediakan tabel 'kernel_info' dan 'kernel_modules'.
Tampilkan kernel yang digunakan oleh sistem.
SELECT * FROM kernel_info;
Tampilkan semua modul kernel yang dimuat pada sistem.
SELECT * FROM kernel_modules LIMIT 5;
Memeriksa Repositori dan Paket
osquery menyediakan tabel untuk memeriksa repositori dan paket yang diinstal pada Linux Ubuntu dan CentOS.
- Di Ubuntu
Di Ubuntu, kita dapat memeriksa repositori yang tersedia melalui 'apt_sources' dan memeriksa paket yang diinstal melalui 'deb_packages'.
Periksa semua repositori Ubuntu yang tersedia.
SELECT * FROM apt_sources;
SELECT name, base_uri, release, maintainer, components FROM apt_sources ORDER BY name;
Periksa semua paket yang diinstal menggunakan tabel deb_packages.
SELECT * FROM deb_packages;
Hanya tampilkan nama paket dan versi.
SELECT name, version FROM deb_packages ORDER BY name;
Untuk paket tertentu, tambahkan filter nama.
SELECT name, version FROM deb_packages WHERE name="nginx";
- Di CentOS
Di CentOS, kita dapat memeriksa repositori yang tersedia melalui 'yum_sources' dan memeriksa paket yang diinstal melalui 'rpm_packages'.
Periksa semua repositori CentOS yang tersedia.
SELECT * FROM yum_sources;
SELECT name, baseurl, enabled FROM yum_sources;
Periksa repositori yang diaktifkan dengan menambahkan filter 'diaktifkan'.
SELECT name, baseurl, enabled FROM yum_sources WHERE enabled=1;
Periksa semua paket yang diinstal menggunakan tabel rpm_packages.
SELECT * FROM rpm_packages;
SELECT name, version FROM rpm_packages ORDER BY name;
Untuk nama paket tertentu, tambahkan filter nama.
SELECT name, version FROM rpm_packages WHERE name="firewalld";
Mount Disk Info
Kita dapat menggunakan tabel mount untuk memeriksa semua detail tentang drive sistem, termasuk inode gratis, flag, tipe, dll.
Periksa semua disk yang dipasang oleh sistem.
SELECT * FROM mounts;
SELECT device, path, type, inodes_free, flags FROM mounts;
Untuk jenis perangkat tertentu.
SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="ext4";
SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="tmpfs";
Info Memori
Memeriksa memori sistem dalam byte.
SELECT * FROM memory_info;
Info Antarmuka Jaringan
Memeriksa alamat jaringan menggunakan 'interface_addresses'.
SELECT * FROM interface_addresses;
Memeriksa detail antarmuka jaringan menggunakan 'interface_details'.
SELECT * FROM interface_details;
SELECT interface, mac, ipackets, opackets, ibytes, obytes FROM interface_details;
Waktu Aktif Server
Memeriksa waktu aktif server.
SELECT * FROM uptime;
Memeriksa Pengguna
osqery menyediakan tabel detail untuk memeriksa pengguna sistem. Kita dapat menggunakan tabel 'pengguna' untuk memeriksa semua pengguna di sistem, menggunakan tabel 'terakhir' untuk memeriksa login terakhir pengguna, dan menggunakan 'logged_in_users' untuk mendapatkan pengguna yang login dengan shell aktif.
Untuk memeriksa semua pengguna yang tersedia di server, gunakan tabel 'pengguna'.
SELECT * FROM users;
Untuk pengguna biasa, kita dapat menentukan uid menjadi '>=1000'.
SELECT * FROM users WHERE uid>=1000;
Untuk memeriksa pengguna login terakhir, gunakan tabel 'terakhir'.
SELECT * FROM last;
Untuk pengguna biasa, isi 'type' sampai '7'.
SELECT username, time, host FROM last WHERE type=7;
Memeriksa pengguna yang masuk dengan shell aktif, gunakan tabel 'logged_in_users'.
SELECT * FROM logged_in_users;
Info Firewall Tabel IP
Dengan tabel 'tabel', kita dapat memeriksa semua aturan firewall yang tersedia, termasuk rantai, kebijakan, IP src/dst, dan port, dll.
Tampilkan semua aturan iptables.
SELECT * FROM iptables;
Tentukan aturan menggunakan kueri khusus di bawah ini.
SELECT chain, policy, src_ip, dst_ip FROM iptables WHERE chain="POSTROUTING" order by src_ip;
Info Proses
Kita dapat memeriksa semua proses aplikasi dengan menggunakan tabel 'proses'. Ini memberikan info terperinci tentang proses termasuk pid, nama, jalur, perintah, dll.
Kueri proses dasar untuk memeriksa semua aplikasi yang berjalan.
SELECT * FROM processes;
Tentukan kolom untuk pid dll, jalur, dan perintah.
SELECT pid, name, path, cmdline FROM processes;
Memeriksa Pekerjaan Cron
Periksa tugas cron yang tersedia dan waktu menjalankan skrip menggunakan tabel 'crontab'.
SELECT * FROM crontab;
File Biner SUID
SUID (Atur ID Pengguna pemilik pada saat eksekusi) adalah jenis izin file khusus yang diberikan ke file dan sebagian besar file biner yang dapat dieksekusi.
Periksa semua file biner yang tersedia.
SELECT * FROM suid_bin;
Tentukan nama pengguna dan nama grup.
SELECT * FROM suid_bin WHERE username="root" AND groupname="nobody" order by path;
Dan semua hal di atas adalah pemantauan sistem Linux dasar menggunakan osquery.