Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

break Zeek/Suricata into two containers: one for "live" capture and one for uploaded PCAPs #109

Closed
mmguero opened this issue Jul 25, 2022 · 1 comment
Assignees
Labels
capture Relating to pcap-capture container docker Relating to docker and docker-compose as used by Malcolm enhancement New feature or request zeek Relating to Malcolm's use of Zeek

Comments

@mmguero
Copy link
Collaborator

mmguero commented Jul 25, 2022

Hedgehog Linux is the preferred method for live network traffic capture/monitoring with Malcolm because it 1) allows you to have dedicated resources for capture separate from the Malcolm aggregator and 2) allows the traffic to be analyzed as it's "streamed" rather than buffering it to PCAP first and then analyzed on some sort of trigger as the PCAPs are rolled (managed by the PCAP_ROTATE_... environment variables).

This second method I've described is the way "standalone" Malcolm captures live traffic, which results in PCAP files being copied to the ./pcap/upload directory and processed in the same way as any other "offline" PCAP files that the user has previously captured and uploaded manually.

The reason for this different implementation has to do with giving the capture docker container the ability to promiscuously monitor a network interface: this, as far as I am aware, requires the container to run with host networking. This is an issue mainly for the Arkime capture program, which needs to have a local connection to the http://opensearch endpoint, which is NOT running in host networking mode. I'd prefer to avoid connecting to opensearch via port forwarding as we'd have to surface authentication/encryption between the containers and it's just much simpler to have them be able to talk openly on the same docker network.

While this is a limitation for arkime capture, as far as Zeek and Suricata are concerned I don't think we'd have the same issue, since those programs are just generating textual log files into directories which could be picked up and analyzed by the other monitoring containers (this is essentially what we're doing with the pcap-capture container-produced PCAP files anyway).

So my proposal is that if live capture on a local interface is requested for a standalone Malcolm instance (via PCAP_IFACE in the docker-compose file) and Zeek and/or Suricata analysis is requested, I'd have an additional container for running those processes "live" for capture in host networking mode. Those containers wouldn't need to have separate images (they could use the same ones as their "offline PCAP" counterparts use today) but would have different arguments for starting live capture. The filebeat container would have to watch these live containers' output in additional locations aside from the ones it monitors today.

It wouldn't "solve" the same issue for Arkime capture (that would still be on a "rotate" delay) but it would improve the quality and speed up the availability of the Zeek/Suricata logs.

@mmguero mmguero added capture Relating to pcap-capture container docker Relating to docker and docker-compose as used by Malcolm enhancement New feature or request zeek Relating to Malcolm's use of Zeek labels Jul 25, 2022
@mmguero mmguero self-assigned this Jul 25, 2022
@mmguero mmguero added this to Malcolm Jul 25, 2022
@mmguero mmguero changed the title break Zeek into two containers: one for "live" capture and one for uploaded PCAPs break Zeek/Suricata into two containers: one for "live" capture and one for uploaded PCAPs Jul 25, 2022
@mmguero mmguero moved this to Todo (develop) in Malcolm Jul 25, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 26, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 26, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 26, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 26, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 26, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 26, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 26, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 26, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 26, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 26, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 26, 2022
@mmguero mmguero moved this from Todo (develop) to In Progress in Malcolm Jul 26, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 27, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 27, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 27, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 27, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 27, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 27, 2022
… see idaholab#109

commit 30ab5eb
Author: SG <[email protected]>
Date:   Wed Jul 27 11:40:48 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit dda60d7
Author: SG <[email protected]>
Date:   Wed Jul 27 11:40:30 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit b08e3e7
Author: SG <[email protected]>
Date:   Wed Jul 27 10:39:08 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 51c8e04
Author: Seth Grover <[email protected]>
Date:   Wed Jul 27 08:26:01 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 35da23a
Author: Seth Grover <[email protected]>
Date:   Wed Jul 27 07:00:47 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit b6c99f9
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 17:17:19 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit ce9149e
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 16:30:22 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 3aec8b5
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 16:08:37 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit a9fe5b2
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 15:49:58 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 78f0866
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 15:33:31 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 0e4f043
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 14:48:56 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 6a16eee
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 14:05:56 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit ad394b0
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 13:53:39 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit c80b465
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 13:07:54 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 32d5ca1
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 12:02:17 2022 -0600

    work in progress for zeek- and suricata- live capture (see idaholab#109)

    Signed-off-by: Seth Grover <[email protected]>

commit 326db59
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 09:53:43 2022 -0600

    bump to v6.2.0 for idaholab#109
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 27, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 27, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 28, 2022
… see idaholab#109

commit 30ab5eb
Author: SG <[email protected]>
Date:   Wed Jul 27 11:40:48 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit dda60d7
Author: SG <[email protected]>
Date:   Wed Jul 27 11:40:30 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit b08e3e7
Author: SG <[email protected]>
Date:   Wed Jul 27 10:39:08 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 51c8e04
Author: Seth Grover <[email protected]>
Date:   Wed Jul 27 08:26:01 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 35da23a
Author: Seth Grover <[email protected]>
Date:   Wed Jul 27 07:00:47 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit b6c99f9
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 17:17:19 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit ce9149e
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 16:30:22 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 3aec8b5
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 16:08:37 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit a9fe5b2
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 15:49:58 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 78f0866
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 15:33:31 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 0e4f043
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 14:48:56 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 6a16eee
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 14:05:56 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit ad394b0
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 13:53:39 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit c80b465
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 13:07:54 2022 -0600

    work in progress for zeek- and suricata- live capture (idaholab#109)

commit 32d5ca1
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 12:02:17 2022 -0600

    work in progress for zeek- and suricata- live capture (see idaholab#109)

    Signed-off-by: Seth Grover <[email protected]>

commit 326db59
Author: Seth Grover <[email protected]>
Date:   Tue Jul 26 09:53:43 2022 -0600

    bump to v6.2.0 for idaholab#109
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 28, 2022
mmguero added a commit to mmguero-dev/Malcolm that referenced this issue Jul 28, 2022
@mmguero
Copy link
Collaborator Author

mmguero commented Aug 2, 2022

I think this is done, need to do some final testing but closing pending release.

@mmguero mmguero closed this as completed Aug 2, 2022
Repository owner moved this from In Progress to Done in Malcolm Aug 2, 2022
This was referenced Aug 3, 2022
mmguero added a commit that referenced this issue Aug 3, 2022
merge v6.2.0 development into main

* Improvements
    - #109: break Zeek/Suricata into two containers: one for "live" capture and one for uploaded PCAPs
        + give option to disable capture interface hardware offloading and adjust ring buffer sizes for standalone Malcolm capture
        + Zeek and Suricata images are now configured to not drop privileges at init (in order to be able to set permissions for network capture), but supervisord will drop privileges for all of its child processes before they execute to maintain security posture
        + include headers needed to build Zeek af_packet plugin in Zeek docker container
        + updated README to describe methods for capturing local traffic with standalone Malcolm
        + same images will be used for `zeek` and `zeek-live` containers, as well as for `suricata` and `suricata-live` containers, respectively
        + use the same scripts `zeekdeploy.sh` to configure and run Zeek on both Hedgehog and in the Malcolm `zeek` docker images
        + prevent "live" and "non-live" Zeek containers from both trying to update intel indicators at the same time
    - Speed up build time by getting official Debian suricata packages from backports rather than building from source
    - Added Suricata rule update cron jobs
    - Added documentation (in the form of comments) to all docker-compose file variables

* Bugs
    - Fix #107: expand action/result meaning in DNP3 (and other?) dashboards
        - Clean up some `Nul` values that could appear in Zeek logs
        - improve mapping of BACnet actions
    - Fix #108: export PCAP not working from Arkime sessions without "Arkime Sessions"
    - Fix #110: SFTP upload broken due to dollar sign(s) in openssl-encrypted password
        + prompt in `install.py --configure` whether or not to expose this port to external hosts
    - Fix an issue that could prevent some zeek logs from being parsed correctly if they contained non-ASCII charactters
mmguero added a commit to cisagov/Malcolm that referenced this issue Aug 3, 2022
merge v6.2.0 into main

* Improvements
    - idaholab#109: break Zeek/Suricata into two containers: one for "live" capture and one for uploaded PCAPs
        + give option to disable capture interface hardware offloading and adjust ring buffer sizes for standalone Malcolm capture
        + Zeek and Suricata images are now configured to not drop privileges at init (in order to be able to set permissions for network capture), but supervisord will drop privileges for all of its child processes before they execute to maintain security posture
        + include headers needed to build Zeek af_packet plugin in Zeek docker container
        + updated README to describe methods for capturing local traffic with standalone Malcolm
        + same images will be used for `zeek` and `zeek-live` containers, as well as for `suricata` and `suricata-live` containers, respectively
        + use the same scripts `zeekdeploy.sh` to configure and run Zeek on both Hedgehog and in the Malcolm `zeek` docker images
        + prevent "live" and "non-live" Zeek containers from both trying to update intel indicators at the same time
    - Speed up build time by getting official Debian suricata packages from backports rather than building from source
    - Added Suricata rule update cron jobs
    - Added documentation (in the form of comments) to all docker-compose file variables

* Bugs
    - Fix idaholab#107: expand action/result meaning in DNP3 (and other?) dashboards
        - Clean up some `Nul` values that could appear in Zeek logs
        - improve mapping of BACnet actions
    - Fix idaholab#108: export PCAP not working from Arkime sessions without "Arkime Sessions"
    - Fix idaholab#110: SFTP upload broken due to dollar sign(s) in openssl-encrypted password
        + prompt in `install.py --configure` whether or not to expose this port to external hosts
    - Fix an issue that could prevent some zeek logs from being parsed correctly if they contained non-ASCII charactters
@mmguero mmguero moved this from Done to Released in Malcolm Aug 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
capture Relating to pcap-capture container docker Relating to docker and docker-compose as used by Malcolm enhancement New feature or request zeek Relating to Malcolm's use of Zeek
Projects
Status: Released
Development

No branches or pull requests

1 participant