Package: coguard-cli
CoGuardCoGuard is a comprehensive static analysis tool for IT infrastructure
configurations (cloud and on-premise).Finding and
fixing misconfigurations and security vulnerabilities for IaC, devices,
containers, cloud settings, and applications. Reduce the noise of CVE
notifications and focus on small improvements for big wins.Table of ContentsWhy CoGuardIntroduction to the CLIInstallationPre-RequisitesInstall from repository or PIPInstallation TipsUsageScan local Docker imagesScan local project repositoriesExtract & scan cloud configurationsGeneral ScanAdd to CI/CD PipelineScreenshotsSupported Technologies & RoadmapLearn MoreWhy CoGuardInfrastructure as Code (IaC) is here to stay. The versioning and
continuous scanning of every layer of your IT (on premise and cloud)
infrastructure is crucial.CoGuard's team observed that there are a lot of policy checks on the layers
communicating to the cloud, but the configurations inside specific
compute devices such as physical servers, virtual machines or
containers are mostly neglected, or have silo-ed solutions at best.In order to have static analysis practices for IaC that go as deep as
the available tools for code, every layer needs to be equally addressed.In our practice, we observed that, at times, even an awareness of
locations of configuration files is lacking. This is why we created a
command line tool helping with discovering those configurations, and
scanning them.CoGuard's CLI combines multiple ways to extract and scan your configuration
files.Docker images: Modern
container scanners check for versions of software and libraries
installed on those containers, and establish if there are common known
vulnerabilities and exposures (CVEs). The
CoGuard CLI is trying to find known configuration files for e.g. web
servers or databases, and scans these for security and best practice.
Additionally, the last Docker file used to create an image is analyzed
as well.Project Repositories: Modern projects store their infrastructure
information inside code repositories for better visibility and
traceability. CoGuard can extract Infrastructure as Code (IaC)
files and other supported configurations. It also searches for
external container references and scans these as well.Cloud configurations not represented as IaC: Many organizations
have either not yet started using IaC tools, or have a hybrid model
of part IaC, part manual management. For these cases, we can
extract cloud configurations for AWS, Azure or GCP, and scan them
as well.Introduction to the CoGuard CLIThis project is the command line interface to CoGuard, with additional
functionality for the auto-discovery of configuration files.The current release scans for:Docker images and its contents,project folders (such as GitHub Repositories) andwill automatically extracted cloud configurations from the AWS, Azure and GCPIt searches for knownconfiguration filesof different
software packages (like webservers, databases, etc.), and scans these
configurations for configuration errors and security best practices.Installation InstructionsPre-RequisitesYou need to havepython3,pip3anddockerinstalled on your system.
Instructions for different operating systems and commands to be used for Python and Pip are provided below.Ubuntu/Debiansudoaptinstall-ypython3python3-pipAlpineapkaddpython3py3-pipCentOS/Fedorasudoyuminstall-ypython3python3-pipArch Linuxsudopacman-Spythonpython-pipMac OSAssuming you are using [Homebrew](https://brew.sh), you have to runbrewinstallpython3WindowsDownload Python3 for Windows usingthis link, and
install it.InstallationCoGuard CLI can either be pulled from this repository and used
directly, or installed viapip:pip3installcoguard-cliThis is a reminder that it is a requirement to haveDockerinstalled locally.Installation remarksRemark 1: It may happen that the folder wherepipis installing packages is not
in included inPATH. We have observed it on some Ubuntu installations, and on
Homebrew Mac installs. For the Linux case, such as Ubuntu,
you can find the binary usually under$HOME/.local/bin/coguard, i.e. you run$HOME/.local/bin/coguarddocker-image[<YOUR-IMAGE-NAME-OR-ID>]For the Mac case, it is often installed under~/Library/Python/<YOUR_PYTHON_VERSION>/bin/coguard, i.e. you would run~/Library/Python/<YOUR_PYTHON_VERSION>/bin/coguarddocker-image[<YOUR-IMAGE-NAME-OR-ID>]If you omit the image ID parameter, CoGuard will scan all the images currently
stored on your device.Remark 2: Windows users need to be allowed to create and read symbolic links.
This can be achieved using three options:Option 11. Run the CoGuard execution as admin temporarily. This can be achieved by opening the
   PowerShell or command prompt as administrative user (right click on the icon),
   or by issuing the command
   ```shell
   Start-Process powershell -Verb runAs
   ```
   inside an already open command/Powershell window.Option 22. Run Windows in Developer Mode (instructions on how to run Windows as a developer can
   be found [here](https://docs.microsoft.com/en-us/gaming/game-bar/guide/developer-mode)).Option 33. Run CoGuard on a Linux virtual machine, e.g. using the Windows subsystem for Linux.
   This is commonly installed with Docker Desktop for Windows. If you do not have it installed,
   then installation instructions can be found
   [here](https://docs.microsoft.com/en-us/windows/wsl/install).
   The installation steps for CoGuard using WSL are equivalent to the pre-requisites
   and installation steps described for Linux (dependent on the distribution you choose).How to use itAny of the following options requires you to create a CoGuard account.
After completion, this image check will return the findings of CoGuard
on this particular image. You can view the latest historical scan results
when logging in tohttps://portal.coguard.io.Scanning Docker imagesUsing the CoGuard CLI, you can run a scan on your local Docker images
usingcoguarddocker-image[scan][<YOUR-IMAGE-NAME-OR-ID>]Scanning project repository foldersUsing the CoGuard CLI, you can run a scan on your local
file repositories usingcoguardfolder[scan][<PATH-TO-FOLDER>]Extracting and scanning cloud configurations (BETA)Using the CoGuard CLI, you can run a scan a current snapshot of your
cloud configurations. This requires you to have the respective
cloud CLI tools (aws-clifor AWS,gcloudfor GCP orazfor
Azure) installed and authenticated on your device.coguardcloud[scan]{aws,azure,gcp}The extraction may take a couple of minutes, depending on your
internet speed.General scanTo get a general scan, which includes all locally installed Docker
images, anything in the current-working directory (recursive) and any
installed cloud provider authentication, simply runcoguardscanInclusion into CI/CD pipelineCoGuard can be included as a step in your CI/CD pipeline. CoGuard generates the
necessary templates and scripts.GitHub Actions is available in the current release. To generate e.g. a GitHub Actions
YAML which automatically scans your repository on
pull request/push, simply typecoguardpipelinegithubadd<PATH_TO_YOUR_REPOSITORY>Future support is plannedfor GitLab CI/CD, Jenkins, Bamboo, CircleCI, etc.Screenshot and further informationHere is a screenshot of a sample scan:As you can see, CoGuard also analyzes the last Dockerfile used.The checks are gathered from different security benchmarks, such as CIS, but also
directly from the user manuals of these software projects. At times, known issues for
certain versions and security remediations specific to a certain version are being taken
into account as well.Supported Technologies and RoadmapCoGuard currently supports the the auto-discovery of configuration files inside
Docker containers, folders and cloud configuration exports. The full list of configurations files
can be foundin this folder.Supported Applications & Infrastructure as CodeApache KafkaApache TomcatApache WebServerCloudFormationDockerfileElasticSearchHelmKerberosKubernetesMongoDBMySQLNetlifyNGINXOpenTelemetry CollectorPostgreSQLRedisTerraFormSupported Cloud HostsAWSAzureGCPOVH CloudRoadmap (Future Support Planned)AnsibleJenkinsBambooCircleCIOpenAPIPuppetBitBucket PipelinesContact usfor full list or to add a specific request or custom rulesThis list
will expand in the future. In addition, we are scanning the
Dockerfile used to create the images, and will add some Linux
configuration files in the near future.Learn moreCoGuardBlog[Contact Us](https://coguard.io/contact