From c976715aa29466415cc316b756fb2ec641694bce Mon Sep 17 00:00:00 2001 From: AaronK Date: Fri, 17 Apr 2020 09:51:19 +0200 Subject: [PATCH 01/27] initial version microservice oriented architecture Architecture ideas for IntelMQ 3.0 --- docs/architecture-3.0.md | 209 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 docs/architecture-3.0.md diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md new file mode 100644 index 000000000..c70a5d3d0 --- /dev/null +++ b/docs/architecture-3.0.md @@ -0,0 +1,209 @@ +Thoughts INTELMQ 3.0 +====================== + + + +# Motivation + +IntelMQ was created as a viable, easier alternative to Abusehelper roughly 2014/2013. +At this time, the fathers of IntelMQ (Tomas Lima, then CERT.pt, Aaron Kaplan, CERT.at) focused on easy ("KISS principle") to understand code and open source. + +In the mean time, IntelMQ became a de-facto standard for automatic incident handling for many European CERTs. + +However, the success also resulted in IntelMQ being used in contexts which were not anticipated. Also, running a production instance of IntelMQ gave us new requirements - mainly from the side of running it within a corporation or larger team where operations of systems is separated from the development side. + +In short, IntelMQ needs to support more standard processes which can be found in regular IT operations: monitoring & alerting, central logging & control, scalability sizing , containerisation etc. + +The following proposal shall address these issues and is meant as a basis for discussion with the IntelMQ users. + +If something is missing from the list, if something is not important at all or very important, etc. please let us know. + +We are happy to receive your feedback. + +Aaron Kaplan - IntelMQ 3.0 Architecture. +kaplan@cert.at + + + +# Architecture + + +![architecture of a bot in IntelMQ 3.0](images/intelmq3.0-architecture.png) + + +## Microservice architecture + +This should be compatible with the standard nic.at micro service architecture. +It however needs to be flexible enough to allow other teams to integrate it very easily into their architecture. +Therefore, the definitions of the architecture needs to be cross checked with the major players in this field (cert.pl, cz-nic, Iain, IHAP group, ...) + +The high level goals of using a micro service architecture for IntelMQ 3.0 are: + + * we want to be highly maintainable on an individual (bot- or functionality) level + * we want to be highly testable in a _standardized_ way. Calling a test function for a bot shall be identical. Tests consist of a) unit tests of the microservice but also b) of integration tests of the micro service with its environment. The self-test shall be run on the current config of the bot/container. + * a micrsoservice allows for self-inspection: within the context of IntelMQ's bots this means that a bot knows which input it needs to be able to work properly (i.e. which DHO fields are filled out) and which fields it produces. This allows for integration tests. + * bots must be independently deployable and a deployment must be *self-contained*. No fiddling should be needed. It should be as easy as docker-compose ... + * each micro service MUST focus on one and only one task and excel at doing it + * each micro service MUST be maintained by a small team. One developer is not enough. There shall be a clear point of contact relationship for each micro service, hence... Think metadata on a bot/container. + * a micro service is registered at a registry of IntelMQ 3.0 micro services (which must contain the latest version number, contact info for the developer team, etc) + * a microservice MUST support service discovery. It shall register itself at some orchestrator - compare with registry. + * a microservice MUST support monitoring tools (check_mk, etc) and report its status to a monitoring tool + * a microservice MAY support Identity mgmt tools via OpenID Connect on its' API + * a microservice MUST be very easily integratable in other frameworks and work-flows. Think: IntelMQ 3.0 micro service components may run (as micro services) within a bigger data processing tool. + + +All of these requirements point towards a container architecture with standardised RESTful API endpoints. + + + +### Framework: let's go containers! + +Docker based. nic.at is moving gradually to docker. So is the rest of the world. +Docker allows new users to very quickly try out a setup. It lends itself to tutorials and experiments, it helps with orchestration. +However, we do not want to have a complete buy-in to any particular container tech stack. IntelMQ 3.0 should be flexible enough to be embedded in an alternative container tech stack. However, docker will remain the #1 option since it is the most commonly used one. + +The container stack allows us to have every single bot equipped by a default (but changeable) set of dev-ops/ops features for the use-case of running the bot in a controlled sysadmin/ops environment. + +If we look at the list of high level requirements from above, we can become more specific. + +Our docker template for a bot shall provide a RESTful API + +### RESTful API requirements + + + * It must be well documented (OpenAPI specs) + * an example hello world with the API exists on GitHub + + * The micoservice API MUST support + * basics: + * starting/stopping/reload/restarting/pausing a bot + * inspecting and setting it's runtime parameters of the bot + * getting version infos and meta-information on the bot + container + * especially a list of required input fields and produced output fields (-> introspection) + + * tests: + * triggering a config test (bot intelmqctl configtest) --> are the runtime params OK, internal python bot config test. No connections are made + https:///api/v1/self-test/config-test + * triggering a connectivity test (i.e. can it send/receive data? connections to DBs) + Are all required connections (redis, DB, input / output of network ) ready? + https:///api/v1/self-test/connection-test + + * triggering a self-test (unit-test) + python unit tests + + * triggering a system-test (i.e. does it get the data that it needs? can it do its task and can it send out the data that it sends out?) + actually check if it can/could get all the input fields it needs. This is a global test. The MS can send the field names it needs and the field names it produces. + + + * connectivity: + * API endpoints for configuring the pipeline of the bot as well as the MQ stack + + + * operations specifics: + * an API endpoint to dump the current state of the bot to disk so that this container may be paused and migrated to a different system. --> TBD + * monitoring information (health check, alerts, data rates of the flows, error counters, etc) + * registering callbacks (or configuring the necessary infos) for a monitoring solution such as check_mk, nagios +(introspection) + * endpoints for configuring syslog flows (where should the bot + * self-update is built-in (to be defined below) + + * IAM / Authentication & Authorization + * a Bot needs to support OpenID connect on it's REST interface ( maybe also setting encryption settings on the M2M interface (the MQ) ) + + + * developer support + XXX ideas? XXX + * how can we expose / should we expose the debug method of the bot to the container? + + + +Using the docker template bot, a bot needs to connect to the provided software layers which interface the functionalities described above + +### An IntelMQ 3.0 docker-bot now consists of: + + 1. the IntelMQ bot per se (and corresponding libraries) + 2. the means to connect the container and bot to other containers/bots + * the means to instrument the data flowing in and -out (--> monitoring) + * the means to replace the connection / MQ stack (on a per bot / container level). + + * a standard test + * self-reporting to a central instance (orchestrator / registry) + * standardised logging + * standardised self-test + * integration into check_mk or other monitoring solution + * standardised REST-api for the bot (start, stop, status) + * status queries to the bot (health, number of events/sec, etc) + * test "would this botnet setup work?" / test if a bot in this pipeline could function (-- > introspection of what data is needed for the bot and what data it provides) + * docker scale it horizontally --> data processing bottlenecks? --> horizontal scaling should be a click of a button + * standardised way to self-update any external dependencies (maxmind, etc) & report alert if something goes wrong + * standardised alerting mechanism (--> check_mk for nic.at) + + +### Self-update + + * check if I am the latest version + * check if the needed databases (for example maxmind) is the latest version and download it if needed + * report self-updates to some syslog/orchestrator + + +# IntelMQ 3.0 specifics + +These are independent of the container stack + + +## MQ: Replaceable MQ & support for Kafka + +## Transformers + +new class of bots: transform one data format (e.g. DHO) to another one (e.g. IDEA) or n6 <-> DHO + + +## Outputs: Really good out of the box support for ELK and Splunk + +out of the box support + + +## Internal code: more modern python version with typing. Typing and type hints support in all of the code base + +* mostly done. The core already supports the most important functions. + +## n6 interoperability + +## domain based workflow + +## portal-integration? + + * TBD + +## DHO 2.0 + + * we need to support structs / lists of fields (or structs). One step towards IDEA and/or n6. This task is highly dependant and basically the core of the n6<-> intelmq interoperability. + * machine readable specs of the DHO 2.0 + * mapping of DHS 2.0 to other formats + +## XXX aaron review #arch tag on GitHub + + +## RESTful API requirements + +We don't care which API framework you want to use (hug, fast api, flask, ...) +What we do care about is the RESTful API interface +We created a template API spec + + +TODOs Aaron +============= +* add pics / better explanations +* put to GitHub +* clarify with ops/Alex +* post to IHAP and intelmq-users/+dev +* call Bernd +* cross check with Jaroslaw +* template API spec + +TODOs sebix +=========== +* cross check with CEF proposal + + + From ecf7a01329e899a4fc2d960e1aa35e700dbcbc24 Mon Sep 17 00:00:00 2001 From: AaronK Date: Fri, 17 Apr 2020 09:53:24 +0200 Subject: [PATCH 02/27] Add files via upload --- docs/images/intelmq3.0-architecture.png | Bin 0 -> 24981 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/intelmq3.0-architecture.png diff --git a/docs/images/intelmq3.0-architecture.png b/docs/images/intelmq3.0-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..862e189eefcd6a66cf771cbfb07b1714a8b57b22 GIT binary patch literal 24981 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 Date: Fri, 17 Apr 2020 09:54:50 +0200 Subject: [PATCH 03/27] Delete intelmq3.0-architecture.png --- docs/images/intelmq3.0-architecture.png | Bin 24981 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/images/intelmq3.0-architecture.png diff --git a/docs/images/intelmq3.0-architecture.png b/docs/images/intelmq3.0-architecture.png deleted file mode 100644 index 862e189eefcd6a66cf771cbfb07b1714a8b57b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24981 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 Date: Fri, 17 Apr 2020 09:59:38 +0200 Subject: [PATCH 04/27] add arch pic --- docs/intelmq3.0-architecture.png | Bin 0 -> 191359 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/intelmq3.0-architecture.png diff --git a/docs/intelmq3.0-architecture.png b/docs/intelmq3.0-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..f96da2e3a0b2a14c629fa15dc9e326f9c6fafa99 GIT binary patch literal 191359 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
5NfB`+2VYVnw)BBw#>IS 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

A<`gUP%?|`qubsC*dWlEfBZv|f@vKsp^#mlh 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 Date: Fri, 17 Apr 2020 10:01:16 +0200 Subject: [PATCH 05/27] wrong folder --- docs/{ => images}/intelmq3.0-architecture.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{ => images}/intelmq3.0-architecture.png (100%) diff --git a/docs/intelmq3.0-architecture.png b/docs/images/intelmq3.0-architecture.png similarity index 100% rename from docs/intelmq3.0-architecture.png rename to docs/images/intelmq3.0-architecture.png From 6cc554970fb355599c69e4d2c26a51885c2ebc9d Mon Sep 17 00:00:00 2001 From: AaronK Date: Fri, 17 Apr 2020 10:52:40 +0200 Subject: [PATCH 06/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index c70a5d3d0..db14ccc80 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -42,7 +42,7 @@ The high level goals of using a micro service architecture for IntelMQ 3.0 are: * we want to be highly maintainable on an individual (bot- or functionality) level * we want to be highly testable in a _standardized_ way. Calling a test function for a bot shall be identical. Tests consist of a) unit tests of the microservice but also b) of integration tests of the micro service with its environment. The self-test shall be run on the current config of the bot/container. * a micrsoservice allows for self-inspection: within the context of IntelMQ's bots this means that a bot knows which input it needs to be able to work properly (i.e. which DHO fields are filled out) and which fields it produces. This allows for integration tests. - * bots must be independently deployable and a deployment must be *self-contained*. No fiddling should be needed. It should be as easy as docker-compose ... + * bots must be independently deployable and a deployment must be *self-contained*. No fiddling should be needed. It should be as easy as docker-compose ... if a microservice needs to install or fetch external resources (example a DB) before it is ready, it shall do that in the init() function and only then report that it is finished. * each micro service MUST focus on one and only one task and excel at doing it * each micro service MUST be maintained by a small team. One developer is not enough. There shall be a clear point of contact relationship for each micro service, hence... Think metadata on a bot/container. * a micro service is registered at a registry of IntelMQ 3.0 micro services (which must contain the latest version number, contact info for the developer team, etc) @@ -104,12 +104,13 @@ Our docker template for a bot shall provide a RESTful API * monitoring information (health check, alerts, data rates of the flows, error counters, etc) * registering callbacks (or configuring the necessary infos) for a monitoring solution such as check_mk, nagios (introspection) - * endpoints for configuring syslog flows (where should the bot - * self-update is built-in (to be defined below) + * report (in the documentation) on the rough requirements on RAM, disk space, CPU load etc. - think base-line + * endpoints for configuring syslog flows (where should the bot send it to) + * Data freshness check is built-in (to be defined below) * IAM / Authentication & Authorization - * a Bot needs to support OpenID connect on it's REST interface ( maybe also setting encryption settings on the M2M interface (the MQ) ) - + * If authentication is needed, a Bot SHOULD support OpenID connect on it's REST interface + * MAYBE also setting encryption settings on the M2M interface (the MQ) ? * developer support XXX ideas? XXX @@ -139,11 +140,10 @@ Using the docker template bot, a bot needs to connect to the provided software l * standardised alerting mechanism (--> check_mk for nic.at) -### Self-update +### Data freshness - * check if I am the latest version * check if the needed databases (for example maxmind) is the latest version and download it if needed - * report self-updates to some syslog/orchestrator + * self-updates per se are *not* supported. Patching must be done from the outside. # IntelMQ 3.0 specifics From 9a78cd89430851e1198c92519a6c16c5233952d0 Mon Sep 17 00:00:00 2001 From: AaronK Date: Fri, 17 Apr 2020 10:53:31 +0200 Subject: [PATCH 07/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index db14ccc80..f362188e3 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -53,6 +53,7 @@ The high level goals of using a micro service architecture for IntelMQ 3.0 are: All of these requirements point towards a container architecture with standardised RESTful API endpoints. +The RESETful API SHOULD be implemented on the basis of the OpenAPI specs. From c4151c28ae809909baec3b15073048c30b9f39b9 Mon Sep 17 00:00:00 2001 From: AaronK Date: Fri, 17 Apr 2020 10:54:57 +0200 Subject: [PATCH 08/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index f362188e3..15181c4f3 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -54,6 +54,7 @@ The high level goals of using a micro service architecture for IntelMQ 3.0 are: All of these requirements point towards a container architecture with standardised RESTful API endpoints. The RESETful API SHOULD be implemented on the basis of the OpenAPI specs. +(Note: look at JSON API specs) From 193ff50c5faf083f7b7dff802498826cf1f55c30 Mon Sep 17 00:00:00 2001 From: AaronK Date: Mon, 27 Apr 2020 17:26:18 +0200 Subject: [PATCH 09/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index 15181c4f3..5764305a5 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -119,6 +119,12 @@ Our docker template for a bot shall provide a RESTful API * how can we expose / should we expose the debug method of the bot to the container? +# Storage + + * most data stays in the MQ bus + * config data is on disk + * minion S3-like storage? + * DB is external of storage, the DB won't scale Using the docker template bot, a bot needs to connect to the provided software layers which interface the functionalities described above From 2b06080891d0ddfab16babb31f5262cc809556b8 Mon Sep 17 00:00:00 2001 From: AaronK Date: Mon, 27 Apr 2020 17:40:29 +0200 Subject: [PATCH 10/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index 5764305a5..082a40bf2 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -2,6 +2,11 @@ Thoughts INTELMQ 3.0 ====================== +# Info + +IntelMQ 3.0 will continue to support .deb , .rpm, etc. (also direct pip install), but we will *also* support docker in Version 3.0. +The following text is about the additional docker support. + # Motivation From ddf3ba1f78334dc926315621f388c0c79f1cd13e Mon Sep 17 00:00:00 2001 From: AaronK Date: Mon, 27 Apr 2020 17:41:02 +0200 Subject: [PATCH 11/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index 082a40bf2..24d5b6a76 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -52,7 +52,7 @@ The high level goals of using a micro service architecture for IntelMQ 3.0 are: * each micro service MUST be maintained by a small team. One developer is not enough. There shall be a clear point of contact relationship for each micro service, hence... Think metadata on a bot/container. * a micro service is registered at a registry of IntelMQ 3.0 micro services (which must contain the latest version number, contact info for the developer team, etc) * a microservice MUST support service discovery. It shall register itself at some orchestrator - compare with registry. - * a microservice MUST support monitoring tools (check_mk, etc) and report its status to a monitoring tool + * a microservice MUST support monitoring tools (splunk, prometheus, check_mk, etc) and report its status to a monitoring tool * a microservice MAY support Identity mgmt tools via OpenID Connect on its' API * a microservice MUST be very easily integratable in other frameworks and work-flows. Think: IntelMQ 3.0 micro service components may run (as micro services) within a bigger data processing tool. From 233aaadf46869505832dfef2a4890359be9d2dfe Mon Sep 17 00:00:00 2001 From: AaronK Date: Fri, 8 May 2020 12:13:08 +0200 Subject: [PATCH 12/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 105 +++++++++++++++++++++++---------------- 1 file changed, 63 insertions(+), 42 deletions(-) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index 24d5b6a76..4d2de8948 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -2,13 +2,8 @@ Thoughts INTELMQ 3.0 ====================== -# Info -IntelMQ 3.0 will continue to support .deb , .rpm, etc. (also direct pip install), but we will *also* support docker in Version 3.0. -The following text is about the additional docker support. - - -# Motivation +# Motivation & Introduction IntelMQ was created as a viable, easier alternative to Abusehelper roughly 2014/2013. At this time, the fathers of IntelMQ (Tomas Lima, then CERT.pt, Aaron Kaplan, CERT.at) focused on easy ("KISS principle") to understand code and open source. @@ -16,8 +11,11 @@ At this time, the fathers of IntelMQ (Tomas Lima, then CERT.pt, Aaron Kaplan, CE In the mean time, IntelMQ became a de-facto standard for automatic incident handling for many European CERTs. However, the success also resulted in IntelMQ being used in contexts which were not anticipated. Also, running a production instance of IntelMQ gave us new requirements - mainly from the side of running it within a corporation or larger team where operations of systems is separated from the development side. +On the other hand, as more teams started to use IntelMQ, weaknesses with respect to user-friendliness became apparent. + +In short, IntelMQ needs to support more standard processes which can be found in regular IT operations: monitoring & alerting, central logging & control, scalability sizing , containerisation etc. It also needs to behave more as expected "turn-key" out of the box. This means, less configurations should be needed. This can be achieved by integrating it better with the existing most commonly used operations tools that teams use (e.g. centralized monitoring and alerting, etc). The main point however is: **It needs to be more user-friendly!**. -In short, IntelMQ needs to support more standard processes which can be found in regular IT operations: monitoring & alerting, central logging & control, scalability sizing , containerisation etc. +In addition, there seems to be the trend to connect different CERTs / IT security teams with each other (also on a data flow basis). IntelMQ is an ideal tool for that, however, most installations are currently set up as silos. Cross connecting them, adds extra requirements. The following proposal shall address these issues and is meant as a basis for discussion with the IntelMQ users. @@ -30,21 +28,51 @@ kaplan@cert.at -# Architecture - +# Overall architecture + +The overall architecture of IntelMQ 3.0 will remain rather similar. + +It will still keep the focus on: + * keeping things simple (KISS) and pluggable: our most important principle + * being a framework and thus adaptable and extensible by teams + * being open source + + New architecture features will be: + * Docker support + * Better integration into existing best practice monitoring & alerting tools (prometheus, check_mk, etc.) + * Better support for multiple data outputs: + * Better support for ELK (Elastic Search, Logstash, Kibana) out of the box + * Better support for Splunk out of the box + * Cassandra output + * Output to IDS / IPS systems out of the box + * CSV output (as trivial as it might sound) -> often this is the best for data analysis + * Better support for handling sensor data: potentially high volume streams of honeypots or other sensors shall be easily connectable. + * Seamless interoperability with CERT Polska's n6 system + * A vastly improved and extended internal format (DHO): we will support multiple values per key (think: key -> list or key -> dict). This is probably the change with the most impact. + * Support for handing over data via to other tools and/or CERTs via dedicated exchange points: these shall serve as the glue between different DHO format versions or between different data exchange formats (for example : n6 <-> DHO) + * Adding the concept of verifies: think of these as expert bots which can verify a claim made in the DHO event. Example: the event talks about a webserver having an outdated SSL setting (Poodle vuln for example): the verified (if enabled!) should be able to reach out to the server and confirm the claim. This may be the basis for some kind of confidence score for the claim made in the event. + * the concept of transcoders: should input arrive in a certain code page, a transcoder can trivially convert it to for example utf-8 + * the concept of transformers: convert one data format (f.ex. STIX) to the internal format and vice-versa + * and of course: more data feeds supported. See for example https://github.com/gethvi/intelmq/blob/develop/docs/Feeds-whishlist.md + + + + ## Microservice architecture / Docker support + + Due to the request (and the current practice ) of many teams, we will add Docker support. Many teams already implemented this in one way or the other. However, there is no uniform standard way in IntelMQ yet to run it in a container stack (possibly as microservice). + We will try to address this in Version 3.0 in a standardised way which fits to multiple teams. + + The most important finding while doing interviews with multiple IntelMQ users was, that intelmqctl is used as a control channel, however, it would make more sense to have a type of "intelmq_statusd" (daemon) process which does not need to be invoked for every query (as is the case with the command line intelmqctl script). The intelmq_statusd would povide a short and lean RESTful API to the outside world, which will manage signaling of the bot / botnet and be able to query a bot's or botnets' status. See the architecture diagram below. + ![architecture of a bot in IntelMQ 3.0](images/intelmq3.0-architecture.png) -## Microservice architecture - -This should be compatible with the standard nic.at micro service architecture. -It however needs to be flexible enough to allow other teams to integrate it very easily into their architecture. -Therefore, the definitions of the architecture needs to be cross checked with the major players in this field (cert.pl, cz-nic, Iain, IHAP group, ...) The high level goals of using a micro service architecture for IntelMQ 3.0 are: * we want to be highly maintainable on an individual (bot- or functionality) level + * we want to be able to quickly test out a setting (docker-compose up ...) * we want to be highly testable in a _standardized_ way. Calling a test function for a bot shall be identical. Tests consist of a) unit tests of the microservice but also b) of integration tests of the micro service with its environment. The self-test shall be run on the current config of the bot/container. * a micrsoservice allows for self-inspection: within the context of IntelMQ's bots this means that a bot knows which input it needs to be able to work properly (i.e. which DHO fields are filled out) and which fields it produces. This allows for integration tests. * bots must be independently deployable and a deployment must be *self-contained*. No fiddling should be needed. It should be as easy as docker-compose ... if a microservice needs to install or fetch external resources (example a DB) before it is ready, it shall do that in the init() function and only then report that it is finished. @@ -61,19 +89,17 @@ All of these requirements point towards a container architecture with standardis The RESETful API SHOULD be implemented on the basis of the OpenAPI specs. (Note: look at JSON API specs) +# Storage of the Docker image +Often, when deploying docker a relevant question arises: where is data stored? In our case, this is quite easy: -### Framework: let's go containers! - -Docker based. nic.at is moving gradually to docker. So is the rest of the world. -Docker allows new users to very quickly try out a setup. It lends itself to tutorials and experiments, it helps with orchestration. -However, we do not want to have a complete buy-in to any particular container tech stack. IntelMQ 3.0 should be flexible enough to be embedded in an alternative container tech stack. However, docker will remain the #1 option since it is the most commonly used one. + * most data stays in the MQ bus + * config data is on disk (in the docker image) + * DB is external of storage (as it is now with for example the postgresql-output) -The container stack allows us to have every single bot equipped by a default (but changeable) set of dev-ops/ops features for the use-case of running the bot in a controlled sysadmin/ops environment. +Using the docker template bot, a bot needs to connect to the provided software layers which interface the functionalities described above -If we look at the list of high level requirements from above, we can become more specific. -Our docker template for a bot shall provide a RESTful API ### RESTful API requirements @@ -124,14 +150,14 @@ Our docker template for a bot shall provide a RESTful API * how can we expose / should we expose the debug method of the bot to the container? -# Storage +### Example RESTful API interface. + + +We don't care which API framework you want to use (hug, fast api, flask, ...) +What we do care about is the RESTful API interface: +See https://github.com/gethvi/intelmq/blob/develop-api/docs/REST-API.md - * most data stays in the MQ bus - * config data is on disk - * minion S3-like storage? - * DB is external of storage, the DB won't scale -Using the docker template bot, a bot needs to connect to the provided software layers which interface the functionalities described above ### An IntelMQ 3.0 docker-bot now consists of: @@ -159,13 +185,14 @@ Using the docker template bot, a bot needs to connect to the provided software l * self-updates per se are *not* supported. Patching must be done from the outside. -# IntelMQ 3.0 specifics - -These are independent of the container stack ## MQ: Replaceable MQ & support for Kafka +## Transcoders + +Convert one code page to another + ## Transformers new class of bots: transform one data format (e.g. DHO) to another one (e.g. IDEA) or n6 <-> DHO @@ -173,7 +200,7 @@ new class of bots: transform one data format (e.g. DHO) to another one (e.g. IDE ## Outputs: Really good out of the box support for ELK and Splunk -out of the box support +See for example the previous work by https://github.com/gethvi/intelmq/blob/develop/docs/ELK-Stack.md ## Internal code: more modern python version with typing. Typing and type hints support in all of the code base @@ -182,6 +209,9 @@ out of the box support ## n6 interoperability +It should be possible to run an n6 bot within an intelMQ botnet setup and vice versa. + + ## domain based workflow ## portal-integration? @@ -194,25 +224,16 @@ out of the box support * machine readable specs of the DHO 2.0 * mapping of DHS 2.0 to other formats -## XXX aaron review #arch tag on GitHub -## RESTful API requirements -We don't care which API framework you want to use (hug, fast api, flask, ...) -What we do care about is the RESTful API interface -We created a template API spec TODOs Aaron ============= * add pics / better explanations -* put to GitHub -* clarify with ops/Alex + * post to IHAP and intelmq-users/+dev -* call Bernd -* cross check with Jaroslaw -* template API spec TODOs sebix =========== From 4d0684b9dedb2e6ff7a60d1c0cf2d5ebbd021966 Mon Sep 17 00:00:00 2001 From: AaronK Date: Fri, 8 May 2020 12:27:13 +0200 Subject: [PATCH 13/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 74 ++++++++++++++++++++++++++++++++-------- 1 file changed, 60 insertions(+), 14 deletions(-) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index 4d2de8948..0c76b826d 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -1,6 +1,4 @@ -Thoughts INTELMQ 3.0 -====================== - +# Design Ideas for INTELMQ 3.0 # Motivation & Introduction @@ -39,7 +37,8 @@ It will still keep the focus on: New architecture features will be: * Docker support - * Better integration into existing best practice monitoring & alerting tools (prometheus, check_mk, etc.) + * Better integration into existing best practice monitoring & alerting tools (prometheus, check_mk, etc.) via new intelmq_statusd + * Kafka support * Better support for multiple data outputs: * Better support for ELK (Elastic Search, Logstash, Kibana) out of the box * Better support for Splunk out of the box @@ -57,7 +56,7 @@ It will still keep the focus on: - ## Microservice architecture / Docker support +## Microservice architecture / Docker support Due to the request (and the current practice ) of many teams, we will add Docker support. Many teams already implemented this in one way or the other. However, there is no uniform standard way in IntelMQ yet to run it in a container stack (possibly as microservice). We will try to address this in Version 3.0 in a standardised way which fits to multiple teams. @@ -89,7 +88,7 @@ All of these requirements point towards a container architecture with standardis The RESETful API SHOULD be implemented on the basis of the OpenAPI specs. (Note: look at JSON API specs) -# Storage of the Docker image +### Storage of the Docker image Often, when deploying docker a relevant question arises: where is data stored? In our case, this is quite easy: @@ -186,12 +185,63 @@ See https://github.com/gethvi/intelmq/blob/develop-api/docs/REST-API.md +# Other features ## MQ: Replaceable MQ & support for Kafka +We will support Kafka as a MQ bus. Any other MQ buses which are urgently needed? + + +## Multiple data outputs + +* Better support for ELK (Elastic Search, Logstash, Kibana) out of the box +* Better support for Splunk out of the box +* Cassandra output +* Output to IDS / IPS systems out of the box +* CSV output (as trivial as it might sound) -> often this is the best for data analysis + +## Inputs +* Better support for handling sensor data: potentially high volume streams of honeypots or other sensors shall be easily connectable. + +## n6 Interoperability + + * Seamless interoperability with CERT Polska's n6 system + +## A new DHO version + + * A vastly improved and extended internal format (DHO): we will support multiple values per key (think: key -> list or key -> dict). This is probably the change with the most impact. This task is highly dependant and basically the core of the n6<-> intelmq interoperability. + +A new DHO version implies that some old installations of IntelMQ might still expect the old format. There are multiple ways to address this. The easiest solution looks like to have dedicated hand over points: + + * Support for handing over data via to other tools and/or CERTs via dedicated exchange points: these shall serve as the glue between different DHO format versions or between different data exchange formats (for example : n6 <-> DHO) + + This goes together with: + * transcoders and transformers + * a version field in a DHO event (for the new DHO version): if it is missing, it's an old DHO event. Example: + + +```json +{ "meta-data": { "version": 2.0, "created-at": '2020/5/1 12:00:00+0', "producer": "cert.at" }, "data": { ... } } +``` + * machine readable specs of the DHO 2.0 + * mapping of DHS 2.0 to other formats + + + +## Verifiers + + * Adding the concept of verifies: think of these as expert bots which can verify a claim made in the DHO event. Example: the event talks about a webserver having an outdated SSL setting (Poodle vuln for example): the verified (if enabled!) should be able to reach out to the server and confirm the claim. This may be the basis for some kind of confidence score for the claim made in the event. + + * and of course: more data feeds supported. See for example https://github.com/gethvi/intelmq/blob/develop/docs/Feeds-whishlist.md + + ## Transcoders +A new class of bots. + Convert one code page to another +Should input arrive in a certain code page, a transcoder can trivially convert it to for example utf-8 + ## Transformers @@ -214,16 +264,12 @@ It should be possible to run an n6 bot within an intelMQ botnet setup and vice v ## domain based workflow -## portal-integration? - - * TBD +Currently, most of the workflows for IntelMQ address number based processing (e.g. IP addresses). +However, name based workflows (domain names) often have slightly different requirements. For example: URL of a hacked web page -> it would be good to create a screenshot of the hacked web page in order to show it to the web page operator, so that he understands what happened to his/her web page. This task will address these requirements. -## DHO 2.0 - - * we need to support structs / lists of fields (or structs). One step towards IDEA and/or n6. This task is highly dependant and basically the core of the n6<-> intelmq interoperability. - * machine readable specs of the DHO 2.0 - * mapping of DHS 2.0 to other formats +## portal-integration? +Minimal: re-inspect the contactdb expert. From 0dd40252fdb4143c48a44fa8931203368727244b Mon Sep 17 00:00:00 2001 From: AaronK Date: Fri, 8 May 2020 12:27:55 +0200 Subject: [PATCH 14/27] Update IntelMQ-3.0-Architecture.md --- docs/IntelMQ-3.0-Architecture.md | 149 +------------------------------ 1 file changed, 1 insertion(+), 148 deletions(-) diff --git a/docs/IntelMQ-3.0-Architecture.md b/docs/IntelMQ-3.0-Architecture.md index f58329c82..965bf6faf 100644 --- a/docs/IntelMQ-3.0-Architecture.md +++ b/docs/IntelMQ-3.0-Architecture.md @@ -2,152 +2,5 @@ Authors: Aaron Kaplan , Sebastian Wagner -## Use-cases +Please look at https://github.com/certtools/intelmq/blob/version-3.0-ideas/docs/architecture-3.0.md -XXX fill in a complete list of use cases XXX - -### CERTs - -No direct access to networks in constituency. - -#### Data collection - -#### Distribution of information - -#### National CERT - -Work is based heavily on Geolocation - -#### Sector CERT - -Work is based on known constituents, sector information, lists of IP address ranges and domains, company & organisation names. - -### SOCs and NOCs - -Goal is the protection of internal known networks only. Direct access to the networks. - -Involves collecting information from internal infrastructure, matching IoCs to internal infrastructure, using IoCs for active protection. - -### Data science and research - -## Users - -XXX fill in a complete list of use cases XXX - -## RESTful API - -For automation purposes, we will need a typical RESTful API to manage, control, monitor the IntelMQ "botnet" and read and set configs. -See [#1424](https://github.com/certtools/intelmq/issues/1424) - -## UX - - - - -### Devops/ Sysadmin perspective - -#### Docker - -_Task_: create a setup where each bot MAY run in a docker container - -_Background_: It might make sense to be able to run each bot in a docker container since it fits with a lot of new paradigms in orchestration. -With a proper template, each bot running in a docker container could send its logs to some central logger (for example splunk or similar) and -the sysadmin/devops teams which are already using these systems for monitoring alerts can properly fit the IntelMQ logs and alerts to their regular daily routine. -Docker also allows the sysadmin/devops folks to centrally manage the system. - -_Think about_: how do we integrate the pipeline graph? - -_Category_: this feature should be OPTIONAL. - -#### Tutorials and VMs / dockers - -_Task_: create tutorials with VMs/docker images. - -_Background_: -We are missing good tutorials ("playbooks") on how to run certain workflows via IntelMQ. Ideally, we would offer ready-made VMs/docker images where people who want to -try out IntelMQ (and consequently adapt the setup to their own needs). This also helps teachers/presenters who want to demo IntelMQ. - -Specifically we would like to have: - * how to process shadowserver feeds - * how to process shodan data - * how to process n6 data - -_Think about_: shadowserver already created some training material. Build on this. - -_Category_: OPTIONAL component, but highly needed. - - -## Architecture - - - -### Message queue - -_Task_: Create a Kafka MQ backend: add Kafka as a replaceable MQ for IntelMQ 3.0 - -_Background_: IntelMQ 2.0 supports AMQP (RabbitMQ) next to redis as a message queue. Many organisations use Kafka internally. Support connecting to their other work flows. - -_Think about_: Using [Apache Pulsar](https://pulsar.apache.org/) - - -_Category_: SHOULD - - -## Notification settings - -_Task_: Keep notification settings per event: Where to (destination mail/host address), how (protocol, authentication (SSL client certificate), etc), how often/time information (intervals etc.) - -_Background_: CERTs (and potentially other groups of users) need to specify where the events should be sent to, how often etc. Currently only destination email addresses can be saved (`source.abuse_contact`), which is not enough for most use-cases. There exist some custom solutions (e.g. `notify` boolean at cert.at (to be changed), `extra.processing` dictionary at BSI), but no least common denominator. - -See also https://github.com/certtools/intelmq/issues/758 - -_Category_: this feature should be OPTIONAL but is NEEDED by several users. - - -## Configuration parameter handling in Bots and a bot's unified documentation - -_Task_: Handle bots' configuration parameters by the core, providing type sanitation, checks, default values and documentation. - -_Background_: Currently every bot needs to handle these issues itself, but many of these checks could be done centrally in a generic way. At upgrades, new configuration might get introduced and the bots need to provide defaults values although they are available in BOTS. Error handling on parameters must be done for every bot on itself. Documentation is not available to the Bots, not available in BOTS and the Manager. There are 3 places for parameters where the available information is spread: BOTS, `Bots.md` and the bots' code. - - -## Automatic Monitoring & Management: Handling full load situations - -_Task_: Create a solution to prevent system over-loading (only for Redis). - -_Background_: If too much data is ingested, collected or enriched, the system can easily run out of memory. This quickly causes major operation troubles and data loss, needing manual intervention. - -See also: https://github.com/certtools/intelmq/issues/709 - - -## Making intelmq plug-able and getting rid of BOTS - -_Task_: Allow installation of IntelMQ bots, meaning the deprecation of the centralized BOTS file and a generated documentation. - -_Background_: Adapting IntelMQ to specific needs also means the development of specific bots which might not part of the public repository. Adding them to an existing IntelMQ installation is currently only possible by cloning the repository and adding the code there, not by just providing/installing the required code (because of BOTS and central documentation). - -See also https://github.com/certtools/intelmq/issues/972 - - -## Exposing a plug-in or hooking API - -_Task_: Provide an hooking API for the core classes. - -_Background_: Adapting IntelMQ to specific can require adaptions in the Core classes' code. Instead of making the changes/extensions in the core itself, we can provide a hook system allowing to call (or replace?) functions at specific steps. For example custom monitoring. - - -## Grouping of events - -_Task_: Provide possibilities to assign an event to a group of events. - -_Background_: Several IoCs part of one MISP Event. Grouping of similar events to one group for outputs (e.g. one CSV file per Network). - -See also: https://github.com/certtools/intelmq/issues/751 - -## Data Format: Multiple values - -_Task_: Allow multiple values for (some) fields in the data format. - -_Background_: In some cases one value per field is not enough, for example for Domain -> IP address lookups. Other formats like IDEA and n6 support this. - -See also: https://github.com/certtools/intelmq/issues/543 https://github.com/certtools/intelmq/issues/373 From d395caa15f06238951a48e57dd86f90148302348 Mon Sep 17 00:00:00 2001 From: AaronK Date: Fri, 8 May 2020 12:28:55 +0200 Subject: [PATCH 15/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index 0c76b826d..eb7721742 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -221,7 +221,7 @@ A new DHO version implies that some old installations of IntelMQ might still exp ```json -{ "meta-data": { "version": 2.0, "created-at": '2020/5/1 12:00:00+0', "producer": "cert.at" }, "data": { ... } } +{ "meta-data": { "version": 2.0, "created-at": "2020/5/1 12:00:00+0", "producer": "cert.at" }, "data": { ... } } ``` * machine readable specs of the DHO 2.0 * mapping of DHS 2.0 to other formats From 42343af10e083cb7686702fafbef6f47552ca5da Mon Sep 17 00:00:00 2001 From: AaronK Date: Fri, 8 May 2020 12:46:14 +0200 Subject: [PATCH 16/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index eb7721742..2716320b0 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -36,7 +36,7 @@ It will still keep the focus on: * being open source New architecture features will be: - * Docker support + * Docker support (note: docker will be **optional**. If you run on bare metal/VM on Debian, Ubuntu, etc.: we will still provide regular packages) * Better integration into existing best practice monitoring & alerting tools (prometheus, check_mk, etc.) via new intelmq_statusd * Kafka support * Better support for multiple data outputs: From d1830c519a563e17cf4feb5dd9959ef038a80715 Mon Sep 17 00:00:00 2001 From: aaronkaplan Date: Fri, 8 May 2020 16:32:36 +0200 Subject: [PATCH 17/27] update architecture image --- docs/images/intelmq3.0-architecture.png | Bin 191359 -> 188743 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/intelmq3.0-architecture.png b/docs/images/intelmq3.0-architecture.png index f96da2e3a0b2a14c629fa15dc9e326f9c6fafa99..f1ba85613685ef1f187491b41f04c1a69a4b3c36 100644 GIT binary patch delta 109124 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

ZGdEO770ppMU&c@|OvC3Ib~@O^dZ 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

B@pH@5CEgxtuoV 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 From f3c7aec49d6931b098741c674f86d65159e86613 Mon Sep 17 00:00:00 2001 From: gethvi Date: Mon, 11 May 2020 19:58:05 +0200 Subject: [PATCH 18/27] Adds REST API docs. --- docs/REST-API.md | 354 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 354 insertions(+) create mode 100644 docs/REST-API.md diff --git a/docs/REST-API.md b/docs/REST-API.md new file mode 100644 index 000000000..a43132c79 --- /dev/null +++ b/docs/REST-API.md @@ -0,0 +1,354 @@ +# REST API Documentation +Currently this more of an examples doc than a full scope documentation. The API is JSON based. + +## Bots Management + +### `GET /bots` +Retrieves the complete bot configuration (runtime.conf). + +Optional parameters: +* `/bots/{bots-group}` - only a group of bots (`collectors`,`parsers`,`experts`, `outputs`) +* `/bots/{bot-id}` - only one specified bot +* `?s` or `?short` - returns only ID's of bots + +Example request: +``` +GET /bots/experts?short +``` +Example response (short): +```json +[ + "cymru-whois-expert", + "deduplicator-expert", + "taxonomy-expert", + "url2fqdn-expert" +] +``` + +### `PUT /bots/{bot-id}` +Adds or modifies bot configuration for one particular bot. + +Example request: +``` +POST /bots/file-output + + +{ + "description": "File is the bot responsible to send events to a file.", + "enabled": true, + "group": "Output", + "module": "intelmq.bots.outputs.file.output", + "name": "File", + "parameters": { + "file": "/opt/intelmq/var/lib/bots/file-output/events.txt", + "hierarchical_output": false, + "single_key": null + } +} +``` + +Example response: +```json +{ + "status": "OK" +} +``` + +### `DELETE /bots/{bot-id}` +Stops the bot (if running) and deletes it from configuration. Does not delete/clear it's queues! + +### `GET /bots/status` +Returns status of bots (`running`, `stopped`, `unknown`, `disabled`). + +Optional parameters: +* `/bots/status/{bots-group}` - only a group of bots (`collectors`,`parsers`,`experts`, `outputs`) +* `/bots/status/{bot-id}` - only one specified bot + +Example response: +```json +{ + "cymru-whois-expert": "stopped", + "deduplicator-expert": "running", + "file-output": "disabled", + "taxonomy-expert": "stopped", + "url2fqdn-expert": "stopped" +} +``` + +### `GET /bots/logs` +Retrieves logs for all bots. + +Optional parameters: +* `/bots/status/{bots-group}` - only a group of bots (`collectors`,`parsers`,`experts`, `outputs`) +* `/bots/status/{bot-id}` - only one specified bot +* `level` - starting level of log entries to retrieve (`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`) +* `lines` - number of log entries to retrieve + +Example request: + +```GET /bots/logs/deduplicator-expert?level=INFO&lines=3``` + +Example response: +```json +{ + "deduplicator-expert": [ + { + "bot_id": "deduplicator-expert", + "date": "2020-04-27T13:52:02.574000", + "log_level": "INFO", + "message": "Bot initialization completed.", + "thread_id": null + }, + { + "bot_id": "deduplicator-expert", + "date": "2020-04-27T13:52:03.765000", + "log_level": "INFO", + "message": "Forwarded 500 messages since last logging.", + "thread_id": null + }, + { + "bot_id": "deduplicator-expert", + "date": "2020-04-27T13:52:09.504000", + "log_level": "INFO", + "message": "Received SIGTERM.", + "thread_id": null + } + ] +} +``` + +### `POST /bots/start` +Starts all enabled bots. Returns bot starting status (`starting`, `disabled`, `failed`). + +Optional parameters: +* `/bots/start/{bots-group}` - starts only a group of bots +* `/bots/start/{bot-id}` - starts only one specified bot + +Example response: +```json +{ + "cymru-whois-expert": "starting", + "deduplicator-expert": "starting", + "file-output": "disabled", + "taxonomy-expert": "starting", + "url2fqdn-expert": "failed" +} +``` + +### `POST /bots/stop` +Stops all running bots. Returns bot stopping status (`stopping`, `failed`). + +Optional parameters: +* `/bots/stop/{bots-group}` - reloads only a group of bots +* `/bots/stop/{bot-id}` - reloads only one specified bot + +Example response: +```json +{ + "cymru-whois-expert": "stopping", + "deduplicator-expert": "stopping", + "taxonomy-expert": "failed" +} +``` + +### `POST /bots/reload` +Reloads the configuration of all running bots. Returns bot reloading status (`reloading`, `failed`). + +Optional parameters: +* `/bots/reload/{bots-group}` - only a group of bots +* `/bots/reload/{bot-id}` - only one specified bot + +Example response: +```json +{ + "cymru-whois-expert": "reloading", + "deduplicator-expert": "reloading", + "taxonomy-expert": "failed" +} +``` + +### `POST /bots/restart` +Restarts all running bots. Bots are not restarted if they failed to stop. Returns bot starting status (`starting`, `failed`) for successfully stopped bots. + +Optional parameters: +* `/bots/restart/{bots-group}` - only a group of bots +* `/bots/restart/{bot-id}` - only one specified bot + +Example response: +```json +{ + "cymru-whois-expert": "starting", + "deduplicator-expert": "starting", + "taxonomy-expert": "failed" +} +``` + +### `POST /bots/enable` +Sets the bots configuration to enabled. Returns a list of all enabled bots by this call. Does not start the bots! + +Optional parameters: +* `/bots/enable/{bots-group}` - only a group of bots +* `/bots/enable/{bot-id}` - only one specified bot + +Example response: +```json +{ + "cymru-whois-expert": "enabled", + "deduplicator-expert": "enabled", + "taxonomy-expert": "enabled", + "url2fqdn-expert": "enabled" +} +``` + +### `POST /bots/disable` +Sets the bots configuration to disabled. Returns a list of all disabled bots by this call. Does not stop the bots! + +Optional parameters: +* `/bots/disable/{bots-group}` - only a group of bots +* `/bots/disable/{bot-id}` - only one specified bot + +Example response: +```json +{ + "cymru-whois-expert": "disabled", + "deduplicator-expert": "disabled", + "taxonomy-expert": "disabled", + "url2fqdn-expert": "disabled" +} +``` + +### `GET /bots/queues` +Returns queue names for bots. + +Optional parameters: +* `/bots/queues/{bots-group}` - only a group of bots +* `/bots/queues/{bot-id}` - only one specified bot + +Example response: +```json +{ + "feodo-tracker-browse-collector": { + "destination-queues": [ + "feodo-tracker-browse-parser-queue" + ] + }, + "malc0de-windows-format-collector": { + "destination-queues": [ + "malc0de-parser-queue" + ] + } +} +``` + +### `GET /bots/queues/status` +Returns status of queues for bots. + +Optional parameters: +* `/bots/queues/status/{bots-group}` - only a group of bots +* `/bots/queues/status/{bot-id}` - only one specified bot + +Example response: +```json +{ + "cymru-whois-expert": { + "destination_queues": [ + { + "file-output-queue": 281 + } + ], + "internal_queue": 1, + "source_queue": { + "cymru-whois-expert-queue": 151 + } + } +} +``` + +### `PUT /bots/queues/{bot-id}` +Inserts/updates new queues configuration for a bot. Returns status. + +Example response: +```json +{ + "status": "OK" +} +``` + +### `DELETE /bots/queues/{bot-id}` +Deletes queues configuration for a bot. Does not delete/clear queue in the message broker! + +```json +{ + "status": "OK" +} +``` + +## Queues Management + +### `GET /queues` +Returns an array of all queues names (not of type `internal`). + +Optional parameters: +* `/queues/status/{queue-type}` - only a certain type of queues (`internal`, `source`) +* `/queues/status/{queue-id}` - only one specified queue + +Example response: +```json +[ + "cymru-whois-expert-queue", + "deduplicator-expert-queue", + "feodo-tracker-browse-parser-queue", + "file-output-queue", + "gethostbyname-1-expert-queue", + "gethostbyname-2-expert-queue", + "malc0de-parser-queue", + "malware-domain-list-parser-queue", + "spamhaus-drop-parser-queue", + "taxonomy-expert-queue", + "url2fqdn-expert-queue" +] +``` + +### `GET /queues/status` +Returns a status of source queues of all bots. + +Optional parameters: +* `/queues/status/{queue-type}` - only a certain type of queues (`internal`, `source`) +* `/queues/status/{queue-id}` - only one specified queue + +Example reponse: +```json +{ + "cymru-whois-expert-queue": 151, + "deduplicator-expert-queue": 0, + "feodo-tracker-browse-parser-queue": 1, + "file-output-queue": 281, + "gethostbyname-1-expert-queue": 395, + "gethostbyname-2-expert-queue": 0, + "malc0de-parser-queue": 0, + "malware-domain-list-parser-queue": 0, + "spamhaus-drop-parser-queue": 0, + "taxonomy-expert-queue": 0, + "url2fqdn-expert-queue": 0 +} +``` + +### `POST /queues/clear` +Clears the specified queues. Returns a list of cleared queues. + +Optional parameters: +* `/queues/status/{queue-type}` - only a certain type of queues (`internal`, `source`) +* `/queues/status/{queue-id}` - only one specified queue + +Example request: +``` +POST /queues/clear/feodo-tracker-browse-parser-queue +``` + +Example response: +```json +[ + "feodo-tracker-browse-parser-queue" +] +``` + From 6f0b5bdeb2a074f470eecf523ba70fdd51db7806 Mon Sep 17 00:00:00 2001 From: gethvi Date: Mon, 11 May 2020 20:09:50 +0200 Subject: [PATCH 19/27] Adds REST-API docs. --- docs/REST-API.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/REST-API.md b/docs/REST-API.md index a43132c79..61c42f9b7 100644 --- a/docs/REST-API.md +++ b/docs/REST-API.md @@ -118,7 +118,7 @@ Example response: ``` ### `POST /bots/start` -Starts all enabled bots. Returns bot starting status (`starting`, `disabled`, `failed`). +Starts all enabled bots. Returns bot starting status (`starting`, `running` ,`disabled`, `failed`). Optional parameters: * `/bots/start/{bots-group}` - starts only a group of bots @@ -352,3 +352,13 @@ Example response: ] ``` +## IntelMQ Management + +### `GET /logs` +Returns logs of the ProcessManager (intelmqctl-like backend). + +Optional parameters: +* `level` - starting level of log entries to retrieve (`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`) +* `lines` - number of log entries to retrieve + +**Not yet implemented** From bfc26ae8601c3d7a2927c867d5cc7df582287f6a Mon Sep 17 00:00:00 2001 From: gethvi Date: Mon, 11 May 2020 21:12:59 +0200 Subject: [PATCH 20/27] Changes minor things. --- docs/REST-API.md | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/docs/REST-API.md b/docs/REST-API.md index 61c42f9b7..6f3576b90 100644 --- a/docs/REST-API.md +++ b/docs/REST-API.md @@ -1,6 +1,16 @@ # REST API Documentation Currently this more of an examples doc than a full scope documentation. The API is JSON based. +The API is loosely inspired by Elasticsearch API. + +**GET** - receive data + +**PUT** - insert/update data + +**POST** - run a method + +**DELETE** - delete data + ## Bots Management ### `GET /bots` @@ -118,7 +128,7 @@ Example response: ``` ### `POST /bots/start` -Starts all enabled bots. Returns bot starting status (`starting`, `running` ,`disabled`, `failed`). +Starts all enabled bots. Returns bot status with additional values (`starting`, `failed`). Optional parameters: * `/bots/start/{bots-group}` - starts only a group of bots @@ -136,7 +146,7 @@ Example response: ``` ### `POST /bots/stop` -Stops all running bots. Returns bot stopping status (`stopping`, `failed`). +Stops all running bots. Returns bot status with additional values (`stopping`, `failed`). Optional parameters: * `/bots/stop/{bots-group}` - reloads only a group of bots @@ -168,7 +178,7 @@ Example response: ``` ### `POST /bots/restart` -Restarts all running bots. Bots are not restarted if they failed to stop. Returns bot starting status (`starting`, `failed`) for successfully stopped bots. +Restarts all running bots. Bots are not restarted if they failed to stop. Returns bot status with additional values (`starting`, `failed`) for successfully stopped bots. Optional parameters: * `/bots/restart/{bots-group}` - only a group of bots @@ -361,4 +371,9 @@ Optional parameters: * `level` - starting level of log entries to retrieve (`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`) * `lines` - number of log entries to retrieve +Example request: +``` +GET /logs?level=INFO&lines=5 +``` + **Not yet implemented** From 63053973cab5ef4942d41c77f13dabaaaf7b4889 Mon Sep 17 00:00:00 2001 From: gethvi Date: Mon, 11 May 2020 21:17:51 +0200 Subject: [PATCH 21/27] Minor fix. --- docs/REST-API.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/REST-API.md b/docs/REST-API.md index 6f3576b90..64f059fd4 100644 --- a/docs/REST-API.md +++ b/docs/REST-API.md @@ -162,7 +162,7 @@ Example response: ``` ### `POST /bots/reload` -Reloads the configuration of all running bots. Returns bot reloading status (`reloading`, `failed`). +Reloads the configuration of all running bots. Returns bot status with additional values (`reloading`, `failed`). Optional parameters: * `/bots/reload/{bots-group}` - only a group of bots From 9ac833a6232697c8afb7fb415a62a4e8bf288284 Mon Sep 17 00:00:00 2001 From: AaronK Date: Thu, 13 Aug 2020 18:40:25 +0200 Subject: [PATCH 22/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index 2716320b0..0e3b34b52 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -22,13 +22,28 @@ If something is missing from the list, if something is not important at all or v We are happy to receive your feedback. Aaron Kaplan - IntelMQ 3.0 Architecture. -kaplan@cert.at +kaplan-atsign-cert.at (work) / aaron-atsign-lo-res.org (priv) -# Overall architecture +# Overall architecture & the soul of IntelMQ -The overall architecture of IntelMQ 3.0 will remain rather similar. +The overall architecture of IntelMQ 3.0 will remain rather similar to version 2.0. But we plan to have a few important changes, which will underline the "soul" of IntelMQ. + +## The soul of IntelMQ + +IntelMQ is good for a specific purpose. It is: + + * An **[ETL](https://en.wikipedia.org/wiki/Extract,_transform,_load) (Extract Transform Load) tool** for + * **[IoCs](https://en.wikipedia.org/wiki/Indicator_of_compromise)** and **IT security relevant events** (i.e. IT security log lines which contain a timestamp, IPs or domain names and context information) + * a set of tools which are composable and follow the **[Unix Philosophy](https://en.wikipedia.org/wiki/Unix_philosophy)** + + ## Scope + XXX + + ## Non-Scope + + XXX It will still keep the focus on: * keeping things simple (KISS) and pluggable: our most important principle From 7e46cd8bc924a82298764667eddb70ac1f23f4f6 Mon Sep 17 00:00:00 2001 From: aaronkaplan Date: Sat, 26 Sep 2020 09:18:25 +0200 Subject: [PATCH 23/27] merge changes in --- docs/architecture-3.0.md | 422 +++++++++++++++++++++------------------ 1 file changed, 229 insertions(+), 193 deletions(-) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index 0e3b34b52..dea4d8472 100644 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -1,34 +1,52 @@ -# Design Ideas for INTELMQ 3.0 +# Architecture of INTELMQ 3.0 + +Author: Aaron Kaplan + +# Scope + +The following architecture document addresses + + * an architecture discussion for IntelMQ 3.x. This version should be seen as a re-alignment on IntelMQ's core principles which got lost over the last years due to feature creep + * making IntelMQ 3.x interoperable with CERT.pl's n6 system + +# Non-Scope + +This document will not list the individual, detailed steps which need to be taken to achieve these goals. The steps will be outlined in individual issues on github and tagged "intelmq3.0". # Motivation & Introduction IntelMQ was created as a viable, easier alternative to Abusehelper roughly 2014/2013. -At this time, the fathers of IntelMQ (Tomas Lima, then CERT.pt, Aaron Kaplan, CERT.at) focused on easy ("KISS principle") to understand code and open source. +At this time, the fathers of IntelMQ (Tomas Lima, back then CERT.pt, Aaron Kaplan, CERT.at) focused on easy to understand code ("KISS principle") and open source. In the mean time, IntelMQ became a de-facto standard for automatic incident handling for many European CERTs. -However, the success also resulted in IntelMQ being used in contexts which were not anticipated. Also, running a production instance of IntelMQ gave us new requirements - mainly from the side of running it within a corporation or larger team where operations of systems is separated from the development side. -On the other hand, as more teams started to use IntelMQ, weaknesses with respect to user-friendliness became apparent. +However, the success also resulted lots of feature creep, complex and harder to understand code and it also resulted in IntelMQ being used in contexts which were not anticipated. Also, running a production instance of IntelMQ gave us new requirements - mainly from the side of running it within a corporation or larger team where the operations of systems is a separated organisational unit from the development side. +In addition, as more teams started to use IntelMQ, weaknesses with respect to user-friendliness became apparent. This became especially apparent at user-trainings (at TF-CSIRTs, etc.), which clearly show that many of IntelMQ's 2.x features are totally non-intuitive. +You would not guess that the system can do X if you did not read the source code. This is mainly due to the fact that IntelMQ 2.x and large parts of 1.x were developed by one single core developer and were not discussed enough in a wider user group. -In short, IntelMQ needs to support more standard processes which can be found in regular IT operations: monitoring & alerting, central logging & control, scalability sizing , containerisation etc. It also needs to behave more as expected "turn-key" out of the box. This means, less configurations should be needed. This can be achieved by integrating it better with the existing most commonly used operations tools that teams use (e.g. centralized monitoring and alerting, etc). The main point however is: **It needs to be more user-friendly!**. +The way out of this dilemma (and out of feature creep) is to focus on a) simplicity (i.e. **reduce complexity**, **follow a unix philosophy**) and b) standardised procedures which are now (as of 2020) common in the field (with plenty of examples of data-flow oriented architectures to copy from). -In addition, there seems to be the trend to connect different CERTs / IT security teams with each other (also on a data flow basis). IntelMQ is an ideal tool for that, however, most installations are currently set up as silos. Cross connecting them, adds extra requirements. +In short, IntelMQ needs to support more standard processes which can be found in regular IT operations: microservices, monitoring & alerting, central logging & control, scalability sizing, containerisation etc. It also needs to behave more as expected / **"turn-key" out of the box**. +It needs to orient itself at other (larger) standard tools (such as Elastic Search), which show how it's done. +This can be achieved by integrating it better with the existing most commonly used operations tools that teams use (e.g. centralized monitoring and alerting, etc). Cross connecting IntelMQ instances for automatic data exchanges as well as the planned IntelMQ-to-n6 interoperatibility adds new requirements. -The following proposal shall address these issues and is meant as a basis for discussion with the IntelMQ users. +The main point however is: **IntelMQ needs to be more user-friendly!** and **fullfill the user's default expectations**. -If something is missing from the list, if something is not important at all or very important, etc. please let us know. +Hence the following document shall lay out the architectural foundations for an IntelMQ 3.0 release. +The following proposal shall address these issues and is meant as a basis for discussion with the IntelMQ users. +If something is missing from the list, if something is not important at all or very important, etc. please let us know. We are happy to receive your feedback. Aaron Kaplan - IntelMQ 3.0 Architecture. -kaplan-atsign-cert.at (work) / aaron-atsign-lo-res.org (priv) + -# Overall architecture & the soul of IntelMQ +# Overall architecture of IntelMQ 3.0 & the soul of IntelMQ -The overall architecture of IntelMQ 3.0 will remain rather similar to version 2.0. But we plan to have a few important changes, which will underline the "soul" of IntelMQ. +The overall architecture of IntelMQ 3.0 will remain rather similar to version 2.x (i.e. we will still have a data-flow oriented architecture, "bots" and "botnets"). But we plan to have a few important changes, which will emphasize the "soul" of IntelMQ. ## The soul of IntelMQ @@ -38,267 +56,285 @@ IntelMQ is good for a specific purpose. It is: * **[IoCs](https://en.wikipedia.org/wiki/Indicator_of_compromise)** and **IT security relevant events** (i.e. IT security log lines which contain a timestamp, IPs or domain names and context information) * a set of tools which are composable and follow the **[Unix Philosophy](https://en.wikipedia.org/wiki/Unix_philosophy)** - ## Scope - XXX - - ## Non-Scope - - XXX +IntelMQ was **not** meant to be a tool for: -It will still keep the focus on: - * keeping things simple (KISS) and pluggable: our most important principle - * being a framework and thus adaptable and extensible by teams - * being open source - - New architecture features will be: - * Docker support (note: docker will be **optional**. If you run on bare metal/VM on Debian, Ubuntu, etc.: we will still provide regular packages) - * Better integration into existing best practice monitoring & alerting tools (prometheus, check_mk, etc.) via new intelmq_statusd - * Kafka support - * Better support for multiple data outputs: - * Better support for ELK (Elastic Search, Logstash, Kibana) out of the box - * Better support for Splunk out of the box - * Cassandra output - * Output to IDS / IPS systems out of the box - * CSV output (as trivial as it might sound) -> often this is the best for data analysis - * Better support for handling sensor data: potentially high volume streams of honeypots or other sensors shall be easily connectable. - * Seamless interoperability with CERT Polska's n6 system - * A vastly improved and extended internal format (DHO): we will support multiple values per key (think: key -> list or key -> dict). This is probably the change with the most impact. - * Support for handing over data via to other tools and/or CERTs via dedicated exchange points: these shall serve as the glue between different DHO format versions or between different data exchange formats (for example : n6 <-> DHO) - * Adding the concept of verifies: think of these as expert bots which can verify a claim made in the DHO event. Example: the event talks about a webserver having an outdated SSL setting (Poodle vuln for example): the verified (if enabled!) should be able to reach out to the server and confirm the claim. This may be the basis for some kind of confidence score for the claim made in the event. - * the concept of transcoders: should input arrive in a certain code page, a transcoder can trivially convert it to for example utf-8 - * the concept of transformers: convert one data format (f.ex. STIX) to the internal format and vice-versa - * and of course: more data feeds supported. See for example https://github.com/gethvi/intelmq/blob/develop/docs/Feeds-whishlist.md - - - -## Microservice architecture / Docker support - - Due to the request (and the current practice ) of many teams, we will add Docker support. Many teams already implemented this in one way or the other. However, there is no uniform standard way in IntelMQ yet to run it in a container stack (possibly as microservice). - We will try to address this in Version 3.0 in a standardised way which fits to multiple teams. - - The most important finding while doing interviews with multiple IntelMQ users was, that intelmqctl is used as a control channel, however, it would make more sense to have a type of "intelmq_statusd" (daemon) process which does not need to be invoked for every query (as is the case with the command line intelmqctl script). The intelmq_statusd would povide a short and lean RESTful API to the outside world, which will manage signaling of the bot / botnet and be able to query a bot's or botnets' status. See the architecture diagram below. - + * general Threat Intelligence correlation and - pivoting (c.f. [MISP](https://www.misp-project.org)) + * a general solution for processing arbitrary streams of logs (see Splunk, ELK, etc.) - IntelMQ focuses on a typical log lines for IT security purposes only (that is - timestamp, IPs or domain names, context information) + + +To focus more deeply on this topic, we should first review aspects of the Unix philosophy: + +>In their preface to the 1984 book, The UNIX Programming Environment, Brian Kernighan and Rob Pike, both from Bell Labs, give a brief description of the Unix design and the Unix philosophy: -![architecture of a bot in IntelMQ 3.0](images/intelmq3.0-architecture.png) +>> *"Even though the UNIX system introduces a number of innovative programs and techniques, no single program or idea makes it work well. Instead, what makes it effective is the approach to programming, a philosophy of using the computer. Although that philosophy can't be written down in a single sentence, at its heart is the idea that the power of a system comes more from the relationships among programs than from the programs themselves. Many UNIX programs do quite trivial things in isolation, but, combined with other programs, become general and useful tools."* (Source: [Wikipedia](https://en.wikipedia.org/wiki/Unix_philosophy#The_UNIX_Programming_Environment)) +Next, let's look at the specific purposes listed above: -The high level goals of using a micro service architecture for IntelMQ 3.0 are: + * **ETL**: as an ETL user, I want something which can + - go over large amounts of data in parallel + - save the complex parsing and validation work for me + - filter out rows which are unusable (but keep them somewhere for re-runs) + - ideally both a (python) library which does that and a command line tool + - map input fields to IDF (see the IDF section) + - allow for plugging in arbitrary transformations (-> experts and output programs in our case) + - load the data into some other system (-> output programs: postgresql, Elastic Search, Splunk, etc.) + - be automated, once I am sure I can run through the data safely every time + * **IoCs**: IntelMQ MUST support the most common IoC / it security logs which CERTs encounter: shadowserver, team cymru, etc. etc. + One format that IntelMQ does not support yet, is STIS 2.x (input). It is widely used by many tools. We should support it. + In general, with IoCs on the input side, IntelMQ 1.x and 2.x are already very solid. There is a strong foundation on which to build. Very little needs to be changed here for IntelMQ 3.0 + * **composable tools**: here, IntelMQ 3.0 needs to do better. Let's expand this in the next paragraphs. - * we want to be highly maintainable on an individual (bot- or functionality) level - * we want to be able to quickly test out a setting (docker-compose up ...) - * we want to be highly testable in a _standardized_ way. Calling a test function for a bot shall be identical. Tests consist of a) unit tests of the microservice but also b) of integration tests of the micro service with its environment. The self-test shall be run on the current config of the bot/container. - * a micrsoservice allows for self-inspection: within the context of IntelMQ's bots this means that a bot knows which input it needs to be able to work properly (i.e. which DHO fields are filled out) and which fields it produces. This allows for integration tests. - * bots must be independently deployable and a deployment must be *self-contained*. No fiddling should be needed. It should be as easy as docker-compose ... if a microservice needs to install or fetch external resources (example a DB) before it is ready, it shall do that in the init() function and only then report that it is finished. - * each micro service MUST focus on one and only one task and excel at doing it - * each micro service MUST be maintained by a small team. One developer is not enough. There shall be a clear point of contact relationship for each micro service, hence... Think metadata on a bot/container. - * a micro service is registered at a registry of IntelMQ 3.0 micro services (which must contain the latest version number, contact info for the developer team, etc) - * a microservice MUST support service discovery. It shall register itself at some orchestrator - compare with registry. - * a microservice MUST support monitoring tools (splunk, prometheus, check_mk, etc) and report its status to a monitoring tool - * a microservice MAY support Identity mgmt tools via OpenID Connect on its' API - * a microservice MUST be very easily integratable in other frameworks and work-flows. Think: IntelMQ 3.0 micro service components may run (as micro services) within a bigger data processing tool. - -All of these requirements point towards a container architecture with standardised RESTful API endpoints. -The RESETful API SHOULD be implemented on the basis of the OpenAPI specs. -(Note: look at JSON API specs) +If we take the core ideas of IntelMQ to heart, and carefully read the **principles of the Unix Philosophy** we arrive at the following mantras: -### Storage of the Docker image + * **keep it simple** (KISS): + - --> don't create a program which can do everything! Split it up. Each component shall be **independent** and [Do one thing and do it well](https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well). Don't add diverging features into one component / program / config file. If it tries to do everything in one single config file, you missed a point. + - This also implies: if you need to modify the behaviour of the specific component, configure it independently + - --> Fewer lines of code are better + - --> document each component (bot) and show how it can be used with examples. Take a look at the structur of man pages. + - --> strengthen the review process of submissions: is that really the most easily understandable code for the task? + - no task / program is too trivial: take a look at the unix cat program. It's super versatile, yet simple. Think of adding many of these simple bots/programs/components. + * **interoperability and networking of programs**: + - the easiest and first interoperability mechanism is: **librarize everything first!**: + - If you have a new IntelMQ bot or expert, make a python library out of it, **which may/should/could be used independently** (note: this also solves #[972](https://github.com/certtools/intelmq/issues/972)). + - document this library in a standard fashion (i.e. readthedocs) + - give example code in the documentation (e.g. link back to source code in the IntelMQ framework / a bot, which uses this library) + - make this library available and installable via standard methods (e.g. pypi, pip install, conda) + - name this library ``pyIntelmq-*foo*`` + - next after releasing functionality of IntelMQ bots as a library, have a bot which uses this library. This bot now needs to get the data from somewhere and send it somewhere: + - allow for arbitrary but standardised interconnections (in the unix philosophy: pipes) + - --> in our case this calls for an abstracted message queue (pipes are linear[1](#fn_1)) + - --> allow for easy interconnection with other IntelMQ-like tools or other tools + * the easiest such solution is to allow for stdin, stdout connections between bots + * the next easiest solution is named pipes + * after this, go for message queues (resis, AMQP, Kafka, etc.) + * **documentation**: Unix has very well written man pages. These again focus on one program (or even on parts of a program) and one topic. (IntelMQ is missing this individual man pages approach per bot so far). + * **useability**: focus on useability (from the ETL coder's perspective) + - --> this nowadays means that it shall be easy to understand, extend, connect, embed IntelMQ **or individual bots without the whole IntelMQ framework** into your workflows. -Often, when deploying docker a relevant question arises: where is data stored? In our case, this is quite easy: - * most data stays in the MQ bus - * config data is on disk (in the docker image) - * DB is external of storage (as it is now with for example the postgresql-output) +If you think of some future architecture decisions or features: think about these aspects. -Using the docker template bot, a bot needs to connect to the provided software layers which interface the functionalities described above +## Consequences of these principles for IntelMQ 3.0 +### Terminology -### RESTful API requirements +Since IntelMQ's new networking requirements also ask for one-time runs with stdin, stdout connections (or arbitrary connections), IntelMQ "bots" become more like "programs" (as in unix programs or one time or periodically (cron) running programs) or more like "daemons" (as in background task which listens on network connections or message queues, names pipes, ... and answer a request). Expert bots fall under that latter category. - - * It must be well documented (OpenAPI specs) - * an example hello world with the API exists on GitHub +We therefore propose to rename an IntelMQ "bot" to "IntelMQ program" or "IntelMQ component". From now on through the rest of the document, will use this new terminology. Note that "bot" is the old term. - * The micoservice API MUST support - * basics: - * starting/stopping/reload/restarting/pausing a bot - * inspecting and setting it's runtime parameters of the bot - * getting version infos and meta-information on the bot + container - * especially a list of required input fields and produced output fields (-> introspection) +Similarly, we shall rename an IntelMQ "botnet" to "workflow". This is the more standardized nomenclature. - * tests: - * triggering a config test (bot intelmqctl configtest) --> are the runtime params OK, internal python bot config test. No connections are made - https:///api/v1/self-test/config-test - * triggering a connectivity test (i.e. can it send/receive data? connections to DBs) - Are all required connections (redis, DB, input / output of network ) ready? - https:///api/v1/self-test/connection-test +We shall rename the "DHO" (data harmonization ontology) to "internal data format" (IDF). - * triggering a self-test (unit-test) - python unit tests +The names "collector", "parser", "expert" and "output (program)" shall remain. - * triggering a system-test (i.e. does it get the data that it needs? can it do its task and can it send out the data that it sends out?) - actually check if it can/could get all the input fields it needs. This is a global test. The MS can send the field names it needs and the field names it produces. +### Relationship to microservices - * connectivity: - * API endpoints for configuring the pipeline of the bot as well as the MQ stack +Microservices provide a very nice web-based wrapping mechanism for IntelMQ programs and daemons. +Imagine an "expert" program which takes as input an IP address and returns the current ASN of this IP ([asn_lookup](https://github.com/certtools/intelmq/tree/develop/intelmq/bots/experts/asn_lookup)). With the library approach, it is trivial to write a microservices around this. +In addition, microservices allow IntelMQ to scale horizontally quite easily (--> see the chapter on scaling) - * operations specifics: - * an API endpoint to dump the current state of the bot to disk so that this container may be paused and migrated to a different system. --> TBD - * monitoring information (health check, alerts, data rates of the flows, error counters, etc) - * registering callbacks (or configuring the necessary infos) for a monitoring solution such as check_mk, nagios -(introspection) - * report (in the documentation) on the rough requirements on RAM, disk space, CPU load etc. - think base-line - * endpoints for configuring syslog flows (where should the bot send it to) - * Data freshness check is built-in (to be defined below) +Since the IntelMQ user-survey clearly revealed that docker/microservice approaches are OK, but should not be enforced on the IntelMQ user base, we there propose to go the "librarize" approach first, and as a second step to +wrap all IntelMQ daemons / programs into microservices. These are a CERT.at specific requirement for CERT.at's parent company. Hence these microservices shall reside in [CERT.at's github repository](http://github.com/certat/) or [nic.at's github repository](https://github.com/nic-at) only. These microservices **MUST** follow the nic.at microservice HOWTO. - * IAM / Authentication & Authorization - * If authentication is needed, a Bot SHOULD support OpenID connect on it's REST interface - * MAYBE also setting encryption settings on the M2M interface (the MQ) ? +One benefit of using the microservice / docker approach will be that each IntelMQ program/daemon wrapped in a docker container shall have an acompaning ``statusd`` daemon, which shall collect status information from the bot (i.e. flow rate of requests / sec, error rate, etc.) and report it via a standardized reporting / monitoring tool (such as prometheus). IntelMQ users of the microservice approach will profit from this monitoring approach. +In fact, this was the most important finding while doing interviews with multiple IntelMQ users. Currently, ``intelmqctl`` is used as a sort of control channel. however, it does not scale and it's not fast enough. It would make more sense to have a type of "``intelmq-statusd``" (daemon) process which does not need to be invoked for every query (as is the case with the command line intelmqctl script). The ``intelmq-statusd`` would povide a short and lean RESTful API to the outside world, which will manage signaling of the bot / botnet and be able to query a bot's or botnets' status. See the architecture diagram below. + + +![architecture of an IntelMQ 3.0 program](images/intelmq3.0-architecture.png) + + +### Documentation + + * Each IntelMQ library shall be documented (as described above) independently in its own read-the-docs site + * An intelMQ program / daemon shall have its own documentation (linking to the library which it uses) + * Tutorials: plenty of tutorials and sample workflows on how to get something done with IntelMQ 3.0 are needed. + * Each IntelMQ library and program shall have a named (email address is enough) maintainer. It MUST be part of the documentation. + * Create a documentation template for new IntelMQ programs. - * developer support - XXX ideas? XXX - * how can we expose / should we expose the debug method of the bot to the container? +### Networking +IntelMQ 3.0 shall support the following input / output channels / networks: -### Example RESTful API interface. + * stdin, stdout (especially for one-time runs) + * redis queues (to be precise: [redis lists](https://redis.io/topics/data-types) being used as FIFOs already) + * [redis streams](https://redis.io/topics/streams-intro) + * Apache Kafka + * RabbitMQ / AMQP + * Apache Pulsar +### Interoperability with CERT.pl's n6 system -We don't care which API framework you want to use (hug, fast api, flask, ...) -What we do care about is the RESTful API interface: -See https://github.com/gethvi/intelmq/blob/develop-api/docs/REST-API.md + IntelMQ 3.0 shall add a thin wrapper layer to wrap n6 programs. The goal is to be able to embedd n6 "bots" (programs) into an IntelMQ workflow. The other direction (embedding IntelMQ into n6) was already achieved by CERT.pl. + The wrapper mainly consists of a IDF to n6's internal format translation / mapping layer. See also the IDF section. + Since the new IDF shall support multiple values, mapping to n6 should be rather easy. +### Internal data format (IDF) -### An IntelMQ 3.0 docker-bot now consists of: +Note: formerly called ["DHO"](https://github.com/certtools/intelmq/blob/master/docs/Data-Harmonization.md) - 1. the IntelMQ bot per se (and corresponding libraries) - 2. the means to connect the container and bot to other containers/bots - * the means to instrument the data flowing in and -out (--> monitoring) - * the means to replace the connection / MQ stack (on a per bot / container level). - - * a standard test - * self-reporting to a central instance (orchestrator / registry) - * standardised logging - * standardised self-test - * integration into check_mk or other monitoring solution - * standardised REST-api for the bot (start, stop, status) - * status queries to the bot (health, number of events/sec, etc) - * test "would this botnet setup work?" / test if a bot in this pipeline could function (-- > introspection of what data is needed for the bot and what data it provides) - * docker scale it horizontally --> data processing bottlenecks? --> horizontal scaling should be a click of a button - * standardised way to self-update any external dependencies (maxmind, etc) & report alert if something goes wrong - * standardised alerting mechanism (--> check_mk for nic.at) +**Note: This is probably the change with the most impact.** +#### Reasons for the changes -### Data freshness +The previous philosophy of the (old) DHO format was: - * check if the needed databases (for example maxmind) is the latest version and download it if needed - * self-updates per se are *not* supported. Patching must be done from the outside. + - keep a flat log-line entry structure (just in JSON). + - allow for one sub level, separated by ".". For example a field name would be "source.ip" + - arbitrary (but not standardized) deeply nested data was possible in the ``extra`` JSON dict sub-field. For example: ``"extra": { "foo": "bar", "some-metric": 1.0 }`` +It turned out (and this was also the feedback from the survey) that this structure was not sufficient for + - interoperability with other tools such as CERT.pl's n6 or [Warden](https://www.cesnet.cz/sluzby/warden/) + - the subject at hand: i.e. most of the time, it's sufficient to talk about a single IP address, but sometimes one incident requires the sender to specify multiple IPs or domain names or other fields. -# Other features +#### General requirements -## MQ: Replaceable MQ & support for Kafka +The new IDF shall support (sorted) lists of IPs, domains, taxonomy categories, etc. +By convention the most relevant item in such a list MUST be the first item in the sorted list. -We will support Kafka as a MQ bus. Any other MQ buses which are urgently needed? +The IDF MUST be represented by a JSON schema which MUST reside in the intelmq repository. +The IDF MUST have a header, which in turn MUST contain a + - data format name (``IntelMQ-IDF``) + - a version number + - a source (emitter) tag -## Multiple data outputs +The IDF SHALL be user-expandable (see #[1315](https://github.com/certtools/intelmq/issues/1315)). This fits nicely into a sub-section within the JSON API ``data`` section. For example: ``data.custom.*``. -* Better support for ELK (Elastic Search, Logstash, Kibana) out of the box -* Better support for Splunk out of the box -* Cassandra output -* Output to IDS / IPS systems out of the box -* CSV output (as trivial as it might sound) -> often this is the best for data analysis -## Inputs -* Better support for handling sensor data: potentially high volume streams of honeypots or other sensors shall be easily connectable. +#### Format specifics -## n6 Interoperability +The IDF SHOULD follow the [JSON API specifications](https://jsonapi.org/format/). +**Within** the JSON API's ``data`` block, the field names SHALL conform to the [ECS](https://www.elastic.co/guide/en/ecs/current/ecs-field-reference.html) where possible. +Example: the field ``source.asn`` will be renamed to ECS's (source.)``as.number``. +The [ECS version number](https://www.elastic.co/guide/en/ecs/current/ecs-reference.html#_maturity) (``ecs.version``) shall be noted in the JSON API's ``meta`` field. - * Seamless interoperability with CERT Polska's n6 system - -## A new DHO version +If a field does not exist in the ECS, please follow ECS's official guidelines on how to map it: https://www.elastic.co/guide/en/ecs/current/ecs-reference.html#_my_events_dont_map_with_ecs (i.e. just write the field name, ECS is permissive). Please also see the [ECS migration guide](https://www.elastic.co/guide/en/ecs/current/ecs-converting.html) - * A vastly improved and extended internal format (DHO): we will support multiple values per key (think: key -> list or key -> dict). This is probably the change with the most impact. This task is highly dependant and basically the core of the n6<-> intelmq interoperability. - -A new DHO version implies that some old installations of IntelMQ might still expect the old format. There are multiple ways to address this. The easiest solution looks like to have dedicated hand over points: +The reasoning behind adopting ECS for IntelMQ 3.0 is + + - originally IntelMQ chose something inbetween Elastic Searches' format ("." separated fields) and Abusehelper's format. Now, in 2020, it's pretty clear which product gained traction: Elastic Search. + - being compatible with ECS is a big win for IntelMQ and ELK integration. + +A mapping table between the (old) DHO and the new IDF format shall be written. +This mapping table will allow for converter IntelMQ-programs between the old format and the new IDF. + +#### Example - * Support for handing over data via to other tools and/or CERTs via dedicated exchange points: these shall serve as the glue between different DHO format versions or between different data exchange formats (for example : n6 <-> DHO) - - This goes together with: - * transcoders and transformers - * a version field in a DHO event (for the new DHO version): if it is missing, it's an old DHO event. Example: - - ```json -{ "meta-data": { "version": 2.0, "created-at": "2020/5/1 12:00:00+0", "producer": "cert.at" }, "data": { ... } } +{ "meta": { "version": "3.1", "format-name": "intelmq", "created-at": "2020/5/1 12:00:00+0", "producer": "cert.at" }, "data": { ... } } ``` - * machine readable specs of the DHO 2.0 - * mapping of DHS 2.0 to other formats +### Logging + +This is already quite mature in IntelMQ 1.x and 2.x. No changes needed. + +### Run-modes and parallelization + +An IntelMQ program shall support at least two run-modes: + + - one-time run: + - here all data on the input side (stdin, network, message queue) shall be consumed or, + - *optionally*, at most *n* elements shall be consumed ( to be specified on the cmd line) + - such an intelMQ programm shall be call-able from the command line. Example: + ```bash + $ intelmq-shadowserver-collector --config /etc/intelmq/config.d/ss.conf --stop-after 1000 < input.txt + ``` + - daemon mode (continuous): + - this is pretty much the de-facto run mode of IntelMQ 2.x and 1.x: the daemon listens on some network connection or message queue (or named pipe) for input and processes it, one at a time. + - a **new feature here** is the support for automatic parallelization: by specifying the number of copies of the daemon, a user can create a "fan-out" parallelization on some given input queue. Example: + ```bash + $ intelmq-shadowserver-collector --daemon --config /etc/intelmq/config.d/ss.conf --processes 20 + ``` + This shall start 20 processes in parallel which take turns in processing the input queue. + +### Scalability + +If you combine the docker/containerization aspects and the ``--processes X`` option, you end up with a highly scalable solution. +(given that experts still refrain from doing online (network) lookups for every event). It is still highly advisable that experts shall fetch a local copy of some reference data set and do the lookup on this refernce data set locally. + + +### Configuration files + +Ticket # clearly lays out the need for a simplified configuration for IntelMQ 3.0. +The new configuration shall: + + * be on a per-program-basis (one config file per "bot"). The config files per programm shall reside in $base/etc/config.d/ and follow the common linux standards. + * the BOTS config file shall phase out (see #[1069](https://github.com/certtools/intelmq/issues/1069)). We won't need it. It's documentation or something which may reside in /usr/share/docs/intelmq or /var/lib/intelmq. + * config language: JSON proved to be the wrong choice for representing complex configurations. We propose YAML. + * support for variables (templating) in the config files. For example via Jina2. See #[1026](https://github.com/certtools/intelmq/issues/1026). Templating is a very relevant connection possibility between containers (and multiple instances) and a config: variables may be passed via ENV vars and instantiated as a configuration. + * rendering of templates / instantiating: ``intelmqctl config-render``: this shall create an instantiated template with the values of the variables + * configtest: there shall be (as is the case with IntelMQ 2.x) a ``intelmqctl configtest`` check + * converter: there shall be a converter between old and new config format. + +Runtime graph: + + * there shall be a ``intelmq connectiontest`` check which checks if all programs are connected + * there shall be a ``intelmq fieldcheck`` test which checks if all the fields needed "downstream" by a program are filled in "upstream" -## Verifiers - - * Adding the concept of verifies: think of these as expert bots which can verify a claim made in the DHO event. Example: the event talks about a webserver having an outdated SSL setting (Poodle vuln for example): the verified (if enabled!) should be able to reach out to the server and confirm the claim. This may be the basis for some kind of confidence score for the claim made in the event. - - * and of course: more data feeds supported. See for example https://github.com/gethvi/intelmq/blob/develop/docs/Feeds-whishlist.md - - -## Transcoders -A new class of bots. -Convert one code page to another -Should input arrive in a certain code page, a transcoder can trivially convert it to for example utf-8 +# IntelMQ-programs - improvements +## General principles -## Transformers +Each IntelMQ program (or -daemon) shall: -new class of bots: transform one data format (e.g. DHO) to another one (e.g. IDEA) or n6 <-> DHO + * have a self-test command which shall trigger a python unit test: ```$ intelmq-shadowserver-collector --self-test``. This functionality is bascially already there + * have a self-update-db command, which shall pull any updates of reference databases in: ```$ intelmq-geoip-expert --self-update-db``. In most programs (except the experts, this will be a NOP). + * all programs shall have specific configuration options for specifying input and output queues and input and output queue types (stdin/stdout, pipes, message queuing systems, etc.). In other words: each IntelMQ program may send and receive to different MQs, files, pipes, sockets etc. -## Outputs: Really good out of the box support for ELK and Splunk +## Collectors -See for example the previous work by https://github.com/gethvi/intelmq/blob/develop/docs/ELK-Stack.md +Here we are already quite strong: we have lots of collectors (data importers). STIX 2.x is still missing. +Should we get bored, here is a wish list of inputs: https://github.com/gethvi/intelmq/blob/develop/docs/Feeds-whishlist.md. +## (New) Transcoders -## Internal code: more modern python version with typing. Typing and type hints support in all of the code base +This class of programs (bots) simply takes the data on its input side, transcodes it (e.g. utf-16 to latin1) and passes it on. -* mostly done. The core already supports the most important functions. +## (New) Converters -## n6 interoperability +This class of programs (bots) simply converts one format to IDF and vice versa. Example: n6 to IDF. +This functionality mostly exists already. It's just that we are giving this functionality its own class. -It should be possible to run an n6 bot within an intelMQ botnet setup and vice versa. +## (New) Verfiers +(This is optional) +We COULD be adding the concept of verifies: think of these as expert bots which can verify a claim made in the IDF event. Example: the event talks about a webserver having an outdated SSL setting (Poodle vuln for example): the verified (if enabled) should be able to reach out to the server and confirm the claim. This may be the basis for some kind of confidence score for the claim made in the event. -## domain based workflow +## Parsers -Currently, most of the workflows for IntelMQ address number based processing (e.g. IP addresses). -However, name based workflows (domain names) often have slightly different requirements. For example: URL of a hacked web page -> it would be good to create a screenshot of the hacked web page in order to show it to the web page operator, so that he understands what happened to his/her web page. This task will address these requirements. +Can mostly stay the same. Again, the general principle of librarize everything applies especially here. -## portal-integration? +## Experts -Minimal: re-inspect the contactdb expert. + * have the new ``--self-update-db`` feature. + * experts will mostly profit from the possibility to be embedded in a microservice or for being used as a library. +## Output + * Stronger (more built-in) support for Elastic Search will be implicitly available via the new IDF. + * Better tested ELK support (--> build a scenario where sending to ELK is a CI/CD test which must be passed). + * Cassandra output should be added + * Better support for Splunk out of the box (same as with ELK) + * Generic CSV writer -TODOs Aaron -============= -* add pics / better explanations -* post to IHAP and intelmq-users/+dev -TODOs sebix -=========== -* cross check with CEF proposal +# Footnotes +1. 1: There are tricks to make unix pipes suport arbitrary (directed acyclical) graphs. e.g. tee >(process1) >(process2) .... But this easily gets quite complex. From ca14290d14764c92e0bad4baf8590e01c37fab96 Mon Sep 17 00:00:00 2001 From: aaronkaplan Date: Mon, 2 Nov 2020 22:36:33 +0100 Subject: [PATCH 24/27] add version for @wagnercertat 's priorisation task --- .gitignore | 3 + docs/architecture-3.0.md | 310 +++++++++++++++++++++++++++++++-------- 2 files changed, 250 insertions(+), 63 deletions(-) mode change 100644 => 100755 docs/architecture-3.0.md diff --git a/.gitignore b/.gitignore index 822ab1528..fc44e0b77 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,6 @@ debian/intelmq.prerm.debhelper debian/intelmq.substvars debian/intelmq/ /.pc/* + +docs/architecture-3.0.pdf +docs/architecture-3.0.docx diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md old mode 100644 new mode 100755 index dea4d8472..292a15cc4 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -2,86 +2,127 @@ Author: Aaron Kaplan +Version: 0.8 + + # Scope The following architecture document addresses - * an architecture discussion for IntelMQ 3.x. This version should be seen as a re-alignment on IntelMQ's core principles which got lost over the last years due to feature creep + * an architecture discussion for IntelMQ 3.x. This version should be seen as a re-alignment on IntelMQ's core + principles which got lost over the last years due to feature creep * making IntelMQ 3.x interoperable with CERT.pl's n6 system # Non-Scope -This document will not list the individual, detailed steps which need to be taken to achieve these goals. The steps will be outlined in individual issues on github and tagged "intelmq3.0". +This document will not list the individual, detailed steps which need to be taken to achieve these goals. +This is a high-level overview document. The detailed, individual steps will be specified as individual +issues on github and tagged ``intelmq3.0``. # Motivation & Introduction -IntelMQ was created as a viable, easier alternative to Abusehelper roughly 2014/2013. -At this time, the fathers of IntelMQ (Tomas Lima, back then CERT.pt, Aaron Kaplan, CERT.at) focused on easy to understand code ("KISS principle") and open source. +IntelMQ was created as a viable, easier alternative to AbuseHelper roughly 2014/2013. +At this time, the fathers of IntelMQ (Tomas Lima, back then CERT.pt, Aaron Kaplan, CERT.at) focused on +easy to understand code ("KISS principle") and open source. In the mean time, IntelMQ became a de-facto standard for automatic incident handling for many European CERTs. - -However, the success also resulted lots of feature creep, complex and harder to understand code and it also resulted in IntelMQ being used in contexts which were not anticipated. Also, running a production instance of IntelMQ gave us new requirements - mainly from the side of running it within a corporation or larger team where the operations of systems is a separated organisational unit from the development side. -In addition, as more teams started to use IntelMQ, weaknesses with respect to user-friendliness became apparent. This became especially apparent at user-trainings (at TF-CSIRTs, etc.), which clearly show that many of IntelMQ's 2.x features are totally non-intuitive. -You would not guess that the system can do X if you did not read the source code. This is mainly due to the fact that IntelMQ 2.x and large parts of 1.x were developed by one single core developer and were not discussed enough in a wider user group. - -The way out of this dilemma (and out of feature creep) is to focus on a) simplicity (i.e. **reduce complexity**, **follow a unix philosophy**) and b) standardised procedures which are now (as of 2020) common in the field (with plenty of examples of data-flow oriented architectures to copy from). - -In short, IntelMQ needs to support more standard processes which can be found in regular IT operations: microservices, monitoring & alerting, central logging & control, scalability sizing, containerisation etc. It also needs to behave more as expected / **"turn-key" out of the box**. +This success also resulted in more code, feature creep, some complex and harder to understand code and it also +resulted in IntelMQ being used in contexts which were not anticipated. In addition, running a production instance +of IntelMQ gave us new requirements - mainly from the side of running it within a corporation or larger team where +the operations of systems is a separated organisational unit from the development side. +Finally, as more teams started to use IntelMQ, weaknesses with respect to user-friendliness became visible. +This became especially apparent at user-trainings (at TF-CSIRTs, etc.), which clearly show that many of +IntelMQ's 2.x features are totally non-intuitive. +Often, from a user's perspective, it was not clear that a feature was present unless you read the source code or +followed all of the development stream. This is mainly due to the fact +that IntelMQ 2.x and large parts of 1.x were developed by one single core developer and were not discussed enough +in a wider user group. + +The way out of this dilemma (and out of feature creep) is to focus on + + - a) simplicity (i.e. **reduce complexity**, **follow a unix philosophy**) and + - b) standardised procedures which are now (as of 2020) common in the field (with plenty of examples of data-flow + oriented architectures to copy from). + +In short, IntelMQ needs to **support more standard processes** which can be found in regular IT operations: +microservices, monitoring & alerting, central logging & control, scalability sizing, containerisation etc. +It also needs to behave more as expected / **"turn-key" out of the box**. It needs to orient itself at other (larger) standard tools (such as Elastic Search), which show how it's done. -This can be achieved by integrating it better with the existing most commonly used operations tools that teams use (e.g. centralized monitoring and alerting, etc). Cross connecting IntelMQ instances for automatic data exchanges as well as the planned IntelMQ-to-n6 interoperatibility adds new requirements. +This can be achieved by integrating it better with the existing most commonly used operations tools that teams +use (e.g. centralized monitoring and alerting, etc). Cross connecting IntelMQ instances for automatic data +exchanges as well as the planned IntelMQ-to-n6 interoperability adds new requirements. -The main point however is: **IntelMQ needs to be more user-friendly!** and **fullfill the user's default expectations**. +The main point however is: **IntelMQ needs to be more user-friendly** and **fulfill the user's default expectations**. Hence the following document shall lay out the architectural foundations for an IntelMQ 3.0 release. +This document shall also propose a governance mechanism for the community-driven IntelMQ project. + The following proposal shall address these issues and is meant as a basis for discussion with the IntelMQ users. If something is missing from the list, if something is not important at all or very important, etc. please let us know. We are happy to receive your feedback. +**Why we need this document** + +The main benefit of this document shall be that: + 1. we have a roadmap for IntelMQ 3.0 and beyond. This roadmap shall ensure that IntelMQ stays relevant for the future. + 2. that we start some formal community-formation around IntelMQ which will give the project a much longer life compared to + when it is "only" maintained at CERT.at + 3. we have a basis for discussion on how the project shall move forward for the whole community of IntelMQ users + and developers. + Aaron Kaplan - IntelMQ 3.0 Architecture. - +, # Overall architecture of IntelMQ 3.0 & the soul of IntelMQ -The overall architecture of IntelMQ 3.0 will remain rather similar to version 2.x (i.e. we will still have a data-flow oriented architecture, "bots" and "botnets"). But we plan to have a few important changes, which will emphasize the "soul" of IntelMQ. +The overall architecture of IntelMQ 3.0 will remain rather similar to version 2.x (i.e. we will still have a +data-flow oriented architecture, "bots" and "botnets"). But we plan to have a few important changes, which will +emphasize the "soul" of IntelMQ. ## The soul of IntelMQ -IntelMQ is good for a specific purpose. It is: +**Note**: the following section is a recap of what the original inventors had in mind and why IntelMQ exists. + +IntelMQ was invented and is good for a **specific purpose**. It is: * An **[ETL](https://en.wikipedia.org/wiki/Extract,_transform,_load) (Extract Transform Load) tool** for * **[IoCs](https://en.wikipedia.org/wiki/Indicator_of_compromise)** and **IT security relevant events** (i.e. IT security log lines which contain a timestamp, IPs or domain names and context information) - * a set of tools which are composable and follow the **[Unix Philosophy](https://en.wikipedia.org/wiki/Unix_philosophy)** + * a set of libraries and tools which are composable and roughly follow the **[Unix Philosophy](https://en.wikipedia.org/wiki/Unix_philosophy)** IntelMQ was **not** meant to be a tool for: * general Threat Intelligence correlation and - pivoting (c.f. [MISP](https://www.misp-project.org)) * a general solution for processing arbitrary streams of logs (see Splunk, ELK, etc.) - IntelMQ focuses on a typical log lines for IT security purposes only (that is - timestamp, IPs or domain names, context information) +There are many data-flow oriented architectures (by now) which do similar things to IntelMQ. However, +to the best of our knowledge none (except for AbuseHelper) focuses on IoCs and CSIRTs. So this separates IntelMQ +from more generic data-flow oriented architectures such as Airflow, Kafka, Apache Pulsar etc. +(now, in 2020, it will be important to **connect** to these other systems). -To focus more deeply on this topic, we should first review aspects of the Unix philosophy: +Let us dig deeper into this topic the foundations of IntelMQ, but first, we should review aspects of the Unix philosophy: >In their preface to the 1984 book, The UNIX Programming Environment, Brian Kernighan and Rob Pike, both from Bell Labs, give a brief description of the Unix design and the Unix philosophy: >> *"Even though the UNIX system introduces a number of innovative programs and techniques, no single program or idea makes it work well. Instead, what makes it effective is the approach to programming, a philosophy of using the computer. Although that philosophy can't be written down in a single sentence, at its heart is the idea that the power of a system comes more from the relationships among programs than from the programs themselves. Many UNIX programs do quite trivial things in isolation, but, combined with other programs, become general and useful tools."* (Source: [Wikipedia](https://en.wikipedia.org/wiki/Unix_philosophy#The_UNIX_Programming_Environment)) -Next, let's look at the specific purposes listed above: +Next, let's look at the specific purposes and use-cases listed above: * **ETL**: as an ETL user, I want something which can - - go over large amounts of data in parallel - - save the complex parsing and validation work for me + - go over large amounts of data possibly in parallel + - do the complex parsing and validation work for me - filter out rows which are unusable (but keep them somewhere for re-runs) - - ideally both a (python) library which does that and a command line tool - - map input fields to IDF (see the IDF section) + - ideally be used as both a (python) library which does that and as a command line tool + - map input fields to IDF ("Internal Data Format", see the IDF section) - allow for plugging in arbitrary transformations (-> experts and output programs in our case) - load the data into some other system (-> output programs: postgresql, Elastic Search, Splunk, etc.) - be automated, once I am sure I can run through the data safely every time * **IoCs**: IntelMQ MUST support the most common IoC / it security logs which CERTs encounter: shadowserver, team cymru, etc. etc. - One format that IntelMQ does not support yet, is STIS 2.x (input). It is widely used by many tools. We should support it. + One format that IntelMQ does not support yet, is STIX 2.x (input). It is widely used by many tools. We should support it. In general, with IoCs on the input side, IntelMQ 1.x and 2.x are already very solid. There is a strong foundation on which to build. Very little needs to be changed here for IntelMQ 3.0 * **composable tools**: here, IntelMQ 3.0 needs to do better. Let's expand this in the next paragraphs. @@ -91,26 +132,27 @@ If we take the core ideas of IntelMQ to heart, and carefully read the **principl * **keep it simple** (KISS): - --> don't create a program which can do everything! Split it up. Each component shall be **independent** and [Do one thing and do it well](https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well). Don't add diverging features into one component / program / config file. If it tries to do everything in one single config file, you missed a point. - This also implies: if you need to modify the behaviour of the specific component, configure it independently - - --> Fewer lines of code are better - - --> document each component (bot) and show how it can be used with examples. Take a look at the structur of man pages. + - if the program needs to do variations of its job, use command line parameters (config options) + - --> Fewer lines of code are better (if it still gets the job done) + - --> document each component (bot) and show how it can be used with examples. Take a look at the structure of man pages. - --> strengthen the review process of submissions: is that really the most easily understandable code for the task? - no task / program is too trivial: take a look at the unix cat program. It's super versatile, yet simple. Think of adding many of these simple bots/programs/components. * **interoperability and networking of programs**: - - the easiest and first interoperability mechanism is: **librarize everything first!**: + - the easiest and first interoperability mechanism is: **"librarize" everything first!**: - If you have a new IntelMQ bot or expert, make a python library out of it, **which may/should/could be used independently** (note: this also solves #[972](https://github.com/certtools/intelmq/issues/972)). - document this library in a standard fashion (i.e. readthedocs) - give example code in the documentation (e.g. link back to source code in the IntelMQ framework / a bot, which uses this library) - make this library available and installable via standard methods (e.g. pypi, pip install, conda) - name this library ``pyIntelmq-*foo*`` - next after releasing functionality of IntelMQ bots as a library, have a bot which uses this library. This bot now needs to get the data from somewhere and send it somewhere: - - allow for arbitrary but standardised interconnections (in the unix philosophy: pipes) + - allow for arbitrary but standardized interconnections (in the unix philosophy: pipes) - --> in our case this calls for an abstracted message queue (pipes are linear[1](#fn_1)) - --> allow for easy interconnection with other IntelMQ-like tools or other tools * the easiest such solution is to allow for stdin, stdout connections between bots * the next easiest solution is named pipes - * after this, go for message queues (resis, AMQP, Kafka, etc.) + * after this, go for message queues (redis, AMQP, Kafka, etc.) * **documentation**: Unix has very well written man pages. These again focus on one program (or even on parts of a program) and one topic. (IntelMQ is missing this individual man pages approach per bot so far). - * **useability**: focus on useability (from the ETL coder's perspective) + * **usability**: focus on usability (from the ETL coder's perspective) - --> this nowadays means that it shall be easy to understand, extend, connect, embed IntelMQ **or individual bots without the whole IntelMQ framework** into your workflows. @@ -123,7 +165,7 @@ If you think of some future architecture decisions or features: think about thes Since IntelMQ's new networking requirements also ask for one-time runs with stdin, stdout connections (or arbitrary connections), IntelMQ "bots" become more like "programs" (as in unix programs or one time or periodically (cron) running programs) or more like "daemons" (as in background task which listens on network connections or message queues, names pipes, ... and answer a request). Expert bots fall under that latter category. -We therefore propose to rename an IntelMQ "bot" to "IntelMQ program" or "IntelMQ component". From now on through the rest of the document, will use this new terminology. Note that "bot" is the old term. +We therefore propose to rename an IntelMQ "bot" to "IntelMQ worker" or "IntelMQ component". From now on through the rest of the document, will use this new terminology. Note that "bot" is the old term. Similarly, we shall rename an IntelMQ "botnet" to "workflow". This is the more standardized nomenclature. @@ -139,23 +181,52 @@ Imagine an "expert" program which takes as input an IP address and returns the c In addition, microservices allow IntelMQ to scale horizontally quite easily (--> see the chapter on scaling) -Since the IntelMQ user-survey clearly revealed that docker/microservice approaches are OK, but should not be enforced on the IntelMQ user base, we there propose to go the "librarize" approach first, and as a second step to -wrap all IntelMQ daemons / programs into microservices. These are a CERT.at specific requirement for CERT.at's parent company. Hence these microservices shall reside in [CERT.at's github repository](http://github.com/certat/) or [nic.at's github repository](https://github.com/nic-at) only. These microservices **MUST** follow the nic.at microservice HOWTO. - -One benefit of using the microservice / docker approach will be that each IntelMQ program/daemon wrapped in a docker container shall have an acompaning ``statusd`` daemon, which shall collect status information from the bot (i.e. flow rate of requests / sec, error rate, etc.) and report it via a standardized reporting / monitoring tool (such as prometheus). IntelMQ users of the microservice approach will profit from this monitoring approach. -In fact, this was the most important finding while doing interviews with multiple IntelMQ users. Currently, ``intelmqctl`` is used as a sort of control channel. however, it does not scale and it's not fast enough. It would make more sense to have a type of "``intelmq-statusd``" (daemon) process which does not need to be invoked for every query (as is the case with the command line intelmqctl script). The ``intelmq-statusd`` would povide a short and lean RESTful API to the outside world, which will manage signaling of the bot / botnet and be able to query a bot's or botnets' status. See the architecture diagram below. +Since the IntelMQ user-survey clearly revealed that docker/microservice approaches are OK, but should not be +enforced on the IntelMQ user base, we therefore propose to go the "librarize" approach first, and as a second +step to wrap all IntelMQ daemons / programs into microservices. These are a CERT.at specific requirement for +CERT.at's parent company. Hence these microservices shall reside in +[CERT.at's github repository](http://github.com/certat/) or +[nic.at's github repository](https://github.com/nic-at) only. +These microservices **MUST** follow the nic.at microservice HOWTO. + +One benefit of using the microservice / docker approach will be that each IntelMQ program/daemon wrapped in a +docker container shall have an accompanying ``statusd`` daemon, which shall collect status information from the +bot (i.e. flow rate of requests / sec, error rate, etc.) and report it via a standardized reporting / monitoring +tool (such as prometheus). IntelMQ users of the microservice approach will profit from this monitoring approach. +In fact, this was the most important finding while doing interviews with multiple IntelMQ users. Currently, +``intelmqctl`` is used as a sort of control channel. however, it does not scale and it's not fast enough. It +would make more sense to have a type of "``intelmq-statusd``" (daemon) process which does not need to be invoked +for every query (as is the case with the command line intelmqctl script). The ``intelmq-statusd`` would povide a +short and lean RESTful API to the outside world, which will manage signaling of the bot / botnet and be able to +query a bot's or botnets' status. See the architecture diagram below. ![architecture of an IntelMQ 3.0 program](images/intelmq3.0-architecture.png) +### Relationship to an "IntelMQ API" + +Issue #[1424](https://github.com/certtools/intelmq/issues/1424) proposes an API for IntelMQ. This idea has been +around for some time already before and it definitely would be an interesting addition. +We propose to first create a simple HTTP(s) microservice API for each individual microservice (as described above). +Next, in a minor version after 3.0 we shall consider creating an API which covers the whole work flow. +This extension will be rather easy when the individual microservice API is working. + +The individual microservice API shall cover all the basic commands which ``intelmqctl`` offers for a single bot. + +For IntelMQ 3.0 we should first compare against the new ``intelmq-manager`` (the proposal and development of Intevation) first +before the API gets (re-) invented. + ### Documentation - * Each IntelMQ library shall be documented (as described above) independently in its own read-the-docs site + * Each IntelMQ library shall be documented (as described above) independently in its own read-the-docs site and/or man page. * An intelMQ program / daemon shall have its own documentation (linking to the library which it uses) * Tutorials: plenty of tutorials and sample workflows on how to get something done with IntelMQ 3.0 are needed. - * Each IntelMQ library and program shall have a named (email address is enough) maintainer. It MUST be part of the documentation. + * Each IntelMQ library and program shall have a named (email address is enough) maintainer. It MUST be part of + the documentation. * Create a documentation template for new IntelMQ programs. + * Licenses: ensure correct licensing information exists for every component (c.f. tools by the FSF & co.) + ### Networking @@ -170,24 +241,28 @@ IntelMQ 3.0 shall support the following input / output channels / networks: ### Interoperability with CERT.pl's n6 system - IntelMQ 3.0 shall add a thin wrapper layer to wrap n6 programs. The goal is to be able to embedd n6 "bots" (programs) into an IntelMQ workflow. The other direction (embedding IntelMQ into n6) was already achieved by CERT.pl. - The wrapper mainly consists of a IDF to n6's internal format translation / mapping layer. See also the IDF section. - Since the new IDF shall support multiple values, mapping to n6 should be rather easy. +IntelMQ 3.0 shall add a thin wrapper layer to wrap n6 programs. The goal is to be able to embed n6 "bots" +(programs) into an IntelMQ workflow. The other direction (embedding IntelMQ into n6) was already achieved by +CERT.pl. The wrapper mainly consists of a IDF to n6's internal format translation / mapping layer. See also the +IDF section. Since the new IDF shall support multiple values, mapping to n6 should be rather easy. ### Internal data format (IDF) Note: formerly called ["DHO"](https://github.com/certtools/intelmq/blob/master/docs/Data-Harmonization.md) -**Note: This is probably the change with the most impact.** +**Note: This is probably the change with the most impact. It will need special attention.** #### Reasons for the changes The previous philosophy of the (old) DHO format was: - - keep a flat log-line entry structure (just in JSON). + - keep a flat log-line entry structure (flat, but just in JSON). - allow for one sub level, separated by ".". For example a field name would be "source.ip" - - arbitrary (but not standardized) deeply nested data was possible in the ``extra`` JSON dict sub-field. For example: ``"extra": { "foo": "bar", "some-metric": 1.0 }`` + - arbitrary (but not standardized) deeply nested data was possible in the ``extra`` JSON dict sub-field. For example: ``"extra": { "foo": "bar", "some-metric": 1.0 }`` (which +got mapped to "extra.foo" internally) + + It turned out (and this was also the feedback from the survey) that this structure was not sufficient for @@ -196,15 +271,21 @@ It turned out (and this was also the feedback from the survey) that this structu #### General requirements -The new IDF shall support (sorted) lists of IPs, domains, taxonomy categories, etc. -By convention the most relevant item in such a list MUST be the first item in the sorted list. +The new IDF shall support + - (sorted) lists of IPs, domains, taxonomy categories, etc. + By convention the most relevant item in such a list MUST be the first item in the sorted list. + - a ``meta`` field (which describe the IDF version. See below) + - packing multiple events (log lines) into one "packet" (i.e. one ``meta:`` field, ``data`` + becomes an array of events). See issue #[1541](https://github.com/certtools/intelmq/issues/1541). + The IDF MUST be represented by a JSON schema which MUST reside in the intelmq repository. -The IDF MUST have a header, which in turn MUST contain a +The IDF ``meta`` field MUST exist and is a header, which in turn MUST contain a - data format name (``IntelMQ-IDF``) - a version number - - a source (emitter) tag + - a link to the format description (URL) + - a source (emitter) tag (a unique string) - think UUID The IDF SHALL be user-expandable (see #[1315](https://github.com/certtools/intelmq/issues/1315)). This fits nicely into a sub-section within the JSON API ``data`` section. For example: ``data.custom.*``. @@ -212,11 +293,15 @@ The IDF SHALL be user-expandable (see #[1315](https://github.com/certtools/intel #### Format specifics The IDF SHOULD follow the [JSON API specifications](https://jsonapi.org/format/). + **Within** the JSON API's ``data`` block, the field names SHALL conform to the [ECS](https://www.elastic.co/guide/en/ecs/current/ecs-field-reference.html) where possible. Example: the field ``source.asn`` will be renamed to ECS's (source.)``as.number``. The [ECS version number](https://www.elastic.co/guide/en/ecs/current/ecs-reference.html#_maturity) (``ecs.version``) shall be noted in the JSON API's ``meta`` field. -If a field does not exist in the ECS, please follow ECS's official guidelines on how to map it: https://www.elastic.co/guide/en/ecs/current/ecs-reference.html#_my_events_dont_map_with_ecs (i.e. just write the field name, ECS is permissive). Please also see the [ECS migration guide](https://www.elastic.co/guide/en/ecs/current/ecs-converting.html) +If a field does not exist in the ECS, please follow ECS's official guidelines on +how to map it: +https://www.elastic.co/guide/en/ecs/current/ecs-reference.html#_my_events_dont_map_with_ecs (i.e. just write the field name, ECS is permissive). Please also see the [ECS migration guide](https://www.elastic.co/guide/en/ecs/current/ecs-converting.html) + The reasoning behind adopting ECS for IntelMQ 3.0 is @@ -229,10 +314,19 @@ This mapping table will allow for converter IntelMQ-programs between the old for #### Example ```json -{ "meta": { "version": "3.1", "format-name": "intelmq", "created-at": "2020/5/1 12:00:00+0", "producer": "cert.at" }, "data": { ... } } +{ "meta": + { "version": "3.1", + "format-name": "intelmq", + "url": "https://github.com/certtools/intelmq/docs/IDF-format.3.1.md", + "created-at": "2020/5/1 12:00:00+0", + "producer": "cert.at" }, + "data": [ { dict...}, {dict ...},... ] +} ``` + + ### Logging This is already quite mature in IntelMQ 1.x and 2.x. No changes needed. @@ -264,10 +358,12 @@ If you combine the docker/containerization aspects and the ``--processes X`` opt ### Configuration files -Ticket # clearly lays out the need for a simplified configuration for IntelMQ 3.0. +First of all, we need to get rid of the BOTS file. See issues #[1543](https://github.com/certtools/intelmq/issues/1543)/ + +Ticket #[570](https://github.com/certtools/intelmq/issues/570) clearly lays out the need for a simplified configuration for IntelMQ 3.0. The new configuration shall: - * be on a per-program-basis (one config file per "bot"). The config files per programm shall reside in $base/etc/config.d/ and follow the common linux standards. + * be on a per-program-basis (one config file per "bot"). The config files per program shall reside in $base/etc/config.d/ and follow the common linux standards. * the BOTS config file shall phase out (see #[1069](https://github.com/certtools/intelmq/issues/1069)). We won't need it. It's documentation or something which may reside in /usr/share/docs/intelmq or /var/lib/intelmq. * config language: JSON proved to be the wrong choice for representing complex configurations. We propose YAML. * support for variables (templating) in the config files. For example via Jina2. See #[1026](https://github.com/certtools/intelmq/issues/1026). Templating is a very relevant connection possibility between containers (and multiple instances) and a config: variables may be passed via ENV vars and instantiated as a configuration. @@ -280,6 +376,58 @@ Runtime graph: * there shall be a ``intelmq connectiontest`` check which checks if all programs are connected * there shall be a ``intelmq fieldcheck`` test which checks if all the fields needed "downstream" by a program are filled in "upstream" +### domain oriented workflows + +Currently, as of IntelMQ 2.x we are mostly focussing on number based (i.e. IP addresses) based workflows. +For example: IP address 1.2.3.4 was infected with malware of type XY at timestamp 1st of January 2020 00:00 UTC +according to shadowserver. +This leaves out all the workflows which are name-based. This includes phishing URLs, screenshots of hacked (defaced) +web pages, etc. +Name based workflows have slightly different requirements. +The most notable difference is the question whom to contact. And in fact, this depends heavily on the type +of incident. Defacements should usually be sent to the domain owner. However, if it's mass-defacement (i.e. all +domains on the same IP address have the same defacement), then probably it should be primarily sent to the hoster + +For a detailed description of this problem, please refer to [RIPE-658](ftp://ftp.ripe.net/ripe/docs/ripe-658.pdf). + +The main requirements for IntelMQ 3.0 for domain oriented workflows are: + + * possibility to interface a screenshotting service which offers a permalink URL to the screenshot (--> addition to the IDF). + See also issue #[1048](https://github.com/certtools/intelmq/issues/1048). + * verifier bot to check if a domain is still online issue #[1047]. + * verifier bot, if a website (still) contains a certain text + * documentation on the contact email address lookups for domains: when to use which approach. + * proper tldextraction (``import tldextract``) and splitting of fqdn, base domain name and tld. + * new expert: which CERT is "responsible" for a TLD lookup + + +# Community management and community support + +IntelMQ was founded by Aaron Kaplan (CERT.at) and Tomas Lima (back then CERT.pt), with the first version of the +IntelMQ manager written by Mauro Silva (also back then CERT.pt). + +Over the years IntelMQ developed into a well known "brand"/standard for automatically (pre-)processing incident +reports / IT security log lines. It is widely used (we estimate that at the time of this writing, there are +at least 600 installations globally) and there is wide interest by the CSIRTs as well as SOCs community. +IntelMQ was **always** an open source, community project. + +However, reality has shown us, that a lot of the maintenance was done exclusively at CERT.at by one single developer. +And he would not be unhappy about additional help and support. + +We therefore propose the hand over the IntelMQ development to either an open source foundation for further development +or to strengthen the community and allow the community to have more of say for future IntelMQ versions. +Note that the community is diverse and it will not be enough to hand it over to the CSIRTs Networks Tooling Group, +since this would be a closed group (and IntelMQ's developer and user base is bigger). +Another option would be to open up the [IHAP group](https://www.enisa.europa.eu/topics/csirt-cert-services/community-projects/incident-handling-automation) and hand over +IntelMQ development to the IHAP group. + +In any case, officially handing over IntelMQ to a community with a strong community spirit will ensure the +stable continuation of the project in the spirit of the common good for the CSIRTs. + + +We propose to hold a discussion on this topic on the IHAP list as well as the intelMQ users and -developers list and set a deadline +for the decision and then follow up with the decision. + # IntelMQ-programs - improvements @@ -288,29 +436,49 @@ Runtime graph: Each IntelMQ program (or -daemon) shall: - * have a self-test command which shall trigger a python unit test: ```$ intelmq-shadowserver-collector --self-test``. This functionality is bascially already there - * have a self-update-db command, which shall pull any updates of reference databases in: ```$ intelmq-geoip-expert --self-update-db``. In most programs (except the experts, this will be a NOP). + * have a self-test command which shall trigger a python unit test: ``$ intelmq-shadowserver-collector --self-test``. This functionality is bascially already there + * have a self-update-db command, which shall pull any updates of reference databases in: ``$ intelmq-geoip-expert --self-update-db``. In most programs (except the experts, this will be a NOP). * all programs shall have specific configuration options for specifying input and output queues and input and output queue types (stdin/stdout, pipes, message queuing systems, etc.). In other words: each IntelMQ program may send and receive to different MQs, files, pipes, sockets etc. ## Collectors Here we are already quite strong: we have lots of collectors (data importers). STIX 2.x is still missing. -Should we get bored, here is a wish list of inputs: https://github.com/gethvi/intelmq/blob/develop/docs/Feeds-whishlist.md. +Should we get bored, here is a wish list of inputs: https://github.com/certtools/intelmq/blob/develop/docs/Feeds-whishlist.md. + +XXX @sebix: please also add the issues & milestone more bots feeds XXX ## (New) Transcoders +(very optional) + +By default, JSON MUST be encoded in UTF-8 (see [RFC8259](https://tools.ietf.org/html/rfc8259)). However this does not automatically mean that +everyone will follow the requirements and send data as UTF-8. + This class of programs (bots) simply takes the data on its input side, transcodes it (e.g. utf-16 to latin1) and passes it on. +We might consider, making this a generic property of a parser. TBD. + + ## (New) Converters +(optional, since it's often already implemented in the parsers) + This class of programs (bots) simply converts one format to IDF and vice versa. Example: n6 to IDF. This functionality mostly exists already. It's just that we are giving this functionality its own class. -## (New) Verfiers +Converters might be needed for handling different versions of the IDF. Or this might be done implicitly: if a IDF header is present, +we can derive the IDF version. If it's not present, then it's an old DHO format. + + + +## (New) Verifiers (This is optional) -We COULD be adding the concept of verifies: think of these as expert bots which can verify a claim made in the IDF event. Example: the event talks about a webserver having an outdated SSL setting (Poodle vuln for example): the verified (if enabled) should be able to reach out to the server and confirm the claim. This may be the basis for some kind of confidence score for the claim made in the event. +We COULD be adding the concept of verifiers: think of these as expert bots which can verify a claim made in the +IDF event. Example: the event talks about a webserver having an outdated SSL setting (Poodle vuln for example): +the verifier (if enabled) should be able to reach out to the server and confirm the claim. This may be the +basis for some kind of confidence score for the claim made in the event. ## Parsers @@ -324,17 +492,33 @@ Can mostly stay the same. Again, the general principle of librarize everything a ## Output * Stronger (more built-in) support for Elastic Search will be implicitly available via the new IDF. - * Better tested ELK support (--> build a scenario where sending to ELK is a CI/CD test which must be passed). - * Cassandra output should be added - * Better support for Splunk out of the box (same as with ELK) - * Generic CSV writer + * Better tested ELK support (--> build a scenario where sending to ELK is a CI/CD test which must be passed). TBD: check if this is already done. + * Better support for Splunk out of the box (same as with ELK) since many especially large organisations use splunk a lot. + * Cassandra output should be added (very optional) + * Generic CSV writer XXX see issue XYZ -> @sebix please add XXX + + + +## Specific improvements + +### Postgresql Output bot + +The eventDB structure (especially the ``events`` table) initially closely reflected the format of the DHO +(i.e. the old format). However, with lots of data pouring in, this "flat" table which is basically a log file +slows down postgresql a lot. See also issue #[1516](https://github.com/certtools/intelmq/issues/1516). +We propose to + - restructure the events table: use the well established 3rd normal form. + - create a migration script for existing installations + - use VIEWS and similar SQL tools to do lookups for reference tables (3rd normal form) + - use temporal partitioning to keep individual (sub-)tables small and therefore in RAM. # Footnotes -1. 1: There are tricks to make unix pipes suport arbitrary (directed acyclical) graphs. e.g. tee >(process1) >(process2) .... But this easily gets quite complex. +1. 1: There are tricks to make unix pipes support arbitrary (directed acyclical) graphs. +e.g. tee >(process1) >(process2) .... But this easily gets quite complex. From a065c331af478b1b5f2e04266d52f5e32fe92fe1 Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Tue, 3 Nov 2020 14:33:19 +0100 Subject: [PATCH 25/27] DOC 3.0 requirements: add evaluation, milestones --- docs/architecture-3.0.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index 292a15cc4..77f9581a2 100755 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -13,11 +13,14 @@ The following architecture document addresses principles which got lost over the last years due to feature creep * making IntelMQ 3.x interoperable with CERT.pl's n6 system +## Implementation evaluation +The mayor changes listed in this document should be evaluated based on use-cases and technical feasibility before the final implementation and integration into IntelMQ. The exact details of this process will be defined later." + # Non-Scope This document will not list the individual, detailed steps which need to be taken to achieve these goals. This is a high-level overview document. The detailed, individual steps will be specified as individual -issues on github and tagged ``intelmq3.0``. +issues on github and assigned to the milestone `3.0`: https://github.com/certtools/intelmq/milestone/16 # Motivation & Introduction @@ -444,9 +447,7 @@ Each IntelMQ program (or -daemon) shall: ## Collectors Here we are already quite strong: we have lots of collectors (data importers). STIX 2.x is still missing. -Should we get bored, here is a wish list of inputs: https://github.com/certtools/intelmq/blob/develop/docs/Feeds-whishlist.md. - -XXX @sebix: please also add the issues & milestone more bots feeds XXX +Should we get bored, here is a wish list of inputs: https://github.com/certtools/intelmq/blob/develop/docs/Feeds-whishlist.md and a wishlist for bots: https://github.com/certtools/intelmq/milestone/7 ## (New) Transcoders From b4691c2ab692b39f63419a59fd3312a2cf500b86 Mon Sep 17 00:00:00 2001 From: AaronK Date: Sun, 15 Nov 2020 00:54:03 +0100 Subject: [PATCH 26/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index 77f9581a2..b74ffc8a5 100755 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -14,7 +14,7 @@ The following architecture document addresses * making IntelMQ 3.x interoperable with CERT.pl's n6 system ## Implementation evaluation -The mayor changes listed in this document should be evaluated based on use-cases and technical feasibility before the final implementation and integration into IntelMQ. The exact details of this process will be defined later." +The mayor changes listed in this document may be evaluated based on use-cases and technical feasibility before the final implementation and integration into IntelMQ. The exact details of this process will be defined later." # Non-Scope From ca4e78710896f1fc81b15aae6b335a40f1a59b42 Mon Sep 17 00:00:00 2001 From: AaronK Date: Sun, 15 Nov 2020 00:55:08 +0100 Subject: [PATCH 27/27] Update architecture-3.0.md --- docs/architecture-3.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture-3.0.md b/docs/architecture-3.0.md index b74ffc8a5..d4d285b87 100755 --- a/docs/architecture-3.0.md +++ b/docs/architecture-3.0.md @@ -14,7 +14,7 @@ The following architecture document addresses * making IntelMQ 3.x interoperable with CERT.pl's n6 system ## Implementation evaluation -The mayor changes listed in this document may be evaluated based on use-cases and technical feasibility before the final implementation and integration into IntelMQ. The exact details of this process will be defined later." +The mayor changes listed in this document may be adapted slightly based on use-cases and technical feasibility before the final implementation and integration into IntelMQ. The exact details of this process will be defined later. For example, we see some discussions open with the new internal data format. # Non-Scope