Monitor your own network traffic - cross platform (MacOS, Window, Linux)
666
This repository enables running Montimage Monitoring Tool (MMT) in a Docker container to simplify network traffic monitoring and analysis across different platforms.
MMT is primarily an enterprise-level network monitoring solution designed for Linux-based infrastructure environments. While MMT doesn't have native support for Windows or macOS, this Docker-based approach provides a cross-platform solution that works on any system capable of running Docker containers.
If you are a developer looking to build or modify the MMT Docker image, please see the DEVELOPER.md file.
Montimage Monitoring Tool (MMT) is a powerful enterprise-level network monitoring and analysis solution that provides:
MMT is designed for enterprise network infrastructures where Linux is the primary operating system. It's widely used in telecommunications, critical infrastructure monitoring, cybersecurity operations centers, and enterprise network management.
This Docker-based implementation bridges the platform gap, allowing users of Windows, macOS, and other operating systems to utilize MMT's powerful capabilities without requiring a dedicated Linux environment.
The following diagram illustrates how MMT on Docker captures and analyzes your network traffic:
graph LR
A[Host Network] -->|tcpdump| B[Network Capture]
B -->|netcat| C[Docker Container]
C -->|mmt-probe| D[Analysis Engine]
D -->|Reports| E[Results Directory]
subgraph Host Machine
A
B
E
end
subgraph MMT Container
C
D
end
Install Docker Desktop:
Install tcpdump and netcat using Homebrew:
brew install tcpdump netcat
Pull the Docker image:
docker pull montimage/mmt:latest
Find your network interface:
networksetup -listallhardwareports
Look for your active interface (typically en0 for Wi-Fi or en1 for Ethernet)
Start capturing network traffic (keep this terminal window open):
sudo tcpdump -i en0 -U -w - | nc -l 12345
Replace en0 with your actual interface name
Open a new terminal window and run the MMT container:
# Create reports directory
mkdir -p ~/mmt-reports
# Run the container
docker run -d --name mmt-probe --rm \
-v ~/mmt-reports:/opt/mmt/probe/result/report/online \
montimage/mmt:latest
View the analysis results:
ls -la ~/mmt-reports
Stop monitoring when finished:
docker stop mmt-probe
Also press Ctrl+C in the tcpdump terminal window
Install Docker Desktop:
Install packet capture tools:
Pull the Docker image:
docker pull montimage/mmt:latest
Find your network interface:
Get-NetAdapter
Note the name of your active network interface (e.g., "Wi-Fi" or "Ethernet")
Start capturing network traffic (keep this PowerShell window open):
& 'C:\Program Files\Wireshark\tshark.exe' -i Wi-Fi -w - | & 'C:\Program Files\Nmap\ncat.exe' -l 12345
Replace Wi-Fi with your actual interface name
Open a new PowerShell window and run the MMT container:
# Create reports directory
mkdir -p $HOME\mmt-reports
# Run the container
docker run -d --name mmt-probe --rm `
-v "$HOME\mmt-reports:/opt/mmt/probe/result/report/online" `
montimage/mmt:latest
View the analysis results:
dir $HOME\mmt-reports
Stop monitoring when finished:
docker stop mmt-probe
Also press Ctrl+C in the packet capture window
Install Docker:
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker
# Fedora/CentOS
sudo dnf install docker
sudo systemctl start docker
sudo systemctl enable docker
Install tcpdump and netcat:
# Ubuntu/Debian
sudo apt-get install tcpdump netcat-openbsd
# Fedora/CentOS
sudo dnf install tcpdump nc
Pull the Docker image:
docker pull montimage/mmt:latest
Find your network interface:
ip link show
Note the name of your active network interface (e.g., "eth0" or "ens33")
Start capturing network traffic (keep this terminal window open):
sudo tcpdump -i eth0 -U -w - | nc -l -p 12345
Replace eth0 with your actual interface name
Open a new terminal window and run the MMT container:
# Create reports directory
mkdir -p ~/mmt-reports
# Run the container
docker run -d --name mmt-probe --rm \
-v ~/mmt-reports:/opt/mmt/probe/result/report/online \
montimage/mmt:latest
Alternatively, on Linux you can directly monitor a network interface:
docker run -d --name mmt-probe --rm \
--net=host -e HOST_INTERFACE=eth0 \
-v ~/mmt-reports:/opt/mmt/probe/result/report/online \
montimage/mmt:latest
View the analysis results:
ls -la ~/mmt-reports
Stop monitoring when finished:
docker stop mmt-probe
Also press Ctrl+C in the tcpdump terminal window
You can analyze a pre-recorded PCAP file using the MMT container:
macOS/Linux:
# Create reports directory
mkdir -p ~/mmt-reports
# Run the container with a PCAP file
docker run -d --name mmt-probe --rm \
-v ~/mmt-reports:/opt/mmt/probe/result/report/online \
-v ~/my-capture.pcap:/pcap/my-capture.pcap \
-e PCAP_FILE=/pcap/my-capture.pcap \
montimage/mmt:latest
Windows:
# Create reports directory
mkdir -p $HOME\mmt-reports
# Run the container with a PCAP file
docker run -d --name mmt-probe --rm `
-v "$HOME\mmt-reports:/opt/mmt/probe/result/report/online" `
-v "$HOME\my-capture.pcap:/pcap/my-capture.pcap" `
-e PCAP_FILE=/pcap/my-capture.pcap `
montimage/mmt:latest
Replace my-capture.pcap with your actual PCAP file name.
# For macOS/Linux
docker run -d --name my-custom-mmt --rm \
-v ~/mmt-reports:/opt/mmt/probe/result/report/online \
montimage/mmt:latest
# For macOS/Linux
docker run -d --name mmt-probe --rm \
-v ~/mmt-reports:/opt/mmt/probe/result/report/online \
montimage/mmt:v1.0
If the container exits immediately after starting, check:
docker logs mmt-probeIf you encounter permission errors with the reports directory:
# Fix permissions on the reports directory
sudo chown -R $USER:$USER ./mmt-reports
Docker can't connect to host.docker.internal:
ifconfig en0 | grep "inet " | awk '{print $2}'
host.docker.internalPermission denied for tcpdump:
sudosudo chmod +s /usr/sbin/tcpdump
Container can't reach host for packet capture:
host.docker.internal:
ipconfig | findstr IPv4
Wireshark/tshark permission issues:
Docker permission issues:
sudo usermod -aG docker $USER
# then logout and login again
Network interface not found:
--net=hostThe container can operate in three modes:
Netcat Mode (Default): Captures traffic from the host machine through a netcat connection on port 12345. This is the recommended mode for most users and works across all operating systems (Windows, macOS, Linux).
Host Network Interface Mode: Available on Linux only, this mode directly captures traffic from a specified host network interface using the --net=host option. This mode represents the traditional deployment method for MMT in enterprise environments.
PCAP Analysis Mode: Analyzes a pre-recorded PCAP file from your host system. This mode is useful for analyzing previously captured traffic, forensic analysis, or testing purposes.
MMT generates several types of reports in the configured reports directory:
These reports contain information about detected security events and potential threats.
These reports provide statistical information about the monitored network traffic, including:
View the most recent report:
ls -lt ./mmt-reports | head -n 5
View a specific security report:
cat ./mmt-reports/security_report_*.xml
MMT-Operator is a graphical web interface for visualizing and analyzing MMT reports. It runs on your host machine and provides dashboards, charts, and detailed analytics.
Clone and install MMT-Operator from the official repository:
git clone https://github.com/Montimage/mmt-operator.git
cd mmt-operator/www
npm install
Install MongoDB (required for MMT-Operator):
# For macOS using Homebrew
brew tap mongodb/brew
brew install [email protected]
brew services start [email protected]
Configure MMT-Operator to read the reports from your Docker container:
Edit the www/config.json file to set the correct reports directory:
# Navigate to the www directory
cd mmt-operator/www
# Edit the config.json file (using your preferred editor)
vim config.json
The most important setting is the file_input.data_folder array. Make sure it includes the path to where your MMT reports are stored:
"file_input": {
"data_folder": [
"/absolute/path/to/your/mmt-reports/"
],
"delete_data": true,
"nb_readers": 1
},
"input_mode": "file",
Replace /absolute/path/to/your/mmt-reports/ with the absolute path to your reports directory.
Access the MMT-Operator web interface:
http://localhost:8080 (default port)For full documentation and advanced configuration options, visit the MMT-Operator GitHub repository.
This project is distributed under the terms of the license covering Montimage products.
For any issues, questions, or improvements:
Content type
Image
Digest
sha256:e4d6eeb8c…
Size
408 MB
Last updated
over 1 year ago
docker pull montimage/mmt