Seccubus automates regular vulnerability scans with various tools and aids security people in the fast analysis of its output, both on the first scan and on repeated scans.
On repeated scan delta reporting ensures that findings only need to be judged when they first appear in the scan results or when their output changes.
Seccubus 2.x is the only actively developed and maintained branch and all support for Seccubus V1 has officially been dropped.
Seccubus V2 works with the following scanners:
Nessus
OpenVAS
Skipfish
Medusa (local and remote)
Nikto (local and remote)
NMap (local and remote)
OWASP-ZAP (local and remote)
SSLyze
Medusa
Qualys SSL labs
testssl.sh (local and remote)
For more information visit [www.seccubus.com]
Seccubus Docker container
Usage
Running a full stack (db/app/frontend) in a single container. And get an interactive shell
docker run -it seccubus/seccubus /bin/bash
By default the container holds a mysql server that runs and stores data locally. If you want data persistency there are two options:
Connect the container to a remote mysql/MariaDB database with environment viariables:
mkdir data
mmdir data/db
docker run -it seccubus/seccubus -v ($pwd)/data:/opt/seccubus/data /bin/bash
Please be aware that you can only run one container at a time if you mount a local directory on /var/lib/mysql.
Running a scan
Run the following command to start the scan 'ssllabs' in workspace 'Example' (this workspace is created by default if you use the local mysql database)
docker run -ti seccubus/seccubus scan Example ssllabs
Please be aware that you need soem data persistency here or the data will be stored in a local database that will be deleted whent he container terminates
Running a scheduler
You can run a docker container as a scheduler. This will make it run cron and allow your crontab to execute scans.You can populate the crontab by either placing a file called crontab in the /opt/seccubus/data volume or puting the lines of you crontab in evironement variables starting with CRON_
docker run -e "STACK=cron" -e "CRON_1=* 0 * * * bin/do-scan -w Example -s ssllabs" -ti seccubus/seccubus
This will spin up a container that executes scan ssllabs from workspace Example at midnight every night.
You can set the TZ vairable to control the timezone.
Controlling TLS certificates
The Seccubus container is TLS enabled by default. The environment variable TLS controls this behaviour. Of it is set to anything other then yes, TLS is turned off.
There are three ways to control the certificate:
Do nothing : Self signed certificates will be generated for you
Populate the variables TLSCERT and TLSKEY : The contents will be placed in /opt/seccubus/data/seccubus.pem and /opt/seccubus/data/seccubus.key and used
Put the certificates in the files seccubus.pem and seccubus.key on a data volume and mount it on /opt/seccubus/data
Show this help message
docker run -ti seccubus/seccubus help
Default command
If you don't specify a command to docker run
docker run seccubus/seccubus
The web server access log and error log will be tailed to the screen.
Other options
You can set the following environment variables:
STACK - Determines which part of the stack is run
full - Run everything
front - Start apache to serve the html/javascript frontend (this requires that the APIURL variable is set too)
api - Start apache to serve the json api at / (starts MariaDB too if required)
web - Start apache to serve both the html/javascript frontend and the json
perl - Do not start apache, just use this container as an perl backend
The content of this environment variable will stored in the file /opt/seccubus/.ssh/SSHKEY1 etc.
You can use this mechanism to provide ssh keys that are used to start remote scans
HTTP_AUTH_HEADER - Set the http authentication header
If you are using something like OpenAM to authenticate your users, this allows you to set which http request header contains the user that OpenAM detected
TZ - Set the timezone of the container
TLS - Controls TLS behaviour yes means TLS is on, otherwise TLS is off. TLS is on by default.
JIT_GROUP - Controls JIT provisioning of users
CRON_MAIL_TO - Mail cron messages to this addres
CRON_* - Add these lines to crontab in alphabetical order