logstash-input-beats 5.0.16-java → 5.1.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/VERSION +1 -1
- data/docs/index.asciidoc +28 -17
- data/lib/logstash-input-beats_jars.rb +1 -1
- data/lib/logstash/inputs/beats.rb +18 -0
- data/lib/logstash/inputs/beats/message_listener.rb +35 -0
- data/vendor/jar-dependencies/org/logstash/beats/logstash-input-beats/{5.0.16/logstash-input-beats-5.0.16.jar → 5.1.0/logstash-input-beats-5.1.0.jar} +0 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b4133fa8d543e1581183df174b98370c4d146e46c1930d8c88b3802dc8ccffd
|
4
|
+
data.tar.gz: 8c6b3eaf5a1d30d06c3bf77dc6c23b95a6190e5c914fce41cdc684bf9a91b0d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 348964c7e65129fd4619104546e8f8d24ea8e0050c7479428698af85a8422090e6069bdaa8ad79b0c31586ec2996af8180066281985b5eca2b83535afc03710a
|
7
|
+
data.tar.gz: bb4a1e2b5fc2cfa516420695d44b4a79d2dacf00d028076f29ba3192a65e9792e1a18d65ba71e4b988a079c0350cc3462248e2c5a633496e967bf7935ba186a7
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 5.1.0
|
2
|
+
- Added ssl_peer_metadata option. [#327](https://github.com/logstash-plugins/logstash-input-beats/pull/327)
|
3
|
+
- Fixed ssl_verify_mode => peer. [#326](https://github.com/logstash-plugins/logstash-input-beats/pull/326)
|
4
|
+
|
1
5
|
## 5.0.16
|
2
6
|
- [#289](https://github.com/logstash-plugins/logstash-input-beats/pull/289#issuecomment-394072063) Re-initialise Netty worker group on plugin restart
|
3
7
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.0
|
1
|
+
5.1.0
|
data/docs/index.asciidoc
CHANGED
@@ -78,6 +78,7 @@ This plugin supports the following configuration options plus the <<plugins-{typ
|
|
78
78
|
| <<plugins-{type}s-{plugin}-ssl_key>> |a valid filesystem path|No
|
79
79
|
| <<plugins-{type}s-{plugin}-ssl_key_passphrase>> |<<password,password>>|No
|
80
80
|
| <<plugins-{type}s-{plugin}-ssl_verify_mode>> |<<string,string>>, one of `["none", "peer", "force_peer"]`|No
|
81
|
+
| <<plugins-{type}s-{plugin}-ssl_peer_metadata>> |<<boolean,boolean>>|No
|
81
82
|
| <<plugins-{type}s-{plugin}-tls_max_version>> |<<number,number>>|No
|
82
83
|
| <<plugins-{type}s-{plugin}-tls_min_version>> |<<number,number>>|No
|
83
84
|
|=======================================================================
|
@@ -88,7 +89,7 @@ input plugins.
|
|
88
89
|
|
89
90
|
|
90
91
|
[id="plugins-{type}s-{plugin}-cipher_suites"]
|
91
|
-
===== `cipher_suites`
|
92
|
+
===== `cipher_suites`
|
92
93
|
|
93
94
|
* Value type is <<array,array>>
|
94
95
|
* Default value is `java.lang.String[TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256]@459cfcca`
|
@@ -96,7 +97,7 @@ input plugins.
|
|
96
97
|
The list of ciphers suite to use, listed by priorities.
|
97
98
|
|
98
99
|
[id="plugins-{type}s-{plugin}-client_inactivity_timeout"]
|
99
|
-
===== `client_inactivity_timeout`
|
100
|
+
===== `client_inactivity_timeout`
|
100
101
|
|
101
102
|
* Value type is <<number,number>>
|
102
103
|
* Default value is `60`
|
@@ -104,7 +105,7 @@ The list of ciphers suite to use, listed by priorities.
|
|
104
105
|
Close Idle clients after X seconds of inactivity.
|
105
106
|
|
106
107
|
[id="plugins-{type}s-{plugin}-host"]
|
107
|
-
===== `host`
|
108
|
+
===== `host`
|
108
109
|
|
109
110
|
* Value type is <<string,string>>
|
110
111
|
* Default value is `"0.0.0.0"`
|
@@ -112,7 +113,7 @@ Close Idle clients after X seconds of inactivity.
|
|
112
113
|
The IP address to listen on.
|
113
114
|
|
114
115
|
[id="plugins-{type}s-{plugin}-include_codec_tag"]
|
115
|
-
===== `include_codec_tag`
|
116
|
+
===== `include_codec_tag`
|
116
117
|
|
117
118
|
* Value type is <<boolean,boolean>>
|
118
119
|
* Default value is `true`
|
@@ -120,7 +121,7 @@ The IP address to listen on.
|
|
120
121
|
|
121
122
|
|
122
123
|
[id="plugins-{type}s-{plugin}-port"]
|
123
|
-
===== `port`
|
124
|
+
===== `port`
|
124
125
|
|
125
126
|
* This is a required setting.
|
126
127
|
* Value type is <<number,number>>
|
@@ -129,7 +130,7 @@ The IP address to listen on.
|
|
129
130
|
The port to listen on.
|
130
131
|
|
131
132
|
[id="plugins-{type}s-{plugin}-ssl"]
|
132
|
-
===== `ssl`
|
133
|
+
===== `ssl`
|
133
134
|
|
134
135
|
* Value type is <<boolean,boolean>>
|
135
136
|
* Default value is `false`
|
@@ -139,7 +140,7 @@ enable encryption by setting `ssl` to true and configuring
|
|
139
140
|
the `ssl_certificate` and `ssl_key` options.
|
140
141
|
|
141
142
|
[id="plugins-{type}s-{plugin}-ssl_certificate"]
|
142
|
-
===== `ssl_certificate`
|
143
|
+
===== `ssl_certificate`
|
143
144
|
|
144
145
|
* Value type is <<path,path>>
|
145
146
|
* There is no default value for this setting.
|
@@ -147,19 +148,19 @@ the `ssl_certificate` and `ssl_key` options.
|
|
147
148
|
SSL certificate to use.
|
148
149
|
|
149
150
|
[id="plugins-{type}s-{plugin}-ssl_certificate_authorities"]
|
150
|
-
===== `ssl_certificate_authorities`
|
151
|
+
===== `ssl_certificate_authorities`
|
151
152
|
|
152
153
|
* Value type is <<array,array>>
|
153
154
|
* Default value is `[]`
|
154
155
|
|
155
|
-
Validate client certificates against these authorities.
|
156
|
+
Validate client certificates against these authorities.
|
156
157
|
You can define multiple files or paths. All the certificates will
|
157
158
|
be read and added to the trust store. You need to configure the `ssl_verify_mode`
|
158
159
|
to `peer` or `force_peer` to enable the verification.
|
159
160
|
|
160
161
|
|
161
162
|
[id="plugins-{type}s-{plugin}-ssl_handshake_timeout"]
|
162
|
-
===== `ssl_handshake_timeout`
|
163
|
+
===== `ssl_handshake_timeout`
|
163
164
|
|
164
165
|
* Value type is <<number,number>>
|
165
166
|
* Default value is `10000`
|
@@ -167,7 +168,7 @@ to `peer` or `force_peer` to enable the verification.
|
|
167
168
|
Time in milliseconds for an incomplete ssl handshake to timeout
|
168
169
|
|
169
170
|
[id="plugins-{type}s-{plugin}-ssl_key"]
|
170
|
-
===== `ssl_key`
|
171
|
+
===== `ssl_key`
|
171
172
|
|
172
173
|
* Value type is <<path,path>>
|
173
174
|
* There is no default value for this setting.
|
@@ -177,7 +178,7 @@ NOTE: This key need to be in the PKCS8 format, you can convert it with https://w
|
|
177
178
|
for more information.
|
178
179
|
|
179
180
|
[id="plugins-{type}s-{plugin}-ssl_key_passphrase"]
|
180
|
-
===== `ssl_key_passphrase`
|
181
|
+
===== `ssl_key_passphrase`
|
181
182
|
|
182
183
|
* Value type is <<password,password>>
|
183
184
|
* There is no default value for this setting.
|
@@ -185,14 +186,14 @@ for more information.
|
|
185
186
|
SSL key passphrase to use.
|
186
187
|
|
187
188
|
[id="plugins-{type}s-{plugin}-ssl_verify_mode"]
|
188
|
-
===== `ssl_verify_mode`
|
189
|
+
===== `ssl_verify_mode`
|
189
190
|
|
190
191
|
* Value can be any of: `none`, `peer`, `force_peer`
|
191
192
|
* Default value is `"none"`
|
192
193
|
|
193
194
|
By default the server doesn't do any client verification.
|
194
195
|
|
195
|
-
`peer` will make the server ask the client to provide a certificate.
|
196
|
+
`peer` will make the server ask the client to provide a certificate.
|
196
197
|
If the client provides a certificate, it will be validated.
|
197
198
|
|
198
199
|
`force_peer` will make the server ask the client to provide a certificate.
|
@@ -200,8 +201,18 @@ If the client doesn't provide a certificate, the connection will be closed.
|
|
200
201
|
|
201
202
|
This option needs to be used with `ssl_certificate_authorities` and a defined list of CAs.
|
202
203
|
|
204
|
+
[id="plugins-{type}s-{plugin}-ssl_peer_metadata"]
|
205
|
+
===== `ssl_peer_metadata`
|
206
|
+
|
207
|
+
* Value type is <<boolean,boolean>>
|
208
|
+
* Default value is `false`
|
209
|
+
|
210
|
+
Enables storing client certificate information in event's metadata.
|
211
|
+
|
212
|
+
This option is only valid when `ssl_verify_mode` is set to `peer` or `force_peer`.
|
213
|
+
|
203
214
|
[id="plugins-{type}s-{plugin}-tls_max_version"]
|
204
|
-
===== `tls_max_version`
|
215
|
+
===== `tls_max_version`
|
205
216
|
|
206
217
|
* Value type is <<number,number>>
|
207
218
|
* Default value is `1.2`
|
@@ -210,7 +221,7 @@ The maximum TLS version allowed for the encrypted connections. The value must be
|
|
210
221
|
1.0 for TLS 1.0, 1.1 for TLS 1.1, 1.2 for TLS 1.2
|
211
222
|
|
212
223
|
[id="plugins-{type}s-{plugin}-tls_min_version"]
|
213
|
-
===== `tls_min_version`
|
224
|
+
===== `tls_min_version`
|
214
225
|
|
215
226
|
* Value type is <<number,number>>
|
216
227
|
* Default value is `1`
|
@@ -223,4 +234,4 @@ The minimum TLS version allowed for the encrypted connections. The value must be
|
|
223
234
|
[id="plugins-{type}s-{plugin}-common-options"]
|
224
235
|
include::{include_path}/{type}.asciidoc[]
|
225
236
|
|
226
|
-
:default_codec!:
|
237
|
+
:default_codec!:
|
@@ -9,4 +9,4 @@ require_jar('com.fasterxml.jackson.core', 'jackson-annotations', '2.9.5')
|
|
9
9
|
require_jar('com.fasterxml.jackson.core', 'jackson-databind', '2.9.5')
|
10
10
|
require_jar('com.fasterxml.jackson.module', 'jackson-module-afterburner', '2.9.5')
|
11
11
|
require_jar('org.apache.logging.log4j', 'log4j-api', '2.6.2')
|
12
|
-
require_jar('org.logstash.beats', 'logstash-input-beats', '5.0
|
12
|
+
require_jar('org.logstash.beats', 'logstash-input-beats', '5.1.0')
|
@@ -93,6 +93,10 @@ class LogStash::Inputs::Beats < LogStash::Inputs::Base
|
|
93
93
|
# This option needs to be used with `ssl_certificate_authorities` and a defined list of CAs.
|
94
94
|
config :ssl_verify_mode, :validate => ["none", "peer", "force_peer"], :default => "none"
|
95
95
|
|
96
|
+
# Enables storing client certificate information in event's metadata. You need
|
97
|
+
# to configure the `ssl_verify_mode` to `peer` or `force_peer` to enable this.
|
98
|
+
config :ssl_peer_metadata, :validate => :boolean, :default => false
|
99
|
+
|
96
100
|
config :include_codec_tag, :validate => :boolean, :default => true
|
97
101
|
|
98
102
|
# Time in milliseconds for an incomplete ssl handshake to timeout
|
@@ -148,6 +152,10 @@ class LogStash::Inputs::Beats < LogStash::Inputs::Base
|
|
148
152
|
raise LogStash::ConfigurationError, "Using `verify_mode` set to PEER or FORCE_PEER, requires the configuration of `certificate_authorities`"
|
149
153
|
end
|
150
154
|
|
155
|
+
if client_authentication_metadata? && !require_certificate_authorities?
|
156
|
+
raise LogStash::ConfigurationError, "Enabling `peer_metadata` requires using `verify_mode` set to PEER or FORCE_PEER"
|
157
|
+
end
|
158
|
+
|
151
159
|
# Logstash 6.x breaking change (introduced with 4.0.0 of this gem)
|
152
160
|
if @codec.kind_of? LogStash::Codecs::Multiline
|
153
161
|
raise LogStash::ConfigurationError, "Multiline codec with beats input is not supported. Please refer to the beats documentation for how to best manage multiline data. See https://www.elastic.co/guide/en/beats/filebeat/current/multiline-examples.html"
|
@@ -175,6 +183,8 @@ class LogStash::Inputs::Beats < LogStash::Inputs::Base
|
|
175
183
|
if client_authentification?
|
176
184
|
if @ssl_verify_mode.upcase == "FORCE_PEER"
|
177
185
|
ssl_builder.setVerifyMode(org.logstash.netty.SslSimpleBuilder::SslClientVerifyMode::FORCE_PEER)
|
186
|
+
elsif @ssl_verify_mode.upcase == "PEER"
|
187
|
+
ssl_builder.setVerifyMode(org.logstash.netty.SslSimpleBuilder::SslClientVerifyMode::VERIFY_PEER)
|
178
188
|
end
|
179
189
|
ssl_builder.setCertificateAuthorities(@ssl_certificate_authorities)
|
180
190
|
end
|
@@ -206,6 +216,14 @@ class LogStash::Inputs::Beats < LogStash::Inputs::Base
|
|
206
216
|
@ssl_certificate_authorities && @ssl_certificate_authorities.size > 0
|
207
217
|
end
|
208
218
|
|
219
|
+
def client_authentication_metadata?
|
220
|
+
@ssl_peer_metadata && ssl_configured? && client_authentification?
|
221
|
+
end
|
222
|
+
|
223
|
+
def client_authentication_required?
|
224
|
+
@ssl_verify_mode == "force_peer"
|
225
|
+
end
|
226
|
+
|
209
227
|
def require_certificate_authorities?
|
210
228
|
@ssl_verify_mode == "force_peer" || @ssl_verify_mode == "peer"
|
211
229
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require "thread_safe"
|
3
3
|
require "logstash-input-beats_jars"
|
4
|
+
import "javax.net.ssl.SSLPeerUnverifiedException"
|
4
5
|
import "org.logstash.beats.MessageListener"
|
5
6
|
|
6
7
|
module LogStash module Inputs class Beats
|
@@ -33,6 +34,8 @@ module LogStash module Inputs class Beats
|
|
33
34
|
hash['@metadata']['ip_address'] = ip_address unless ip_address.nil? || hash['@metadata'].nil?
|
34
35
|
target_field = extract_target_field(hash)
|
35
36
|
|
37
|
+
extract_tls_peer(hash, ctx)
|
38
|
+
|
36
39
|
if target_field.nil?
|
37
40
|
event = LogStash::Event.new(hash)
|
38
41
|
@nocodec_transformer.transform(event)
|
@@ -119,6 +122,38 @@ module LogStash module Inputs class Beats
|
|
119
122
|
end
|
120
123
|
end
|
121
124
|
|
125
|
+
def extract_tls_peer(hash, ctx)
|
126
|
+
if @input.client_authentication_metadata?
|
127
|
+
tls_session = ctx.channel().pipeline().get("ssl-handler").engine().getSession()
|
128
|
+
tls_verified = true
|
129
|
+
|
130
|
+
if not @input.client_authentication_required?
|
131
|
+
# throws SSLPeerUnverifiedException if unverified
|
132
|
+
begin
|
133
|
+
tls_session.getPeerCertificates()
|
134
|
+
rescue SSLPeerUnverifiedException => e
|
135
|
+
tls_verified = false
|
136
|
+
if input.logger.debug?
|
137
|
+
input.logger.debug("SSL peer unverified. This is normal with 'peer' verification and client does not presents a certificate.", :exception => e)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
if tls_verified
|
143
|
+
hash['@metadata']['tls_peer'] = {
|
144
|
+
:status => "verified",
|
145
|
+
:protocol => tls_session.getProtocol(),
|
146
|
+
:subject => tls_session.getPeerPrincipal().getName(),
|
147
|
+
:cipher_suite => tls_session.getCipherSuite()
|
148
|
+
}
|
149
|
+
else
|
150
|
+
hash['@metadata']['tls_peer'] = {
|
151
|
+
:status => "unverified"
|
152
|
+
}
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
122
157
|
def extract_target_field(hash)
|
123
158
|
if from_filebeat?(hash)
|
124
159
|
hash.delete(FILEBEAT_LOG_LINE_FIELD).to_s
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-beats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0
|
4
|
+
version: 5.1.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -266,7 +266,7 @@ files:
|
|
266
266
|
- vendor/jar-dependencies/io/netty/netty-tcnative-boringssl-static/2.0.7.Final/netty-tcnative-boringssl-static-2.0.7.Final.jar
|
267
267
|
- vendor/jar-dependencies/org/apache/logging/log4j/log4j-api/2.6.2/log4j-api-2.6.2.jar
|
268
268
|
- vendor/jar-dependencies/org/javassist/javassist/3.20.0-GA/javassist-3.20.0-GA.jar
|
269
|
-
- vendor/jar-dependencies/org/logstash/beats/logstash-input-beats/5.0
|
269
|
+
- vendor/jar-dependencies/org/logstash/beats/logstash-input-beats/5.1.0/logstash-input-beats-5.1.0.jar
|
270
270
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
271
271
|
licenses:
|
272
272
|
- Apache License (2.0)
|