中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

osquery怎么使用

發布時間:2022-01-25 10:00:28 來源:億速云 閱讀:248 作者:iii 欄目:開發技術

本篇內容介紹了“osquery怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

osquery 是 SQL 驅動的分析和監控操作系統的工具,是操作系統分析框架,支持 OS X 和 Linux 系統。osquery 能幫助監控和分析低水平的操作系統,提供更直觀的性能監控。

osquery怎么使用

本教程將介紹: 如何安裝Osquery 如何列出可用表 如何從osqueryi外殼執行查詢 如何使用osqueryd守護程序監控文件完整性 對SQL概念有基本知識 擁有執行管理任務的root權限 軟件需求和Linux命令行約定 osquery怎么使用

安裝

我們基本上有兩種方法來安裝Osquery:第一種是從官方網站下載適合我們系統的軟件包;第二種(通常是優選方法)是將Osquery存儲庫添加到發行版軟件源。如圖:

osquery怎么使用
Osquery如何在Linux上監控文件的完整性?Osquery如何在Linux上監控文件的完整性?

通過軟件包安裝

可以從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 | +——-

文件完整性監控(FIM)

前面我們使用交互式外殼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怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霍山县| 锦州市| 黄平县| 游戏| 湄潭县| 米易县| 松江区| 犍为县| 游戏| 图们市| 马尔康县| 嘉义市| 清丰县| 清河县| 磐安县| 缙云县| 长垣县| 东台市| 靖西县| 景洪市| 长宁县| 新郑市| 河南省| 东丰县| 旅游| 黎平县| 华安县| 徐州市| 盘山县| 竹北市| 嘉禾县| 内丘县| 沾化县| 靖州| 鲁山县| 陵水| 洪湖市| 大姚县| 嘉定区| 雅江县| 临泉县|