Cara memantau integritas file di linux menggunakan osquery

Cara memantau integritas file di linux menggunakan osquery

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
Cara memantau integritas file di linux menggunakan osquery

Persyaratan dan konvensi perangkat lunak yang digunakan

  • Pengetahuan Dasar Konsep SQL
  • Root Izin untuk melakukan tugas administratif
Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
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