You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
doc: a few fixes/improvements ad STOMP bots and *n6* feed
lib, bots, doc: only cosmetic/very minor tweaks and comments
lib, bots, pkg, doc: drop support for `stomp.py` older than 4.1.12
The affected bots are: *STOMP collector* (`StompCollectorBot` defined
in `intelmq.bots.collectors.stomp.collector`) and *STOMP output*
(`StompOutputBot` defined in `intelmq.bots.outputs.stomp.output`).
Also, in `debian/control`, the `python3-stomp` package name has been
fixed (by removing the `.py` suffix).
The changelog has been updated appropriately.
lib, bots, doc: STOMP/*n6*-related fixes/enhancements, also ad security
SSL-related changes -- regarding `intelmq.lib.mixins.StompMixin` and,
therefore, also the *STOMP collector* bot (`StompCollectorBot` defined
in `intelmq.bots.collectors.stomp.collector`) and the *STOMP output*
bot (`StompOutputBot` defined in `intelmq.bots.outputs.stomp.output`)
-- have been made:
* *Security*-focused: fixed certain security problems which were caused
by the fact that certain versions of the `stomp.py` library we need
to be compatible with use the `ssl` module's tools in such ways that
suffer from certain *security weaknesses*. In particular, `stomp.py`
in versions `>=8.0, <8.1` mistakenly creates an `SSLContext` instance
with the `check_hostname` flag unset -- an important negative effect
of that is that the hostname of the STOMP server is *not* checked
during the TLS handshake (making all STOMP communication vulnerable
to certain kinds of attacks...). Also, there are weaknesses (caused
either by `stomp.py` or by older, yet still supported by IntelMQ,
Python versions) of using too old versions of the TLS protocol
(namely: 1.0 and 1.1 -- nowadays considered insecure).
* *Admin convenience*-focused: from now on, for each of the STOMP bots,
you can set the `ssl_ca_certificate` config param to an empty string
-- dictating that the SSL tools employed by the `stomp.py`'s machinery
will attempt to load the system’s default CA certificates. Thanks to
that, administrators of the given IntelMQ instance can be relieved of
of the fuss with manual updates of the CA certificate(s) file -- *if*
the certificate of the STOMP server can be verified using some of
the publicly available CA certificates which are part of nearly all
mainstream operating system distributions (this will be the case with
the server certificate of the new variant of the *n6* Stream API, that
is, the variant with STOMP-login-and-passcode-based authentication).
An important part of the implementation of the aforementioned changes is
a non-public class, `intelmq.lib.mixins.stomp._StompPyDedicatedSSLProxy`
-- which implements a kind of transparent proxy object that wraps the
`ssl` attribute of the `stomp.transport` module (originaly set to the
`ssl` module object), replacing some of the `ssl` module's tools with
their patched variants (note that the `ssl` module itself and all its
members are left untouched).
The parts of the IntelMQ's documentation related to those STOMP bots +
integration with *n6* (including the CERT.PL's "N6 Stomp Stream" feed
description) have been updated and improved; also, the changelog has
been updated.
bots: fix import logic in STOMP collector's module
The logic regarding importing of the `stomp.py`'s stuff has been fixed:
now the condition of the absence of the `stomp` module (and thus, of the
entire library) would not be confused with the condition of the absence
of only the `stomp.exception` module (which would mean the presence of a
version of that library lacking just the `exception` submodule).
to an empty string - which means that the SSL machinery used for STOMP communication
25
+
will attempt to load the system’s default CA certificates (PR#2414 by Jan Kaliszewski).
22
26
23
27
### Core
24
28
-`intelmq.lib.message`: For invalid message keys, add a hint on the failure to the exception: not allowed by configuration or not matching regular expression (PR#2398 by Sebastian Wagner).
@@ -27,7 +31,7 @@
27
31
-`intelmq.lib.mixins`: Add a new class, `StompMixin` (defined in a new submodule: `stomp`),
28
32
which provides certain common STOMP-bot-specific operations, factored out from
29
33
`intelmq.bots.collectors.stomp.collector` and `intelmq.bots.outputs.stomp.output`
30
-
(PR#2408 by Jan Kaliszewski).
34
+
(PR#2408and PR#2414by Jan Kaliszewski).
31
35
32
36
### Development
33
37
- Makefile: Add codespell and test commands (PR#2425 by Sebastian Wagner).
@@ -36,11 +40,16 @@
36
40
37
41
### Bots
38
42
#### Collectors
39
-
-`intelmq.bots.collectors.stomp.collector` (PR#2408 by Jan Kaliszewski):
40
-
- Add support for authentication based on STOMP login and passcode,
41
-
introducing 3 new configuration parameters (see above: *Configuration*).
43
+
-`intelmq.bots.collectors.stomp.collector` (PR#2408 and PR#2414 by Jan Kaliszewski):
44
+
- Drop support for versions of `stomp.py` older than `4.1.12`.
42
45
- Update the code to support new versions of `stomp.py`, including the latest (`8.1.0`);
Copy file name to clipboardExpand all lines: docs/user/feeds.md
+8-8Lines changed: 8 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -719,15 +719,15 @@ parameters:
719
719
720
720
### N6 Stomp Stream
721
721
722
-
N6 Collector - CERT.pl's N6 Collector - N6 feed via STOMP interface. Note that rate_limit does not apply for this bot as it is waiting for messages on a stream.
722
+
N6 Collector - CERT.pl's *n6* Stream API feed (via STOMP interface). Note that 'rate_limit' does not apply to this bot, as it is waiting for messages on a stream.
**Additional Information:** Contact cert.pl to get access to the feed.
730
+
**Additional Information:** Contact CERT.pl to get access to the feed. Note that the configuration parameter values suggested here are suitable for the new *n6* Stream API variant (with authentication based on 'username' and 'password'); for this variant, typically you can leave the 'ssl_ca_certificate' parameter's value empty - then the system's default CA certificates will be used; however, if that does not work, you need to set 'ssl_ca_certificate' to the path to a file containing CA certificates eligible to verify "*.cert.pl" server certificates (to be found among the publicly available CA certs distributed with modern web browsers/OSes). Also, note that the 'server' parameter's value (for the *new API variant*) suggested here, "n6stream-new.cert.pl", is a temporary domain; ultimately, it will be changed back to "stream.cert.pl". When it comes to the *old API variant* (turned off in November 2023!), you need to have the 'server' parameter set to the name "n6stream.cert.pl", 'auth_by_ssl_client_certificate' set to true, 'ssl_ca_certificate' set to the path to a file containing the *n6*'s legacy self-signed CA certificate (which is stored in file "intelmq/bots/collectors/stomp/ca.pem"), and the parameters 'ssl_client_certificate' and 'ssl_client_certificate_key' set to the paths to your-*n6*-client-specific certificate and key files (note that the 'username' and 'password' parameters are then irrelevant and can be omitted).
731
731
732
732
733
733
**Collector configuration**
@@ -736,14 +736,14 @@ N6 Collector - CERT.pl's N6 Collector - N6 feed via STOMP interface. Note that r
736
736
module: intelmq.bots.collectors.stomp.collector
737
737
parameters:
738
738
auth_by_ssl_client_certificate: False
739
-
exchange: {insert your exchange point as given by CERT.pl}
739
+
exchange: {insert your STOMP *destination* to subscribe to, as given by CERT.pl, e.g. /exchange/my.example.org/*.*.*.*}
740
740
name: N6 Stomp Stream
741
-
password: {insert n6 user's API key}
741
+
password: {insert your *n6* API key}
742
742
port: 61614
743
743
provider: CERT.PL
744
-
server: n6stream.cert.pl
745
-
ssl_ca_certificate:{insert path to CA file for CERT.pl's n6}
746
-
username: {insert n6 user's login}
744
+
server: n6stream-new.cert.pl
745
+
ssl_ca_certificate:
746
+
username: {insert your *n6* login, e.g. someuser@my.example.org}
0 commit comments