Citrix Web App Firewall
编辑Citrix Web App Firewall
编辑Citrix Web App Firewall 可防止安全漏洞、数据丢失以及对访问敏感业务或客户信息的网站进行未经授权的修改。它通过过滤请求和响应,检查它们是否存在恶意活动迹象,并阻止表现出此类活动的请求来实现此目的。您的站点不仅受到常见类型的攻击的保护,还受到新的、尚未知的攻击的保护。除了保护 Web 服务器和网站免受未经授权的访问外,Web App Firewall 还保护旧版 CGI 代码或脚本、Web 框架、Web 服务器软件以及其他底层操作系统中的漏洞。
兼容性
编辑此集成已针对从 Citrix ADC 13.1 和 NetScaler 10.0 文档中获得的示例进行了测试。
配置
编辑在 Elastic 中启用集成
编辑- 在 Kibana 中,转到管理 > 集成。
- 在“搜索集成”搜索栏中,键入Citrix。
- 从搜索结果中单击“Citrix Web App Firewall”集成。
- 单击添加 Citrix Web App Firewall按钮以添加集成。
Citrix WAF 仪表板配置
编辑建议配置应用程序防火墙以启用 CEF 格式的日志。
- 导航到 NetScaler GUI 的“安全性”。
- 单击“应用程序防火墙”节点。
- 选择“更改引擎设置”。
- 启用 CEF 日志记录。
Syslog
编辑可以使用 Citrix WAF GUI 配置 syslog 服务器以及要发送到 syslog 服务器的 WAF 消息类型。有关详细信息,请参阅如何将应用程序防火墙消息发送到单独的 Syslog 服务器和如何将 NetScaler 应用程序防火墙日志发送到 Syslog 服务器和 NS.log。
配置 Citrix WAF 集成
编辑Syslog
编辑根据您环境中的 syslog 服务器设置,选中以下一个或多个选项:“通过 UDP 从 Citrix WAF 收集 syslog”、“通过 TCP 从 Citrix WAF 收集 syslog”、“通过文件从 Citrix WAF 收集 syslog”。
根据所选配置选项,输入 syslog 主机和端口或文件路径的值。
日志事件
编辑启用此选项可收集为所选日志流配置的所有应用程序的 Citrix WAF 日志事件。
日志
编辑Syslog
编辑citrix_waf.log
数据集提供来自配置的 syslog 服务器的事件。所有 Citrix WAF syslog 特定字段都可在 citrix
字段组中找到。
示例
log
的示例如下所示
{ "@timestamp": "2012-12-18T21:46:17.000Z", "agent": { "ephemeral_id": "9153862d-f83f-4bd1-bbc9-c3ff3d96e726", "id": "e30119bc-b47d-4e56-86e3-4a9683305c6e", "name": "docker-fleet-agent", "type": "filebeat", "version": "8.2.3" }, "citrix": { "cef_format": true, "cef_version": "0", "detail": "CEF:0|Citrix|NetScaler|NS10.0|APPFW|APPFW_STARTURL|6|src=175.16.199.1 spt=54711 method=GET request=http://vpx247.example.net/FFC/login_post.html?abc\\=def msg=Disallow Illegal URL. cn1=465 cn2=535 cs1=profile1 cs2=PPE0 cs3=IliG4Dxp1SjOhKVRDVBXmqvAaIcA000 cs4=ALERT cs5=2012 act=not blocked", "device_event_class_id": "APPFW", "device_product": "NetScaler", "device_vendor": "Citrix", "device_version": "NS10.0", "facility": "local0", "name": "APPFW_STARTURL", "ppe_id": "PPE0", "priority": "info", "profile_name": "profile1", "session_id": "IliG4Dxp1SjOhKVRDVBXmqvAaIcA000", "severity": "ALERT" }, "client": { "geo": { "city_name": "London", "continent_name": "Europe", "country_iso_code": "GB", "country_name": "United Kingdom", "location": { "lat": 51.5142, "lon": -0.0931 }, "region_iso_code": "GB-ENG", "region_name": "England" }, "ip": "81.2.69.144" }, "data_stream": { "dataset": "citrix_waf.log", "namespace": "ep", "type": "logs" }, "ecs": { "version": "8.11.0" }, "elastic_agent": { "id": "e30119bc-b47d-4e56-86e3-4a9683305c6e", "snapshot": false, "version": "8.2.3" }, "event": { "action": "not blocked", "agent_id_status": "verified", "dataset": "citrix_waf.log", "id": "465", "ingested": "2022-07-12T00:06:17Z", "original": "Dec 18 21:46:17 <local0.info> 81.2.69.144 CEF:0|Citrix|NetScaler|NS10.0|APPFW|APPFW_STARTURL|6|src=175.16.199.1 spt=54711 method=GET request=http://vpx247.example.net/FFC/login_post.html?abc\\=def msg=Disallow Illegal URL. cn1=465 cn2=535 cs1=profile1 cs2=PPE0 cs3=IliG4Dxp1SjOhKVRDVBXmqvAaIcA000 cs4=ALERT cs5=2012 act=not blocked", "severity": 6, "timezone": "+00:00" }, "http": { "request": { "id": "535", "method": "GET" } }, "input": { "type": "tcp" }, "log": { "source": { "address": "172.22.0.4:41588" } }, "message": "Disallow Illegal URL.", "source": { "geo": { "city_name": "Changchun", "continent_name": "Asia", "country_iso_code": "CN", "country_name": "China", "location": { "lat": 43.88, "lon": 125.3228 }, "region_iso_code": "CN-22", "region_name": "Jilin Sheng" }, "ip": "175.16.199.1", "port": 54711 }, "tags": [ "preserve_original_event", "citrix_waf", "forwarded" ], "url": { "domain": "vpx247.example.net", "extension": "html", "original": "http://vpx247.example.net/FFC/login_post.html?abc\\=def", "path": "/FFC/login_post.html", "query": "abc\\=def", "scheme": "http" } }
导出的字段
字段 | 描述 | 类型 |
---|---|---|
@timestamp |
事件发生时的日期/时间。这是从事件中提取的日期/时间,通常表示事件由源生成的时间。如果事件源没有原始时间戳,则此值通常由管道首次收到事件的时间填充。所有事件的必填字段。 |
date |
citrix.cef_format |
日志是否采用 Citrix CEF 格式。 |
boolean |
citrix.cef_version |
日志中使用的 CEF 格式版本。 |
keyword |
citrix.default_class |
事件类是否为默认值。 |
boolean |
citrix.detail |
事件的 CEF 或 Citrix 本机格式详细信息。 |
keyword |
citrix.device_event_class_id |
事件类的 ID。 |
keyword |
citrix.device_product |
设备的型号。 |
keyword |
citrix.device_vendor |
设备的供应商名称。 |
keyword |
citrix.device_version |
设备的版本。 |
keyword |
citrix.extended |
与事件关联的其他数据。 |
flattened |
citrix.facility |
日志工具。 |
keyword |
citrix.host |
接收日志的主机名称。 |
keyword |
citrix.name |
安全检查的名称。 |
keyword |
citrix.ppe_id |
数据包处理引擎 ID。 |
keyword |
citrix.priority |
日志记录优先级。 |
keyword |
citrix.profile_name |
引发事件的配置文件的名称。 |
keyword |
citrix.session_id |
会话的 ID。 |
keyword |
citrix.severity |
事件的严重程度。 |
keyword |
citrix.signature_violation_category |
违规分组的类别。 |
keyword |
client.address |
某些事件客户端地址的定义不明确。事件有时会列出 IP、域名或 Unix 套接字。您应始终将原始地址存储在 |
keyword |
client.as.number |
分配给自治系统的唯一编号。自治系统号 (ASN) 唯一标识 Internet 上的每个网络。 |
long |
client.as.organization.name |
组织名称。 |
keyword |
client.as.organization.name.text |
|
match_only_text |
client.domain |
客户端系统的域名。此值可以是主机名、完全限定的域名或其他主机命名格式。该值可能源自原始事件,也可能是从富化添加的。 |
keyword |
client.geo.city_name |
城市名称。 |
keyword |
client.geo.continent_name |
洲名称。 |
keyword |
client.geo.country_iso_code |
国家/地区 ISO 代码。 |
keyword |
client.geo.country_name |
国家/地区名称。 |
keyword |
client.geo.location |
经度和纬度。 |
geo_point |
client.geo.region_iso_code |
区域 ISO 代码。 |
keyword |
client.geo.region_name |
区域名称。 |
keyword |
client.ip |
客户端的 IP 地址 (IPv4 或 IPv6)。 |
ip |
client.port |
客户端的端口。 |
long |
client.user.name |
用户的简称或登录名。 |
keyword |
client.user.name.text |
|
match_only_text |
cloud.account.id |
用于在多租户环境中标识不同实体的云帐户或组织 ID。示例:AWS 帐户 ID、Google Cloud ORG ID 或其他唯一标识符。 |
keyword |
cloud.availability_zone |
此主机正在运行的可用区。 |
keyword |
cloud.image.id |
云实例的映像 ID。 |
keyword |
cloud.instance.id |
主机实例 ID。 |
keyword |
cloud.instance.name |
主机实例名称。 |
keyword |
cloud.machine.type |
主机的机器类型。 |
keyword |
cloud.project.id |
Google Cloud 中项目的名称。 |
keyword |
cloud.provider |
云提供商的名称。示例值包括 aws、azure、gcp 或 digitalocean。 |
keyword |
cloud.region |
此主机正在运行的区域。 |
keyword |
container.id |
唯一的容器 ID。 |
keyword |
container.image.name |
构建容器所基于的映像的名称。 |
keyword |
container.labels |
映像标签。 |
object |
container.name |
容器名称。 |
keyword |
data_stream.dataset |
数据流数据集。 |
constant_keyword |
data_stream.namespace |
数据流命名空间。 |
constant_keyword |
data_stream.type |
数据流类型。 |
constant_keyword |
ecs.version |
此事件符合的 ECS 版本。 |
keyword |
error.message |
错误消息。 |
match_only_text |
event.category |
这是四个 ECS 分类字段之一,指示 ECS 类别层次结构中的第二级。 |
keyword |
event.code |
此事件的标识代码(如果存在)。某些事件源使用事件代码来明确标识消息,而不管消息语言或随时间推移进行的措辞调整。这方面的一个示例是 Windows 事件 ID。 |
keyword |
event.created |
|
date |
event.dataset |
事件数据集 |
constant_keyword |
event.duration |
事件的持续时间(以纳秒为单位)。如果已知 |
long |
event.end |
|
date |
event.ingested |
事件到达中央数据存储的时间戳。这与 |
date |
event.kind |
这是四个 ECS 分类字段之一,表示 ECS 类别层次结构中的最高级别。 |
keyword |
event.module |
事件模块 |
constant_keyword |
event.provider |
事件的来源。诸如 Syslog 或 Windows 事件日志之类的事件传输通常会提及事件的来源。它可以是生成事件的软件的名称(例如 Sysmon、httpd),或者是操作系统的子系统(内核、Microsoft-Windows-Security-Auditing)。 |
keyword |
event.severity |
根据您的事件源,事件的数字严重性。不同的严重性值含义可能因来源和用例而异。实施者有责任确保来自同一来源的事件的严重性保持一致。Syslog 严重性属于 |
long |
event.start |
|
date |
event.timezone |
当事件的时间戳不包含时区信息时(例如,默认的 Syslog 时间戳),应填充此字段。否则,它是可选的。可接受的时区格式为:规范 ID(例如,“Europe/Amsterdam”)、缩写(例如,“EST”)或 HH:mm 差值(例如,“-05:00”)。 |
keyword |
event.type |
这是四个 ECS 分类字段之一,表示 ECS 类别层次结构中的第三级。 |
keyword |
file.path |
文件的完整路径,包括文件名。它应包括驱动器号(如果适用)。 |
keyword |
file.path.text |
|
match_only_text |
host.architecture |
操作系统架构。 |
keyword |
host.containerized |
如果主机是容器。 |
boolean |
host.domain |
主机所属域的名称。例如,在 Windows 上,这可以是主机的 Active Directory 域或 NetBIOS 域名。对于 Linux,这可以是主机 LDAP 提供程序的域。 |
keyword |
host.hostname |
主机的hostname。它通常包含主机上 |
keyword |
host.id |
唯一主机 ID。由于主机名并非始终是唯一的,因此请使用在您的环境中具有意义的值。示例:当前使用的 |
keyword |
host.ip |
主机 IP 地址。 |
ip |
host.mac |
主机 MAC 地址。 |
keyword |
host.name |
主机的名称。它可以包含 Unix 系统上 |
keyword |
host.os.build |
操作系统构建信息。 |
keyword |
host.os.codename |
操作系统代号(如果有)。 |
keyword |
host.os.family |
操作系统系列(例如 redhat、debian、freebsd、windows)。 |
keyword |
host.os.kernel |
作为原始字符串的操作系统内核版本。 |
keyword |
host.os.name |
不带版本的操作系统名称。 |
keyword |
host.os.name.text |
|
文本 |
host.os.platform |
操作系统平台(例如 centos、ubuntu、windows)。 |
keyword |
host.os.version |
作为原始字符串的操作系统版本。 |
keyword |
host.type |
主机类型。对于云提供商,这可以是像 |
keyword |
http.request.id |
每个 HTTP 请求的唯一标识符,用于关联事务中客户端和服务器之间的日志。该 ID 可能包含在非标准的 HTTP 标头中,例如 |
keyword |
http.request.method |
HTTP 请求方法。该值应保留原始事件中的大小写。例如, |
keyword |
input.type |
输入类型。 |
keyword |
labels |
自定义键/值对。可用于向事件添加元信息。不应包含嵌套对象。所有值都存储为关键字。示例: |
object |
log.file.path |
此事件来自的日志文件的完整路径,包括文件名。它应包括驱动器号(如果适用)。如果事件不是从日志文件中读取的,请勿填充此字段。 |
keyword |
log.level |
日志事件的原始日志级别。如果事件的源提供了日志级别或文本严重性,则这是进入 |
keyword |
log.offset |
日志文件中条目的偏移量。 |
long |
log.source.address |
从中读取/发送日志事件的源地址。 |
keyword |
message |
对于日志事件,消息字段包含日志消息,针对在日志查看器中查看进行了优化。对于没有原始消息字段的结构化日志,可以将其他字段连接起来,以形成事件的人类可读摘要。如果存在多个消息,可以将它们合并为一个消息。 |
match_only_text |
network.bytes |
在两个方向上传输的总字节数。如果 |
long |
network.community_id |
源 IP 和目标 IP 及端口的哈希,以及通信中使用的协议。这是一个与工具无关的用于标识流的标准。在 https://github.com/corelight/community-id-spec 了解更多信息。 |
keyword |
network.direction |
网络流量的方向。当从基于主机的监视上下文中映射事件时,请从主机的角度使用“ingress”或“egress”值来填充此字段。当从基于网络或边界的监视上下文中映射事件时,请从网络边界的角度使用“inbound”、“outbound”、“internal”或“external”值来填充此字段。请注意,“internal”不会跨越边界,旨在描述边界内两台主机之间的通信。另请注意,“external”旨在描述边界外部两台主机之间的流量。例如,这对于 ISP 或 VPN 服务提供商可能很有用。 |
keyword |
network.iana_number |
IANA 协议号(https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)。协议的标准化列表。这与使用 IANA 协议号的 NetFlow 和 sFlow 相关日志非常一致。 |
keyword |
network.inner |
除了 network.vlan 字段之外,还添加了 Network.inner 字段来描述存在 q-in-q VLAN 标记时的最内层 VLAN。允许的字段包括 vlan.id 和 vlan.name。当将具有多个 802.1q 封装的流量发送到网络传感器(例如 Zeek、Wireshark)时,通常使用内部 vlan 字段。 |
组 |
network.inner.vlan.id |
观察者报告的 VLAN ID。 |
keyword |
network.inner.vlan.name |
观察者报告的可选 VLAN 名称。 |
keyword |
network.protocol |
在 OSI 模型中,这将是应用层协议。例如, |
keyword |
network.transport |
与 network.iana_number 相同,但改为使用传输层的关键字名称(udp、tcp、ipv6-icmp 等)。该字段值必须标准化为小写以进行查询。 |
keyword |
network.type |
在 OSI 模型中,这将是网络层。ipv4、ipv6、ipsec、pim 等。该字段值必须标准化为小写以进行查询。 |
keyword |
observer.egress.interface.name |
系统报告的接口名称。 |
keyword |
observer.egress.zone |
观察者报告的出站流量的网络区域,用于对出站流量的目标区域进行分类,例如 Internal、External、DMZ、HR、Legal 等。 |
keyword |
observer.hostname |
观察者的主机名。 |
keyword |
observer.ingress.interface.name |
系统报告的接口名称。 |
keyword |
观察者.ingress.zone |
观察者报告的传入流量的网络区域,用于对传入流量的源区域进行分类,例如 internal、External、DMZ、HR、Legal 等。 |
keyword |
observer.ip |
观察者的 IP 地址。 |
ip |
observer.name |
观察者的自定义名称。这是可以给观察者的名称。例如,如果组织中使用了多个相同型号的防火墙,这会很有帮助。如果不需要自定义名称,则可以保留该字段为空。 |
keyword |
observer.product |
观察者的产品名称。 |
keyword |
observer.type |
数据来自的观察者类型。没有预定义的观察者类型列表。一些示例是 |
keyword |
observer.vendor |
观察者的供应商名称。 |
keyword |
observer.version |
观察者版本。 |
keyword |
process.name |
进程名称。有时称为程序名称或类似名称。 |
keyword |
process.name.text |
|
match_only_text |
process.pid |
进程 ID。 |
long |
related.hosts |
在您的事件中看到的所有主机名或其他主机标识符。示例标识符包括 FQDN、域名、工作站名称或别名。 |
keyword |
related.ip |
在您的事件中看到的所有 IP。 |
ip |
related.user |
在事件中看到的所有用户名或其他用户标识符。 |
keyword |
server.address |
某些事件服务器地址的定义是模糊的。事件有时会列出 IP、域或 Unix 套接字。您应始终将原始地址存储在 |
keyword |
server.domain |
服务器系统的域名。此值可以是主机名、完全限定域名或其他主机命名格式。该值可能来自原始事件或从富化中添加。 |
keyword |
server.ip |
服务器的 IP 地址(IPv4 或 IPv6)。 |
ip |
server.port |
服务器的端口。 |
long |
server.user.name |
用户的简称或登录名。 |
keyword |
server.user.name.text |
|
match_only_text |
source.address |
某些事件源地址的定义不明确。事件有时会列出 IP、域名或 Unix 套接字。您应该始终将原始地址存储在 |
keyword |
source.as.number |
分配给自治系统的唯一编号。自治系统号 (ASN) 唯一标识 Internet 上的每个网络。 |
long |
source.as.organization.name |
组织名称。 |
keyword |
source.as.organization.name.text |
|
match_only_text |
source.bytes |
从源发送到目标的字节数。 |
long |
source.domain |
源系统的域名。此值可以是主机名、完全限定的域名或其他主机命名格式。该值可能来自原始事件或通过富化添加。 |
keyword |
source.geo.city_name |
城市名称。 |
keyword |
source.geo.continent_name |
洲名称。 |
keyword |
source.geo.country_iso_code |
国家/地区 ISO 代码。 |
keyword |
source.geo.country_name |
国家/地区名称。 |
keyword |
source.geo.location |
经度和纬度。 |
geo_point |
source.geo.region_iso_code |
区域 ISO 代码。 |
keyword |
source.geo.region_name |
区域名称。 |
keyword |
source.ip |
源的 IP 地址(IPv4 或 IPv6)。 |
ip |
source.nat.ip |
基于 NAT 会话的源的转换 IP(例如,内部客户端到互联网)。通常是遍历负载均衡器、防火墙或路由器的连接。 |
ip |
source.nat.port |
基于 NAT 会话的源的转换端口。(例如,内部客户端到互联网)通常与负载均衡器、防火墙或路由器一起使用。 |
long |
source.port |
源的端口。 |
long |
source.user.domain |
用户所属目录的名称。例如,LDAP 或 Active Directory 域名。 |
keyword |
source.user.group.name |
组的名称。 |
keyword |
source.user.name |
用户的简称或登录名。 |
keyword |
source.user.name.text |
|
match_only_text |
tags |
用于标记每个事件的关键字列表。 |
keyword |
url.domain |
URL 的域名,例如“https://elastic.ac.cn[www.elastic.co]”。在某些情况下,URL 可能直接引用 IP 和/或端口,而没有域名。在这种情况下,IP 地址将进入 |
keyword |
url.extension |
该字段包含原始请求 URL 中的文件扩展名,不包括前导点。仅当存在文件扩展名时才设置文件扩展名,因为并非每个 URL 都有文件扩展名。不得包含前导句点。例如,该值必须是“png”,而不是“.png”。请注意,当文件名有多个扩展名 (example.tar.gz) 时,应仅捕获最后一个扩展名(“gz”,而不是“tar.gz”)。 |
keyword |
url.fragment |
|
keyword |
url.full |
如果完整的 URL 对您的用例很重要,则应将其存储在 |
wildcard |
url.full.text |
|
match_only_text |
url.original |
事件源中看到的未修改的原始 URL。请注意,在网络监视中,观察到的 URL 可能是完整的 URL,而在访问日志中,URL 通常仅表示为路径。此字段旨在表示观察到的 URL,无论是否完整。 |
wildcard |
url.original.text |
|
match_only_text |
url.password |
请求的密码。 |
keyword |
url.path |
请求的路径,例如“/search”。 |
wildcard |
url.port |
请求的端口,例如 443。 |
long |
url.query |
query 字段描述请求的查询字符串,例如“q=elasticsearch”。查询字符串中不包含 |
keyword |
url.registered_domain |
最高的已注册 URL 域名,不包含子域名。例如,“foo.example.com”的已注册域名是“example.com”。可以使用诸如公共后缀列表(http://publicsuffix.org)之类的列表精确确定此值。尝试通过简单地取最后两个标签来近似它对于诸如“co.uk”之类的 TLD 将不起作用。 |
keyword |
url.scheme |
请求的方案,例如“https”。注意: |
keyword |
url.subdomain |
完全限定域名中的子域名部分包括已注册域名下的所有名称,但不包括主机名。在部分限定的域名中,或者如果无法确定全名的限定级别,则子域名包含已注册域名下的所有名称。例如,“http://www.east.mydomain.co.uk[www.east.mydomain.co.uk]”的子域名部分是“east”。如果域名有多个子域名级别,例如“sub2.sub1.example.com”,则子域名字段应包含“sub2.sub1”,不包含尾随句点。 |
keyword |
url.top_level_domain |
有效的顶级域名 (eTLD),也称为域名后缀,是域名中的最后一部分。例如,example.com 的顶级域名是“com”。可以使用诸如公共后缀列表(http://publicsuffix.org)之类的列表精确确定此值。尝试通过简单地取最后一个标签来近似它对于诸如“co.uk”之类的有效 TLD 将不起作用。 |
keyword |
url.username |
请求的用户名。 |
keyword |
user.email |
用户电子邮件地址。 |
keyword |
user.name |
用户的简称或登录名。 |
keyword |
user.name.text |
|
match_only_text |
变更日志
编辑变更日志
版本 | 详细信息 | Kibana 版本 |
---|---|---|
1.16.1 |
错误修复 (查看拉取请求) |
8.11.0 或更高版本 |
1.16.0 |
增强 (查看拉取请求) |
8.11.0 或更高版本 |
1.15.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.14.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.13.2 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.13.1 |
错误修复 (查看拉取请求) |
8.3.0 或更高版本 |
1.13.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.12.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.11.1 |
错误修复 (查看拉取请求) |
8.3.0 或更高版本 |
1.11.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.10.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.9.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.8.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.7.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.6.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.5.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.4.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.3.1 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.3.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.2.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.1.2 |
错误修复 (查看拉取请求) |
8.3.0 或更高版本 |
1.1.1 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.1.0 |
增强 (查看拉取请求) |
8.3.0 或更高版本 |
1.0.0 |
增强 (查看拉取请求) 错误修复 (查看拉取请求) 错误修复 (查看拉取请求) |
8.3.0 或更高版本 |
0.1.1 |
错误修复 (查看拉取请求) |
— |
0.1.0 |
增强 (查看拉取请求) |
— |