您好,登錄后才能下訂單哦!
使用OSQUERY作為HIDS檢測系統異常
一 ? 簡介
osquery 是facebook開源的查詢、監控系統的軟件,官網https://osquery.io
osquery經常用到的命令有osqueyi及osqueryd。
osqueryi?是 osquery 的交互式shell。通過它可以像查詢SQL一樣查詢系統信息。比如查詢內核模塊:
osqueryd是主機監控守護進程。生產通常使用這種方式。
二 osquery 配置概要
1 ?osquery表,osquery內置了很多表,通過這些表可以查詢到系統信息。
簡單列舉了幾個表并標明作用
? ? arp_cache ?系統arp緩存
? ? file_events ?監控目錄下文件變化
? ? kernel_modules ?顯示內核模塊
? ? last ?顯示登錄成功的用戶
? ? load_average ?當前系統負載
? ? users ?列出所有用戶
? ? processes ?列出所有進程
? ? listening_ports ?當前監聽端口
? ? process_open_sockets 網絡連接
下圖顯示通過osqueryi交互式shell查詢arp緩存、系統當前負載、系統當前監聽端口。
如果要查詢所有表,可以通過osqueryi交互shell下的 .table 查詢
2 配置
?linux通過官網rpm包安裝的osquery的配置默認位置是:/etc/osquery/osquery.conf
配置格式是json格式,下面是一個配置示例:
{
? "options": {
? ? "config_plugin": "filesystem",
? ? "logger_plugin": "filesystem",
? ? "logger_path": "/var/log/osquery",
? ? "pidfile": "/var/osquery/osquery.pidfile",
? ? "worker_threads": "10",
? ? "enable_monitor": "true"
? },
? "schedule": {
?"system_info": {
? ? "query": "SELECT hostname, cpu_brand, physical_memory FROM system_info;",
? ? "interval": 3600
? }
? },
? ?"packs": {
? ? ?"secrity": "/etc/osquery/secrity.conf",
? ? ?"file":"/etc/osquery/file.conf"
? ? }
}
其中 Options
設置osquery daemon的一些配置,日志產生路徑、線程、使用內存限制等。
Schedule
設置定時任務
Packs
packs可以看做是一系列schedule的集合。
3?文件監控,文件監控主要分兩部分。1 配置監控目錄 , 2 查詢file_event表。
下面是一個每300秒查詢一次file_event表監控目錄是/root、/home目錄下的文件的示例。/root或/home/目錄下的文件發生變化會在300秒內告警。
{
? "schedule": {
? ? "file_events": {
? ? ? "query": "SELECT * FROM file_events;",
? ? ? "removed": false,
? ? ? "interval": 300
? ? }
? },
? "file_paths": {
? ? "homes": [
? ? ? "/root/%%",
? ? ? "/home/%%"
? ? ]
? }
}
4 遠程配置。
? 遠程配置分兩步。 1 向服務器發送主機信息,注冊主機。 2 從服務器獲取配置。
--enroll_secret_path=/etc/osquery/server.pass
--tls_server_certs=/etc/osquery/server.pem
--tls_hostname=11.0.16.118:443
--host_identifier=hostname
--enroll_tls_endpoint=/enroll
--config_plugin=tls
--config_tls_endpoint=/config
--config_tls_refresh=86400
--enroll_secret_path 注冊主機時需要將一個秘鑰發送給服務器端。
--tls_server_certs 使用遠程配置時,必須使用https協議。 這里配置的是https站點的公鑰。 ??
--tls_hostname ?遠程
--host_identifier=hostname ? 注冊主機時會將hostname發送給服務端
--enroll_tls_endpoint ? ?通過tls獲取注冊主機的URL
--config_plugin ? 設置config方式
--config_tls_endpoint 通過tls獲取配置時URL
--config_tls_refresh ? ?間隔多少秒會重新獲取配置。
三 ?安裝
1 本次安裝通過本地配置、日志也記錄到本地達成以下目標:進程監控:比如ls這種執行時間特別短的進程也需要有日志。
網絡監控:服務器主動發起連接其他主機的都需要監控。
主機arp緩存:主機arp緩存發生變化有告警。
文件監控:指定目錄內文件發生變化告警。
用戶新增監控:添加用戶告警。
用戶組新增監控:添加用戶組告警。
用戶密碼修改監控:用戶修改密碼告警。
用戶登錄成功監控:用戶登錄成功告警。
2.1 下載
? ?wget?https://pkg.osquery.io/rpm/osquery-4.0.2-1.linux.x86_64.rpm
2.2 下載完成之后安裝?
?rpm -ivh osquery-4.0.2-1.linux.x86_64.rpm
2.3 修改配置文件。
osquery.conf 如下:
{
? "options": {
? ? "config_plugin": "filesystem",
? ? "logger_plugin": "filesystem",
? ? "logger_path": "/var/log/osquery",
? ? "pidfile": "/var/osquery/osquery.pidfile",
? ? "worker_threads": "10",
? ? "enable_monitor": "true"
? },
? "schedule": {
? },
? ?"packs": {
? ? ?"secrity": "/etc/osquery/secrity.conf",
? ? ?"file":"/etc/osquery/file.conf"
? ? }
}
osquery.flags文件:
--disable_audit=false
--audit_allow_config=true
--audit_allow_process_events=true
--audit_allow_sockets=true
--audit_persist=true
--disable_events=false
--events_max=50000
secrity.conf文件:
{
"queries": {
"processes_events": {
"query" : "SELECT FROM process_events;",
"interval" : 5,
"removed": false
},
"socket_event": {
"query" : "select from socket_events where family=2 and remote_address !='0.0.0.0';",
"interval" : 5,
"removed": false
},
"arp_cache": {
"query" : "SELECT FROM arp_cache;",
"interval" : 5,
"removed": false
},
"file_event": {
"query" : "SELECT FROM file_events;",
"interval" : 5,
"removed": false
},
"users": {
"query" : "SELECT FROM users;",
"interval" : 5,
"removed": false
},
"groups": {
"query" : "SELECT FROM groups;",
"interval" : 5,
"removed": false
},
"shadow": {
"query" : "SELECT FROM shadow;",
"interval" : 5,
"removed": false
},
"last": {
"query" : "SELECT FROM last;",
"interval" : 5,
"removed": false
}
}
}
file.conf文件:
{
"file_paths": {
? ? "homes": [
? ? ? "/root/%%",
? ? ? "/home/%%"
? ? ],
? ? "tmp": [
? ? ? "/tmp/%%"
? ? ]
? }
}
2.4 檢查配置是否有問題。osqueryctl config-check ??
2.5 啟動osquery :systemctl start osqueryd
2.6 觀察告警是否正常
可以看到pack_secrity_processes_events、pack_secrity_socket_event、pack_secrity_arp_cache等都可以正常告警。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。