activecm/zeek is meant to run a single-system Zeek cluster inside of a docker container. It is based on, but differs from blacktop/zeek:zeekctl in that it focuses on running multiple Zeek processes with zeekctl. To that end, there are several helpful features included:
- A configuration wizard for generating a
node.cfgcluster configuration - Will automatically run
zeekctlon start and print a diagnostic report if it fails - Cron will periodically ensure that all Zeek processes are running and restart any that have crashed
- Zeek's package manager is included, allowing you to easily install zeek plugins
- Performance improvement by using
ethtoolto disable certain interface features by default - Performance improvement with AF_Packet plugin installed and enabled by default in the configuration wizard
- Comes with the following other plugins pre-installed
- bro-interface-setup
- bro-doctor
- ja3
The docker tags correspond with the version of Zeek installed in the image. Zeek currently has two release tracks: feature and lts.
v3-latest,3.2,3.2.3v3-lts,3,3.0,3.0.12v4-latest,4.2,4.2.0v4-lts,4.0,4.0.5latest,6.2,6.2.1lts,6.2,6.2.1
You'll first need Docker. If you don't already have it here is a quick and dirty way to install it on Linux:
curl -fsSL https://get.docker.com | sh -Otherwise, follow the install instructions for your operating system.
You can then use the zeek script in this repo to quickly get Zeek running. We recommend putting this zeek script in your system PATH. The rest of this readme will assume this repo's zeek script is in the system PATH.
sudo wget -O /usr/local/bin/zeek https://raw.githubusercontent.com/activecm/docker-zeek/master/zeek
sudo chmod +x /usr/local/bin/zeekThen use the script to start Zeek.
zeek startIf the Quickstart section above doesn't fit your needs, you can use the following documentation to customize your install.
The default location our zeek script puts its files on your host is /opt/zeek/. You can change this directory by setting the zeek_top_dir environment variable. We recommend making this change permanent by creating the file /etc/profile.d/zeek. For example, to change the directory to /usr/local/zeek/:
echo "export zeek_top_dir=/usr/local/zeek/" | sudo tee -a /etc/profile.d/zeek.sh
source /etc/profile.d/zeek.shThe default version tag is 6.2.1 which will correspond to the latest release in the 6.2.1 Zeek release channel. You can customize this with the zeek_release environment variable. Set this variable to your desired Docker image tag. For example, to use the latest feature release:
echo "export zeek_release=latest" | sudo tee -a /etc/profile.d/zeek.sh
source /etc/profile.d/zeek.shYou can install Zeek packages from https://packages.zeek.org/ using the Zeek Package Manager, zkg. For example, to install the hassh plugin:
# Run `zeek start` if you haven't already
docker exec -it zeek zkg install hassh
# Restart Zeek to activate plugin
zeek restart
Note: Currently only plugins that don't require compiling can be installed.
This project will auto-generate a local.zeek file. This means that you should not attempt to create or modify this file yourself. Instead, anything that would normally go inside the local.zeek file can be put inside one or more .zeek files in the share/zeek/site/autoload directory. The files there are included in alphabetical order to create the local.zeek file. The default local.zeek provided by the Zeek project is included for your convenience at autoload/100-default.zeek and this file can be safely modified.
sudo mkdir -p /opt/zeek/share/zeek/site/autoload
sudo mv custom.zeek /opt/zeek/share/zeek/site/autoload/210-custom.zeek
zeek restartZeekctl has several config files you may want to modify such as zeekctl.cfg or networks.cfg. The default files used are here. If you want to provide your own, place your custom file in the appropriate place on your host and then restart Zeek. By default this would be in /opt/zeek/etc/.
The zeek script will automatically prompt and create a node.cfg file for you. If you would like to re-run this prompt you can delete the existing node.cfg file and restart Zeek. For instance, if your files are in the default location:
zeek stop
sudo rm /opt/zeek/etc/node.cfg
zeek startYou can obtain the newest version of the zeek script from this repo.
sudo wget -O /usr/local/bin/zeek https://raw.githubusercontent.com/activecm/docker-zeek/master/zeekYou can use the included zeek script to pull the most recent Docker image. This will also restart your Zeek instance.
zeek updateIf Zeek crashes right after starting you can check the log output.
docker logs zeek
If Zeek is successfully capturing and you want to see if there are any issues:
# Container must be running already
docker exec zeek zeekctl doctor
Developer documentation can be found in the docs folder.
Dockerfile based on blacktop/docker-zeek.