#!/bin/sh # ------------------------------------------------------------------------------ # CIS Docker 1.6 Benchmark v1.0.0 checker # # Docker, Inc. (c) 2015 # # Provides automated tests for the CIS Docker 1.6 Benchmark: # https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.6_Benchmark_v1.0.0.pdf # # ------------------------------------------------------------------------------ # Load dependencies . ./output_lib.sh . ./helper_lib.sh # Setup the paths this_path=$(abspath $0) ## Path of this file including filenamel dir_name=`dirname ${this_path}` ## Dir where this file is myname=`basename ${this_path}` ## file name of this script. logger="${myname}.log" # Check for required program(s) req_progs='docker netstat grep awk' for p in $req_progs; do command -v $p >/dev/null 2>&1 || { printf "$p command not found.\n"; exit 1; } done # Ensure we can connect to docker daemon `docker ps -q >/dev/null 2>&1` if [ $? -ne 0 ]; then printf "Error connecting to docker daemon (does docker ps work?)\n" exit 1 fi usage () { printf " usage: $myname [options] -h optional Print this help message\n" exit 1 } yell "# ------------------------------------------------------------------------------ # CIS Docker 1.6 Benchmark v1.0.0 checker # # Docker, Inc. (c) 2015 # # Provides automated tests for the CIS Docker 1.6 Benchmark: # https://benchmarks.cisecurity.org/tools2/docker/CIS_Docker_1.6_Benchmark_v1.0.0.pdf # ------------------------------------------------------------------------------" logit "Initializing `date`\n" # Warn if not root ID=`id -u` if [ "x$ID" != "x0" ]; then warn "Some tests might require root to run" sleep 3 fi # Get the flags while getopts :hlfi: args do case $args in h) usage ;; l) logger="$OPTARG" ;; *) usage ;; esac done # Load all the tests from tests/ and run them main () { # List all running containers containers=`docker ps -q` # If there is a container with label docker-bench, memorize it: benchcont="nil" for c in $containers; do labels=`docker inspect --format '{{ .Config.Labels }}' $c` contains "$labels" "docker-bench" && benchcont="$c" done # List all running containers except docker-bench containers=`docker ps -q | grep -v $benchcont` for test in tests/*.sh do . ./$test done } main "$@"