您好,登錄后才能下訂單哦!
本篇內容介紹了“osquery怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
osquery 是 SQL 驅動的分析和監控操作系統的工具,是操作系統分析框架,支持 OS X 和 Linux 系統。osquery 能幫助監控和分析低水平的操作系統,提供更直觀的性能監控。
本教程將介紹: 如何安裝Osquery 如何列出可用表 如何從osqueryi外殼執行查詢 如何使用osqueryd守護程序監控文件完整性 對SQL概念有基本知識 擁有執行管理任務的root權限 軟件需求和Linux命令行約定
安裝
我們基本上有兩種方法來安裝Osquery:第一種是從官方網站下載適合我們系統的軟件包;第二種(通常是優選方法)是將Osquery存儲庫添加到發行版軟件源。如圖:
通過軟件包安裝
可以從Osquery官方網站(https://osquery.io/downloads/official)下載簽名的deb和rpm軟件包,或下載更通用的打包文件。我們先選擇要安裝的版本,然后下載軟件包。
建議選擇最新的可用版本(截至發稿時4.1.2)。下載軟件包后,我們可以使用發行版軟件包管理器來安裝。比如想在Fedora系統上安裝該軟件(假設軟件包在當前的工作目錄中),我們將運行:
$ sudo dnf install ./osquery-4.1.2-1.linux.x86_64.rpm
我們還可以將rpm或deb存儲庫添加到發行版中。如果我們使用基于rpm的發行版,可以運行以下命令來完成任務:
$ 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 --enable osquery-s3-rpm-repo $ sudo yum install osquery
借助上述Linux命令,我們可以將用來簽名軟件包的gpg公鑰添加到系統中,然后添加存儲庫。最后,我們安裝Osquery軟件包。注意,在近期版本的Fedora和CentOS/RHEL中,yum只是dnf的符號鏈接,所以我們調用前者時,使用的卻是后者。
如果你運行基于Debian的發行版,可以將deb存儲庫添加到軟件源中,只要運行:
$ 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
一旦軟件包安裝完畢,我們可以看一下軟件的基本用法。
Osquery讓我們可以監控采用“表格抽象”的操作系統的不同方面,使用類似sqlite數據庫上所用語法的SQL語法。針對表執行查詢,表對操作系統的不同方面(比如進程和服務)進行抽象處理。
我們可以直接使用osqueryi交互式外殼來運行查詢,也可以通過osqueryd守護程序來安排查詢。下面這個例子顯示了列出所有可用表的查詢(還可以在此處https://osquery.io/schema/4.1.2#processes看到附有表描述的完整列表):
$ 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 => groups => 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_use => process_envs => process_events => process_file_events => process_memory_map => process_namespaces => 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
運行osqueryi命令,我們進入交互式外殼;我們可以從該外殼執行查詢或指令。這是查詢的另一個例子,這回列出所有運行中進程的pid和name。對process表執行查詢(為便于閱讀,查詢的輸出已截短):
osquery> SELECT pid, name FROM processes;
+——-+————————————+ | pid | name | +——-+————————————+ | 1 | systemd | | 10 | rcu_sched | | 10333 | kworker/u16:5-events_unbound | | 10336 | kworker/2:0-events | | 11 | migration/0 | | 11002 | kworker/u16:1-kcryptd/253:0 | | 11165 | kworker/1:1-events | | 11200 | kworker/1:3-events | | 11227 | bash | | 11368 | osqueryi | | 11381 | kworker/0:0-events | | 11395 | Web Content | | 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 | […] | +——-+————————————+ 甚至可以使用JOIN語句對連接表執行查詢,就像我們在關系數據庫中操作那樣。在下面例子中,我們對processes表執行查詢,通過uid列與users表進行連接:
osquery> SELECT processes.pid, processes.name, users.username FROM processes JOIN users ON processes.uid = users.uid;
+——-+——————————-+——————+ | pid | name | username | +——-+——————————-+——————+ | 1 | systemd | root | | 10 | rcu_sched | root | | 11 | migration/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 | Web Content | egdoc | | 9298 | Web Content | egdoc | | 9463 | gvfsd-metadata | egdoc | | 9497 | gvfsd-network | egdoc | | 9518 | gvfsd-dnssd | egdoc | +——-
前面我們使用交互式外殼osqueryi來使用Osquery。想使用FIM(文件完整性監控),我們改用osqueryd守護程序。通過配置文件,我們列出了想要監控的文件。file_events 表中記錄了涉及指定文件和目錄的事件,比如屬性變化。守護程序在指定的時間間隔后對該表運行查詢,并在日志中通知何時發現新記錄。不妨看看配置示例。
Osquery的主配置文件是/etc/osquery/osquery.conf。該文件默認情況下不存在,于是我們要創建它。配置以JSON格式來提供。假設我們想要監控/etc下的所有文件和目錄;下面顯示了我們如何配置該應用程序:
{"options": {"disable_events": "false"},"schedule": {"file_events": {"query": "SELECT * FROM file_events;","interval": 300 } },"file_paths": {"etc": ["/etc/%%"], }, }
不妨分析上述配置。首先在options部分,我們將disable_events設為“false”,以便啟用文件事件。
之后我們創建schedule部分:在該部分,我們可以描述和創建各種命名的調度查詢。我們在本文中創建了一個查詢,以便從file_events表選擇所有列,這意味著每300秒(5分鐘)執行一次。
安排查詢后,我們創建了file_paths部分,在該部分指定要監控的文件。在該部分,每個鍵代表要監控一組文件的名稱(Osquery術語中的類別)。這里“etc”鍵引用僅含有一個條目/etc/%%的列表。
%符號代表什么?指定文件路徑時,我們可以使用標準通配符(*)或SQL通配符(%)。如果提供單通配符,它將選擇位于指定級別的所有文件和目錄。如果提供雙通配符,它將遞歸選擇所有文件和文件夾。比如說,/etc/%表達式匹配/etc下面一級的所有文件和文件夾,而/etc/%%遞歸匹配/etc下的所有文件和文件夾。
如果需要,我們還可以使用配置文件中的exclude_paths部分,從提供的路徑中排除特定文件。在該部分,我們只能引用file_paths部分中定義的類別(本例中是“etc”)。我們提供了要排除的文件列表:
"exclude_paths": {"etc": ["/etc/aliases"] } 僅作為例子,我們從列表中排除了/etc/aliases文件。下面是最終配置的樣子: {"options": {"disable_events": "false"},"schedule": {"file_events": {"query": "SELECT * FROM file_events;","interval": 20 } },"file_paths": {"etc": ["/etc/%%"] },"exclude_paths": {"etc": ["/etc/aliases"] } }
配置已到位,我們可以開啟osqueryd守護程序:
$ sudo systemctl start osqueryd
為了使守護程序在系統啟動時自動開啟,我們要運行:
$ sudo systemctl enable osqueyd
一旦守護程序運行,我們可以核實配置有效。僅舉個例子,我們將修改/etc/fstab文件的許可權,將它們從644改為600:
$ sudo chmod 600 /etc/fstab
現在我們可以核實文件更改以記錄下來,只需閱讀/var/log/osquery/osqueryd.results.log文件。下面是該文件的最后一行:
{"name":"file_events","hostIdentifier":"fingolfin","calendarTime":"Mon Dec 30 19:57:31 2019 UTC","unixTime":1577735851,"epoch":0,"counter":0,"logNumericsAsNumbers":false,"columns": {"action":"ATTRIBUTES_MODIFIED","atime":"1577735683","category":"etc","ctime":"1577735841","gid":"0","hashed":"0","inode":"262147","md5":"","mode":"0600","mtime":"1577371335","sha1":"","sha256":"","size":"742","target_path":"/etc/fstab","time":"1577735841","transaction_id":"0","uid":"0"},"action":"added"}
“osquery怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。