Cara memantau integritas file di linux menggunakan osquery
- 4952
- 1403
- Dr. Travis Bahringer
Konsep dasar yang terlibat dengan penggunaan aplikasi OsQuery adalah "abstraksi tabel" dari banyak aspek sistem operasi, seperti proses, pengguna, dll. Data disimpan dalam tabel yang dapat diminta menggunakan SQL
sintaks, langsung melalui Osqueryi
shell, atau melalui Osqueryd
Daemon.
Dalam tutorial ini kita akan melihat cara menginstal aplikasi, cara menjalankan kueri dasar, dan cara menggunakan Fim
(Pemantauan Integritas File) Sebagai bagian dari pekerjaan Administrasi Sistem Linux Anda.
Dalam tutorial ini Anda akan belajar:
- Cara menginstal osquery
- Cara mendaftarkan tabel yang tersedia
- Cara melakukan pertanyaan dari shell osqueryi
- Cara menggunakan daemon osqueryd untuk memantau integritas file
Persyaratan dan konvensi perangkat lunak yang digunakan
- Pengetahuan Dasar Konsep SQL
- Root Izin untuk melakukan tugas administratif
Kategori | Persyaratan, konvensi atau versi perangkat lunak yang digunakan |
---|---|
Sistem | Distribusi-independen |
Perangkat lunak | OsQuery |
Lainnya | |
Konvensi | # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa |
Instalasi
Kami pada dasarnya memiliki dua opsi untuk menginstal OsQuery
: yang pertama terdiri dari mengunduh paket yang sesuai untuk sistem kami dari situs web resmi; Yang kedua, biasanya lebih disukai, adalah menambahkan repositori osquery ke sumber perangkat lunak distribusi kami. Di sini kami akan mengeksplorasi kedua opsi secara singkat.
Menginstal melalui paket
Dari situs web OsQuery resmi dimungkinkan untuk diunduh ditandatangani Deb
Dan RPM
paket, atau lebih banyak tarball generik. Sebagai hal pertama kami memilih versi yang ingin kami instal, lalu kami mengunduh paket.
Sarannya adalah memilih versi terbaru yang tersedia (4.1.2 pada saat penulisan). Setelah paket diunduh, kami dapat menginstalnya menggunakan manajer paket distribusi kami. Misalnya, untuk menginstal perangkat lunak pada sistem fedora (dengan asumsi paket terletak di direktori kerja kami saat ini), kami akan menjalankan:
$ sudo dnf instalasi ./OsQuery-4.1.2-1.Linux.x86_64.RPM
Menggunakan repositori
Sebagai alternatif, kami dapat menambahkan RPM
atau Deb
Repositori untuk distribusi kami. Jika kami menggunakan distribusi berbasis RPM, kami dapat menjalankan perintah berikut untuk menyelesaikan tugas:
$ curl -l https: // pkg.OsQuery.IO/RPM/GPG | sudo tee/etc/pki/rpm-gpg/rpm-gpg-key-osquery $ sudo yum-config-manager --add-repo https: // pkg.OsQuery.IO/RPM/OsQuery-S3-RPM.repo $ sudo yum-config-manager-osquery-s3-rpm-repo $ sudo yum menginstal osquery
Dengan perintah Linux di atas, kami menambahkan kunci pulik GPG yang digunakan untuk menandatangani paket ke sistem kami, lalu kami menambahkan repositori. Akhirnya, kami menginstal paket OsQuery. Perhatikan itu yum
, Dalam versi terbaru Fedora dan Centos/RHEL hanyalah tautan simbolis dnf
, Jadi ketika kami memohon yang pertama digunakan sebagai gantinya.
Jika kami menjalankan distribusi berbasis Debian, kami dapat menambahkan repositori Deb ke sumber perangkat lunak kami dengan menjalankan:
$ sudo apt-key adv --keyserver keyserver.Ubuntu.com ---Recv-keys 1484120ac4e9f8a1a577aeee97a80c63c9d8b80b $ sudo add-apt-repository 'deb [arch = amd64] https: // pkg.OsQuery.io/deb deb main '$ sudo apt-get update $ sudo apt-get install osquery
Setelah paket kami diinstal, kita dapat melihat penggunaan dasar perangkat lunak.
Penggunaan dasar
OsQuery memungkinkan kami untuk memantau berbagai aspek sistem operasi yang mengadopsi "abstraksi tabel", menggunakan sintaks SQL yang mirip dengan yang digunakan pada sqlite
database. Kueri dijalankan pada tabel yang abstrak berbagai aspek sistem operasi, seperti proses dan layanan.
Kita dapat menjalankan kueri secara langsung menggunakan Osqueryi
shell interaktif, atau kita dapat menjadwalkannya melalui Osqueryd
Daemon. Berikut adalah contoh kueri untuk mencantumkan semua tabel yang tersedia (daftar lengkap dengan deskripsi tabel juga dapat ditemukan
on line):
$ osqueryi osquery> .tables => acpi_tables => apt_sources => arp_cache => atom_packages => augeas => authorized_keys => block_devices => carbon_black_info => carves => chrome_extensions => cpu_time => cpuid => crontab => curl => curl_certificate => deb_packages = > device_file => device_hash => device_partitions => disk_encryption => dns_resolvers => docker_container_labels => docker_container_mounts => docker_container_networks => docker_container_ports => docker_container_processes => docker_container_stats => docker_containers => docker_image_labels => docker_images => docker_info => docker_network_labels => docker_networks => docker_version => docker_volume_labels => docker_volumes => ec2_instance_metadata => ec2_instance_tags => elf_dynamic => elf_info => elf_sections => elf_segments => elf_symbols => etc_hosts => etc_protocols => etc_services => file => file_events => firefox_addons => grup =>hardware_events => hash => intel_me_info => interface_addresses => interface_details => interface_ipv6 => iptables => kernel_info => kernel_integrity => kernel_modules => known_hosts => last => listening_ports => lldp_neighbors => load_average => logged_in_users => magic = > md_devices => md_drives => md_personalities => memory_array_mapped_addresses => memory_arrays => memory_device_mapped_addresses => memory_devices => memory_error_info => memory_info => memory_map => mounts => msr => npm_packages => oem_strings => opera_extensions => os_version => osquery_events => osQuery_extensions => osquery_flags => osquery_info => osquery_packs => osquery_registry => osquery_schedule => pci_devices => platform_info => portage_keywords => portage_packages => portage_useevs => portage_paces => portage => portage_pack =>> portage_paces => portage_packs => portage =>>> portage_packs => portage_package => portage => portage => portage =>> portage_package => portage => portage => portage => portage => portage => portage => portage => portage => portage => portage => portage => portage => portage => portage => portage_ process_open_files =>process_open_sockets => processes => prometheus_metrics => python_packages => routes => rpm_package_files => rpm_packages => selinux_events => shadow => shared_memory => shell_history => smart_drive_info => smbios_tables => socket_events => ssh_configs => sudoers => suid_bin = > syslog_events => system_controls => system_info => time => ulimit_info => uptime => usb_devices => user_events => user_groups => user_ssh_keys => users => yara => yara_events => yum_sources
Menjalankan Osqueryi
Perintah Kami memasukkan shell interaktif; dari itu, kami dapat mengeluarkan pertanyaan dan instruksi kami. Berikut adalah contoh lain dari kueri, kali ini untuk mendaftar semua proses berjalan pid
Dan nama
. Kueri dilakukan di proses
Tabel (output dari kueri telah dipotong untuk kenyamanan):
OsQuery> Pilih PID, nama dari proses; +-------+------------------------------------+| pid | Nama | +-------+------------------------------------+| 1 | Systemd | | 10 | rcu_sched | | 10333 | Kworker/U16: 5-Events_unbound | | 10336 | Kworker/2: 0-Events | | 11 | Migrasi/0 | | 11002 | Kworker/U16: 1-kcryptd/253: 0 | | 11165 | Kworker/1: 1-acara | | 11200 | Kworker/1: 3-acara | | 11227 | bash | | 11368 | osqueryi | | 11381 | Kworker/0: 0-Events | | 11395 | Konten web | | 11437 | KWORKER/0: 2-Events | | 11461 | Kworker/3: 2-Events_Power_Efficient | | 11508 | Kworker/2: 2 | | 11509 | Kworker/0: 1-Events | | 11510 | KWORKER/U16: 2-kcryptd/253: 0 | | 11530 | bash | […] | +-------+------------------------------------+
Menyalin Bahkan dimungkinkan untuk melakukan kueri di meja yang bergabung menggunakan BERGABUNG
pernyataan, seperti yang kita gunakan untuk lakukan di database relasional. Dalam contoh di bawah ini kami melakukan kueri di proses
meja, bergabung dengan pengguna
satu melalui uid
kolom:
OsQuery> Pilih Proses.PID, proses.Nama, Pengguna.Nama pengguna dari proses bergabung dengan pengguna pada proses.uid = pengguna.uid; +-------+-------------------------------+--------- ---------+ | pid | Nama | Nama pengguna | +-------+-------------------------------+--------- ---------+ | 1 | Systemd | root | | 10 | rcu_sched | root | | 11 | Migrasi/0 | root | | 11227 | bash | EGDOC | | 11368 | osqueryi | EGDOC | | 13 | CPUHP/0 | root | | 14 | CPUHP/1 | root | | 143 | Kintegrityd | root | | 144 | Kblockd | root | | 145 | blkcg_punt_bio | root | | 146 | tpm_dev_wq | root | | 147 | ATA_SFF | root | […] | 9130 | Konten web | EGDOC | | 9298 | Konten web | EGDOC | | 9463 | GVFSD-METADATA | EGDOC | | 9497 | GVFSD-NETWORK | EGDOC | | 9518 | GVFSD-DNSSD | EGDOC | +-------+-------------------------------+------------------+
Menyalin Pemantauan Integritas File (FIM)
Sampai sekarang kami menggunakan OsQuery
melalui shell interaktif: Osqueryi
. Menggunakan Fim
(Pemantauan Integritas File), kami ingin menggunakan Osqueryd
Daemon sebagai gantinya. Melalui file konfigurasi, kami menyediakan daftar file yang ingin kami pantau. Peristiwa seperti perubahan atribut yang melibatkan file dan direktori yang ditentukan, dicatat dalam file_events
meja. Daemon menjalankan kueri pada tabel ini setelah interval waktu tertentu dan memberi tahu log saat catatan baru ditemukan. Mari kita lihat contoh konfigurasi.
Pengaturan Konfigurasi
File konfigurasi utama untuk osquery adalah /etc/osquery/osquery.conf
. File tidak ada secara default, jadi kita harus membuatnya. Konfigurasi disediakan di Json
format. Misalkan kita ingin memantau semua file dan direktori di bawah /dll
; Inilah cara kami akan mengkonfigurasi aplikasi:
"Options": "disable_events": "false", "jadwal": "file_events": "kueri": "pilih * dari file_events;", "interval": 300, "file_paths": "dll": ["/etc/%%"],,
Menyalin Mari kita analisis konfigurasi di atas. Pertama -tama, di pilihan
bagian, kami mengatur Disable_events
ke "PALSU"
, Untuk mengaktifkan acara file.
Setelah itu, kami membuat jadwal
Bagian: Di dalam bagian ini kita dapat menjelaskan dan membuat berbagai kueri yang dijadwalkan bernama. Dalam kasus kami, kami membuat kueri yang memilih semua kolom dari file_events
tabel, yang dimaksudkan untuk dieksekusi setiap 300
detik (5 menit).
Setelah menjadwalkan kueri, kami membuat file_paths
bagian, di mana kami menentukan file yang akan dipantau. Di bagian ini, setiap kunci mewakili nama satu set file yang akan dipantau (kategori dalam jargon OsQuery). Dalam hal ini kunci "dll" referensi daftar dengan hanya satu entri, /dll/%%
.
Apa itu %
simbol adalah singkatan dari? Saat menentukan jalur file, kami dapat menggunakan standar (*
) atau SQL (%
) Wildcard. Jika satu wildcard disediakan, ia memilih semua file dan direktori yang ada di level yang ditentukan. Jika wildcard ganda disediakan, ia memilih semua file dan folder secara rekursif. Misalnya, /dll/%
Ekspresi cocok dengan semua file dan folder satu level di bawah /dll
, ketika /dll/%%
mencocokkan semua file dan folder di bawah /dll
secara rekursif.
Jika perlu, kami juga dapat mengecualikan file spesifik dari jalur yang kami berikan, menggunakan EXCULDUDE_PATHS
bagian dalam file konfigurasi. Di bagian ini kita hanya dapat referensi kategori yang ditentukan dalam file_paths
bagian, ("dll" dalam hal ini). Kami menyediakan daftar file yang akan dikecualikan:
"ExcleDe_paths": "etc": ["/etc/aliass"]
Menyalin Sama seperti sebuah contoh, kami mengecualikan /etc/alias
file dari daftar. Begini konfigurasi akhir kami seperti:
"Options": "disable_events": "false", "jadwal": "file_events": "kueri": "pilih * dari file_events;", "interval": 20, "file_paths": "dll": ["/etc/%%"], "excule_paths": "etc": ["/etc/aliases"]
Menyalin Memulai daemon
Dengan konfigurasi kami di tempat, kami dapat memulai Osqueryd
Daemon:
$ sudo systemctl mulai osqueryd
Untuk membuat daemon mulai secara otomatis saat boot, kita harus menjalankan:
$ sudo systemctl mengaktifkan osqueyd
Setelah daemon berjalan, kami dapat memeriksa pekerjaan konfigurasi kami. Sama seperti sebuah contoh, kami akan memodifikasi izin /etc/fstab
file, mengubahnya dari 644
ke 600
:
$ sudo chmod 600 /etc /fstab
Kami sekarang dapat memverifikasi perubahan pada file telah direkam dengan membaca /var/log/osquery/osqueryd.Hasil.catatan
mengajukan. Berikut adalah baris terakhir dari file (dipercantik):
"Name": "File_events", "HostIdentifier": "Fingolfin", "CalendarTime": "Mon 30 Desember 19:57:31 2019 UTC", "UnixTime": 1577735851, "Epoch": 0, "Counter": 0, "LOGNUMERICSASNUMBERS": false, "columns": "action": "atributes_modified", "atime": "1577735683", "kategori": "dll", "ctime": "1577735841", "gid": "" 0 "," Hashed ":" 0 "," Inode ":" 262147 "," Md5 ":" "," Mode ":" 0600 "," MTime ":" 1577371335 "," sha1 ":" "," sha256 ":" "," size ":" 742 "," target_path ":"/etc/fstab "," waktu ":" 1577735841 "," transaction_id ":" 0 "," uid ":" 0 "," "Tindakan": "tambah"
Menyalin Pada log di atas, kita dapat dengan jelas melihat itu Atribute_modified
tindakan (baris 10) terjadi pada target_path
"/Etc/fstab" (baris 23), yang merupakan bagian dari "dll" kategori
(Baris 12). Penting untuk memperhatikan bahwa jika kita menanyakan file_events
meja dari Osqueryi
shell, kita tidak akan melihat baris, karena Osqueryd
daemon, dan Osqueryi
Jangan berkomunikasi.
Kesimpulan
Dalam tutorial ini kami melihat konsep dasar yang terlibat dalam penggunaan OsQuery
Aplikasi, yang abstrak berbagai konsep sistem operasi menggunakan data tabular yang dapat kami minta menggunakan sintaks SQL. Kami melihat cara menginstal aplikasi, cara melakukan kueri dasar menggunakan Osqueryi
shell, dan akhirnya cara mengatur pemantauan file menggunakan Osqueryd
Daemon. Kami baru saja menggaruk permukaan apa yang dapat dilakukan aplikasi; Seperti biasa, sarannya adalah untuk melihat dokumentasi proyek untuk pengetahuan yang lebih mendalam.
Tutorial Linux Terkait:
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Alat Pemantauan Sistem Terbaik untuk Linux
- Ubuntu 20.04 Pemantauan Sistem dengan Widget Conky
- Ubuntu 22.04 Pemantauan Sistem dengan Widget Conky
- Pengantar Otomatisasi Linux, Alat dan Teknik
- Optimalisasi Kinerja Linux: Alat dan Teknik
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
- Hal -hal yang harus diinstal pada Ubuntu 22.04
- Cara dengan benar GREP untuk teks dalam skrip bash
- File Konfigurasi Linux: 30 Teratas Paling Penting