wazuh-API 防篡改

Wazuh API

Wazuh API是一种开源的RESTful API,允许通过web浏览器、cURL之类的命令行工具或任何可以发出web请求的脚本或程序与Wazuh管理器进行交互。Wazuh Kibana应用程序严重依赖于此

Wazuh的目标是通过Wazuh Kibana应用程序适应对Wazuh基础设施的完整远程管理。使用API可以轻松执行日常操作,如添加代理、重启管理器或代理或查找syscheck详细信息

 

参见官方文档:https://documentation.wazuh.com/3.13/user-manual/api/index.html

Wazuh API功能:

代理管理

经理控制及概述

Rootcheck控制和搜索

Syscheck控制和搜索

规则集信息

统计信息

HTTPS和用户身份验证

错误处理

查询远程配置

wazuh API基本使用

API在启动时启动。要控制或检查wazuh-api服务,请使用systemctl或service命令。

Systemd systems

# systemctl start/status/stop/restart wazuh-api

SysVinit systems

# service wazuh-api start/status/stop/restart

 

使用cURL命令发送一个请求,以确认一切都按预期工作:

curl -u foo:bar "https://localhost:55000?pretty"

  • curl:用于通过HTTP和HTTPS发送请求和命令的命令行工具
  • -u foo:bar:验证API的用户名和密码。
  • https://localhost:55000:如果您在管理器本身上运行命令,将使用的API URL。
  • ?pretty:使JSON输出更易于读懂的参数。
  •  

基本概念

下面是一些与API请求和理解它们的响应有关的基本概念:

1、每个请求的基本URL是https://IP:55000/或http://IP:55000/,这取决于是否在API中启用和设置了SSL。

2、所有响应均为JSON格式,

  • error如果一切正常,则为0,否则为错误代码。
  • data请求的数据。只有当错误时候为0。
  • message错误描述。只有当错误时候不为0时(展示错误信息)。

 

注意:

  • 包含数据集合的响应将返回最多500个元素。偏移量和限制参数可用于遍历大型集合。
  • 所有响应都有一个HTTP状态码:2xx(成功)、4xx(客户端错误)、5xx(服务器错误)等等。
  • 所有请求都接受pretty参数,以将JSON响应转换为更易于阅读的格式。
  • API日志以/var/ossec /log /api.log的形式存储在管理器上。API日志每天轮换。循环存储在/var/ossec/log /api/<year>/<month>中,并使用gzip进行压缩。
  • 如果在一段时间后没有收到任何响应,那么所有API请求将被中止。参数wait_for_complete可用于禁用此超时。这对于花费比预期更多时间的调用非常有用,例如PUT/agents/:agent_id/upgrade见官方文档:使用在线存储库中的WPK文件升级代理。(链接如下):https://documentation.wazuh.com/3.13/user-manual/api/reference.html#upgrade-agent-using-online-repository

官方用例:

官方文档的测试用例(帮助了解wazuh API): https://documentation.wazuh.com/3.13/user-manual/api/getting-started.html#use-cases

 

使用查询过滤数据

基本用法

使用Wazuh API的查询可以进行预先过滤。使用q参数指定查询。查询有以下结构:

字段名称:要筛选的字段名称。如果使用了不正确的字段名,将会引发错误。

 

操作符:过滤操作符:

  • =: equality.
  • !=: not equality.
  • <: smaller.
  • >: bigger.
  • ~: like as.

值:用于过滤过滤的值。

 

分隔符:连接多个“查询”的操作符:  用 q 标识

  • ,: represents an OR.
  • ;: represents an AND.

官方示例:

官方链接:

https://documentation.wazuh.com/3.13/user-manual/api/queries.html#examples

根据操作系统名称和操作系统版本过滤代理:

同一字段可以多次使用以获得更准确的结果。例如,比Ubuntu 12高但比Ubuntu 18低的过滤代理:

curl -u foo:bar -X GET "https://localhost:55000/agents?pretty&q=os.name=ubuntu;os.version>12;os.version<18&select=id,name,os.name,os.version,os.codename,os.major"

 

使用OR操作符的一个例子是过滤Ubuntu或CentOS代理:

curl -u foo:bar -X GET "https://localhost:55000/agents?pretty&q=os.name=ubuntu,os.name=centos+linux&select=id,name,os.name,os.version,os.codename,os.major"
  • & :作为分隔符
  • q :作为---标识,标识接下来的条件作为过滤条件
  • select :表示查询后要展示的字段(个人理解)
  • < > = != :作为条件符号---查询过滤的条件符号
  • , :表示 或
  • ; :表示 与

按日期过滤rootcheck事件

下面的示例展示了如何检查在指定的时间框架内生成的rootcheck事件:

curl -u foo:bar -X GET "https://localhost:55000/rootcheck/001?pretty&q=oldDay<3h25m&limit=2"

可以使用操作符>和<一起指定更精确的时间框架:

curl -u foo:bar -X GET "https://localhost:55000/rootcheck/001?pretty&q=oldDay<3h30m;oldDay>3h&limit=2"
  • limit :返回的最大元素数。
  • 3h10m :这个条件是限制什么 没搞懂

wazuh API配置

默认情况下,API将绑定到端口55000/tcp,并需要用户名和密码身份验证。默认的用户名和密码是“foo”和“bar”。

基本配置

配置脚本:

运行脚本/var/ossec/api/scripts/configure_api.sh来配置基本设置。

 

该脚本同时支持无人值守配置和有人值守配置。要设置无人值守配置的参数,请使用文件/var/ossec/api/configuration/preloaded_vars.conf。该文件将在运行脚本后删除写入其中的任何敏感信息。

 

配置文件

你可以在文件/var/ossec/api/configuration/config.js中配置某些API设置:

 

确保在编辑配置文件后重新启动wazuh-api服务:

  1. For Systemd:

# systemctl restart wazuh-api

  1. For SysV Init:

# service wazuh-api restart

 

基本身份认证

通常建议创建新的凭证来替换foo:bar。这可以很容易地做以下步骤,替换你想要的用户名为我的用户名:

cd /var/ossec/api/configuration/auth
node htpasswd -c user myUserName

运行上述命令后,在提示符处输入所需的密码。

 

不要忘记重新启动API来应用这些更改:

For Systemd:

# systemctl restart wazuh-api

For SysV Init:

# service wazuh-api restart

 

手动启用https支持

生成密钥和证书请求(需要Openssl):

cd /var/ossec/api/configuration/ssl
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr

 

默认情况下,每次运行服务器时都必须输入密钥的密码。如果您不想每次都输入密码,您可以通过运行以下命令删除密码:   

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

 

接下来生成您的自签名证书:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

 

并删除临时文件:

rm server.csr
rm server.key.org

 

补充

     curl

       CURL CURL是一个用于发送http/https请求和命令的命令行工具。它预装在许多LinuxMac系统上,可以用于与API交互。一些例子:

 

active-response命令

在代理中运行AR命令

在指定代理上运行活动响应命令。

Request:

PUT

/active-response/:agent_id

Parameters:

Param

Type

Description

agent_id

Number

Agent ID.

command

String

Command running in the agent. If this value starts by !, then it refers to a script name instead of a command name.

custom

Boolean

Whether the specified command is a custom command or not.

arguments

String[]

Array with command arguments.

Example Request:

curl -u foo:bar -k -X PUT -d '{"command":"restart-ossec0", "arguments": ["-", "null", "(from_the_server)", "(no_rule_id)"]}' -H 'Content-Type:application/json' "https://127.0.0.1:55000/active-response/001?pretty"

Example Response:utput

{
    "error": 0,
    "data": "Command sent."
}

 

python

       您还可以使用PythonAPI交互,如下所示:

 

有关更完整的示例,请参见/var/ossec/api/examples/api-client.py.

PowerShell

https://documentation.wazuh.com/3.13/user-manual/api/examples.html#powershell

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值