-
Notifications
You must be signed in to change notification settings - Fork 522
Docker
We're currently working on integrating the Elastic stack using Docker!
From https://www.docker.com/what-docker:
Docker is the world’s leading software container platform. Developers use Docker to eliminate “works on my machine” problems when collaborating on code with co-workers. Operators use Docker to run and manage apps side-by-side in isolated containers to get better compute density. Enterprises use Docker to build agile software delivery pipelines to ship new features faster, more securely and with confidence for both Linux, Windows Server, and Linux-on-mainframe apps.
To maintain a high level of stability, reliability, and support, our Elastic Docker images are based on the Docker images provided by Elastic.co. Their Docker images are built on CentOS 7: https://www.elastic.co/blog/docker-base-centos7
To leverage a common core OS layer, all of our Docker images are then built on CentOS 7.
From https://docs.docker.com/registry/recipes/mirror/:
If you have multiple instances of Docker running in your environment (e.g., multiple physical or virtual machines, all >running the Docker daemon), each time one of them requires an image that it doesn’t have it will go out to the internet >and fetch it from the public Docker registry. By running a local registry mirror, you can keep most of the redundant image >fetch traffic on your local network.
We can leverage the Docker registry (as a pull-through cache) with our Security Onion Docker images. As mentioned above, this will allow us to cut down on external requests and bandwidth, cache the images on a local server, and only pull new images when they are available.
We can easily configure our Security Onion master server and sensor by running the following script on each machine (watch out for line-wrapping) :
wget https://raw.githubusercontent.com/weslambert/securityonion-docker-registry/master/so-docker-registry
sudo ./so-docker-registry
After the script has completed (after running on both machines), the newest images from the securityonionsolutions
repo should be locally cached on the master, and already pulled to the sensor.
We can check this by running the following from the master (or sensor):
curl localhost:5000/v2/_catalog
From here on, whenever soup
checks for new images, it will pull them from the master server instead of Docker Hub.
Our Docker containers all belong to a common Docker bridge network, called so-elastic-net
. Each container is also aliased, so that communication can occur between the different docker containers using said alias. For example, communication to the so-elasticsearch
container would occur through an alias of elasticsearch
.
You may come across interfaces in ifconfig
with the format veth*
. These are the external interfaces for each of the Docker containers. These interfaces correspond to internal Docker container interfaces (within the Docker container itself).
To identify which external interface belongs to which container, we can do something like the following:
From the host, type:
sudo docker exec so-elasticsearch cat /sys/class/net/eth0/iflink
This should provide you with a value with which you can grep the host net
class ifindex(es)
:
Example:
grep 25 /sys/class/net/veth*/ifindex | cut -d'/' -f5
You should then receive some output similar to the following:
vethc5ff027
where vethc5ff027
is the external interface of eth0
within the so-elasticsearch
container.
Our Docker images are stored on Docker Hub: https://hub.docker.com/u/securityonionsolutions/
If you download our 14.04.5.3 (or newer) ISO image, the Docker engine and these Docker images are baked right into the ISO image.
If you instead use another ISO image, you will install the securityonion-elastic package and will then run sudo so-elastic-download
which will install the Docker engine and then download the Docker images from Docker Hub.
Our soup
utility for installing updates now includes support for updating Docker images.
To prevent tampering, our Docker images are signed using Docker Notary: https://docs.docker.com/notary/getting_started/
Any time we push an image to Docker Hub, we explicitly set --disable-content-trust=false
to sign the image using Docker Notary.
Any time we download an image from Docker Hub, we also explicitly set --disable-content-trust=false
to verify that signature using Docker Notary.
- Introduction
- Use Cases
- Hardware Requirements
- Release Notes
- Download/Install
- Booting Issues
- After Installation
- UTC and Time Zones
- Services
- VirtualBox Walkthrough
- VMWare Walkthrough
- Videos
- Architecture
- Cheat Sheet
- Conference
- Elastic Stack
- Elastic Architecture
- Elasticsearch
- Logstash
- Kibana
- ElastAlert
- Curator
- FreqServer
- DomainStats
- Docker
- Redis
- Data Fields
- Beats
- Pre-Releases
- ELSA to Elastic
- Network Configuration
- Proxy Configuration
- Firewall/Hardening
- Email Configuration
- Integrating with other systems
- Changing IP Addresses
- NTP
- Managing Alerts
- Managing Rules
- Adding Local Rules
- Disabling Processes
- Filtering with BPF
- Adjusting PF_RING for traffic
- MySQL Tuning
- Adding a new disk
- High Performance Tuning
- Trimming PCAPs