diff --git a/docker/.env b/docker/.env index eedf83312..adb6df087 120000 --- a/docker/.env +++ b/docker/.env @@ -1 +1 @@ -config/build.env \ No newline at end of file +config/base.env \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 9c49bcc40..000000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,55 +0,0 @@ -FROM python:3.8 - -LABEL maintainer="Jason Ross " - -ARG BUILD_DATE -ARG NAME -ARG DESCRIPTION -ARG VCS_REF -ARG VCS_URL -ARG VENDOR -ARG VERSION -ARG IMAGE_NAME - -ENV DEBIAN_FRONTEND=${DEBIAN_FRONTEND} -ENV TERM=${TERM} -ENV IBMCLOUD_COLOR=${IBMCLOUD_COLOR} - -# Build-time metadata as defined at http://label-schema.org -LABEL \ - org.label-schema.schema-version="1.0" \ - org.label-schema.build-date="${BUILD_DATE}" \ - org.label-schema.name="${NAME}" \ - org.label-schema.description="${DESCRIPTION}" \ - org.label-schema.vcs-ref="${VCS_REF}" \ - org.label-schema.vcs-url="${VCS_URL}" \ - org.label-schema.vendor="${VENDOR}" \ - org.label-schema.version="${VERSION}" \ - org.label.image-name="${IMAGE_NAME}" - -# Copy helper scripts to container -ADD bin /root/bin - -# Install required software -RUN ["/bin/bash", "-c", "/root/bin/container-install-prereqs.sh"] - -# Install AWS CLI -RUN ["/bin/bash", "-c", "/root/bin/container-install-aws2.sh"] - -# Install Azure CLI -RUN ["/bin/bash", "-c", "/root/bin/container-install-azure.sh"] - -# Install gCloud SDK -RUN ["/bin/bash", "-c", "/root/bin/container-install-gcp.sh"] - -# Install ScoutSuite -RUN ["/bin/bash", "-c", "/root/bin/container-install-scoutsuite.sh"] - -# Set a nice message -RUN ["/bin/bash", "-c", "/root/bin/container-set-init.sh"] - -# Remove scripts -RUN ["rm", "-rf", "/root/bin"] - -# Command -CMD ["/bin/bash"] diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 120000 index 000000000..b586e5c2b --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1 @@ +Dockerfile-base \ No newline at end of file diff --git a/docker/Dockerfile-aws b/docker/Dockerfile-aws new file mode 100644 index 000000000..c65dc86a4 --- /dev/null +++ b/docker/Dockerfile-aws @@ -0,0 +1,39 @@ +FROM nccgroup/scoutsuite-base:5.13.0-01 + +LABEL maintainer="Jason Ross " + +ARG BUILD_DATE +ARG NAME +ARG DESCRIPTION +ARG VCS_REF +ARG VCS_URL +ARG VENDOR +ARG VERSION +ARG IMAGE_NAME + +ENV DEBIAN_FRONTEND=${DEBIAN_FRONTEND} +ENV TERM=${TERM} + +# Build-time metadata as defined at http://label-schema.org +LABEL \ + org.label-schema.schema-version="1.0" \ + org.label-schema.build-date="${BUILD_DATE}" \ + org.label-schema.name="${NAME}" \ + org.label-schema.description="${DESCRIPTION}" \ + org.label-schema.vcs-ref="${VCS_REF}" \ + org.label-schema.vcs-url="${VCS_URL}" \ + org.label-schema.vendor="${VENDOR}" \ + org.label-schema.version="${VERSION}" \ + org.label.image-name="${IMAGE_NAME}" + +# Copy helper scripts to container +ADD bin /root/bin + +# Install AWS CLI +RUN ["/bin/bash", "-c", "/root/bin/container-install-aws2.sh"] + +# Remove scripts +RUN ["rm", "-rf", "/root/bin"] + +# Command +CMD ["/bin/bash"] diff --git a/docker/Dockerfile-azure b/docker/Dockerfile-azure new file mode 100644 index 000000000..27ea075ea --- /dev/null +++ b/docker/Dockerfile-azure @@ -0,0 +1,39 @@ +FROM nccgroup/scoutsuite-base:5.13.0-01 + +LABEL maintainer="Jason Ross " + +ARG BUILD_DATE +ARG NAME +ARG DESCRIPTION +ARG VCS_REF +ARG VCS_URL +ARG VENDOR +ARG VERSION +ARG IMAGE_NAME + +ENV DEBIAN_FRONTEND=${DEBIAN_FRONTEND} +ENV TERM=${TERM} + +# Build-time metadata as defined at http://label-schema.org +LABEL \ + org.label-schema.schema-version="1.0" \ + org.label-schema.build-date="${BUILD_DATE}" \ + org.label-schema.name="${NAME}" \ + org.label-schema.description="${DESCRIPTION}" \ + org.label-schema.vcs-ref="${VCS_REF}" \ + org.label-schema.vcs-url="${VCS_URL}" \ + org.label-schema.vendor="${VENDOR}" \ + org.label-schema.version="${VERSION}" \ + org.label.image-name="${IMAGE_NAME}" + +# Copy helper scripts to container +ADD bin /root/bin + +# Install Azure CLI +RUN ["/bin/bash", "-c", "/root/bin/container-install-azure.sh"] + +# Remove scripts +RUN ["rm", "-rf", "/root/bin"] + +# Command +CMD ["/bin/bash"] diff --git a/docker/Dockerfile-base b/docker/Dockerfile-base new file mode 100644 index 000000000..45e700880 --- /dev/null +++ b/docker/Dockerfile-base @@ -0,0 +1,45 @@ +FROM python:3.12 + +LABEL maintainer="Jason Ross " + +ARG BUILD_DATE +ARG NAME +ARG DESCRIPTION +ARG VCS_REF +ARG VCS_URL +ARG VENDOR +ARG VERSION +ARG IMAGE_NAME + +ENV DEBIAN_FRONTEND=${DEBIAN_FRONTEND} +ENV TERM=${TERM} + +# Build-time metadata as defined at http://label-schema.org +LABEL \ + org.label-schema.schema-version="1.0" \ + org.label-schema.build-date="${BUILD_DATE}" \ + org.label-schema.name="${NAME}" \ + org.label-schema.description="${DESCRIPTION}" \ + org.label-schema.vcs-ref="${VCS_REF}" \ + org.label-schema.vcs-url="${VCS_URL}" \ + org.label-schema.vendor="${VENDOR}" \ + org.label-schema.version="${VERSION}" \ + org.label.image-name="${IMAGE_NAME}" + +# Copy helper scripts to container +ADD bin /root/bin + +# Install required software +RUN ["/bin/bash", "-c", "/root/bin/container-install-prereqs.sh"] + +# Install ScoutSuite +RUN ["/bin/bash", "-c", "/root/bin/container-install-scoutsuite.sh"] + +# Set a nice message +RUN ["/bin/bash", "-c", "/root/bin/container-set-init.sh"] + +# Remove scripts +RUN ["rm", "-rf", "/root/bin"] + +# Command +CMD ["/bin/bash"] diff --git a/docker/Dockerfile-gcp b/docker/Dockerfile-gcp new file mode 100644 index 000000000..edfa696cd --- /dev/null +++ b/docker/Dockerfile-gcp @@ -0,0 +1,39 @@ +FROM nccgroup/scoutsuite-base:5.13.0-01 + +LABEL maintainer="Jason Ross " + +ARG BUILD_DATE +ARG NAME +ARG DESCRIPTION +ARG VCS_REF +ARG VCS_URL +ARG VENDOR +ARG VERSION +ARG IMAGE_NAME + +ENV DEBIAN_FRONTEND=${DEBIAN_FRONTEND} +ENV TERM=${TERM} + +# Build-time metadata as defined at http://label-schema.org +LABEL \ + org.label-schema.schema-version="1.0" \ + org.label-schema.build-date="${BUILD_DATE}" \ + org.label-schema.name="${NAME}" \ + org.label-schema.description="${DESCRIPTION}" \ + org.label-schema.vcs-ref="${VCS_REF}" \ + org.label-schema.vcs-url="${VCS_URL}" \ + org.label-schema.vendor="${VENDOR}" \ + org.label-schema.version="${VERSION}" \ + org.label.image-name="${IMAGE_NAME}" + +# Copy helper scripts to container +ADD bin /root/bin + +# Install gCloud SDK +RUN ["/bin/bash", "-c", "/root/bin/container-install-gcp.sh"] + +# Remove scripts +RUN ["rm", "-rf", "/root/bin"] + +# Command +CMD ["/bin/bash"] diff --git a/docker/bin/container-install-prereqs.sh b/docker/bin/container-install-prereqs.sh index af4173210..e73f4c2b3 100755 --- a/docker/bin/container-install-prereqs.sh +++ b/docker/bin/container-install-prereqs.sh @@ -29,13 +29,13 @@ apt-get install -qy \ less \ lsb-release \ nano \ - python3 \ - python3-pip \ + # python3 \ + # python3-pip \ tzdata \ unzip \ vim \ - virtualenv \ - virtualenvwrapper \ + # virtualenv \ + # virtualenvwrapper \ wget echo -e "\n\nSoftware Pre-reqs Installation Complete!\n\n" diff --git a/docker/build.sh b/docker/build.sh index 1ef82ac22..05176954d 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -1,20 +1,162 @@ #!/bin/bash -echo -e "\n\nbuild running...\n" -source ./config/build.env - -BUILD_CMD="docker build \ --t ${IMAGE_NAME} \ --t ${IMAGE_NAME} \ ---build-arg BUILD_DATE=${BUILD_DATE} \ ---build-arg NAME=${NAME} \ ---build-arg VCS_REF=${VCS_REF} \ ---build-arg VCS_URL=${VCS_URL} \ ---build-arg VENDOR=${VENDOR} \ ---build-arg VERSION=${VERSION} \ ---build-arg IMAGE_NAME=${IMAGE_NAME} \ -." -# wtf. idk why this doesn't work -# --build-arg DESCRIPTION=\"${DESCRIPTION}\" \ - -echo -e "\n\nbuilding image using:\n${BUILD_CMD}" -exec ${BUILD_CMD} + +# vars are stored in .env and config/base.env files +# note that the FROM used in the Dockerfile files +# needs to be updated to match the version in the env +# files in order for anything other than the base image +# to build correctly. +# TODO: fix this so that the FROM is set in the Dockerfile +# automatically by the env vars + +SEP1="==============================" +SEP2="------------------------------" + +echo -e "\n\n${SEP1}" +echo -e "BEGINNING BUILD..." + +case $1 in + + "base") + ##################### + #### BASE IMAGE #### + ##################### + echo -e "\n${SEP2}\nbuilding base image...\n" + source ./config/base.env + + BUILD_CMD="docker build \ + -f Dockerfile-base \ + -t ${IMAGE_NAME} \ + --build-arg BUILD_DATE=${BUILD_DATE} \ + --build-arg NAME=${NAME} \ + --build-arg VCS_REF=${VCS_REF} \ + --build-arg VCS_URL=${VCS_URL} \ + --build-arg VENDOR=${VENDOR} \ + --build-arg VERSION=${VERSION} \ + --build-arg IMAGE_NAME=${IMAGE_NAME} \ + ." + + echo -e "\n\nbuilding image using:\n${BUILD_CMD}" + exec ${BUILD_CMD} + echo -e "\nbase image build complete!\n${SEP2}\n" + ;; + + "aws") + ##################### + #### AWS IMAGE #### + ##################### + + echo -e "\n${SEP2}\nbuilding aws image...\n" + source ./config/base.env + source ./config/aws.env + + BUILD_CMD="docker build \ + -f Dockerfile-aws \ + -t ${IMAGE_NAME} \ + --build-arg BUILD_DATE=${BUILD_DATE} \ + --build-arg NAME=${NAME} \ + --build-arg VCS_REF=${VCS_REF} \ + --build-arg VCS_URL=${VCS_URL} \ + --build-arg VENDOR=${VENDOR} \ + --build-arg VERSION=${VERSION} \ + --build-arg IMAGE_NAME=${IMAGE_NAME} \ + ." + + echo -e "\n\nbuilding image using:\n${BUILD_CMD}" + exec ${BUILD_CMD} + echo -e "\naws image build complete!\n${SEP2}\n" + ;; + + "gcp") + ##################### + #### GCP IMAGE #### + ##################### + + echo -e "\n${SEP2}\nbuilding gcp image...\n" + source ./config/base.env + source ./config/gcp.env + + BUILD_CMD="docker build \ + -f Dockerfile-gcp \ + -t ${IMAGE_NAME} \ + --build-arg BUILD_DATE=${BUILD_DATE} \ + --build-arg NAME=${NAME} \ + --build-arg VCS_REF=${VCS_REF} \ + --build-arg VCS_URL=${VCS_URL} \ + --build-arg VENDOR=${VENDOR} \ + --build-arg VERSION=${VERSION} \ + --build-arg IMAGE_NAME=${IMAGE_NAME} \ + ." + + echo -e "\n\nbuilding image using:\n${BUILD_CMD}" + exec ${BUILD_CMD} + echo -e "\ngcp image build complete!\n${SEP2}\n" + ;; + + "azure") + ##################### + #### AZURE IMAGE #### + ##################### + echo -e "\n${SEP2}\nbuilding azure image...\n" + source ./config/base.env + source ./config/azure.env + + BUILD_CMD="docker build \ + -f Dockerfile-azure \ + -t ${IMAGE_NAME} \ + --build-arg BUILD_DATE=${BUILD_DATE} \ + --build-arg NAME=${NAME} \ + --build-arg VCS_REF=${VCS_REF} \ + --build-arg VCS_URL=${VCS_URL} \ + --build-arg VENDOR=${VENDOR} \ + --build-arg VERSION=${VERSION} \ + --build-arg IMAGE_NAME=${IMAGE_NAME} \ + ." + + echo -e "\n\nbuilding image using:\n${BUILD_CMD}" + exec ${BUILD_CMD} + ;; + + "combined") + ##################### + ## COMBINED IMAGE ## + ##################### + echo -e "\n${SEP2}\nbuilding combined image...\n" + source ./config/base.env + source ./config/combined.env + + BUILD_CMD="docker build \ + -f Dockerfile \ + -t ${IMAGE_NAME} \ + --build-arg BUILD_DATE=${BUILD_DATE} \ + --build-arg NAME=${NAME} \ + --build-arg VCS_REF=${VCS_REF} \ + --build-arg VCS_URL=${VCS_URL} \ + --build-arg VENDOR=${VENDOR} \ + --build-arg VERSION=${VERSION} \ + --build-arg IMAGE_NAME=${IMAGE_NAME} \ + ." + + echo -e "\n\nbuilding image using:\n${BUILD_CMD}" + exec ${BUILD_CMD} + echo -e "\nbase image build complete!\n${SEP2}\n" + ;; + + "all") + $0 base + $0 aws + $0 gcp + $0 azure + ;; + + *) + echo -e "\nBUILD TARGET NOT FOUND!" + echo -e "\nUSAGE:\n $0 [base | aws | gcp | azure | all ]" + echo -e "${SEP1}" + exit 1 + # echo -e "Using default: all\n" + # $0 all + ;; + +esac + +echo -e "\n${SEP1}\nBUILD COMPLETE!...\n" \ No newline at end of file diff --git a/docker/config/aws.env b/docker/config/aws.env new file mode 100644 index 000000000..4b346ec8a --- /dev/null +++ b/docker/config/aws.env @@ -0,0 +1,6 @@ +CLOUD='aws' +IMAGE_NAME="${VENDOR}/${NAME}-${CLOUD}:${VERSION}" + +# These are passed in as env vars to the container at runtime +DEBIAN_FRONTEND=noninteractive +TERM=linux \ No newline at end of file diff --git a/docker/config/azure.env b/docker/config/azure.env new file mode 100644 index 000000000..aa19957c8 --- /dev/null +++ b/docker/config/azure.env @@ -0,0 +1,6 @@ +CLOUD='azure' +IMAGE_NAME="${VENDOR}/${NAME}-${CLOUD}:${VERSION}" + +# These are passed in as env vars to the container at runtime +DEBIAN_FRONTEND=noninteractive +TERM=linux \ No newline at end of file diff --git a/docker/config/build.env b/docker/config/base.env similarity index 78% rename from docker/config/build.env rename to docker/config/base.env index cd22fe07a..ebc42e829 100644 --- a/docker/config/build.env +++ b/docker/config/base.env @@ -1,13 +1,13 @@ VCS_REF=$(git rev-parse --short HEAD) VCS_URL='https://github.com/nccgroup/ScoutSuite' -VERSION='0.3.0' +VERSION='5.13.0-01' BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") VENDOR='nccgroup' NAME='scoutsuite' +CLOUD='base' DESCRIPTION='A ready-to-go NCC Group ScoutSuite container based on Ubuntu.' -IMAGE_NAME="${VENDOR}/${NAME}:${VERSION}" +IMAGE_NAME="${VENDOR}/${NAME}-${CLOUD}:${VERSION}" # These are passed in as env vars to the container at runtime -IBMCLOUD_COLOR=true DEBIAN_FRONTEND=noninteractive -TERM=linux \ No newline at end of file +TERM=linux diff --git a/docker/config/combined.env b/docker/config/combined.env new file mode 100644 index 000000000..c48158f6e --- /dev/null +++ b/docker/config/combined.env @@ -0,0 +1,5 @@ +IMAGE_NAME="${VENDOR}/${NAME}:${VERSION}" + +# These are passed in as env vars to the container at runtime +DEBIAN_FRONTEND=noninteractive +TERM=linux \ No newline at end of file diff --git a/docker/config/gcp.env b/docker/config/gcp.env new file mode 100644 index 000000000..55eee77af --- /dev/null +++ b/docker/config/gcp.env @@ -0,0 +1,6 @@ +CLOUD='gcp' +IMAGE_NAME="${VENDOR}/${NAME}-${CLOUD}:${VERSION}" + +# These are passed in as env vars to the container at runtime +DEBIAN_FRONTEND=noninteractive +TERM=linux \ No newline at end of file diff --git a/docker/config/ibm.env b/docker/config/ibm.env new file mode 100644 index 000000000..3a4a4dc5e --- /dev/null +++ b/docker/config/ibm.env @@ -0,0 +1,7 @@ +CLOUD='ibm' +IMAGE_NAME="${VENDOR}/${NAME}-${CLOUD}:${VERSION}" + +# These are passed in as env vars to the container at runtime +IBMCLOUD_COLOR=true +DEBIAN_FRONTEND=noninteractive +TERM=linux \ No newline at end of file diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml deleted file mode 100644 index 296424a62..000000000 --- a/docker/docker-compose.yaml +++ /dev/null @@ -1,18 +0,0 @@ -version: "3.8" -services: - ncc-scoutsuite: - image: scoutsuite:latest - env_file: - - config/build.env - build: - context: . - dockerfile: Dockerfile - args: - - VCS_REF=${VCS_REF} - - VCS_URL=${VCS_URL} - - VERSION=${VERSION} - - BUILD_DATE=${BUILD_DATE} - - VENDOR=${VENDOR} - - NAME=${NAME} - - IMAGE_NAME=${IMAGE_NAME} - - DESCRIPTION=${DESCRIPTION} diff --git a/docker/tag.sh b/docker/tag.sh new file mode 100755 index 000000000..062d059de --- /dev/null +++ b/docker/tag.sh @@ -0,0 +1,22 @@ +#!/bin/bash +source .env +#echo ${VERSION} +docker tag nccgroup/scoutsuite-aws:${VERSION} rossja/scoutsuite-aws:${VERSION} +docker tag nccgroup/scoutsuite-azure:${VERSION} rossja/scoutsuite-azure:${VERSION} +docker tag nccgroup/scoutsuite-gcp:${VERSION} rossja/scoutsuite-gcp:${VERSION} +docker tag nccgroup/scoutsuite-base:${VERSION} rossja/scoutsuite-base:${VERSION} + +docker tag rossja/scoutsuite-aws:${VERSION} rossja/scoutsuite-aws:latest +docker tag rossja/scoutsuite-azure:${VERSION} rossja/scoutsuite-azure:latest +docker tag rossja/scoutsuite-gcp:${VERSION} rossja/scoutsuite-gcp:latest +docker tag rossja/scoutsuite-base:${VERSION} rossja/scoutsuite-base:latest + +docker push rossja/scoutsuite-aws:${VERSION} +docker push rossja/scoutsuite-azure:${VERSION} +docker push rossja/scoutsuite-gcp:${VERSION} +docker push rossja/scoutsuite-base:${VERSION} + +docker push rossja/scoutsuite-aws:latest +docker push rossja/scoutsuite-azure:latest +docker push rossja/scoutsuite-gcp:latest +docker push rossja/scoutsuite-base:latest