
Das einzige Open-Source-Tool zur Analyse von Schwachstellen und Konfigurationsproblemen bei laufenden Docker-Container(n) und Docker-Netzwerken.
DockerENT ist eine aktivE ruNtime-Anwendungssicherheits-Scanning-Tool (RAST-Tool). Es handelt sich um ein pluggables Framework, geschrieben in Python. Es wird mit einer CLI-Anwendung und einer sauberen Web-Oberfläche geliefert, die mit StreamLit geschrieben wurde.
DockerENT wurde entwickelt, um schwache Sicherheitsfehlkonfigurationen in Produktionsumgebungen zu erkennen, die schwerwiegende Folgen haben können. Diese Anwendung verbindet sich mit laufenden Containern im System, ermittelt die Liste der schwachen und anfälligen Laufzeitkonfigurationen und erstellt einen Bericht. Wenn die Anwendung über die Web-Oberfläche aufgerufen wird, kann sie den Scan- und Prüfbericht direkt in der Benutzeroberfläche anzeigen.
In Eile, um dies zu testen? Laden Sie die neueste stabile Version von PyPi herunter und starten Sie die Web-App, alles andere ist intuitiv.
pip install DockerENT
Führen Sie die Anwendung dann wie folgt aus:
DockerENT -w
Das war's.
DockerENT wurde mit dem Fokus auf Einfachheit und Benutzerfreundlichkeit entwickelt. Derzeit müssen Sie lediglich das Repository klonen und die Abhängigkeiten herunterladen oder die Dockerfile erstellen. Sobald die Abhängigkeiten im lokalen System installiert sind, können wir das Tool ausführen und die Laufzeitkonfigurationen für laufende Container analysieren.
# Herunterladen und einrichten
git clone https://github.com/r0hi7/DockerENT.git
cd DockerENT
make venv
source venv/bin/activate
# Ausführen
python -m DockerENT --help
usage: Find the vulnerabilities hidden in your running container(s).
[-h] [-d [DOCKER_CONTAINER]] [-p [DOCKER_PLUGINS]]
[-d-nw [DOCKER_NETWORK]] [-p-nw [DOCKER_NW_PLUGINS]] [-w]
[-n [PROCESS_COUNT]] [-a] [-o [OUTPUT]]
optional arguments:
-h, --help show this help message and exit
-w, --web-app Run DockerENT in WebApp mode. If this parameter is
enabled, other command line flags will be ignored.
-n [PROCESS_COUNT], --process [PROCESS_COUNT]
Run scans in parallel (Process pool count).
-a, --audit Flag to check weather to audit results or not.
-d [DOCKER_CONTAINER], --docker [DOCKER_CONTAINER]
Run scan against the running container.
-p [DOCKER_PLUGINS], --plugins [DOCKER_PLUGINS]
Run scan with only specified plugins.
-p-nw [DOCKER_NW_PLUGINS], --nw-plugins [DOCKER_NW_PLUGINS]
Run scan with only specified plugins.
-d-nw [DOCKER_NETWORK], --docker-network [DOCKER_NETWORK]
Run scan against running docker-network.
-o [OUTPUT], --output [OUTPUT]
Output plugin to write data to.
# oder via den Container
docker build . -t dockerent
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 8501:8501 --name dockerent dockerent
# Dann einfach den Browser unter http://localhost:8051 öffnen
Sehen Sie sich dieses kurze Video an, um loszulegen.
file- und html-Senken schreiben.demo-Plugin zu erstellen.cp DockerENT/docker_plugins/docker_sample_plugin.py DockerENT/docker_plugins/docker_demo_plugin.py
_plugin_name = 'demo_plugin'
def scan(container, output_queue, audit=False, audit_queue=None):
_log.info('Staring {} Plugin ...'.format(_plugin_name_))
res = {}
result = {
'test_class': {
'TEST_NAME': ['good']
}
}
res[container.short_id] = {
_plugin_name_: result
}
# Do something magical.
_log.info('Completed execution of {} Plugin.'.format(_plugin_name_))
'''Make Sure you put dict of following structure in Q.
{
'contiainer_id': {
'plugin_name': {
'test_name_demo1': {
resultss:[]
},
'test_name_demo2': {
results: []
}
}
}
}
'''
output_queue.put(res)
if audit:
_audit(container, res, audit_queue)
def _audit(container, results, audit_queue):
'''Make Sure to add dict of following structure to Audit Q
res = {
"container_id": [
"_plugin_name_, WARN/INFO/ERROR, details"
]
}
'''
# Magical logic to perform Audit.
audit_queue.put(res)
-n <Anzahl>, um die Anzahl der parallelen Prozesse anzugeben.JSON- und HTML-Dateien speichern.JSON-Berichte sind sperrig.| Plugin-Name | Plugin-Datei | Funktion | Prüfung |
|---|
| CMD_HISTORY | Datei | Shell-Verlauf identifizieren | Root-Verlauf und Benutzer-Shell-Verlauf |
| FILESYSTEM | Datei | RW-Dateisysteme identifizieren | Falls RW-Dateisysteme vorhanden sind. |
| NETWORK | Datei | Netzwerkstatus identifizieren | Identifiziert alle zugeordneten Ports. |
| PLAINTEST_PASSWORD | Datei | Passwörter in verschiedenen Dateien identifizieren | |
| SECURITY_PROFILES | Datei | Schwache Sicherheitsprofile identifizieren | Listet schwache Sicherheitsprofile auf. |
| USER_INFO | Datei | Benutzerinformationen identifizieren | Berechtigungen in passwd und anderen sensiblen Dateien auflisten |
| SYSTEM_INFO | Datei | Docker-Systeminformationen identifizieren | Keine Prüfung |
| FILES_INFO | Datei | Weltweit beschreibbare Verzeichnisse und Dateien identifizieren | Alle solchen Dateien auflisten. |
| PROC_INFO | Datei | Die Liste der Prozesse im Docker-System identifizieren |