Repository: flatcar-linux/Flatcar
Branch: main
Commit: 1eeb0355ca05
Files: 37
Total size: 448.9 KB
Directory structure:
gitextract_vqk6gyzh/
├── .github/
│ └── workflows/
│ └── issue-pr-contrib-metrics.yaml
├── ADOPTERS.md
├── CIS/
│ ├── README.md
│ ├── inspec-report-level1-root-2020-12-08.txt
│ ├── inspec-report-level2-root-2020-12-08.txt
│ └── level1-remediation_notes-2020-12-08.md
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── EMERITUS_MAINTAINERS.md
├── LICENSE
├── MAINTAINERS.md
├── ONBOARDING.md
├── README.md
├── RELEASES.md
├── SECURITY.md
├── adding-new-packages.md
├── attic/
│ └── community-meetings/
│ ├── 2021-05-11.md
│ ├── 2021-06-08.md
│ ├── 2021-07-13.md
│ ├── 2021-07-26.md
│ ├── 2021-08-10.md
│ ├── 2021-08-23.md
│ ├── 2021-09-14.md
│ ├── 2021-09-28.md
│ ├── 2021-10-19.md
│ ├── 2021-10-26.md
│ ├── 2021-11-09.md
│ ├── 2021-11-23.md
│ ├── 2021-12-17.md
│ ├── 2022-01-11.md
│ └── README.md
├── governance.md
├── interop-matrix.md
└── sync-maintainers/
├── README
├── requirements.txt
└── sync-maintainers.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/issue-pr-contrib-metrics.yaml
================================================
name: Monthly contributor report
on:
workflow_dispatch:
inputs:
start_date:
type: string
description: |
Custom start date for metrics generation in YYYY-MM-DD format.
required: true
end_date:
type: string
description: |
Custom end date for metrics generation in YYYY-MM-DD format.
required: true
# Run on every 22th of the month. This guarantees that this action runs
# before the Dev Sync (every 4th Tuesday of the month in the afternoon).
schedule:
- cron: '0 0 22 * *'
permissions:
issues: write
jobs:
contributor_report:
name: contributor report
runs-on: ubuntu-latest
steps:
- name: Set the start and end dates
shell: bash
run: |
set -euo pipefail
if [[ -n "${{inputs.start_date}}" && -n "${{inputs.end_date}}" ]] ; then
start_date="${{inputs.start_date}}"
end_date=${{inputs.end_date}}
else
start_date=$(date -d "last month" +%Y-%m-%d)
end_date=$(date -d "yesterday" +%Y-%m-%d)
fi
echo "START_DATE=$start_date" >> "$GITHUB_ENV"
echo "END_DATE=$end_date" >> "$GITHUB_ENV"
#
# Contributors stats
#
- name: Collect contributor metrics
uses: github-community-projects/contributors@v1
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
START_DATE: ${{ env.START_DATE }}
END_DATE: ${{ env.END_DATE }}
# We explicitly list repos for our metrics here so temporary forks like
# e.g. systemd, gentoo, or udev don't pollute the stats
REPOSITORY: "flatcar/nebraska,flatcar/flatcar-website,flatcar/flatcar-build-scripts,flatcar/baselayout,flatcar/bootengine,flatcar/coreos-cloudinit,flatcar/flatcar-dev-util,flatcar/init,flatcar/locksmith,flatcar/mantle,flatcar/mayday,flatcar/nss-altfiles,flatcar/scripts,flatcar/seismograph,flatcar/shim,flatcar/sysroot-wrappers,flatcar/toolbox,flatcar/torcx,flatcar/update-ssh-keys,flatcar/update_engine,flatcar/updateservicectl,flatcar/Flatcar,flatcar/flatcar-packer-qemu,flatcar/flatcar-ipxe-scripts,flatcar/flatcar-cloud-image-uploader,flatcar/flatcar-linux-update-operator,flatcar/flatcar-release-mirror,flatcar/flatcar-terraform,flatcar/sdnotify-proxy,flatcar/nebraska-update-agent,flatcar/fleetlock,flatcar/flog,flatcar/ign-converter,flatcar/nomad-on-flatcar,flatcar/sysext-bakery,flatcar/reports,flatcar/flatcar-demos,flatcar/jitsi-server,flatcar/flatcar-mastodon,flatcar/ue-rs,flatcar/azure-marketplace-ingestion-api,flatcar/flatcar-tutorial,flatcar/flatcar-app-minecraft,flatcar/garm-provider-linode,flatcar/socials"
SPONSOR_INFO: "false"
#
# Q&A Discussions stats
#
- name: All unanswered Q&A summary metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'repo:flatcar/Flatcar type:discussions category:Q&A is:unanswered'
# This metric measures items that are still open
HIDE_TIME_TO_CLOSE: true
- name: rename open discussion metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md discussion_qna_open.md
- name: All answered Q&A Discussions metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'repo:flatcar/Flatcar type:discussions category:Q&A is:answered'
- name: rename open discussion metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md discussion_qna_closed.md
- name: New Q&A discussions created metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'repo:flatcar/Flatcar type:discussions category:Q&A created:${{ env.START_DATE }}..${{ env.END_DATE }}'
- name: rename open discussion metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md discussion_qna_opened.md
#
# Regular Discussions stats
#
- name: All open Discussions summary metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'repo:flatcar/Flatcar type:discussions -category:Q&A is:open'
# This metric measures items that are still open
HIDE_TIME_TO_CLOSE: true
- name: rename open discussion metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md discussion_open.md
- name: New Discussions created metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'repo:flatcar/Flatcar type:discussions -category:Q&A created:${{ env.START_DATE }}..${{ env.END_DATE }}'
- name: rename open discussion metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md discussion_opened.md
- name: Discussions closed metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'repo:flatcar/Flatcar type:discussions -category:Q&A closed:${{ env.START_DATE }}..${{ env.END_DATE }}'
- name: rename open discussion metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md discussion_closed.md
#
# Issues stats
#
- name: All open Issues summary metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'org:flatcar is:issue is:open'
# "time to answer" only supported for discussions
HIDE_TIME_TO_ANSWER: true
# This metric measures items that are still open
HIDE_TIME_TO_CLOSE: true
IGNORE_USERS: "flatcar-infra,github-actions[bot],dependabot[bot]"
- name: rename open issues metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md issues_open.md
- name: New issues created metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'org:flatcar is:issue created:${{ env.START_DATE }}..${{ env.END_DATE }}'
# "time to answer" only supported for discussions
HIDE_TIME_TO_ANSWER: true
IGNORE_USERS: "flatcar-infra,github-actions[bot],dependabot[bot]"
- name: rename new issues opened metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md issues_opened.md
- name: Issues closed metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'org:flatcar is:issue closed:${{ env.START_DATE }}..${{ env.END_DATE }}'
# "time to answer" only supported for discussions
HIDE_TIME_TO_ANSWER: true
IGNORE_USERS: "flatcar-infra,github-actions[bot],dependabot[bot]"
- name: rename issues closed metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md issues_closed.md
#
# Advisories stats
#
- name: All open Advisories summary metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'repo:flatcar/Flatcar is:issue is:open label:advisory -status:implemented'
# "time to answer" only supported for discussions
HIDE_TIME_TO_ANSWER: true
# This metric measures items that are still open
HIDE_TIME_TO_CLOSE: true
- name: rename open advisories metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md advisories_open.md
- name: New advisories created metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'repo:flatcar/Flatcar is:issue label:advisory created:${{ env.START_DATE }}..${{ env.END_DATE }}'
# "time to answer" only supported for discussions
HIDE_TIME_TO_ANSWER: true
- name: rename new advisories opened metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md advisories_opened.md
- name: Advisories closed metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'repo:flatcar/Flatcar is:issue label:advisory closed:${{ env.START_DATE }}..${{ env.END_DATE }}'
# "time to answer" only supported for discussions
HIDE_TIME_TO_ANSWER: true
- name: rename advisories closed metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md advisories_closed.md
#
# Pull Requests stats
#
- name: All open PRs summary metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'org:flatcar is:pr is:open -author:flatcar-infra'
# "time to answer" only supported for discussions
HIDE_TIME_TO_ANSWER: true
# This metric measures items that are still open
HIDE_TIME_TO_CLOSE: true
IGNORE_USERS: "flatcar-infra,github-actions[bot],dependabot[bot]"
- name: rename open PR metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md prs_open.md
- name: New PRs created metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'org:flatcar is:pr -author:flatcar-infra created:${{ env.START_DATE }}..${{ env.END_DATE }}'
# "time to answer" only supported for discussions
HIDE_TIME_TO_ANSWER: true
IGNORE_USERS: "flatcar-infra,github-actions[bot],dependabot[bot]"
- name: rename new PRs metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md prs_opened.md
- name: PRs closed metrics
uses: github-community-projects/issue-metrics@v2
env:
GH_TOKEN: ${{ secrets.GH_ACTION_METRICS_ORG_READ }}
SEARCH_QUERY: 'org:flatcar is:pr -author:flatcar-infra closed:${{ env.START_DATE }}..${{ env.END_DATE }}'
# "time to answer" only supported for discussions
HIDE_TIME_TO_ANSWER: true
IGNORE_USERS: "flatcar-infra,github-actions[bot],dependabot[bot]"
- name: rename closed PRs metrics file
shell: bash
run: |
set -euo pipefail
mv issue_metrics.md prs_closed.md
#
# Upload and post-process, create issue
#
- name: Upload individual reports
uses: actions/upload-artifact@v4
with:
retention-days: 32
name: raw-reports
path: |
./*.md
- name: Assemble full report
shell: bash
run: |
set -euo pipefail
echo -e '# Contributions, Discussions, Advisories, and Issues' >> summary_report.md
echo "(See comment below for Pull Request Metrics)" >> summary_report.md
# Create table of contents.
# Anchor targets defined here are created below when the respective section is added.
echo "# Contents" >> summary_report.md
echo "* [Contributors Metrics](#contributors-metrics)" >> summary_report.md
echo "* [Github Discussions Metrics](#discussions-metrics)" >> summary_report.md
echo " * [Questions and Answers Discussions](#discussions-metrics-qna)" >> summary_report.md
echo " * [Other Discussions](#discussions-metrics-other)" >> summary_report.md
echo "* [Advisory Metrics](#advisory-metrics)" >> summary_report.md
echo " * [New Advisories](#advisory-metrics-new)" >> summary_report.md
echo " * [Closed Advisories](#advisory-metrics-closed)" >> summary_report.md
echo " * [All open Advisories](#advisory-metrics-summary)" >> summary_report.md
echo "* [Issue Metrics](#issue-metrics)" >> summary_report.md
echo " * [Summary of all open Issues](#issue-metrics-summary)" >> summary_report.md
echo " * [New Issues](#issue-metrics-new)" >> summary_report.md
echo " * [Closed Issues](#issue-metrics-closed)" >> summary_report.md
#
# Contributors
#
echo -e '\n\n
Contributors Metrics
' >> summary_report.md
tail --lines=+2 contributors.md >> summary_report.md
#
# Discussions
#
echo -e '\n\nDiscussions Metrics
' >> summary_report.md
echo -e '\nQuestions & Answers
' >> summary_report.md
echo -e "\n### Summary of all unanswered Questions" >> summary_report.md
echo "These summary statistics include all currently unanswered Q&A discussions (openend at any point in the past)." \
>> summary_report.md
# remove full discussions list from stats; we only want the summary
tail --lines=+2 discussion_qna_open.md \
| awk '/^\| Title \| URL \| Author \|/{silent=1} {if (silent==0) print $0}' \
>> summary_report.md
echo -e "\n### Summary of all answered Questions" >> summary_report.md
echo -e "\nThese Q&A discussions were openend and also answered between ${{ env.START_DATE }} - ${{ env.END_DATE }}." \
>> summary_report.md
echo -e "(Discussions search is somewhat limited on Github; there's currently no way to search for discussions answered within a given timespan)" \
>> summary_report.md
# remove full discussions list from stats; we only want the summary
tail --lines=+2 discussion_qna_closed.md \
| awk '/^\| Title \| URL \| Author \|/{silent=1} {if (silent==0) print $0}' \
>> summary_report.md
echo -e "\n### New Questions" >> summary_report.md
echo -e "\nThese Q&A discussions were created between ${{ env.START_DATE }} - ${{ env.END_DATE }}." \
>> summary_report.md
tail --lines=+2 discussion_qna_opened.md >> summary_report.md
echo -e '\nOther Discussions
' >> summary_report.md
echo -e "\n### Summary of open Discussions" >> summary_report.md
echo "These summary statistics include all currently open discussions except Q&A (openend at any point in the past)." \
>> summary_report.md
# remove full discussions list from stats; we only want the summary
tail --lines=+2 discussion_open.md \
| awk '/^\| Title \| URL \| Author \|/{silent=1} {if (silent==0) print $0}' \
>> summary_report.md
echo -e "\n## New discussions" >> summary_report.md
echo -e "\nThese discussions (except Q&A) were created between ${{ env.START_DATE }} - ${{ env.END_DATE }}." \
>> summary_report.md
tail --lines=+2 discussion_opened.md >> summary_report.md
echo -e "\n## Discussions closed" >> summary_report.md
echo -e "\nThese discussions (except Q&A) were opened at any point in the past and closed between ${{ env.START_DATE }} - ${{ env.END_DATE }}." \
>> summary_report.md
tail --lines=+2 discussion_closed.md >> summary_report.md
#
# Advisories
#
echo -e '\n\nAdvisory Metrics
' >> summary_report.md
echo -e "\n\nNote that advisories are tracked in issues, so the advisories discussed in this section also contribute to the overall issue statistics above.\n\n" \
>> summary_report.md
echo -e '\nNew Advisories
' >> summary_report.md
echo -e "\nThese advisories were created between ${{ env.START_DATE }} - ${{ env.END_DATE }}." \
>> summary_report.md
tail --lines=+2 advisories_opened.md >> summary_report.md
echo -e '\nAdvisories closed
' >> summary_report.md
echo -e "\nThese advisories were openend at any point in the past and were closed between ${{ env.START_DATE }} - ${{ env.END_DATE }}." \
>> summary_report.md
tail --lines=+2 advisories_closed.md >> summary_report.md
echo -e '\nAll open Advisoriess
' >> summary_report.md
echo "These statistics cover all open advisories (openend at any point in the past)." \
>> summary_report.md
tail --lines=+2 advisories_open.md >> summary_report.md
#
# Issues
#
echo -e '\n\nIssue Metrics
' >> summary_report.md
echo -e '\nSummary of all open Issues
' >> summary_report.md
echo "These summary statistics include all currently open issues (openend at any point in the past)." \
>> summary_report.md
# remove full issues list from stats; we only want the summary
tail --lines=+2 issues_open.md \
| awk '/^\| Title \| URL \| Author \|/{silent=1} {if (silent==0) print $0}' \
>> summary_report.md
echo -e '\nNew Issues
' >> summary_report.md
echo -e "\nThese issues were created between ${{ env.START_DATE }} - ${{ env.END_DATE }}." \
>> summary_report.md
tail --lines=+2 issues_opened.md >> summary_report.md
echo -e '\nIssues closed
' >> summary_report.md
echo -e "\nThese issues were openend at any point in the past and were closed between ${{ env.START_DATE }} - ${{ env.END_DATE }}." \
>> summary_report.md
tail --lines=+2 issues_closed.md >> summary_report.md
#
# Pull Requests
#
echo '# Pull request metrics' >> comment_report.md
echo "(See comment below for Pull Request Metrics)" >> comment_report.md
echo "* [Pull Requests Metrics](#pr-metrics)" >> comment_report.md
echo " * [Summary of all open PRs](#pr-metrics-summary)" >> comment_report.md
echo " * [New PRs](#pr-metrics-new)" >> comment_report.md
echo " * [Closed PRs](#pr-metrics-closed)" >> comment_report.md
echo -e '\n\nPull Requests Metrics
' >> comment_report.md
echo -e '\nSummary of all open PRs
' >> comment_report.md
echo "These summary statistics include all currently open PRs (openend at any point in the past)." \
>> comment_report.md
# remove full PRs list from stats; we only want the summary
tail --lines=+2 prs_open.md \
| awk '/^\| Title \| URL \| Author \|/{silent=1} {if (silent==0) print $0}' \
>> comment_report.md
echo -e '\nNew PRs
' >> comment_report.md
echo -e "\nThese PRs were created between ${{ env.START_DATE }} - ${{ env.END_DATE }}." \
>> comment_report.md
tail --lines=+2 prs_opened.md >> comment_report.md
echo -e '\nPRs closed
' >> comment_report.md
echo -e "\nThese PRs were openend at any point in the past and were closed between ${{ env.START_DATE }} - ${{ env.END_DATE }}." \
>> comment_report.md
tail --lines=+2 prs_closed.md >> comment_report.md
- name: Upload merged report
uses: actions/upload-artifact@v4
with:
retention-days: 32
name: full-report
path: |
./summary_report.md
./comment_report.md
- name: Create issue (1/2 of report)
id: ciss
uses: peter-evans/create-issue-from-file@v5
with:
title: Monthly contributions report ${{ env.START_DATE }} - ${{ env.END_DATE }}
token: ${{ secrets.GITHUB_TOKEN }}
content-filepath: ./summary_report.md
labels: kind/metric
- name: Create comment (2/2 of report)
id: cisc
uses: peter-evans/create-or-update-comment@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ steps.ciss.outputs.issue-number }}
body-path: ./comment_report.md
================================================
FILE: ADOPTERS.md
================================================
Who is using Flatcar?
====================
The following is a list of adopters who have publicly spoken about their use of Flatcar, or who have added themselves to this list.
Adding yourself as a user
-------------------------
If you are using Flatcar, please consider adding yourself as a user with a quick description of your use case by opening a pull request to this file and adding a section describing your usage of Flatcar. If you are open to others contacting you about your use of Flatcar on Slack or Matrix, include your Slack/Matrix nickname or email as well.
* N: Name of user (company or individual)
D: Description
L: Link with further information (optional)
C: Contacts available for questions (optional)
Example entry:
* N: Flatcar Example User Inc.
D: Using Flatcar for running Kubernetes in Azure via Cluster API
L: https://www.exampleuser.com
C: Slack: @slacknick and/or Matrix: @Matrixnick and/or Email: nick [at] exampleuser [dot] com
Requirements to be listed
-------------------------
* You must represent the user listed. Do not add entries on behalf of
other users, unless adding a link to a public announcement / blog post.
* Commercial or production use is not required. A user can be an end user, cloud service provider or consultant as long as it is a permanent deployment and not a trial deployment. A well-done home lab setup can be equally
interesting as a large-scale commercial deployment.
Users
-----
* N: 1&1 Mail & Media (GMX, WEB.DE, mail.com)
D: 1&1 Mail & Media is happily using FlatCar as the underlying OS in their large on-premise bare-metal Kubernetes installation, hosting the majority of services for their >40M users
C: stephan.fudeus [at] 1und1 [dot] de
* N: Adobe
D: Adobe runs Flatcar on over 18,000 nodes in our fleet of Kubernetes clusters across multiple cloud providers and private data centers in 22 different regions worldwide.
C: Mike Tougeron (Slack: @Mike Tougeron) and Tony Gosselin (Slack: @Tony Gosselin).
* N: AloPeyk
D: We are an on-demand delivery business that every day serve millions of requests on a consistent bare metal infrastructure have this concern to choose a reliable and atomic operations system but none of the common OS couldn't satisfy us for such heavy workloads. Since we migrated our production Kubernetes cluster nothing can break this consistent and solid cluster which is powered by amazing Flatcoar OS.
* N: AT&T
L: https://medium.com/cloud-native-the-gathering/certified-kubernetes-administrator-join-our-team-its-a-good-thing-7e27ab34dc88
D: "We are integrating Flatcar Container Linux, Istio, OPA, Multi-Region, KNative, and so many other technologies and concepts it makes the mind hurt a bit."
* N: Atsign
D: Personal Data Services 'atServers' are Dart ahead of time binaries running in containers on Docker Swarm using Flatcar worker nodes.
L: https://twitter.com/cpswan/status/1534481517887512577?s=20&t=ODnO_TPa4nhC62KNAB9Stw
C: Chris Swan [@cpswan](https://github.com/cpswan)
* N: Cloud house
D: Flatcar OS has been useful for us for our on-premise solution to our customers
* N: DeepL
D: We use Flatcar for our on-prem K8s clusters to run everything from CI/CD to performance-sensitive GPU workloads.
L: https://deepl.com/
C: simon.campion [at] deepl [dot] com
* N: Digital Science
L: https://digital-science.com
D: We're running Flatcar on all our self-hosted Kubernetes clusters on AWS, used for all data processing behind Dimensions (https://dimensions.ai). We choose Flatcar for security and simplicity.
C: soren [at] uberresearch.com
* N: Equinix Metal
L: https://kinvolk.io/blog/2021/02/case-study-equinix-metal-builds-on-flatcar/
D: Equinix uses Flatcar as the OS for its bare metal cloud control plane, which runs in Kubernetes
* N: Finleap Connect
D: Finleap Connect - At finleap connect we serve over a million financial transactions per day. As a regulated company using a pure cloud-native stack based on Kubernetes, using Flatcar as our foundational building block for reliable, secure and immutable nodes across the public clouds and on bare-metal deployments was a day one decision we never regretted. Today Flatcar serves all of our 12 production clusters with over 300 nodes on public clouds in 3 countries and on our bare-metal private-cloud setup.
* N: Genesis Cloud
D: Genesis Cloud is using Flatcar Linux as the base for its public cloud offering for instances with GPUs and other accelerators
L: https://genesiscloud.com/
C: Slack: @Philipp Riederer / @Lukas Stockner
* N: Giant Swarm
L: https://www.giantswarm.io/blog/time-to-catch-a-new-train-flatcar-linux
D: Giant Swarm uses Flatcar within their Kubernetes Distribution. Flatcar is used on all providers (Azure, AWS, Google, OpenStack and Vmware). Giant Swarm manages 100s of clusters with 1000s of nodes running on Flatcar across the planet.
* N: Intersys AG
* N: Memzo
D: Kinvolk was a valuable source of knowledge when troubleshooting installation issues with our platform vendor. They were able to join us and the vendor on a call and sort out the issues quickly.The use of the Flatcar Update Server gave us confidence about what software/OS versions were running in each of our environments. This allowed us to better test upgrades before promoting the change to production environments.
* N: Mettle
L https://swade1987.medium.com/upgrading-to-flatcar-linux-746751e89ab4
* N: Norwegian Labor and Welfare Administration (NAV)
D: The largest Norwegian government agency has been using Flatcar since 2021 to run all of their on-prem Kubernetes clusters enabling application teams to become more autonomous and to build better welfare services and deliver them with a higher velocity then before.
L: https://nais.io
C: hans.kristian.flaatten@nav.no
* N: Planetary Quantum GmbH
L: https://www.planetary-quantum.com/
D: Planetary Quantum is a berlin-based provider of Docker-hosting and application hosting. Our sister company Planetary Networks colocates their private cloud in two (fiber-)interconnected datacenters in Berlin and Quantum offers container-based solutions (Docker Swarm and a custom tailored application hosting) on top of Flatcar Linux. Flatcar Linux is a great choice for us because it's a modern Linux, well-suited for Docker and Kubernetes due to recent versions of Kernel, SystemD, immutable root and a well-tested userland. Simple and straight-forward updates of the OS make running Flatcar a no-brainer for us. We currently operate over 50 clusters for our customers in our private cloud — all based on Flatcar Linux.
* N: plusserver GmbH
D: Plus Server is using Flatcar as the basis of its managed Kubernetes offering, plusserver Kubernetes Engine (PSKE). As they state in their blog, "Flatcar is currently one of the most popular operating systems for Kubernetes clusters. With its container-optimized design, strong security, and support from an active open source community, it provides an excellent foundation for all container workloads."
L: https://www.plusserver.com/blog/flatcar/
* N: Qualys, Inc
D: Qualys Gateway Service uses Flatcar Container Linux as a base for its container-based appliance, which is mainly focussed on proxy and caching services, serving other Qualys sensors such as Cloud Agent, Scanner and Passive Sensor. QGS also serves Qualys modules including VMDR, Patch Management, Policy Compliance, EDR, FIM and XDR.
L: https://www.qualys.com/documentation/#qualys-gateway-service
C: jrose@qualys.com
* N: Skilld.cloud
L: https://www.skilld.cloud
D: Flatcar choice was a no-brainer for Skilld: Flatcar is a perfect fit for running Kubernetes workloads. On premise as well as on public clouds. We rely on Flatcar to power up our cutting-edge NRT data-driven ops platforms. A key asset for building distributed & asset management based businesses such as our Community-as-a-service IT platform, or our customers Train fleet's or smart grid's ones.
* N: Spinoco Czech Republic, a.s.
D: Using Flatcar on Bare Metal to run Kubernetes for Spinoco SaaS
L: www.spinoco.com
C: pavel.chlupacek@spinoco.com
* N: Schwarz Digits Cloud GmbH & Co. KG (STACKIT)
D: Flatcar Container Linux is the foundation of our managed Kubernetes offering (SKE), powering over 20,000 nodes. It is our customers' most popular OS choice, and we highly value the vibrant and active Open Source community behind Flatcar, which ensures continuous innovation and stability.
L: https://stackit.com/en/products/runtime/stackit-kubernetes-engine
C: @justrobin:matrix.org / info@stackit.cloud
* N: Wipro
D: Wipro Business Solutions uses Flatcar Linux to power their hybrid/multi-cloud PostgreSQL containerized DBaaS platform. Each provisioned database is running on a dedicated lightweight stack with Flatcar Linux as the foundational OS running on each database VM. In addition the DBaaS API itself and all supporting machines use Flatcar Linux as well. Flatcar Linux has proven to be a well-supported rock solid OS with minimal attack surface, built in update mechanism and integrated docker daemon. Ignition brings in an early boot provisioning utility that perfectly adds to the full automation approach of the PostgreSQL DBaaS platform. We use it at scale on-prem with OpenStack cloud but also with public clouds like Google and Tencent
================================================
FILE: CIS/README.md
================================================
# CIS Benchmarking
These reports are from points in time and have notes with remediation and applicability for Flatcar Container Linux.
The CIS benchmarks are usually tailored to specific Linux distributions, as well as generic Linux hosts.
Flatcar Container Linux being a narrow use-case distribution causes many results to be not applicable.
## Report Generation
After some annoyance dealing with [ruby](https://www.ruby-lang.org/) and [inspec](https://www.inspec.io/downloads/), I was able to run the report. Documenting here what I did and what I got.
1. Installed inspec via gem: `gem install inspec-bin --user-install`
2. Cloned the benchmark repo: `git clone https://github.com/dev-sec/cis-dil-benchmark.git`
3. Started a [Flatcar QEMU image](https://www.flatcar.org/docs/latest/reference/developer-guides/sdk-modifying-flatcar/), copied the authorized keys to root.
4. Ran the test suite in the image, for level 1 and 2 (the default):
```shell
~/.gem/ruby/2.7.0/bin/inspec exec --no-color ./cis-dil-benchmark/ -t ssh://root@localhost:2222 --input=cis_level=1 > ../debug/inspec-report-level1.txt
~/.gem/ruby/2.7.0/bin/inspec exec --no-color ./cis-dil-benchmark/ -t ssh://root@localhost:2222 > ../debug/inspec-report.txt
```
Results:
Level 1:
```text
Profile Summary: 65 successful controls, 83 control failures, 82 controls skipped
Test Summary: 593 successful, 258 failures, 88 skipped
```
Level: 2
```text
Profile Summary: 68 successful controls, 118 control failures, 43 controls skipped
Test Summary: 606 successful, 344 failures, 50 skipped
```
I'm looking at the failures and many of them are rather arbitrary decisions, and we'll need to evaluate which ones we want to consider to adopt in Flatcar. There's a bunch of filesystems that are recommended to be disabled, some of them, we might go ahead and disable (like hfs), others we actually need (like vfat).
But then there are things that should be fixed in the benchmark, because they fail because of our file-system layout. For example:
```text
× File /etc/pam.d/common-password content is expected to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
expected nil to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
```
## Reports
Here the too reports, and the corresponding notes we have produced:
* [2020-12-08 level1 report](./inspec-report-level1-root-2020-12-08.txt) -- [remediation notes](./level1-remediation_notes-2020-12-08.md)
* [2020-12-08 level2 report](./inspec-report-level2-root-2020-12-08.txt) -- _(no remediation notes yet)_
================================================
FILE: CIS/inspec-report-level1-root-2020-12-08.txt
================================================
Profile: CIS Distribution Independent Linux Benchmark Profile (cis-dil-benchmark)
Version: 0.4.4
Target: ssh://root@localhost:2222
× cis-dil-benchmark-1.1.1.1: Ensure mounting of cramfs filesystems is disabled (1 failed)
✔ Kernel Module cramfs is expected not to be loaded
× Kernel Module cramfs is expected to be disabled
expected `Kernel Module cramfs.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.2: Ensure mounting of freevxfs filesystems is disabled (1 failed)
✔ Kernel Module freevxfs is expected not to be loaded
× Kernel Module freevxfs is expected to be disabled
expected `Kernel Module freevxfs.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.3: Ensure mounting of jffs2 filesystems is disabled (1 failed)
✔ Kernel Module jffs2 is expected not to be loaded
× Kernel Module jffs2 is expected to be disabled
expected `Kernel Module jffs2.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.4: Ensure mounting of hfs filesystems is disabled (1 failed)
✔ Kernel Module hfs is expected not to be loaded
× Kernel Module hfs is expected to be disabled
expected `Kernel Module hfs.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.5: Ensure mounting of hfsplus filesystems is disabled (1 failed)
✔ Kernel Module hfsplus is expected not to be loaded
× Kernel Module hfsplus is expected to be disabled
expected `Kernel Module hfsplus.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.6: Ensure mounting of squashfs filesystems is disabled (1 failed)
✔ Kernel Module squashfs is expected not to be loaded
× Kernel Module squashfs is expected to be disabled
expected `Kernel Module squashfs.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.7: Ensure mounting of udf filesystems is disabled (1 failed)
✔ Kernel Module udf is expected not to be loaded
× Kernel Module udf is expected to be disabled
expected `Kernel Module udf.disabled?` to be truthy, got false
↺ cis-dil-benchmark-1.1.1.8: Ensure mounting of FAT filesystems is disabled
↺ Skipped control due to only_if condition.
✔ cis-dil-benchmark-1.1.2: Ensure separate partition exists for /tmp
✔ Mount /tmp is expected to be mounted
✔ cis-dil-benchmark-1.1.3: Ensure nodev option set on /tmp partition
✔ Mount /tmp options is expected to include "nodev"
✔ cis-dil-benchmark-1.1.4: Ensure nosuid option set on /tmp partition
✔ Mount /tmp options is expected to include "nosuid"
× cis-dil-benchmark-1.1.5: Ensure noexec option set on /tmp partition
× Mount /tmp options is expected to include "noexec"
expected ["rw", "nosuid", "nodev", "seclabel", "nr_inodes=409600"] to include "noexec"
↺ cis-dil-benchmark-1.1.6: Ensure separate partition exists for /var
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.1.7: Ensure separate partition exists for /var/tmp
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.1.8: Ensure nodev option set on /var/tmp partition
↺ Skipped control due to only_if condition: /var/tmp is mounted
↺ cis-dil-benchmark-1.1.9: Ensure nosuid option set on /var/tmp partition
↺ Skipped control due to only_if condition: /var/tmp is mounted
↺ cis-dil-benchmark-1.1.10: Ensure noexec option set on /var/tmp partition
↺ Skipped control due to only_if condition: /var/tmp is mounted
↺ cis-dil-benchmark-1.1.11: Ensure separate partition exists for /var/log
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.1.12: Ensure separate partition exists for /var/log/audit
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.1.13: Ensure separate partition exists for /home
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.1.14: Ensure nodev option set on /home partition
↺ Skipped control due to only_if condition: /home is mounted
✔ cis-dil-benchmark-1.1.15: Ensure nodev option set on /dev/shm partition
✔ Mount /dev/shm options is expected to include "nodev"
✔ cis-dil-benchmark-1.1.16: Ensure nosuid option set on /dev/shm partitionrun
✔ Mount /dev/shm options is expected to include "nosuid"
× cis-dil-benchmark-1.1.17: Ensure noexec option set on /dev/shm partition
× Mount /dev/shm options is expected to include "noexec"
expected ["rw", "nosuid", "nodev", "seclabel"] to include "noexec"
↺ cis-dil-benchmark-1.1.18: Ensure nodev option set on removable media partitions
↺ Not implemented
↺ cis-dil-benchmark-1.1.19: Ensure nosuid option set on removable media partitions
↺ Not implemented
↺ cis-dil-benchmark-1.1.20: Ensure noexec option set on removable media partitions
↺ Not implemented
✔ cis-dil-benchmark-1.1.21: Ensure sticky bit is set on all world-writable directories
✔ Command: `df --local -P | awk '{ if (NR!=1) print $6 }' | xargs -I '{}' find '{}' -xdev -type d ( -perm -0002 -a ! -perm -1000 )` stdout is expected to cmp == ""
✔ cis-dil-benchmark-1.1.22: Disable Automounting
✔ Service autofs is expected not to be enabled
✔ Service autofs is expected not to be running
✔ Service autofs is expected not to be enabled
✔ Service autofs is expected not to be running
× cis-dil-benchmark-1.1.23: Disable USB Storage (1 failed)
✔ Kernel Module usb_storage is expected not to be loaded
× Kernel Module usb_storage is expected to be disabled
expected `Kernel Module usb_storage.disabled?` to be truthy, got false
↺ cis-dil-benchmark-1.2.1: Ensure package manager repositories are configured
↺ Not implemented
↺ cis-dil-benchmark-1.2.2: Ensure GPG keys are configured
↺ Not implemented
× cis-dil-benchmark-1.3.1: Ensure AIDE is installed (2 failed)
× System Package aide is expected to be installed
expected that `System Package aide` is installed
× Command: `aide` is expected to exist
expected Command: `aide` to exist
× cis-dil-benchmark-1.3.2: Ensure filesystem integrity is regularly checked (4 failed)
× File /var/spool/cron/crontabs/root content is expected to match /aide (--check|-C)/
expected nil to match /aide (--check|-C)/
× File /var/spool/cron/root content is expected to match /aide (--check|-C)/
expected nil to match /aide (--check|-C)/
× File /etc/crontab content is expected to match /aide (--check|-C)/
expected nil to match /aide (--check|-C)/
× File /etc/cron.weekly/mdadm content is expected to match /aide (--check|-C)/
expected "#!/bin/sh\n# This requires that AUTOCHECK is true in /etc/default/mdadm\nif [ -x /usr/sbin/checkarray ] && [ $(date +\\%d) -le 7 ]; then\n\t/usr/sbin/checkarray --cron --all --idle --quiet\nfi\n" to match /aide (--check|-C)/
Diff:
@@ -1,5 +1,9 @@
-/aide (--check|-C)/
+#!/bin/sh
+# This requires that AUTOCHECK is true in /etc/default/mdadm
+if [ -x /usr/sbin/checkarray ] && [ $(date +\%d) -le 7 ]; then
+ /usr/sbin/checkarray --cron --all --idle --quiet
+fi
× cis-dil-benchmark-1.4.1: Ensure permissions on bootloader config are configured (22 failed)
× File /boot/grub/grub.conf is expected to exist
expected File /boot/grub/grub.conf to exist
✔ File /boot/grub/grub.conf is expected not to be readable by group
✔ File /boot/grub/grub.conf is expected not to be writable by group
✔ File /boot/grub/grub.conf is expected not to be executable by group
✔ File /boot/grub/grub.conf is expected not to be readable by other
✔ File /boot/grub/grub.conf is expected not to be writable by other
✔ File /boot/grub/grub.conf is expected not to be executable by other
× File /boot/grub/grub.conf gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub/grub.conf uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub/grub.cfg is expected to exist
expected File /boot/grub/grub.cfg to exist
✔ File /boot/grub/grub.cfg is expected not to be readable by group
✔ File /boot/grub/grub.cfg is expected not to be writable by group
✔ File /boot/grub/grub.cfg is expected not to be executable by group
✔ File /boot/grub/grub.cfg is expected not to be readable by other
✔ File /boot/grub/grub.cfg is expected not to be writable by other
✔ File /boot/grub/grub.cfg is expected not to be executable by other
× File /boot/grub/grub.cfg gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub/grub.cfg uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub/menu.lst is expected to exist
expected File /boot/grub/menu.lst to exist
✔ File /boot/grub/menu.lst is expected not to be readable by group
✔ File /boot/grub/menu.lst is expected not to be writable by group
✔ File /boot/grub/menu.lst is expected not to be executable by group
✔ File /boot/grub/menu.lst is expected not to be readable by other
✔ File /boot/grub/menu.lst is expected not to be writable by other
✔ File /boot/grub/menu.lst is expected not to be executable by other
× File /boot/grub/menu.lst gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub/menu.lst uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/boot/grub/grub.conf is expected to exist
expected File /boot/boot/grub/grub.conf to exist
✔ File /boot/boot/grub/grub.conf is expected not to be readable by group
✔ File /boot/boot/grub/grub.conf is expected not to be writable by group
✔ File /boot/boot/grub/grub.conf is expected not to be executable by group
✔ File /boot/boot/grub/grub.conf is expected not to be readable by other
✔ File /boot/boot/grub/grub.conf is expected not to be writable by other
✔ File /boot/boot/grub/grub.conf is expected not to be executable by other
× File /boot/boot/grub/grub.conf gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/boot/grub/grub.conf uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/boot/grub/grub.cfg is expected to exist
expected File /boot/boot/grub/grub.cfg to exist
✔ File /boot/boot/grub/grub.cfg is expected not to be readable by group
✔ File /boot/boot/grub/grub.cfg is expected not to be writable by group
✔ File /boot/boot/grub/grub.cfg is expected not to be executable by group
✔ File /boot/boot/grub/grub.cfg is expected not to be readable by other
✔ File /boot/boot/grub/grub.cfg is expected not to be writable by other
✔ File /boot/boot/grub/grub.cfg is expected not to be executable by other
× File /boot/boot/grub/grub.cfg gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/boot/grub/grub.cfg uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
✔ File /boot/boot/grub/menu.lst is expected to exist
× File /boot/boot/grub/menu.lst is expected not to be readable by group
expected File /boot/boot/grub/menu.lst not to be readable by group
✔ File /boot/boot/grub/menu.lst is expected not to be writable by group
× File /boot/boot/grub/menu.lst is expected not to be executable by group
expected File /boot/boot/grub/menu.lst not to be executable by group
× File /boot/boot/grub/menu.lst is expected not to be readable by other
expected File /boot/boot/grub/menu.lst not to be readable by other
✔ File /boot/boot/grub/menu.lst is expected not to be writable by other
× File /boot/boot/grub/menu.lst is expected not to be executable by other
expected File /boot/boot/grub/menu.lst not to be executable by other
✔ File /boot/boot/grub/menu.lst gid is expected to cmp == 0
✔ File /boot/boot/grub/menu.lst uid is expected to cmp == 0
× File /boot/grub2/grub.cfg is expected to exist
expected File /boot/grub2/grub.cfg to exist
✔ File /boot/grub2/grub.cfg is expected not to be readable by group
✔ File /boot/grub2/grub.cfg is expected not to be writable by group
✔ File /boot/grub2/grub.cfg is expected not to be executable by group
✔ File /boot/grub2/grub.cfg is expected not to be readable by other
✔ File /boot/grub2/grub.cfg is expected not to be writable by other
✔ File /boot/grub2/grub.cfg is expected not to be executable by other
× File /boot/grub2/grub.cfg gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub2/grub.cfg uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-1.4.2: Ensure bootloader password is set (14 failed)
× File /boot/grub/grub.conf content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/grub/grub.conf content is expected to match /^password/
expected nil to match /^password/
× File /boot/grub/grub.cfg content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/grub/grub.cfg content is expected to match /^password/
expected nil to match /^password/
× File /boot/grub/menu.lst content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/grub/menu.lst content is expected to match /^password/
expected nil to match /^password/
× File /boot/boot/grub/grub.conf content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/boot/grub/grub.conf content is expected to match /^password/
expected nil to match /^password/
× File /boot/boot/grub/grub.cfg content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/boot/grub/grub.cfg content is expected to match /^password/
expected nil to match /^password/
× File /boot/boot/grub/menu.lst content is expected to match /^set superusers/
expected "timeout 0\ntitle CoreOS GRUB2\nroot (hd0,0)\nkernel /xen/pvboot-x86_64.elf\n" to match /^set superusers/
Diff:
@@ -1,4 +1,7 @@
-/^set superusers/
+timeout 0
+title CoreOS GRUB2
+root (hd0,0)
+kernel /xen/pvboot-x86_64.elf
× File /boot/boot/grub/menu.lst content is expected to match /^password/
expected "timeout 0\ntitle CoreOS GRUB2\nroot (hd0,0)\nkernel /xen/pvboot-x86_64.elf\n" to match /^password/
Diff:
@@ -1,4 +1,7 @@
-/^password/
+timeout 0
+title CoreOS GRUB2
+root (hd0,0)
+kernel /xen/pvboot-x86_64.elf
× File /boot/grub2/grub.cfg content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/grub2/grub.cfg content is expected to match /^password/
expected nil to match /^password/
× cis-dil-benchmark-1.4.3: Ensure authentication required for single user mode (3 failed)
× /etc/shadow with user == "root" passwords is expected not to include "*"
expected ["*"] not to include "*"
✔ /etc/shadow with user == "root" passwords is expected not to include "!"
× File /etc/inittab content is expected to match /^~~:S:respawn:\/sbin\/sulogin/
expected nil to match /^~~:S:respawn:\/sbin\/sulogin/
× File /etc/sysconfig/init content is expected to match /^SINGLE=\/sbin\/sulogin$/
expected nil to match /^SINGLE=\/sbin\/sulogin$/
↺ cis-dil-benchmark-1.4.4: Ensure interactive boot is not enabled
↺ Not implemented
× cis-dil-benchmark-1.5.1: Ensure core dumps are restricted (2 failed)
× File /etc/security/limits.conf content is expected to match /^\s*\*\s+hard\s+core\s+0\s*(?:#.*)?$/
expected "# /etc/security/limits.conf\n#\n#Each line describes a limit for a user in the form:\n#\n# ... hard nproc 0\n\#@student - maxlogins 4\n\n# End of file\n" to match /^\s*\*\s+hard\s+core\s+0\s*(?:#.*)?$/
Diff:
@@ -1,50 +1,99 @@
-/^\s*\*\s+hard\s+core\s+0\s*(?:#.*)?$/
+# /etc/security/limits.conf
+#
+#Each line describes a limit for a user in the form:
+#
+# -
+#
+#Where:
+# can be:
+# - a user name
+# - a group name, with @group syntax
+# - the wildcard *, for default entry
+# - the wildcard %, can be also used with %group syntax,
+# for maxlogin limit
+#
+# can have the two values:
+# - "soft" for enforcing the soft limits
+# - "hard" for enforcing hard limits
+#
+#
- can be one of the following:
+# - core - limits the core file size (KB)
+# - data - max data size (KB)
+# - fsize - maximum filesize (KB)
+# - memlock - max locked-in-memory address space (KB)
+# - nofile - max number of open file descriptors
+# - rss - max resident set size (KB)
+# - stack - max stack size (KB)
+# - cpu - max CPU time (MIN)
+# - nproc - max number of processes
+# - as - address space limit (KB)
+# - maxlogins - max number of logins for this user
+# - maxsyslogins - max number of logins on the system
+# - priority - the priority to run user process with
+# - locks - max number of file locks the user can hold
+# - sigpending - max number of pending signals
+# - msgqueue - max memory used by POSIX message queues (bytes)
+# - nice - max nice priority allowed to raise to values: [-20, 19]
+# - rtprio - max realtime priority
+#
+#
-
+#
+
+#* soft core 0
+#* hard rss 10000
+#@student hard nproc 20
+#@faculty soft nproc 20
+#@faculty hard nproc 50
+#ftp hard nproc 0
+#@student - maxlogins 4
+
+# End of file
× Kernel Parameter fs.suid_dumpable value is expected to eq 0
expected: 0
got: 2
(compared using ==)
✔ cis-dil-benchmark-1.5.2: Ensure XD/NX support is enabled
✔ Command: `dmesg | grep NX` stdout is expected to match /NX \(Execute Disable\) protection: active/
✔ cis-dil-benchmark-1.5.3: Ensure address space layout randomization (ASLR) is enabled
✔ Kernel Parameter kernel.randomize_va_space value is expected to eq 2
✔ cis-dil-benchmark-1.5.4: Ensure prelink is disabled
✔ System Package prelink is expected not to be installed
✔ Command: `prelink` is expected not to exist
↺ cis-dil-benchmark-1.6.1.1: Ensure SELinux or AppArmor are installed
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.6.2.1: Ensure SELinux is not disabled in bootloader configuration
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.6.2.2: Ensure the SELinux state is enforcing
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.6.2.3: Ensure SELinux policy is configured
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.6.2.4: Ensure SETroubleshoot is not installed
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.6.2.5: Ensure the MCS Translation Service (mcstrans) is not installed
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.6.2.6: Ensure no unconfined daemons exist
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.6.3.1: Ensure AppArmor is not disabled in bootloader configuration
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.6.3.2: Ensure all AppArmor Profiles are enforcing
↺ Skipped control due to only_if condition.
✔ cis-dil-benchmark-1.7.1.1: Ensure message of the day is configured properly
✔ Command: `grep -E -i '(\v|\r|\m|\s|$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/"//g'))' /etc/motd` stdout is expected to eq ""
✔ cis-dil-benchmark-1.7.1.2: Ensure local login warning banner is configured properly
✔ Command: `grep -E -i '(\v|\r|\m|\s|$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/"//g'))' /etc/issue` stdout is expected to eq ""
✔ cis-dil-benchmark-1.7.1.3: Ensure remote login warning banner is configured properly
✔ Command: `grep -E -i '(\v|\r|\m|\s|$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/"//g'))' /etc/issue.net` stdout is expected to eq ""
✔ cis-dil-benchmark-1.7.1.4: Ensure permissions on /etc/motd are configured
✔ File /etc/motd group is expected to eq "root"
✔ File /etc/motd owner is expected to eq "root"
✔ File /etc/motd mode is expected to cmp == "0644"
✔ cis-dil-benchmark-1.7.1.5: Ensure permissions on /etc/issue are configured
✔ File /etc/issue group is expected to eq "root"
✔ File /etc/issue owner is expected to eq "root"
✔ File /etc/issue mode is expected to cmp == "0644"
× cis-dil-benchmark-1.7.1.6: Ensure permissions on /etc/issue.net are configured (3 failed)
× File /etc/issue.net group is expected to eq "root"
expected: "root"
got: nil
(compared using ==)
× File /etc/issue.net owner is expected to eq "root"
expected: "root"
got: nil
(compared using ==)
× File /etc/issue.net mode is expected to cmp == "0644"
can't convert nil into Integer
↺ cis-dil-benchmark-1.7.2: Ensure GDM login banner is configured
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.8: Ensure updates, patches, and additional security software are installed
↺ Not implemented
↺ cis-dil-benchmark-2.1.1: Ensure chargen services are not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.2: Ensure daytime services are not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.3: Ensure discard services are not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.4: Ensure echo services are not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.5: Ensure time services are not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.6: Ensure rsh server is not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.7: Ensure talk server is not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.8: Ensure telnet server is not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.9: Ensure tftp server is not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
✔ cis-dil-benchmark-2.1.10: Ensure xinetd is not enabled
✔ Service xinetd is expected not to be enabled
✔ Service xinetd is expected not to be running
✔ cis-dil-benchmark-2.2.1.1: Ensure time synchronization is in use
✔ Command: `ntpd` is expected to exist
× cis-dil-benchmark-2.2.1.2: Ensure ntp is configured (4 failed)
✔ ntp.conf server is expected not to eq nil
✔ ["default nomodify nopeer noquery notrap limited kod", "127.0.0.1", "[::1]"] is expected to match /default\s+(\S+\s+)*kod(?:\s+|\s?")/
✔ ["default nomodify nopeer noquery notrap limited kod", "127.0.0.1", "[::1]"] is expected to match /default\s+(\S+\s+)*nomodify(?:\s+|\s?")/
✔ ["default nomodify nopeer noquery notrap limited kod", "127.0.0.1", "[::1]"] is expected to match /default\s+(\S+\s+)*notrap(?:\s+|\s?")/
✔ ["default nomodify nopeer noquery notrap limited kod", "127.0.0.1", "[::1]"] is expected to match /default\s+(\S+\s+)*nopeer(?:\s+|\s?")/
✔ ["default nomodify nopeer noquery notrap limited kod", "127.0.0.1", "[::1]"] is expected to match /default\s+(\S+\s+)*noquery(?:\s+|\s?")/
× File /etc/init.d/ntp content is expected to match /^RUNASUSER=ntp\s*(?:#.*)?$/
expected nil to match /^RUNASUSER=ntp\s*(?:#.*)?$/
× File /etc/init.d/ntpd content is expected to match /daemon\s+(\S+\s+)-u ntp:ntp(?:\s+|\s?")/
expected nil to match /daemon\s+(\S+\s+)-u ntp:ntp(?:\s+|\s?")/
× File /etc/sysconfig/ntpd content is expected to match /^OPTIONS="(?:.)?-u ntp:ntp\s*(?:.)?"\s*(?:#.*)?$/
expected nil to match /^OPTIONS="(?:.)?-u ntp:ntp\s*(?:.)?"\s*(?:#.*)?$/
× File /usr/lib/systemd/system/ntpd.service content is expected to match /^ExecStart=\/usr\/s?bin\/ntpd (?:.)?-u ntp:ntp\s*(?:.)?$/
expected "[Unit]\nDescription=Network Time Service\nAfter=ntpdate.service sntp.service\nConflicts=systemd-time...tp/ntp.drift -u ntp:ntp\nPrivateTmp=true\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n" to match /^ExecStart=\/usr\/s?bin\/ntpd (?:.)?-u ntp:ntp\s*(?:.)?$/
Diff:
@@ -1,12 +1,23 @@
-/^ExecStart=\/usr\/s?bin\/ntpd (?:.)?-u ntp:ntp\s*(?:.)?$/
+[Unit]
+Description=Network Time Service
+After=ntpdate.service sntp.service
+Conflicts=systemd-timesyncd.service
+
+[Service]
+ExecStart=/usr/sbin/ntpd -g -n -f /var/lib/ntp/ntp.drift -u ntp:ntp
+PrivateTmp=true
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
↺ cis-dil-benchmark-2.2.1.3: Ensure chrony is configured
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-2.2.1.4: Ensure systemd-timesyncd is configured
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-2.2.2: Ensure X Window System is not installed (2 skipped)
↺ The packages resource is not yet supported on OS coreos
↺ The packages resource is not yet supported on OS coreos
✔ cis-dil-benchmark-2.2.3: Ensure Avahi Server is not enabled
✔ Service avahi-daemon is expected not to be enabled
✔ Service avahi-daemon is expected not to be running
✔ cis-dil-benchmark-2.2.4: Ensure CUPS is not enabled
✔ Service cups is expected not to be enabled
✔ Service cups is expected not to be running
✔ cis-dil-benchmark-2.2.5: Ensure DHCP Server is not enabled
✔ Service isc-dhcp-server is expected not to be enabled
✔ Service isc-dhcp-server is expected not to be running
✔ Service isc-dhcp-server6 is expected not to be enabled
✔ Service isc-dhcp-server6 is expected not to be running
✔ Service dhcpd is expected not to be enabled
✔ Service dhcpd is expected not to be running
✔ cis-dil-benchmark-2.2.6: Ensure LDAP server is not enabled
✔ Service slapd is expected not to be enabled
✔ Service slapd is expected not to be running
✔ cis-dil-benchmark-2.2.7: Ensure NFS and RPC are not enabled
✔ Service nfs-kernel-server is expected not to be enabled
✔ Service nfs-kernel-server is expected not to be running
✔ Service nfs is expected not to be enabled
✔ Service nfs is expected not to be running
✔ Service rpcbind is expected not to be enabled
✔ Service rpcbind is expected not to be running
✔ cis-dil-benchmark-2.2.8: Ensure DNS Server is not enabled
✔ Service named is expected not to be enabled
✔ Service named is expected not to be running
✔ Service bind is expected not to be enabled
✔ Service bind is expected not to be running
✔ Service bind9 is expected not to be enabled
✔ Service bind9 is expected not to be running
✔ cis-dil-benchmark-2.2.9: Ensure FTP Server is not enabled
✔ Service vsftpd is expected not to be enabled
✔ Service vsftpd is expected not to be running
✔ cis-dil-benchmark-2.2.10: Ensure HTTP server is not enabled
✔ Service apache is expected not to be enabled
✔ Service apache is expected not to be running
✔ Service apache2 is expected not to be enabled
✔ Service apache2 is expected not to be running
✔ Service httpd is expected not to be enabled
✔ Service httpd is expected not to be running
✔ Service lighttpd is expected not to be enabled
✔ Service lighttpd is expected not to be running
✔ Service nginx is expected not to be enabled
✔ Service nginx is expected not to be running
✔ cis-dil-benchmark-2.2.11: Ensure IMAP and POP3 server is not enabled
✔ Service dovecot is expected not to be enabled
✔ Service dovecot is expected not to be running
✔ Service courier-imap is expected not to be enabled
✔ Service courier-imap is expected not to be running
✔ Service cyrus-imap is expected not to be enabled
✔ Service cyrus-imap is expected not to be running
✔ cis-dil-benchmark-2.2.12: Ensure Samba is not enabled
✔ Service samba is expected not to be enabled
✔ Service samba is expected not to be running
✔ Service smb is expected not to be enabled
✔ Service smb is expected not to be running
✔ Service smbd is expected not to be enabled
✔ Service smbd is expected not to be running
✔ cis-dil-benchmark-2.2.13: Ensure HTTP Proxy Server is not enabled
✔ Service squid is expected not to be enabled
✔ Service squid is expected not to be running
✔ Service squid3 is expected not to be enabled
✔ Service squid3 is expected not to be running
✔ cis-dil-benchmark-2.2.14: Ensure SNMP Server is not enabled
✔ Service snmpd is expected not to be enabled
✔ Service snmpd is expected not to be running
✔ cis-dil-benchmark-2.2.15: Ensure mail transfer agent is configured for local-only mode
✔ Port 25 with address !~ /^(127\.0\.0\.1|::1)$/ entries is expected to be empty
✔ cis-dil-benchmark-2.2.16: Ensure rsync service is not enabled
✔ Service rsync is expected not to be enabled
✔ Service rsync is expected not to be running
✔ Service rsyncd is expected not to be enabled
✔ Service rsyncd is expected not to be running
✔ cis-dil-benchmark-2.2.17: Ensure NIS Server is not enabled
✔ Service nis is expected not to be enabled
✔ Service nis is expected not to be running
✔ Service ypserv is expected not to be enabled
✔ Service ypserv is expected not to be running
↺ cis-dil-benchmark-2.3.1: Ensure NIS Client is not installed (2 skipped)
↺ The `package` resource is not supported on your OS yet.
↺ The `package` resource is not supported on your OS yet.
↺ cis-dil-benchmark-2.3.2: Ensure rsh client is not installed (3 skipped)
↺ The `package` resource is not supported on your OS yet.
↺ The `package` resource is not supported on your OS yet.
↺ The `package` resource is not supported on your OS yet.
↺ cis-dil-benchmark-2.3.3: Ensure talk client is not installed
↺ The `package` resource is not supported on your OS yet.
↺ cis-dil-benchmark-2.3.4: Ensure telnet client is not installed
↺ The `package` resource is not supported on your OS yet.
↺ cis-dil-benchmark-2.3.5: Ensure LDAP client is not installed (3 skipped)
↺ The `package` resource is not supported on your OS yet.
↺ The `package` resource is not supported on your OS yet.
↺ The `package` resource is not supported on your OS yet.
× cis-dil-benchmark-3.1.1: Ensure IP forwarding is disabled (1 failed)
✔ Kernel Parameter net.ipv4.ip_forward value is expected not to be nil
× Kernel Parameter net.ipv4.ip_forward value is expected to cmp == 0
expected: 0
got: 1
(compared using `cmp` matcher)
✔ Kernel Parameter net.ipv6.conf.all.forwarding value is expected not to be nil
✔ Kernel Parameter net.ipv6.conf.all.forwarding value is expected to cmp == 0
× cis-dil-benchmark-3.1.2: Ensure packet redirect sending is disabled (2 failed)
✔ Kernel Parameter net.ipv4.conf.all.send_redirects value is expected not to be nil
× Kernel Parameter net.ipv4.conf.all.send_redirects value is expected to cmp == 0
expected: 0
got: 1
(compared using `cmp` matcher)
✔ Kernel Parameter net.ipv4.conf.default.send_redirects value is expected not to be nil
× Kernel Parameter net.ipv4.conf.default.send_redirects value is expected to cmp == 0
expected: 0
got: 1
(compared using `cmp` matcher)
✔ cis-dil-benchmark-3.2.1: Ensure source routed packets are not accepted
✔ Kernel Parameter net.ipv4.conf.all.accept_source_route value is expected not to be nil
✔ Kernel Parameter net.ipv4.conf.all.accept_source_route value is expected to eq 0
✔ Kernel Parameter net.ipv4.conf.default.accept_source_route value is expected not to be nil
✔ Kernel Parameter net.ipv4.conf.default.accept_source_route value is expected to eq 0
✔ Kernel Parameter net.ipv6.conf.all.accept_source_route value is expected not to be nil
✔ Kernel Parameter net.ipv6.conf.all.accept_source_route value is expected to eq 0
✔ Kernel Parameter net.ipv6.conf.default.accept_source_route value is expected not to be nil
✔ Kernel Parameter net.ipv6.conf.default.accept_source_route value is expected to eq 0
× cis-dil-benchmark-3.2.2: Ensure ICMP redirects are not accepted (3 failed)
✔ Kernel Parameter net.ipv4.conf.all.accept_redirects value is expected not to be nil
✔ Kernel Parameter net.ipv4.conf.all.accept_redirects value is expected to eq 0
✔ Kernel Parameter net.ipv4.conf.default.accept_redirects value is expected not to be nil
× Kernel Parameter net.ipv4.conf.default.accept_redirects value is expected to eq 0
expected: 0
got: 1
(compared using ==)
✔ Kernel Parameter net.ipv6.conf.all.accept_redirects value is expected not to be nil
× Kernel Parameter net.ipv6.conf.all.accept_redirects value is expected to eq 0
expected: 0
got: 1
(compared using ==)
✔ Kernel Parameter net.ipv6.conf.default.accept_redirects value is expected not to be nil
× Kernel Parameter net.ipv6.conf.default.accept_redirects value is expected to eq 0
expected: 0
got: 1
(compared using ==)
× cis-dil-benchmark-3.2.3: Ensure secure ICMP redirects are not accepted (2 failed)
✔ Kernel Parameter net.ipv4.conf.all.secure_redirects value is expected not to be nil
× Kernel Parameter net.ipv4.conf.all.secure_redirects value is expected to eq 0
expected: 0
got: 1
(compared using ==)
✔ Kernel Parameter net.ipv4.conf.default.secure_redirects value is expected not to be nil
× Kernel Parameter net.ipv4.conf.default.secure_redirects value is expected to eq 0
expected: 0
got: 1
(compared using ==)
× cis-dil-benchmark-3.2.4: Ensure suspicious packets are logged (2 failed)
✔ Kernel Parameter net.ipv4.conf.all.log_martians value is expected not to be nil
× Kernel Parameter net.ipv4.conf.all.log_martians value is expected to eq 1
expected: 1
got: 0
(compared using ==)
✔ Kernel Parameter net.ipv4.conf.default.log_martians value is expected not to be nil
× Kernel Parameter net.ipv4.conf.default.log_martians value is expected to eq 1
expected: 1
got: 0
(compared using ==)
✔ cis-dil-benchmark-3.2.5: Ensure broadcast ICMP requests are ignored
✔ Kernel Parameter net.ipv4.icmp_echo_ignore_broadcasts value is expected not to be nil
✔ Kernel Parameter net.ipv4.icmp_echo_ignore_broadcasts value is expected to eq 1
✔ cis-dil-benchmark-3.2.6: Ensure bogus ICMP responses are ignored
✔ Kernel Parameter net.ipv4.icmp_ignore_bogus_error_responses value is expected not to be nil
✔ Kernel Parameter net.ipv4.icmp_ignore_bogus_error_responses value is expected to eq 1
✔ cis-dil-benchmark-3.2.7: Ensure Reverse Path Filtering is enabled
✔ Kernel Parameter net.ipv4.conf.all.rp_filter value is expected not to be nil
✔ Kernel Parameter net.ipv4.conf.all.rp_filter value is expected to eq 1
✔ Kernel Parameter net.ipv4.conf.default.rp_filter value is expected not to be nil
✔ Kernel Parameter net.ipv4.conf.default.rp_filter value is expected to eq 1
✔ cis-dil-benchmark-3.2.8: Ensure TCP SYN Cookies is enabled
✔ Kernel Parameter net.ipv4.tcp_syncookies value is expected not to be nil
✔ Kernel Parameter net.ipv4.tcp_syncookies value is expected to eq 1
× cis-dil-benchmark-3.2.9: Ensure IPv6 router advertisements are not accepted (2 failed)
✔ Kernel Parameter net.ipv6.conf.all.accept_ra value is expected not to be nil
× Kernel Parameter net.ipv6.conf.all.accept_ra value is expected to eq 0
expected: 0
got: 1
(compared using ==)
✔ Kernel Parameter net.ipv6.conf.default.accept_ra value is expected not to be nil
× Kernel Parameter net.ipv6.conf.default.accept_ra value is expected to eq 0
expected: 0
got: 1
(compared using ==)
× cis-dil-benchmark-3.3.1: Ensure TCP Wrappers is installed (2 failed)
× System Package tcpd is expected to be installed
expected that `System Package tcpd` is installed
× System Package tcp_wrappers is expected to be installed
expected that `System Package tcp_wrappers` is installed
× cis-dil-benchmark-3.3.2: Ensure /etc/hosts.allow is configured
× File /etc/hosts.allow is expected to exist
expected File /etc/hosts.allow to exist
× cis-dil-benchmark-3.3.3: Ensure /etc/hosts.deny is configured
× File /etc/hosts.deny content is expected to match /^ALL: ALL/
expected nil to match /^ALL: ALL/
× cis-dil-benchmark-3.3.4: Ensure permissions on /etc/hosts.allow are configured (5 failed)
× File /etc/hosts.allow is expected to exist
expected File /etc/hosts.allow to exist
× File /etc/hosts.allow is expected to be file
expected `File /etc/hosts.allow.file?` to be truthy, got false
× File /etc/hosts.allow owner is expected to cmp == "root"
expected: root
got:
(compared using `cmp` matcher)
× File /etc/hosts.allow group is expected to cmp == "root"
expected: root
got:
(compared using `cmp` matcher)
× File /etc/hosts.allow mode is expected to cmp == "0644"
can't convert nil into Integer
× cis-dil-benchmark-3.3.5: Ensure permissions on /etc/hosts.deny are configured (5 failed)
× File /etc/hosts.deny is expected to exist
expected File /etc/hosts.deny to exist
× File /etc/hosts.deny is expected to be file
expected `File /etc/hosts.deny.file?` to be truthy, got false
× File /etc/hosts.deny owner is expected to cmp == "root"
expected: root
got:
(compared using `cmp` matcher)
× File /etc/hosts.deny group is expected to cmp == "root"
expected: root
got:
(compared using `cmp` matcher)
× File /etc/hosts.deny mode is expected to cmp == "0644"
can't convert nil into Integer
↺ cis-dil-benchmark-3.4.1: Ensure DCCP is disabled
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-3.4.2: Ensure SCTP is disabled
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-3.4.3: Ensure RDS is disabled
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-3.4.4: Ensure TIPC is disabled
↺ Skipped control due to only_if condition.
× cis-dil-benchmark-3.5.1.1: Ensure IPv6 default deny firewall policy (3 failed)
× Ip6tables is expected to have rule "-P INPUT DROP"
expected Ip6tables to have rule "-P INPUT DROP"
× Ip6tables is expected to have rule "-P OUTPUT DROP"
expected Ip6tables to have rule "-P OUTPUT DROP"
× Ip6tables is expected to have rule "-P FORWARD DROP"
expected Ip6tables to have rule "-P FORWARD DROP"
× cis-dil-benchmark-3.5.1.2: Ensure IPv6 loopback traffic is configured (9 failed)
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
+"-P OUTPUT ACCEPT"
× cis-dil-benchmark-3.5.1.3: Ensure IPv6 outbound and established connections are configured (18 failed)
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× cis-dil-benchmark-3.5.1.4: Ensure IPv6 firewall rules exist for all open ports (2 failed)
× Firewall rule should exist for port 68 is expected to equal true
expected true
got false
× Firewall rule should exist for port 22 is expected to equal true
expected true
got false
× cis-dil-benchmark-3.5.2.1: Ensure default deny firewall policy (3 failed)
× Iptables is expected to have rule "-P INPUT DROP"
expected Iptables to have rule "-P INPUT DROP"
× Iptables is expected to have rule "-P OUTPUT DROP"
expected Iptables to have rule "-P OUTPUT DROP"
× Iptables is expected to have rule "-P FORWARD DROP"
expected Iptables to have rule "-P FORWARD DROP"
× cis-dil-benchmark-3.5.2.2: Ensure loopback traffic is configured (9 failed)
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
+"-P OUTPUT ACCEPT"
× cis-dil-benchmark-3.5.2.3: Ensure outbound and established connections are configured (18 failed)
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× cis-dil-benchmark-3.5.2.4: Ensure firewall rules exist for all open ports (2 failed)
× Firewall rule should exist for port 68 is expected to equal true
expected true
got false
× Firewall rule should exist for port 22 is expected to equal true
expected true
got false
↺ cis-dil-benchmark-3.5.3: Ensure iptables is installed
↺ The `package` resource is not supported on your OS yet.
↺ cis-dil-benchmark-3.6: Ensure wireless interfaces are disabled
↺ Not implemented
↺ cis-dil-benchmark-3.7: Disable IPv6
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.1.1: Ensure audit log storage size is configured
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.1.2: Ensure system is disabled when audit logs are full
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.1.3: Ensure audit logs are not automatically deleted
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.2: Ensure auditd is installed
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.3: Ensure auditd service is enabled
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.4: Ensure auditing for processes that start prior to auditd is enabled
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.5: Ensure events that modify date and time information are collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.6: Ensure events that modify user/group information are collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.7: Ensure events that modify the system's network environment are collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.8: Ensure events that modify the system's Mandatory Access Controls are collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.9: Ensure login and logout events are collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.10: Ensure session initiation information is collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.11: Ensure discretionary access control permission modification events are collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.12: Ensure unsuccessful unauthorized file access attempts are collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.13: Ensure use of privileged commands is collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.14: Ensure successful file system mounts are collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.15: Ensure file deletion events by users are collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.16: Ensure changes to system administration scope (sudoers) is collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.17: Ensure system administrator actions (sudolog) are collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.18: Ensure kernel module loading and unloading is collected
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.1.19: Ensure the audit configuration is immutable
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-4.2.1.1: Ensure rsyslog Service is insalled
↺ The `package` resource is not supported on your OS yet.
× cis-dil-benchmark-4.2.1.2: Ensure rsyslog Service is enabled (2 failed)
× Service rsyslog is expected to be enabled
expected that `Service rsyslog` is enabled
× Service rsyslog is expected to be running
expected that `Service rsyslog` is running
× cis-dil-benchmark-4.2.1.3: Ensure logging is configured
× File /etc/rsyslog.conf is expected to exist
expected File /etc/rsyslog.conf to exist
× cis-dil-benchmark-4.2.1.4: Ensure rsyslog default file permissions configured
× File /etc/rsyslog.conf content is expected to match /^\$FileCreateMode\s+0[0-6][0-4]0/
expected nil to match /^\$FileCreateMode\s+0[0-6][0-4]0/
× cis-dil-benchmark-4.2.1.5: Ensure rsyslog is configured to send logs to a remote log host
× File /etc/rsyslog.conf content is expected to match /^\s*\*\.\*\s+@/
expected nil to match /^\s*\*\.\*\s+@/
↺ cis-dil-benchmark-4.2.1.6: Ensure remote rsyslog messages are only accepted on designated log hosts.
↺ Not implemented
× cis-dil-benchmark-4.2.2.1: Ensure journald is configured to send logs to rsyslog
× Parse Config File /etc/systemd/journald.conf Journal is expected to include {"ForwardToSyslog" => "yes"}
expected {} to include {"ForwardToSyslog" => "yes"}
Diff:
@@ -1,2 +1 @@
-"ForwardToSyslog" => "yes",
× cis-dil-benchmark-4.2.2.2: Ensure journald is configured to compress large log files
× Parse Config File /etc/systemd/journald.conf Journal is expected to include {"Compress" => "yes"}
expected {} to include {"Compress" => "yes"}
Diff:
@@ -1,2 +1 @@
-"Compress" => "yes",
× cis-dil-benchmark-4.2.2.3: Ensure journald is configured to write logfiles to persistent disk
× Parse Config File /etc/systemd/journald.conf Journal is expected to include {"Storage" => "persistent"}
expected {} to include {"Storage" => "persistent"}
Diff:
@@ -1,2 +1 @@
-"Storage" => "persistent",
× cis-dil-benchmark-4.2.3: Ensure permissions on all logfiles are configured (2 failed)
✔ File /var/log/tallylog is expected not to be writable by group
✔ File /var/log/tallylog is expected not to be executable by group
✔ File /var/log/tallylog is expected not to be readable by other
✔ File /var/log/tallylog is expected not to be writable by other
✔ File /var/log/tallylog is expected not to be executable by other
✔ File /var/log/faillog is expected not to be writable by group
✔ File /var/log/faillog is expected not to be executable by group
× File /var/log/faillog is expected not to be readable by other
expected File /var/log/faillog not to be readable by other
✔ File /var/log/faillog is expected not to be writable by other
✔ File /var/log/faillog is expected not to be executable by other
✔ File /var/log/journal/e6d76ebe5f4d487aa425a47165856433/system.journal is expected not to be writable by group
✔ File /var/log/journal/e6d76ebe5f4d487aa425a47165856433/system.journal is expected not to be executable by group
✔ File /var/log/journal/e6d76ebe5f4d487aa425a47165856433/system.journal is expected not to be readable by other
✔ File /var/log/journal/e6d76ebe5f4d487aa425a47165856433/system.journal is expected not to be writable by other
✔ File /var/log/journal/e6d76ebe5f4d487aa425a47165856433/system.journal is expected not to be executable by other
× File /var/log/btmp is expected not to be writable by group
expected File /var/log/btmp not to be writable by group
✔ File /var/log/btmp is expected not to be executable by group
✔ File /var/log/btmp is expected not to be readable by other
✔ File /var/log/btmp is expected not to be writable by other
✔ File /var/log/btmp is expected not to be executable by other
✔ File /var/log/lastlog is expected not to be executable by group
✔ File /var/log/lastlog is expected not to be writable by other
✔ File /var/log/lastlog is expected not to be executable by other
✔ File /var/log/wtmp is expected not to be executable by group
✔ File /var/log/wtmp is expected not to be writable by other
✔ File /var/log/wtmp is expected not to be executable by other
↺ cis-dil-benchmark-4.3: Ensure logrotate is configured
↺ Not implemented
× cis-dil-benchmark-5.1.1: Ensure cron daemon is enabled (4 failed)
× Service cron is expected to be enabled
expected that `Service cron` is enabled
× Service cron is expected to be running
expected that `Service cron` is running
× Service crond is expected to be enabled
expected that `Service crond` is enabled
× Service crond is expected to be running
expected that `Service crond` is running
× cis-dil-benchmark-5.1.2: Ensure permissions on /etc/crontab are configured (3 failed)
× File /etc/crontab is expected to exist
expected File /etc/crontab to exist
✔ File /etc/crontab is expected not to be readable by group
✔ File /etc/crontab is expected not to be writable by group
✔ File /etc/crontab is expected not to be executable by group
✔ File /etc/crontab is expected not to be readable by other
✔ File /etc/crontab is expected not to be writable by other
✔ File /etc/crontab is expected not to be executable by other
× File /etc/crontab uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/crontab gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.1.3: Ensure permissions on /etc/cron.hourly are configured (3 failed)
× File /etc/cron.hourly is expected to exist
expected File /etc/cron.hourly to exist
✔ File /etc/cron.hourly is expected not to be readable by group
✔ File /etc/cron.hourly is expected not to be writable by group
✔ File /etc/cron.hourly is expected not to be executable by group
✔ File /etc/cron.hourly is expected not to be readable by other
✔ File /etc/cron.hourly is expected not to be writable by other
✔ File /etc/cron.hourly is expected not to be executable by other
× File /etc/cron.hourly uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/cron.hourly gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.1.4: Ensure permissions on /etc/cron.daily are configured (3 failed)
× File /etc/cron.daily is expected to exist
expected File /etc/cron.daily to exist
✔ File /etc/cron.daily is expected not to be readable by group
✔ File /etc/cron.daily is expected not to be writable by group
✔ File /etc/cron.daily is expected not to be executable by group
✔ File /etc/cron.daily is expected not to be readable by other
✔ File /etc/cron.daily is expected not to be writable by other
✔ File /etc/cron.daily is expected not to be executable by other
× File /etc/cron.daily uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/cron.daily gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.1.5: Ensure permissions on /etc/cron.weekly are configured (4 failed)
✔ File /etc/cron.weekly is expected to exist
× File /etc/cron.weekly is expected not to be readable by group
expected File /etc/cron.weekly not to be readable by group
✔ File /etc/cron.weekly is expected not to be writable by group
× File /etc/cron.weekly is expected not to be executable by group
expected File /etc/cron.weekly not to be executable by group
× File /etc/cron.weekly is expected not to be readable by other
expected File /etc/cron.weekly not to be readable by other
✔ File /etc/cron.weekly is expected not to be writable by other
× File /etc/cron.weekly is expected not to be executable by other
expected File /etc/cron.weekly not to be executable by other
✔ File /etc/cron.weekly uid is expected to cmp == 0
✔ File /etc/cron.weekly gid is expected to cmp == 0
× cis-dil-benchmark-5.1.6: Ensure permissions on /etc/cron.monthly are configured (3 failed)
× File /etc/cron.monthly is expected to exist
expected File /etc/cron.monthly to exist
✔ File /etc/cron.monthly is expected not to be readable by group
✔ File /etc/cron.monthly is expected not to be writable by group
✔ File /etc/cron.monthly is expected not to be executable by group
✔ File /etc/cron.monthly is expected not to be readable by other
✔ File /etc/cron.monthly is expected not to be writable by other
✔ File /etc/cron.monthly is expected not to be executable by other
× File /etc/cron.monthly uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/cron.monthly gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.1.7: Ensure permissions on /etc/cron.d are configured (3 failed)
× File /etc/cron.d is expected to exist
expected File /etc/cron.d to exist
✔ File /etc/cron.d is expected not to be readable by group
✔ File /etc/cron.d is expected not to be writable by group
✔ File /etc/cron.d is expected not to be executable by group
✔ File /etc/cron.d is expected not to be readable by other
✔ File /etc/cron.d is expected not to be writable by other
✔ File /etc/cron.d is expected not to be executable by other
× File /etc/cron.d uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/cron.d gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.1.8: Ensure at/cron is restricted to authorized users (6 failed)
✔ File /etc/cron.deny is expected not to exist
× File /etc/cron.allow is expected to exist
expected File /etc/cron.allow to exist
✔ File /etc/cron.allow is expected not to be readable by group
✔ File /etc/cron.allow is expected not to be writable by group
✔ File /etc/cron.allow is expected not to be executable by group
✔ File /etc/cron.allow is expected not to be readable by other
✔ File /etc/cron.allow is expected not to be writable by other
✔ File /etc/cron.allow is expected not to be executable by other
× File /etc/cron.allow uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/cron.allow gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
✔ File /etc/at.deny is expected not to exist
× File /etc/at.allow is expected to exist
expected File /etc/at.allow to exist
✔ File /etc/at.allow is expected not to be readable by group
✔ File /etc/at.allow is expected not to be writable by group
✔ File /etc/at.allow is expected not to be executable by group
✔ File /etc/at.allow is expected not to be readable by other
✔ File /etc/at.allow is expected not to be writable by other
✔ File /etc/at.allow is expected not to be executable by other
× File /etc/at.allow uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/at.allow gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
✔ cis-dil-benchmark-5.2.1: Ensure permissions on /etc/ssh/sshd_config are configured (Scored)
✔ File /etc/ssh/sshd_config is expected to exist
✔ File /etc/ssh/sshd_config is expected not to be readable by group
✔ File /etc/ssh/sshd_config is expected not to be writable by group
✔ File /etc/ssh/sshd_config is expected not to be executable by group
✔ File /etc/ssh/sshd_config is expected not to be readable by other
✔ File /etc/ssh/sshd_config is expected not to be writable by other
✔ File /etc/ssh/sshd_config is expected not to be executable by other
✔ File /etc/ssh/sshd_config uid is expected to cmp == 0
✔ File /etc/ssh/sshd_config gid is expected to cmp == 0
✔ cis-dil-benchmark-5.2.2: Ensure permissions on SSH private host key files are configured (Scored)
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be readable by group
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be writable by group
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be executable by group
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be readable by other
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be writable by other
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be executable by other
✔ File /etc/ssh/ssh_host_ed25519_key gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ed25519_key uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be readable by group
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be writable by group
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be executable by group
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be readable by other
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be writable by other
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be executable by other
✔ File /etc/ssh/ssh_host_rsa_key gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_rsa_key uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be readable by group
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be writable by group
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be executable by group
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be readable by other
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be writable by other
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be executable by other
✔ File /etc/ssh/ssh_host_ecdsa_key gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ecdsa_key uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be readable by group
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be writable by group
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be executable by group
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be readable by other
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be writable by other
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be executable by other
✔ File /etc/ssh/ssh_host_dsa_key gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_dsa_key uid is expected to cmp == 0
✔ cis-dil-benchmark-5.2.3: Ensure permissions on SSH public host key files are configured (Scored)
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected to be readable by group
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected not to be writable by group
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected not to be executable by group
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected to be readable by other
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected not to be writable by other
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected not to be executable by other
✔ File /etc/ssh/ssh_host_dsa_key.pub gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_dsa_key.pub uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected to be readable by group
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected not to be writable by group
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected not to be executable by group
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected to be readable by other
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected not to be writable by other
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected not to be executable by other
✔ File /etc/ssh/ssh_host_rsa_key.pub gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_rsa_key.pub uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected to be readable by group
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected not to be writable by group
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected not to be executable by group
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected to be readable by other
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected not to be writable by other
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected not to be executable by other
✔ File /etc/ssh/ssh_host_ed25519_key.pub gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ed25519_key.pub uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected to be readable by group
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected not to be writable by group
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected not to be executable by group
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected to be readable by other
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected not to be writable by other
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected not to be executable by other
✔ File /etc/ssh/ssh_host_ecdsa_key.pub gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ecdsa_key.pub uid is expected to cmp == 0
× cis-dil-benchmark-5.2.4: Ensure SSH Protocol is set to 2 (Scored)
× SSHD Configuration Protocol is expected to cmp == 2
expected: 2
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.2.5: Ensure SSH LogLevel is appropriate (Scored)
× SSHD Configuration LogLevel is expected to eq "VERBOSE"
expected: "VERBOSE"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.6: Ensure SSH X11 forwarding is disabled (Scored)
× SSHD Configuration X11Forwarding is expected to eq "no"
expected: "no"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.7: Ensure SSH MaxAuthTries is set to 4 or less (Scored)
× SSHD Configuration MaxAuthTries is expected to cmp <= 4
expected it to be <= 4
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.2.8: Ensure SSH IgnoreRhosts is enabled (Scored)
× SSHD Configuration IgnoreRhosts is expected to eq "yes"
expected: "yes"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.9: Ensure SSH HostbasedAuthentication is disabled (Scored)
× SSHD Configuration HostbasedAuthentication is expected to eq "no"
expected: "no"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.10: Ensure SSH root login is disabled (Scored)
× SSHD Configuration PermitRootLogin is expected to eq "no"
expected: "no"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.11: Ensure SSH PermitEmptyPasswords is disabled (Scored)
× SSHD Configuration PermitEmptyPasswords is expected to eq "no"
expected: "no"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.12: Ensure SSH PermitUserEnvironment is disabled (Scored)
× SSHD Configuration PermitUserEnvironment is expected to eq "no"
expected: "no"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.13: Ensure only strong Ciphers are used (Scored)
× SSHD Configuration Ciphers is expected not to be nil
expected: not nil
got: nil
× cis-dil-benchmark-5.2.14: Ensure only strong MAC algorithms are used (Scored)
× SSHD Configuration MACs is expected not to be nil
expected: not nil
got: nil
× cis-dil-benchmark-5.2.15: Ensure only strong Key Exchange algorithms are used (Scored)
× SSHD Configuration KexAlgorithms is expected not to be nil
expected: not nil
got: nil
× cis-dil-benchmark-5.2.16: Ensure SSH Idle Timeout Interval is configured (Scored) (1 failed)
✔ SSHD Configuration ClientAliveInterval is expected to cmp <= 300
× SSHD Configuration ClientAliveCountMax is expected to cmp <= 0
expected it to be <= 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.2.17: Ensure SSH LoginGraceTime is set to one minute or less (Scored)
× SSHD Configuration LoginGraceTime is expected to satisfy expression `x == '1m' || ((matches = x.match(/(?[0-9]+)s?/)) && Integer(matches[:secs]) <= 60)`
undefined method `match' for nil:NilClass
× cis-dil-benchmark-5.2.18: Ensure SSH access is limited (Scored) (4 failed)
× SSHD Configuration AllowUsers is expected not to be nil
expected: not nil
got: nil
× SSHD Configuration AllowGroups is expected not to be nil
expected: not nil
got: nil
× SSHD Configuration DenyUsers is expected not to be nil
expected: not nil
got: nil
× SSHD Configuration DenyGroups is expected not to be nil
expected: not nil
got: nil
× cis-dil-benchmark-5.2.19: Ensure SSH warning banner is configured (Scored)
× SSHD Configuration Banner is expected not to be nil
expected: not nil
got: nil
✔ cis-dil-benchmark-5.2.20: Ensure SSH PAM is enabled (Scored)
✔ SSHD Configuration UsePAM is expected to eq "yes"
↺ cis-dil-benchmark-5.2.21: Ensure SSH AllowTcpForwarding is disabled (Scored)
↺ Skipped control due to only_if condition.
× cis-dil-benchmark-5.2.22: Ensure SSH MaxStartups is configured (Scored)
× SSHD Configuration MaxStartups is expected to eq "10:30:60"
expected: "10:30:60"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.23: Ensure SSH MaxSessions is set to 4 or less (Scored)
× SSHD Configuration MaxSessions is expected to cmp <= 4
expected it to be <= 4
got:
(compared using `cmp` matcher)
↺ cis-dil-benchmark-5.3.2: Ensure lockout for failed password attempts is configured
↺ Not implemented
× cis-dil-benchmark-5.3.3: Ensure password reuse is limited (4 failed)
× File /etc/pam.d/common-password content is expected to match /^password\s+(\S+\s+)+pam_unix\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
expected nil to match /^password\s+(\S+\s+)+pam_unix\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
× File /etc/pam.d/common-password content is expected to match /^password\s+(\S+\s+)+pam_pwhistory\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
expected nil to match /^password\s+(\S+\s+)+pam_pwhistory\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
× File /etc/pam.d/system-auth content is expected to match /^password\s+(\S+\s+)+pam_unix\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
expected nil to match /^password\s+(\S+\s+)+pam_unix\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
× File /etc/pam.d/system-auth content is expected to match /^password\s+(\S+\s+)+pam_pwhistory\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
expected nil to match /^password\s+(\S+\s+)+pam_pwhistory\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
× cis-dil-benchmark-5.3.4: Ensure password hashing algorithm is SHA-512 (3 failed)
× File /etc/pam.d/common-password content is expected to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
expected nil to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
× File /etc/pam.d/system-auth content is expected to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
expected nil to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
× File /etc/pam.d/password-auth content is expected to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
expected nil to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
× cis-dil-benchmark-5.4.1.1: Ensure password expiration is 365 days or less
× login.defs PASS_MAX_DAYS is expected to cmp <= 365
expected it to be <= 365
got: 99999
(compared using `cmp` matcher)
× cis-dil-benchmark-5.4.1.2: Ensure minimum days between password changes is 7 or more
× login.defs PASS_MIN_DAYS is expected to cmp >= 7
expected it to be >= 7
got: 0
(compared using `cmp` matcher)
✔ cis-dil-benchmark-5.4.1.3: Ensure password expiration warning days is 7 or more
✔ login.defs PASS_WARN_AGE is expected to cmp >= 7
× cis-dil-benchmark-5.4.1.4: Ensure inactive password lock is 30 days or less
× Command: `useradd -D` stdout is expected to match /^INACTIVE=(30|[1-2][0-9]|[1-9])$/
expected "GROUP=100\nHOME=/home\nINACTIVE=-1\nEXPIRE=\nSHELL=/bin/bash\nSKEL=/etc/skel\nCREATE_MAIL_SPOOL=no\n" to match /^INACTIVE=(30|[1-2][0-9]|[1-9])$/
Diff:
@@ -1,7 +1,13 @@
-/^INACTIVE=(30|[1-2][0-9]|[1-9])$/
+GROUP=100
+HOME=/home
+INACTIVE=-1
+EXPIRE=
+SHELL=/bin/bash
+SKEL=/etc/skel
+CREATE_MAIL_SPOOL=no
× cis-dil-benchmark-5.4.2: Ensure system accounts are secured (26 failed)
× /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
expected "/bin/bash" to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
Diff:
@@ -1 +1 @@
-/(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
+"/bin/bash"
✔ /etc/shadow with user == "core" passwords is expected to cmp == /^[*!]/
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
✔ /etc/shadow with user == "systemd-timesync" passwords is expected to cmp == /^[*!]/
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
✔ /etc/shadow with user == "systemd-coredump" passwords is expected to cmp == /^[*!]/
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "bin" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "daemon" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "adm" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "lp" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "news" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "uucp" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "operator" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "man" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "messagebus" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "syslog" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "ntp" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "sshd" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "tcpdump" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "dhcp" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "etcd" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "docker" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "tlsdate" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "polkitd" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "tss" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "systemd-journal-remote" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "systemd-network" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "systemd-resolve" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "systemd-bus-proxy" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "portage" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
× /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
expected "/bin/bash" to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
Diff:
@@ -1 +1 @@
-/(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
+"/bin/bash"
✔ /etc/shadow with user == "core" passwords is expected to cmp == /^[*!]/
✔ cis-dil-benchmark-5.4.3: Ensure default group for the root account is GID 0
✔ /etc/passwd with user == "root" gids is expected to cmp == 0
× cis-dil-benchmark-5.4.4: Ensure default user umask is 027 or more restrictive (2 failed)
× File /etc/profile content is expected not to match /^\s*umask [0-7](0[1-7]|[1-7][1-6])\s*(?:#.*)?$/
expected "# /etc/profile: login shell setup\n#\n# That this file is used by any Bourne-shell derivative to set... \"$sh\"\ndone\nfor sh in /etc/profile.d/*.sh ; do\n\t[ -r \"$sh\" ] && . \"$sh\"\ndone\nunset sh\n" not to match /^\s*umask [0-7](0[1-7]|[1-7][1-6])\s*(?:#.*)?$/
Diff:
@@ -1,59 +1,117 @@
-/^\s*umask [0-7](0[1-7]|[1-7][1-6])\s*(?:#.*)?$/
+# /etc/profile: login shell setup
+#
+# That this file is used by any Bourne-shell derivative to setup the
+# environment for login shells.
+#
+
+# Load environment settings from profile.env, which is created by
+# env-update from the files in /etc/env.d
+if [ -e /etc/profile.env ] ; then
+ . /etc/profile.env
+elif [ -e /usr/share/baselayout/profile.env ] ; then
+ . /usr/share/baselayout/profile.env
+fi
+
+# You should override these in your ~/.bashrc (or equivalent) for per-user
+# settings. For system defaults, you can add a new file in /etc/profile.d/.
+export EDITOR=${EDITOR:-/usr/bin/vim}
+export PAGER=${PAGER:-/usr/bin/less}
+
+# 077 would be more secure, but 022 is generally quite realistic
+umask 022
+
+# Set up PATH, all users get both bin and sbin to keep things simple.
+# Gentoo normally splits this up which is why the variable is called ROOTPATH
+export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin${ROOTPATH:+:}${ROOTPATH-}"
+unset ROOTPATH
+
+if [ -n "${BASH_VERSION-}" ] ; then
+ # Newer bash ebuilds include /etc/bash/bashrc which will setup PS1
+ # including color. We leave out color here because not all
+ # terminals support it.
+ if [ -f /etc/bash/bashrc ] ; then
+ # Bash login shells run only /etc/profile
+ # Bash non-login shells run only /etc/bash/bashrc
+ # Since we want to run /etc/bash/bashrc regardless, we source it
+ # from here. It is unfortunate that there is no way to do
+ # this *after* the user's .bash_profile runs (without putting
+ # it in the user's dot-files), but it shouldn't make any
+ # difference.
+ . /etc/bash/bashrc
+ elif [ -f /usr/share/bash/bashrc ] ; then
+ . /usr/share/bash/bashrc
+ else
+ PS1='\u@\h \w \$ '
+ fi
+else
+ # Setup a bland default prompt. Since this prompt should be useable
+ # on color and non-color terminals, as well as shells that don't
+ # understand sequences such as \h, don't put anything special in it.
+ PS1="${USER:-$(whoami 2>/dev/null)}@$(uname -n 2>/dev/null) \$ "
+fi
+
+for sh in /usr/share/profile.d/*.sh ; do
+ [ -r "$sh" ] && . "$sh"
+done
+for sh in /etc/profile.d/*.sh ; do
+ [ -r "$sh" ] && . "$sh"
+done
+unset sh
× File /etc/profile content is expected to match /^\s*umask [0-7][2367]7\s*(?:#.*)?$/
expected "# /etc/profile: login shell setup\n#\n# That this file is used by any Bourne-shell derivative to set... \"$sh\"\ndone\nfor sh in /etc/profile.d/*.sh ; do\n\t[ -r \"$sh\" ] && . \"$sh\"\ndone\nunset sh\n" to match /^\s*umask [0-7][2367]7\s*(?:#.*)?$/
Diff:
@@ -1,59 +1,117 @@
-/^\s*umask [0-7][2367]7\s*(?:#.*)?$/
+# /etc/profile: login shell setup
+#
+# That this file is used by any Bourne-shell derivative to setup the
+# environment for login shells.
+#
+
+# Load environment settings from profile.env, which is created by
+# env-update from the files in /etc/env.d
+if [ -e /etc/profile.env ] ; then
+ . /etc/profile.env
+elif [ -e /usr/share/baselayout/profile.env ] ; then
+ . /usr/share/baselayout/profile.env
+fi
+
+# You should override these in your ~/.bashrc (or equivalent) for per-user
+# settings. For system defaults, you can add a new file in /etc/profile.d/.
+export EDITOR=${EDITOR:-/usr/bin/vim}
+export PAGER=${PAGER:-/usr/bin/less}
+
+# 077 would be more secure, but 022 is generally quite realistic
+umask 022
+
+# Set up PATH, all users get both bin and sbin to keep things simple.
+# Gentoo normally splits this up which is why the variable is called ROOTPATH
+export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin${ROOTPATH:+:}${ROOTPATH-}"
+unset ROOTPATH
+
+if [ -n "${BASH_VERSION-}" ] ; then
+ # Newer bash ebuilds include /etc/bash/bashrc which will setup PS1
+ # including color. We leave out color here because not all
+ # terminals support it.
+ if [ -f /etc/bash/bashrc ] ; then
+ # Bash login shells run only /etc/profile
+ # Bash non-login shells run only /etc/bash/bashrc
+ # Since we want to run /etc/bash/bashrc regardless, we source it
+ # from here. It is unfortunate that there is no way to do
+ # this *after* the user's .bash_profile runs (without putting
+ # it in the user's dot-files), but it shouldn't make any
+ # difference.
+ . /etc/bash/bashrc
+ elif [ -f /usr/share/bash/bashrc ] ; then
+ . /usr/share/bash/bashrc
+ else
+ PS1='\u@\h \w \$ '
+ fi
+else
+ # Setup a bland default prompt. Since this prompt should be useable
+ # on color and non-color terminals, as well as shells that don't
+ # understand sequences such as \h, don't put anything special in it.
+ PS1="${USER:-$(whoami 2>/dev/null)}@$(uname -n 2>/dev/null) \$ "
+fi
+
+for sh in /usr/share/profile.d/*.sh ; do
+ [ -r "$sh" ] && . "$sh"
+done
+for sh in /etc/profile.d/*.sh ; do
+ [ -r "$sh" ] && . "$sh"
+done
+unset sh
↺ cis-dil-benchmark-5.4.5: Ensure default user shell timeout is 900 seconds or less
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-5.5: Ensure root login is restricted to system console
↺ Not implemented
× cis-dil-benchmark-5.6: Ensure access to the su command is restricted (1 failed)
× File /etc/pam.d/su content is expected to match /^auth\s+required\s+pam_wheel.so use_uid$/
expected nil to match /^auth\s+required\s+pam_wheel.so use_uid$/
✔ Groups with name == "wheel" is expected to exist
↺ cis-dil-benchmark-6.1.1: Audit system file permissions
↺ Skipped control due to only_if condition.
✔ cis-dil-benchmark-6.1.2: Ensure permissions on /etc/passwd are configured
✔ File /etc/passwd is expected to exist
✔ File /etc/passwd mode is expected to cmp == "0644"
✔ File /etc/passwd uid is expected to cmp == 0
✔ File /etc/passwd gid is expected to cmp == 0
✔ File /etc/passwd sticky is expected to equal false
✔ File /etc/passwd suid is expected to equal false
✔ File /etc/passwd sgid is expected to equal false
✔ File /usr/share/baselayout/passwd is expected to exist
✔ File /usr/share/baselayout/passwd mode is expected to cmp == "0644"
✔ File /usr/share/baselayout/passwd uid is expected to cmp == 0
✔ File /usr/share/baselayout/passwd gid is expected to cmp == 0
✔ File /usr/share/baselayout/passwd sticky is expected to equal false
✔ File /usr/share/baselayout/passwd suid is expected to equal false
✔ File /usr/share/baselayout/passwd sgid is expected to equal false
✔ cis-dil-benchmark-6.1.3: Ensure permissions on /etc/shadow are configured
✔ File /etc/shadow is expected to exist
✔ File /etc/shadow is expected not to be more permissive than "0644"
✔ File /etc/shadow uid is expected to cmp == 0
✔ File /etc/shadow gid is expected to cmp == 0
✔ File /usr/share/baselayout/shadow is expected to exist
✔ File /usr/share/baselayout/shadow is expected not to be more permissive than "0644"
✔ File /usr/share/baselayout/shadow uid is expected to cmp == 0
✔ File /usr/share/baselayout/shadow gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.4: Ensure permissions on /etc/group are configured
✔ File /etc/group is expected to exist
✔ File /etc/group mode is expected to cmp == "0644"
✔ File /etc/group uid is expected to cmp == 0
✔ File /etc/group gid is expected to cmp == 0
✔ File /usr/share/baselayout/group is expected to exist
✔ File /usr/share/baselayout/group mode is expected to cmp == "0644"
✔ File /usr/share/baselayout/group uid is expected to cmp == 0
✔ File /usr/share/baselayout/group gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.5: Ensure permissions on /etc/gshadow are configured
✔ File /etc/gshadow is expected to exist
✔ File /etc/gshadow is expected not to be more permissive than "0640"
✔ File /etc/gshadow uid is expected to cmp == 0
✔ File /etc/gshadow gid is expected to cmp == 0
× cis-dil-benchmark-6.1.6: Ensure permissions on /etc/passwd- are configured (1 failed)
✔ File /etc/passwd- is expected to exist
× File /etc/passwd- is expected not to be more permissive than "0600"
expected `File /etc/passwd-.more_permissive_than?("0600")` to be falsey, got true
✔ File /etc/passwd- uid is expected to cmp == 0
✔ File /etc/passwd- gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.7: Ensure permissions on /etc/shadow- are configured
✔ File /etc/shadow- is expected to exist
✔ File /etc/shadow- is expected not to be more permissive than "0640"
✔ File /etc/shadow- uid is expected to cmp == 0
✔ File /etc/shadow- gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.8: Ensure permissions on /etc/group- are configured
✔ File /etc/group- is expected to exist
✔ File /etc/group- is expected not to be more permissive than "0644"
✔ File /etc/group- uid is expected to cmp == 0
✔ File /etc/group- gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.9: Ensure permissions on /etc/gshadow- are configured
✔ File /etc/gshadow- is expected to exist
✔ File /etc/gshadow- is expected not to be more permissive than "0640"
✔ File /etc/gshadow- uid is expected to cmp == 0
✔ File /etc/gshadow- gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.10: Ensure no world writable files exist
✔ Command: `df --local -P | awk '{ if (NR!=1) print $6 }' | xargs -I '{}' find '{}' -xdev -type f -perm -0002` stdout is expected to cmp == ""
× cis-dil-benchmark-6.1.11: Ensure no unowned files or directories exist
× Command: `df --local -P | awk '{ if (NR!=1) print $6 }' | xargs -I '{}' find '{}' -xdev -nouser` stdout is expected to cmp == ""
expected:
got: /media/configvirtfs
/media/configvirtfs
/media/configvirtfs/openstack
/media/configvirtfs/openstack/latest
/media/configvirtfs/openstack/latest/user_data
(compared using `cmp` matcher)
× cis-dil-benchmark-6.1.12: Ensure no ungrouped files or directories exist
× Command: `df --local -P | awk '{ if (NR!=1) print $6 }' | xargs -I '{}' find '{}' -xdev -nogroup` stdout is expected to cmp == ""
expected:
got: /media/configvirtfs
/media/configvirtfs
/media/configvirtfs/openstack
/media/configvirtfs/openstack/latest
/media/configvirtfs/openstack/latest/user_data
(compared using `cmp` matcher)
↺ cis-dil-benchmark-6.1.13: Audit SUID executables
↺ Not implemented
↺ cis-dil-benchmark-6.1.14: Audit SGID executables
↺ Not implemented
✔ cis-dil-benchmark-6.2.1: Ensure password fields are not empty
✔ /etc/shadow passwords is expected not to include ""
✔ /usr/share/baselayout/shadow passwords is expected not to include ""
✔ cis-dil-benchmark-6.2.2: Ensure no legacy "+" entries exist in /etc/passwd
✔ /etc/passwd users is expected not to include "+"
✔ /etc/passwd users is expected not to include "+"
✔ cis-dil-benchmark-6.2.3: Ensure no legacy "+" entries exist in /etc/shadow
✔ /etc/shadow users is expected not to include "+"
✔ /usr/share/baselayout/shadow users is expected not to include "+"
✔ cis-dil-benchmark-6.2.4: Ensure no legacy "+" entries exist in /etc/group
✔ /etc/group groups is expected not to include "+"
✔ /etc/group groups is expected not to include "+"
✔ cis-dil-benchmark-6.2.5: Ensure root is the only UID 0 account
✔ /etc/passwd with uid == 0 users is expected to cmp == ["root"]
✔ /etc/passwd with uid == 0 users is expected to cmp == ["root"]
✔ cis-dil-benchmark-6.2.6: Ensure root PATH Integrity
✔ ["/usr/bin", "/bin", "/usr/sbin", "/sbin"] is expected not to be empty
✔ ["/usr/bin", "/bin", "/usr/sbin", "/sbin"] is expected not to include ""
✔ ["/usr/bin", "/bin", "/usr/sbin", "/sbin"] is expected not to include "."
✔ File /usr/bin is expected to be directory
✔ File /usr/bin is expected not to be writable by group
✔ File /usr/bin is expected not to be writable by other
✔ File /usr/bin uid is expected to cmp == 0
✔ File /bin is expected to be directory
✔ File /bin is expected not to be writable by group
✔ File /bin is expected not to be writable by other
✔ File /bin uid is expected to cmp == 0
✔ File /usr/sbin is expected to be directory
✔ File /usr/sbin is expected not to be writable by group
✔ File /usr/sbin is expected not to be writable by other
✔ File /usr/sbin uid is expected to cmp == 0
✔ File /sbin is expected to be directory
✔ File /sbin is expected not to be writable by group
✔ File /sbin is expected not to be writable by other
✔ File /sbin uid is expected to cmp == 0
✔ cis-dil-benchmark-6.2.11: Ensure no users have .forward files
✔ File /root/.forward is expected not to exist
✔ File /home/core/.forward is expected not to exist
✔ File //.forward is expected not to exist
✔ File //.forward is expected not to exist
✔ File /root/.forward is expected not to exist
✔ File /bin/.forward is expected not to exist
✔ File /sbin/.forward is expected not to exist
✔ File /var/adm/.forward is expected not to exist
✔ File /var/spool/lpd/.forward is expected not to exist
✔ File /sbin/.forward is expected not to exist
✔ File /sbin/.forward is expected not to exist
✔ File /sbin/.forward is expected not to exist
✔ File /var/spool/news/.forward is expected not to exist
✔ File /var/spool/uucp/.forward is expected not to exist
✔ File /root/.forward is expected not to exist
✔ File /usr/share/man/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /var/empty/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /var/lib/dhcpcd/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /var/lib/polkit-1/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /var/tmp/portage/.forward is expected not to exist
✔ File /home/core/.forward is expected not to exist
✔ File /var/empty/.forward is expected not to exist
✔ cis-dil-benchmark-6.2.12: Ensure no users have .netrc files
✔ File /root/.netrc is expected not to exist
✔ File /home/core/.netrc is expected not to exist
✔ File //.netrc is expected not to exist
✔ File //.netrc is expected not to exist
✔ File /root/.netrc is expected not to exist
✔ File /bin/.netrc is expected not to exist
✔ File /sbin/.netrc is expected not to exist
✔ File /var/adm/.netrc is expected not to exist
✔ File /var/spool/lpd/.netrc is expected not to exist
✔ File /sbin/.netrc is expected not to exist
✔ File /sbin/.netrc is expected not to exist
✔ File /sbin/.netrc is expected not to exist
✔ File /var/spool/news/.netrc is expected not to exist
✔ File /var/spool/uucp/.netrc is expected not to exist
✔ File /root/.netrc is expected not to exist
✔ File /usr/share/man/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /var/empty/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /var/lib/dhcpcd/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /var/lib/polkit-1/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /var/tmp/portage/.netrc is expected not to exist
✔ File /home/core/.netrc is expected not to exist
✔ File /var/empty/.netrc is expected not to exist
✔ cis-dil-benchmark-6.2.14: Ensure no users have .rhosts files
✔ File /root/.rhosts is expected not to exist
✔ File /home/core/.rhosts is expected not to exist
✔ File //.rhosts is expected not to exist
✔ File //.rhosts is expected not to exist
✔ File /root/.rhosts is expected not to exist
✔ File /bin/.rhosts is expected not to exist
✔ File /sbin/.rhosts is expected not to exist
✔ File /var/adm/.rhosts is expected not to exist
✔ File /var/spool/lpd/.rhosts is expected not to exist
✔ File /sbin/.rhosts is expected not to exist
✔ File /sbin/.rhosts is expected not to exist
✔ File /sbin/.rhosts is expected not to exist
✔ File /var/spool/news/.rhosts is expected not to exist
✔ File /var/spool/uucp/.rhosts is expected not to exist
✔ File /root/.rhosts is expected not to exist
✔ File /usr/share/man/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /var/empty/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /var/lib/dhcpcd/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /var/lib/polkit-1/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /var/tmp/portage/.rhosts is expected not to exist
✔ File /home/core/.rhosts is expected not to exist
✔ File /var/empty/.rhosts is expected not to exist
× cis-dil-benchmark-6.2.15: Ensure all groups in /etc/passwd exist in /etc/group (2 failed)
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 500
✔ /etc/group gids is expected to include 500
✔ /etc/group gids is expected to include 998
✔ /etc/group gids is expected to include 997
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 1
✔ /etc/group gids is expected to include 2
✔ /etc/group gids is expected to include 4
✔ /etc/group gids is expected to include 7
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 13
✔ /etc/group gids is expected to include 14
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 15
✔ /etc/group gids is expected to include 201
✔ /etc/group gids is expected to include 202
✔ /etc/group gids is expected to include 203
✔ /etc/group gids is expected to include 204
✔ /etc/group gids is expected to include 215
✔ /etc/group gids is expected to include 224
✔ /etc/group gids is expected to include 232
✔ /etc/group gids is expected to include 233
✔ /etc/group gids is expected to include 233
✔ /etc/group gids is expected to include 234
✔ /etc/group gids is expected to include 235
× /etc/group gids is expected to include 236
expected [0, 10, 150, 233, 500, 999, 251, 998, 997] to include 236
× /etc/group gids is expected to include 236
expected [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 26, 27, 28, 29, 30, 78, 80, 85, 100, 1..., 204, 215, 224, 232, 233, 234, 235, 242, 244, 245, 246, 248, 249, 250, 252, 406, 500, 65533, 65534] to include 236
✔ /etc/group gids is expected to include 242
✔ /etc/group gids is expected to include 244
✔ /etc/group gids is expected to include 245
✔ /etc/group gids is expected to include 246
✔ /etc/group gids is expected to include 250
✔ /etc/group gids is expected to include 500
✔ /etc/group gids is expected to include 500
✔ /etc/group gids is expected to include 65534
✔ cis-dil-benchmark-6.2.16: Ensure no duplicate UIDs exist
✔ is expected to be nil
✔ is expected to be nil
✔ cis-dil-benchmark-6.2.17: Ensure no duplicate GIDs exist
✔ is expected to be nil
✔ is expected to be nil
✔ cis-dil-benchmark-6.2.18: Ensure no duplicate user names exist
✔ is expected to be nil
✔ is expected to be nil
✔ cis-dil-benchmark-6.2.19: Ensure no duplicate group names exist
✔ is expected to be nil
✔ is expected to be nil
✔ cis-dil-benchmark-6.2.20: Ensure shadow group is empty
✔ # users is expected to be empty
✔ # users is expected to be empty
Profile Summary: 65 successful controls, 83 control failures, 82 controls skipped
Test Summary: 593 successful, 258 failures, 88 skipped
================================================
FILE: CIS/inspec-report-level2-root-2020-12-08.txt
================================================
Profile: CIS Distribution Independent Linux Benchmark Profile (cis-dil-benchmark)
Version: 0.4.4
Target: ssh://root@localhost:2222
× cis-dil-benchmark-1.1.1.1: Ensure mounting of cramfs filesystems is disabled (1 failed)
✔ Kernel Module cramfs is expected not to be loaded
× Kernel Module cramfs is expected to be disabled
expected `Kernel Module cramfs.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.2: Ensure mounting of freevxfs filesystems is disabled (1 failed)
✔ Kernel Module freevxfs is expected not to be loaded
× Kernel Module freevxfs is expected to be disabled
expected `Kernel Module freevxfs.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.3: Ensure mounting of jffs2 filesystems is disabled (1 failed)
✔ Kernel Module jffs2 is expected not to be loaded
× Kernel Module jffs2 is expected to be disabled
expected `Kernel Module jffs2.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.4: Ensure mounting of hfs filesystems is disabled (1 failed)
✔ Kernel Module hfs is expected not to be loaded
× Kernel Module hfs is expected to be disabled
expected `Kernel Module hfs.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.5: Ensure mounting of hfsplus filesystems is disabled (1 failed)
✔ Kernel Module hfsplus is expected not to be loaded
× Kernel Module hfsplus is expected to be disabled
expected `Kernel Module hfsplus.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.6: Ensure mounting of squashfs filesystems is disabled (1 failed)
✔ Kernel Module squashfs is expected not to be loaded
× Kernel Module squashfs is expected to be disabled
expected `Kernel Module squashfs.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.7: Ensure mounting of udf filesystems is disabled (1 failed)
✔ Kernel Module udf is expected not to be loaded
× Kernel Module udf is expected to be disabled
expected `Kernel Module udf.disabled?` to be truthy, got false
× cis-dil-benchmark-1.1.1.8: Ensure mounting of FAT filesystems is disabled (2 failed)
× Kernel Module vfat is expected not to be loaded
expected `Kernel Module vfat.loaded?` to be falsey, got true
× Kernel Module vfat is expected to be disabled
expected `Kernel Module vfat.disabled?` to be truthy, got false
✔ cis-dil-benchmark-1.1.2: Ensure separate partition exists for /tmp
✔ Mount /tmp is expected to be mounted
✔ cis-dil-benchmark-1.1.3: Ensure nodev option set on /tmp partition
✔ Mount /tmp options is expected to include "nodev"
✔ cis-dil-benchmark-1.1.4: Ensure nosuid option set on /tmp partition
✔ Mount /tmp options is expected to include "nosuid"
× cis-dil-benchmark-1.1.5: Ensure noexec option set on /tmp partition
× Mount /tmp options is expected to include "noexec"
expected ["rw", "nosuid", "nodev", "seclabel", "nr_inodes=409600"] to include "noexec"
× cis-dil-benchmark-1.1.6: Ensure separate partition exists for /var
× Mount /var is expected to be mounted
Mount /var is not mounted
× cis-dil-benchmark-1.1.7: Ensure separate partition exists for /var/tmp
× Mount /var/tmp is expected to be mounted
Mount /var/tmp is not mounted
↺ cis-dil-benchmark-1.1.8: Ensure nodev option set on /var/tmp partition
↺ Skipped control due to only_if condition: /var/tmp is mounted
↺ cis-dil-benchmark-1.1.9: Ensure nosuid option set on /var/tmp partition
↺ Skipped control due to only_if condition: /var/tmp is mounted
↺ cis-dil-benchmark-1.1.10: Ensure noexec option set on /var/tmp partition
↺ Skipped control due to only_if condition: /var/tmp is mounted
× cis-dil-benchmark-1.1.11: Ensure separate partition exists for /var/log
× Mount /var/log is expected to be mounted
Mount /var/log is not mounted
× cis-dil-benchmark-1.1.12: Ensure separate partition exists for /var/log/audit
× Mount /var/log/audit is expected to be mounted
Mount /var/log/audit is not mounted
× cis-dil-benchmark-1.1.13: Ensure separate partition exists for /home
× Mount /home is expected to be mounted
Mount /home is not mounted
↺ cis-dil-benchmark-1.1.14: Ensure nodev option set on /home partition
↺ Skipped control due to only_if condition: /home is mounted
✔ cis-dil-benchmark-1.1.15: Ensure nodev option set on /dev/shm partition
✔ Mount /dev/shm options is expected to include "nodev"
✔ cis-dil-benchmark-1.1.16: Ensure nosuid option set on /dev/shm partitionrun
✔ Mount /dev/shm options is expected to include "nosuid"
× cis-dil-benchmark-1.1.17: Ensure noexec option set on /dev/shm partition
× Mount /dev/shm options is expected to include "noexec"
expected ["rw", "nosuid", "nodev", "seclabel"] to include "noexec"
↺ cis-dil-benchmark-1.1.18: Ensure nodev option set on removable media partitions
↺ Not implemented
↺ cis-dil-benchmark-1.1.19: Ensure nosuid option set on removable media partitions
↺ Not implemented
↺ cis-dil-benchmark-1.1.20: Ensure noexec option set on removable media partitions
↺ Not implemented
✔ cis-dil-benchmark-1.1.21: Ensure sticky bit is set on all world-writable directories
✔ Command: `df --local -P | awk '{ if (NR!=1) print $6 }' | xargs -I '{}' find '{}' -xdev -type d ( -perm -0002 -a ! -perm -1000 )` stdout is expected to cmp == ""
✔ cis-dil-benchmark-1.1.22: Disable Automounting
✔ Service autofs is expected not to be enabled
✔ Service autofs is expected not to be running
✔ Service autofs is expected not to be enabled
✔ Service autofs is expected not to be running
× cis-dil-benchmark-1.1.23: Disable USB Storage (1 failed)
✔ Kernel Module usb_storage is expected not to be loaded
× Kernel Module usb_storage is expected to be disabled
expected `Kernel Module usb_storage.disabled?` to be truthy, got false
↺ cis-dil-benchmark-1.2.1: Ensure package manager repositories are configured
↺ Not implemented
↺ cis-dil-benchmark-1.2.2: Ensure GPG keys are configured
↺ Not implemented
× cis-dil-benchmark-1.3.1: Ensure AIDE is installed (2 failed)
× System Package aide is expected to be installed
expected that `System Package aide` is installed
× Command: `aide` is expected to exist
expected Command: `aide` to exist
× cis-dil-benchmark-1.3.2: Ensure filesystem integrity is regularly checked (4 failed)
× File /var/spool/cron/crontabs/root content is expected to match /aide (--check|-C)/
expected nil to match /aide (--check|-C)/
× File /var/spool/cron/root content is expected to match /aide (--check|-C)/
expected nil to match /aide (--check|-C)/
× File /etc/crontab content is expected to match /aide (--check|-C)/
expected nil to match /aide (--check|-C)/
× File /etc/cron.weekly/mdadm content is expected to match /aide (--check|-C)/
expected "#!/bin/sh\n# This requires that AUTOCHECK is true in /etc/default/mdadm\nif [ -x /usr/sbin/checkarray ] && [ $(date +\\%d) -le 7 ]; then\n\t/usr/sbin/checkarray --cron --all --idle --quiet\nfi\n" to match /aide (--check|-C)/
Diff:
@@ -1,5 +1,9 @@
-/aide (--check|-C)/
+#!/bin/sh
+# This requires that AUTOCHECK is true in /etc/default/mdadm
+if [ -x /usr/sbin/checkarray ] && [ $(date +\%d) -le 7 ]; then
+ /usr/sbin/checkarray --cron --all --idle --quiet
+fi
× cis-dil-benchmark-1.4.1: Ensure permissions on bootloader config are configured (22 failed)
× File /boot/grub/grub.conf is expected to exist
expected File /boot/grub/grub.conf to exist
✔ File /boot/grub/grub.conf is expected not to be readable by group
✔ File /boot/grub/grub.conf is expected not to be writable by group
✔ File /boot/grub/grub.conf is expected not to be executable by group
✔ File /boot/grub/grub.conf is expected not to be readable by other
✔ File /boot/grub/grub.conf is expected not to be writable by other
✔ File /boot/grub/grub.conf is expected not to be executable by other
× File /boot/grub/grub.conf gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub/grub.conf uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub/grub.cfg is expected to exist
expected File /boot/grub/grub.cfg to exist
✔ File /boot/grub/grub.cfg is expected not to be readable by group
✔ File /boot/grub/grub.cfg is expected not to be writable by group
✔ File /boot/grub/grub.cfg is expected not to be executable by group
✔ File /boot/grub/grub.cfg is expected not to be readable by other
✔ File /boot/grub/grub.cfg is expected not to be writable by other
✔ File /boot/grub/grub.cfg is expected not to be executable by other
× File /boot/grub/grub.cfg gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub/grub.cfg uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub/menu.lst is expected to exist
expected File /boot/grub/menu.lst to exist
✔ File /boot/grub/menu.lst is expected not to be readable by group
✔ File /boot/grub/menu.lst is expected not to be writable by group
✔ File /boot/grub/menu.lst is expected not to be executable by group
✔ File /boot/grub/menu.lst is expected not to be readable by other
✔ File /boot/grub/menu.lst is expected not to be writable by other
✔ File /boot/grub/menu.lst is expected not to be executable by other
× File /boot/grub/menu.lst gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub/menu.lst uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/boot/grub/grub.conf is expected to exist
expected File /boot/boot/grub/grub.conf to exist
✔ File /boot/boot/grub/grub.conf is expected not to be readable by group
✔ File /boot/boot/grub/grub.conf is expected not to be writable by group
✔ File /boot/boot/grub/grub.conf is expected not to be executable by group
✔ File /boot/boot/grub/grub.conf is expected not to be readable by other
✔ File /boot/boot/grub/grub.conf is expected not to be writable by other
✔ File /boot/boot/grub/grub.conf is expected not to be executable by other
× File /boot/boot/grub/grub.conf gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/boot/grub/grub.conf uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/boot/grub/grub.cfg is expected to exist
expected File /boot/boot/grub/grub.cfg to exist
✔ File /boot/boot/grub/grub.cfg is expected not to be readable by group
✔ File /boot/boot/grub/grub.cfg is expected not to be writable by group
✔ File /boot/boot/grub/grub.cfg is expected not to be executable by group
✔ File /boot/boot/grub/grub.cfg is expected not to be readable by other
✔ File /boot/boot/grub/grub.cfg is expected not to be writable by other
✔ File /boot/boot/grub/grub.cfg is expected not to be executable by other
× File /boot/boot/grub/grub.cfg gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/boot/grub/grub.cfg uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
✔ File /boot/boot/grub/menu.lst is expected to exist
× File /boot/boot/grub/menu.lst is expected not to be readable by group
expected File /boot/boot/grub/menu.lst not to be readable by group
✔ File /boot/boot/grub/menu.lst is expected not to be writable by group
× File /boot/boot/grub/menu.lst is expected not to be executable by group
expected File /boot/boot/grub/menu.lst not to be executable by group
× File /boot/boot/grub/menu.lst is expected not to be readable by other
expected File /boot/boot/grub/menu.lst not to be readable by other
✔ File /boot/boot/grub/menu.lst is expected not to be writable by other
× File /boot/boot/grub/menu.lst is expected not to be executable by other
expected File /boot/boot/grub/menu.lst not to be executable by other
✔ File /boot/boot/grub/menu.lst gid is expected to cmp == 0
✔ File /boot/boot/grub/menu.lst uid is expected to cmp == 0
× File /boot/grub2/grub.cfg is expected to exist
expected File /boot/grub2/grub.cfg to exist
✔ File /boot/grub2/grub.cfg is expected not to be readable by group
✔ File /boot/grub2/grub.cfg is expected not to be writable by group
✔ File /boot/grub2/grub.cfg is expected not to be executable by group
✔ File /boot/grub2/grub.cfg is expected not to be readable by other
✔ File /boot/grub2/grub.cfg is expected not to be writable by other
✔ File /boot/grub2/grub.cfg is expected not to be executable by other
× File /boot/grub2/grub.cfg gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /boot/grub2/grub.cfg uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-1.4.2: Ensure bootloader password is set (14 failed)
× File /boot/grub/grub.conf content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/grub/grub.conf content is expected to match /^password/
expected nil to match /^password/
× File /boot/grub/grub.cfg content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/grub/grub.cfg content is expected to match /^password/
expected nil to match /^password/
× File /boot/grub/menu.lst content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/grub/menu.lst content is expected to match /^password/
expected nil to match /^password/
× File /boot/boot/grub/grub.conf content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/boot/grub/grub.conf content is expected to match /^password/
expected nil to match /^password/
× File /boot/boot/grub/grub.cfg content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/boot/grub/grub.cfg content is expected to match /^password/
expected nil to match /^password/
× File /boot/boot/grub/menu.lst content is expected to match /^set superusers/
expected "timeout 0\ntitle CoreOS GRUB2\nroot (hd0,0)\nkernel /xen/pvboot-x86_64.elf\n" to match /^set superusers/
Diff:
@@ -1,4 +1,7 @@
-/^set superusers/
+timeout 0
+title CoreOS GRUB2
+root (hd0,0)
+kernel /xen/pvboot-x86_64.elf
× File /boot/boot/grub/menu.lst content is expected to match /^password/
expected "timeout 0\ntitle CoreOS GRUB2\nroot (hd0,0)\nkernel /xen/pvboot-x86_64.elf\n" to match /^password/
Diff:
@@ -1,4 +1,7 @@
-/^password/
+timeout 0
+title CoreOS GRUB2
+root (hd0,0)
+kernel /xen/pvboot-x86_64.elf
× File /boot/grub2/grub.cfg content is expected to match /^set superusers/
expected nil to match /^set superusers/
× File /boot/grub2/grub.cfg content is expected to match /^password/
expected nil to match /^password/
× cis-dil-benchmark-1.4.3: Ensure authentication required for single user mode (3 failed)
× /etc/shadow with user == "root" passwords is expected not to include "*"
expected ["*"] not to include "*"
✔ /etc/shadow with user == "root" passwords is expected not to include "!"
× File /etc/inittab content is expected to match /^~~:S:respawn:\/sbin\/sulogin/
expected nil to match /^~~:S:respawn:\/sbin\/sulogin/
× File /etc/sysconfig/init content is expected to match /^SINGLE=\/sbin\/sulogin$/
expected nil to match /^SINGLE=\/sbin\/sulogin$/
↺ cis-dil-benchmark-1.4.4: Ensure interactive boot is not enabled
↺ Not implemented
× cis-dil-benchmark-1.5.1: Ensure core dumps are restricted (2 failed)
× File /etc/security/limits.conf content is expected to match /^\s*\*\s+hard\s+core\s+0\s*(?:#.*)?$/
expected "# /etc/security/limits.conf\n#\n#Each line describes a limit for a user in the form:\n#\n# ... hard nproc 0\n\#@student - maxlogins 4\n\n# End of file\n" to match /^\s*\*\s+hard\s+core\s+0\s*(?:#.*)?$/
Diff:
@@ -1,50 +1,99 @@
-/^\s*\*\s+hard\s+core\s+0\s*(?:#.*)?$/
+# /etc/security/limits.conf
+#
+#Each line describes a limit for a user in the form:
+#
+#
-
+#
+#Where:
+# can be:
+# - a user name
+# - a group name, with @group syntax
+# - the wildcard *, for default entry
+# - the wildcard %, can be also used with %group syntax,
+# for maxlogin limit
+#
+# can have the two values:
+# - "soft" for enforcing the soft limits
+# - "hard" for enforcing hard limits
+#
+#
- can be one of the following:
+# - core - limits the core file size (KB)
+# - data - max data size (KB)
+# - fsize - maximum filesize (KB)
+# - memlock - max locked-in-memory address space (KB)
+# - nofile - max number of open file descriptors
+# - rss - max resident set size (KB)
+# - stack - max stack size (KB)
+# - cpu - max CPU time (MIN)
+# - nproc - max number of processes
+# - as - address space limit (KB)
+# - maxlogins - max number of logins for this user
+# - maxsyslogins - max number of logins on the system
+# - priority - the priority to run user process with
+# - locks - max number of file locks the user can hold
+# - sigpending - max number of pending signals
+# - msgqueue - max memory used by POSIX message queues (bytes)
+# - nice - max nice priority allowed to raise to values: [-20, 19]
+# - rtprio - max realtime priority
+#
+#
-
+#
+
+#* soft core 0
+#* hard rss 10000
+#@student hard nproc 20
+#@faculty soft nproc 20
+#@faculty hard nproc 50
+#ftp hard nproc 0
+#@student - maxlogins 4
+
+# End of file
× Kernel Parameter fs.suid_dumpable value is expected to eq 0
expected: 0
got: 2
(compared using ==)
✔ cis-dil-benchmark-1.5.2: Ensure XD/NX support is enabled
✔ Command: `dmesg | grep NX` stdout is expected to match /NX \(Execute Disable\) protection: active/
✔ cis-dil-benchmark-1.5.3: Ensure address space layout randomization (ASLR) is enabled
✔ Kernel Parameter kernel.randomize_va_space value is expected to eq 2
✔ cis-dil-benchmark-1.5.4: Ensure prelink is disabled
✔ System Package prelink is expected not to be installed
✔ Command: `prelink` is expected not to exist
× cis-dil-benchmark-1.6.1.1: Ensure SELinux or AppArmor are installed (3 failed)
× System Package libselinux is expected to be installed
expected that `System Package libselinux` is installed
× System Package libselinux1 is expected to be installed
expected that `System Package libselinux1` is installed
× System Package apparmor is expected to be installed
expected that `System Package apparmor` is installed
✔ cis-dil-benchmark-1.6.2.1: Ensure SELinux is not disabled in bootloader configuration
✔ File /boot/grub2/grub.cfg content is expected not to match /selinux=0/
✔ File /boot/grub2/grub.cfg content is expected not to match /enforcing=0/
✔ File /boot/grub/menu.lst content is expected not to match /selinux=0/
✔ File /boot/grub/menu.lst content is expected not to match /enforcing=0/
× cis-dil-benchmark-1.6.2.2: Ensure the SELinux state is enforcing (3 failed)
× File /etc/selinux/config content is expected to match /^SELINUX=enforcing\s*(?:#.*)?$/
expected "# This file controls the state of SELinux on the system on boot.\n\n# SELINUX can take one of these ...th Multi-Category Security \n#\t (mls, but only one sensitivity level)\nSELINUXTYPE=mcs\n" to match /^SELINUX=enforcing\s*(?:#.*)?$/
Diff:
@@ -1,15 +1,29 @@
-/^SELINUX=enforcing\s*(?:#.*)?$/
+# This file controls the state of SELinux on the system on boot.
+
+# SELINUX can take one of these three values:
+# enforcing - SELinux security policy is enforced.
+# permissive - SELinux prints warnings instead of enforcing.
+# disabled - No SELinux policy is loaded.
+SELINUX=permissive
+
+# SELINUXTYPE can take one of these four values:
+# targeted - Only targeted network daemons are protected.
+# strict - Full SELinux protection.
+# mls - Full SELinux protection with Multi-Level Security
+# mcs - Full SELinux protection with Multi-Category Security
+# (mls, but only one sensitivity level)
+SELINUXTYPE=mcs
✔ Command: `sestatus` stdout is expected to match /SELinux status:\s+enabled/
× Command: `sestatus` stdout is expected to match /Current mode:\s+enforcing/
expected "SELinux status: enabled\nSELinuxfs mount: /sys/fs/selinux\nSELinux ro... enabled\nPolicy deny_unknown status: allowed\nMax kernel policy version: 31\n" to match /Current mode:\s+enforcing/
Diff:
@@ -1,9 +1,17 @@
-/Current mode:\s+enforcing/
+SELinux status: enabled
+SELinuxfs mount: /sys/fs/selinux
+SELinux root directory: /etc/selinux
+Loaded policy name: mcs
+Current mode: permissive
+Mode from config file: permissive
+Policy MLS status: enabled
+Policy deny_unknown status: allowed
+Max kernel policy version: 31
× Command: `sestatus` stdout is expected to match /Mode from config file:\s+enforcing/
expected "SELinux status: enabled\nSELinuxfs mount: /sys/fs/selinux\nSELinux ro... enabled\nPolicy deny_unknown status: allowed\nMax kernel policy version: 31\n" to match /Mode from config file:\s+enforcing/
Diff:
@@ -1,9 +1,17 @@
-/Mode from config file:\s+enforcing/
+SELinux status: enabled
+SELinuxfs mount: /sys/fs/selinux
+SELinux root directory: /etc/selinux
+Loaded policy name: mcs
+Current mode: permissive
+Mode from config file: permissive
+Policy MLS status: enabled
+Policy deny_unknown status: allowed
+Max kernel policy version: 31
× cis-dil-benchmark-1.6.2.3: Ensure SELinux policy is configured (2 failed)
× File /etc/selinux/config content is expected to match /^SELINUXTYPE=(targeted|mls)\s*(?:#.*)?$/
expected "# This file controls the state of SELinux on the system on boot.\n\n# SELINUX can take one of these ...th Multi-Category Security \n#\t (mls, but only one sensitivity level)\nSELINUXTYPE=mcs\n" to match /^SELINUXTYPE=(targeted|mls)\s*(?:#.*)?$/
Diff:
@@ -1,15 +1,29 @@
-/^SELINUXTYPE=(targeted|mls)\s*(?:#.*)?$/
+# This file controls the state of SELinux on the system on boot.
+
+# SELINUX can take one of these three values:
+# enforcing - SELinux security policy is enforced.
+# permissive - SELinux prints warnings instead of enforcing.
+# disabled - No SELinux policy is loaded.
+SELINUX=permissive
+
+# SELINUXTYPE can take one of these four values:
+# targeted - Only targeted network daemons are protected.
+# strict - Full SELinux protection.
+# mls - Full SELinux protection with Multi-Level Security
+# mcs - Full SELinux protection with Multi-Category Security
+# (mls, but only one sensitivity level)
+SELINUXTYPE=mcs
× Command: `sestatus` stdout is expected to match /Policy from config file:\s+(targeted|mls)/
expected "SELinux status: enabled\nSELinuxfs mount: /sys/fs/selinux\nSELinux ro... enabled\nPolicy deny_unknown status: allowed\nMax kernel policy version: 31\n" to match /Policy from config file:\s+(targeted|mls)/
Diff:
@@ -1,9 +1,17 @@
-/Policy from config file:\s+(targeted|mls)/
+SELinux status: enabled
+SELinuxfs mount: /sys/fs/selinux
+SELinux root directory: /etc/selinux
+Loaded policy name: mcs
+Current mode: permissive
+Mode from config file: permissive
+Policy MLS status: enabled
+Policy deny_unknown status: allowed
+Max kernel policy version: 31
↺ cis-dil-benchmark-1.6.2.4: Ensure SETroubleshoot is not installed (1 skipped)
↺ The `package` resource is not supported on your OS yet.
✔ Command: `setroubleshoot` is expected not to exist
↺ cis-dil-benchmark-1.6.2.5: Ensure the MCS Translation Service (mcstrans) is not installed (1 failed) (1 skipped)
↺ The `package` resource is not supported on your OS yet.
× Command: `mcstransd` is expected not to exist
expected Command: `mcstransd` not to exist
✔ cis-dil-benchmark-1.6.2.6: Ensure no unconfined daemons exist
✔ Command: `ps -eZ | grep -E "initrc" | grep -E -v -w "tr|ps|grep|bash|awk" | tr ':' ' ' | awk '{ print $NF }'` stdout is expected to eq ""
↺ cis-dil-benchmark-1.6.3.1: Ensure AppArmor is not disabled in bootloader configuration
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.6.3.2: Ensure all AppArmor Profiles are enforcing
↺ Skipped control due to only_if condition.
✔ cis-dil-benchmark-1.7.1.1: Ensure message of the day is configured properly
✔ Command: `grep -E -i '(\v|\r|\m|\s|$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/"//g'))' /etc/motd` stdout is expected to eq ""
✔ cis-dil-benchmark-1.7.1.2: Ensure local login warning banner is configured properly
✔ Command: `grep -E -i '(\v|\r|\m|\s|$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/"//g'))' /etc/issue` stdout is expected to eq ""
✔ cis-dil-benchmark-1.7.1.3: Ensure remote login warning banner is configured properly
✔ Command: `grep -E -i '(\v|\r|\m|\s|$(grep '^ID=' /etc/os-release | cut -d= -f2 | sed -e 's/"//g'))' /etc/issue.net` stdout is expected to eq ""
✔ cis-dil-benchmark-1.7.1.4: Ensure permissions on /etc/motd are configured
✔ File /etc/motd group is expected to eq "root"
✔ File /etc/motd owner is expected to eq "root"
✔ File /etc/motd mode is expected to cmp == "0644"
✔ cis-dil-benchmark-1.7.1.5: Ensure permissions on /etc/issue are configured
✔ File /etc/issue group is expected to eq "root"
✔ File /etc/issue owner is expected to eq "root"
✔ File /etc/issue mode is expected to cmp == "0644"
× cis-dil-benchmark-1.7.1.6: Ensure permissions on /etc/issue.net are configured (3 failed)
× File /etc/issue.net group is expected to eq "root"
expected: "root"
got: nil
(compared using ==)
× File /etc/issue.net owner is expected to eq "root"
expected: "root"
got: nil
(compared using ==)
× File /etc/issue.net mode is expected to cmp == "0644"
can't convert nil into Integer
↺ cis-dil-benchmark-1.7.2: Ensure GDM login banner is configured
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-1.8: Ensure updates, patches, and additional security software are installed
↺ Not implemented
↺ cis-dil-benchmark-2.1.1: Ensure chargen services are not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.2: Ensure daytime services are not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.3: Ensure discard services are not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.4: Ensure echo services are not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.5: Ensure time services are not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.6: Ensure rsh server is not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.7: Ensure talk server is not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.8: Ensure telnet server is not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
↺ cis-dil-benchmark-2.1.9: Ensure tftp server is not enabled
↺ Skipped control due to only_if condition: inetd/xinetd config exists
✔ cis-dil-benchmark-2.1.10: Ensure xinetd is not enabled
✔ Service xinetd is expected not to be enabled
✔ Service xinetd is expected not to be running
✔ cis-dil-benchmark-2.2.1.1: Ensure time synchronization is in use
✔ Command: `ntpd` is expected to exist
× cis-dil-benchmark-2.2.1.2: Ensure ntp is configured (4 failed)
✔ ntp.conf server is expected not to eq nil
✔ ["default nomodify nopeer noquery notrap limited kod", "127.0.0.1", "[::1]"] is expected to match /default\s+(\S+\s+)*kod(?:\s+|\s?")/
✔ ["default nomodify nopeer noquery notrap limited kod", "127.0.0.1", "[::1]"] is expected to match /default\s+(\S+\s+)*nomodify(?:\s+|\s?")/
✔ ["default nomodify nopeer noquery notrap limited kod", "127.0.0.1", "[::1]"] is expected to match /default\s+(\S+\s+)*notrap(?:\s+|\s?")/
✔ ["default nomodify nopeer noquery notrap limited kod", "127.0.0.1", "[::1]"] is expected to match /default\s+(\S+\s+)*nopeer(?:\s+|\s?")/
✔ ["default nomodify nopeer noquery notrap limited kod", "127.0.0.1", "[::1]"] is expected to match /default\s+(\S+\s+)*noquery(?:\s+|\s?")/
× File /etc/init.d/ntp content is expected to match /^RUNASUSER=ntp\s*(?:#.*)?$/
expected nil to match /^RUNASUSER=ntp\s*(?:#.*)?$/
× File /etc/init.d/ntpd content is expected to match /daemon\s+(\S+\s+)-u ntp:ntp(?:\s+|\s?")/
expected nil to match /daemon\s+(\S+\s+)-u ntp:ntp(?:\s+|\s?")/
× File /etc/sysconfig/ntpd content is expected to match /^OPTIONS="(?:.)?-u ntp:ntp\s*(?:.)?"\s*(?:#.*)?$/
expected nil to match /^OPTIONS="(?:.)?-u ntp:ntp\s*(?:.)?"\s*(?:#.*)?$/
× File /usr/lib/systemd/system/ntpd.service content is expected to match /^ExecStart=\/usr\/s?bin\/ntpd (?:.)?-u ntp:ntp\s*(?:.)?$/
expected "[Unit]\nDescription=Network Time Service\nAfter=ntpdate.service sntp.service\nConflicts=systemd-time...tp/ntp.drift -u ntp:ntp\nPrivateTmp=true\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n" to match /^ExecStart=\/usr\/s?bin\/ntpd (?:.)?-u ntp:ntp\s*(?:.)?$/
Diff:
@@ -1,12 +1,23 @@
-/^ExecStart=\/usr\/s?bin\/ntpd (?:.)?-u ntp:ntp\s*(?:.)?$/
+[Unit]
+Description=Network Time Service
+After=ntpdate.service sntp.service
+Conflicts=systemd-timesyncd.service
+
+[Service]
+ExecStart=/usr/sbin/ntpd -g -n -f /var/lib/ntp/ntp.drift -u ntp:ntp
+PrivateTmp=true
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
↺ cis-dil-benchmark-2.2.1.3: Ensure chrony is configured
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-2.2.1.4: Ensure systemd-timesyncd is configured
↺ Skipped control due to only_if condition.
↺ cis-dil-benchmark-2.2.2: Ensure X Window System is not installed (2 skipped)
↺ The packages resource is not yet supported on OS coreos
↺ The packages resource is not yet supported on OS coreos
✔ cis-dil-benchmark-2.2.3: Ensure Avahi Server is not enabled
✔ Service avahi-daemon is expected not to be enabled
✔ Service avahi-daemon is expected not to be running
✔ cis-dil-benchmark-2.2.4: Ensure CUPS is not enabled
✔ Service cups is expected not to be enabled
✔ Service cups is expected not to be running
✔ cis-dil-benchmark-2.2.5: Ensure DHCP Server is not enabled
✔ Service isc-dhcp-server is expected not to be enabled
✔ Service isc-dhcp-server is expected not to be running
✔ Service isc-dhcp-server6 is expected not to be enabled
✔ Service isc-dhcp-server6 is expected not to be running
✔ Service dhcpd is expected not to be enabled
✔ Service dhcpd is expected not to be running
✔ cis-dil-benchmark-2.2.6: Ensure LDAP server is not enabled
✔ Service slapd is expected not to be enabled
✔ Service slapd is expected not to be running
✔ cis-dil-benchmark-2.2.7: Ensure NFS and RPC are not enabled
✔ Service nfs-kernel-server is expected not to be enabled
✔ Service nfs-kernel-server is expected not to be running
✔ Service nfs is expected not to be enabled
✔ Service nfs is expected not to be running
✔ Service rpcbind is expected not to be enabled
✔ Service rpcbind is expected not to be running
✔ cis-dil-benchmark-2.2.8: Ensure DNS Server is not enabled
✔ Service named is expected not to be enabled
✔ Service named is expected not to be running
✔ Service bind is expected not to be enabled
✔ Service bind is expected not to be running
✔ Service bind9 is expected not to be enabled
✔ Service bind9 is expected not to be running
✔ cis-dil-benchmark-2.2.9: Ensure FTP Server is not enabled
✔ Service vsftpd is expected not to be enabled
✔ Service vsftpd is expected not to be running
✔ cis-dil-benchmark-2.2.10: Ensure HTTP server is not enabled
✔ Service apache is expected not to be enabled
✔ Service apache is expected not to be running
✔ Service apache2 is expected not to be enabled
✔ Service apache2 is expected not to be running
✔ Service httpd is expected not to be enabled
✔ Service httpd is expected not to be running
✔ Service lighttpd is expected not to be enabled
✔ Service lighttpd is expected not to be running
✔ Service nginx is expected not to be enabled
✔ Service nginx is expected not to be running
✔ cis-dil-benchmark-2.2.11: Ensure IMAP and POP3 server is not enabled
✔ Service dovecot is expected not to be enabled
✔ Service dovecot is expected not to be running
✔ Service courier-imap is expected not to be enabled
✔ Service courier-imap is expected not to be running
✔ Service cyrus-imap is expected not to be enabled
✔ Service cyrus-imap is expected not to be running
✔ cis-dil-benchmark-2.2.12: Ensure Samba is not enabled
✔ Service samba is expected not to be enabled
✔ Service samba is expected not to be running
✔ Service smb is expected not to be enabled
✔ Service smb is expected not to be running
✔ Service smbd is expected not to be enabled
✔ Service smbd is expected not to be running
✔ cis-dil-benchmark-2.2.13: Ensure HTTP Proxy Server is not enabled
✔ Service squid is expected not to be enabled
✔ Service squid is expected not to be running
✔ Service squid3 is expected not to be enabled
✔ Service squid3 is expected not to be running
✔ cis-dil-benchmark-2.2.14: Ensure SNMP Server is not enabled
✔ Service snmpd is expected not to be enabled
✔ Service snmpd is expected not to be running
✔ cis-dil-benchmark-2.2.15: Ensure mail transfer agent is configured for local-only mode
✔ Port 25 with address !~ /^(127\.0\.0\.1|::1)$/ entries is expected to be empty
✔ cis-dil-benchmark-2.2.16: Ensure rsync service is not enabled
✔ Service rsync is expected not to be enabled
✔ Service rsync is expected not to be running
✔ Service rsyncd is expected not to be enabled
✔ Service rsyncd is expected not to be running
✔ cis-dil-benchmark-2.2.17: Ensure NIS Server is not enabled
✔ Service nis is expected not to be enabled
✔ Service nis is expected not to be running
✔ Service ypserv is expected not to be enabled
✔ Service ypserv is expected not to be running
↺ cis-dil-benchmark-2.3.1: Ensure NIS Client is not installed (2 skipped)
↺ The `package` resource is not supported on your OS yet.
↺ The `package` resource is not supported on your OS yet.
↺ cis-dil-benchmark-2.3.2: Ensure rsh client is not installed (3 skipped)
↺ The `package` resource is not supported on your OS yet.
↺ The `package` resource is not supported on your OS yet.
↺ The `package` resource is not supported on your OS yet.
↺ cis-dil-benchmark-2.3.3: Ensure talk client is not installed
↺ The `package` resource is not supported on your OS yet.
↺ cis-dil-benchmark-2.3.4: Ensure telnet client is not installed
↺ The `package` resource is not supported on your OS yet.
↺ cis-dil-benchmark-2.3.5: Ensure LDAP client is not installed (3 skipped)
↺ The `package` resource is not supported on your OS yet.
↺ The `package` resource is not supported on your OS yet.
↺ The `package` resource is not supported on your OS yet.
× cis-dil-benchmark-3.1.1: Ensure IP forwarding is disabled (1 failed)
✔ Kernel Parameter net.ipv4.ip_forward value is expected not to be nil
× Kernel Parameter net.ipv4.ip_forward value is expected to cmp == 0
expected: 0
got: 1
(compared using `cmp` matcher)
✔ Kernel Parameter net.ipv6.conf.all.forwarding value is expected not to be nil
✔ Kernel Parameter net.ipv6.conf.all.forwarding value is expected to cmp == 0
× cis-dil-benchmark-3.1.2: Ensure packet redirect sending is disabled (2 failed)
✔ Kernel Parameter net.ipv4.conf.all.send_redirects value is expected not to be nil
× Kernel Parameter net.ipv4.conf.all.send_redirects value is expected to cmp == 0
expected: 0
got: 1
(compared using `cmp` matcher)
✔ Kernel Parameter net.ipv4.conf.default.send_redirects value is expected not to be nil
× Kernel Parameter net.ipv4.conf.default.send_redirects value is expected to cmp == 0
expected: 0
got: 1
(compared using `cmp` matcher)
✔ cis-dil-benchmark-3.2.1: Ensure source routed packets are not accepted
✔ Kernel Parameter net.ipv4.conf.all.accept_source_route value is expected not to be nil
✔ Kernel Parameter net.ipv4.conf.all.accept_source_route value is expected to eq 0
✔ Kernel Parameter net.ipv4.conf.default.accept_source_route value is expected not to be nil
✔ Kernel Parameter net.ipv4.conf.default.accept_source_route value is expected to eq 0
✔ Kernel Parameter net.ipv6.conf.all.accept_source_route value is expected not to be nil
✔ Kernel Parameter net.ipv6.conf.all.accept_source_route value is expected to eq 0
✔ Kernel Parameter net.ipv6.conf.default.accept_source_route value is expected not to be nil
✔ Kernel Parameter net.ipv6.conf.default.accept_source_route value is expected to eq 0
× cis-dil-benchmark-3.2.2: Ensure ICMP redirects are not accepted (3 failed)
✔ Kernel Parameter net.ipv4.conf.all.accept_redirects value is expected not to be nil
✔ Kernel Parameter net.ipv4.conf.all.accept_redirects value is expected to eq 0
✔ Kernel Parameter net.ipv4.conf.default.accept_redirects value is expected not to be nil
× Kernel Parameter net.ipv4.conf.default.accept_redirects value is expected to eq 0
expected: 0
got: 1
(compared using ==)
✔ Kernel Parameter net.ipv6.conf.all.accept_redirects value is expected not to be nil
× Kernel Parameter net.ipv6.conf.all.accept_redirects value is expected to eq 0
expected: 0
got: 1
(compared using ==)
✔ Kernel Parameter net.ipv6.conf.default.accept_redirects value is expected not to be nil
× Kernel Parameter net.ipv6.conf.default.accept_redirects value is expected to eq 0
expected: 0
got: 1
(compared using ==)
× cis-dil-benchmark-3.2.3: Ensure secure ICMP redirects are not accepted (2 failed)
✔ Kernel Parameter net.ipv4.conf.all.secure_redirects value is expected not to be nil
× Kernel Parameter net.ipv4.conf.all.secure_redirects value is expected to eq 0
expected: 0
got: 1
(compared using ==)
✔ Kernel Parameter net.ipv4.conf.default.secure_redirects value is expected not to be nil
× Kernel Parameter net.ipv4.conf.default.secure_redirects value is expected to eq 0
expected: 0
got: 1
(compared using ==)
× cis-dil-benchmark-3.2.4: Ensure suspicious packets are logged (2 failed)
✔ Kernel Parameter net.ipv4.conf.all.log_martians value is expected not to be nil
× Kernel Parameter net.ipv4.conf.all.log_martians value is expected to eq 1
expected: 1
got: 0
(compared using ==)
✔ Kernel Parameter net.ipv4.conf.default.log_martians value is expected not to be nil
× Kernel Parameter net.ipv4.conf.default.log_martians value is expected to eq 1
expected: 1
got: 0
(compared using ==)
✔ cis-dil-benchmark-3.2.5: Ensure broadcast ICMP requests are ignored
✔ Kernel Parameter net.ipv4.icmp_echo_ignore_broadcasts value is expected not to be nil
✔ Kernel Parameter net.ipv4.icmp_echo_ignore_broadcasts value is expected to eq 1
✔ cis-dil-benchmark-3.2.6: Ensure bogus ICMP responses are ignored
✔ Kernel Parameter net.ipv4.icmp_ignore_bogus_error_responses value is expected not to be nil
✔ Kernel Parameter net.ipv4.icmp_ignore_bogus_error_responses value is expected to eq 1
✔ cis-dil-benchmark-3.2.7: Ensure Reverse Path Filtering is enabled
✔ Kernel Parameter net.ipv4.conf.all.rp_filter value is expected not to be nil
✔ Kernel Parameter net.ipv4.conf.all.rp_filter value is expected to eq 1
✔ Kernel Parameter net.ipv4.conf.default.rp_filter value is expected not to be nil
✔ Kernel Parameter net.ipv4.conf.default.rp_filter value is expected to eq 1
✔ cis-dil-benchmark-3.2.8: Ensure TCP SYN Cookies is enabled
✔ Kernel Parameter net.ipv4.tcp_syncookies value is expected not to be nil
✔ Kernel Parameter net.ipv4.tcp_syncookies value is expected to eq 1
× cis-dil-benchmark-3.2.9: Ensure IPv6 router advertisements are not accepted (2 failed)
✔ Kernel Parameter net.ipv6.conf.all.accept_ra value is expected not to be nil
× Kernel Parameter net.ipv6.conf.all.accept_ra value is expected to eq 0
expected: 0
got: 1
(compared using ==)
✔ Kernel Parameter net.ipv6.conf.default.accept_ra value is expected not to be nil
× Kernel Parameter net.ipv6.conf.default.accept_ra value is expected to eq 0
expected: 0
got: 1
(compared using ==)
× cis-dil-benchmark-3.3.1: Ensure TCP Wrappers is installed (2 failed)
× System Package tcpd is expected to be installed
expected that `System Package tcpd` is installed
× System Package tcp_wrappers is expected to be installed
expected that `System Package tcp_wrappers` is installed
× cis-dil-benchmark-3.3.2: Ensure /etc/hosts.allow is configured
× File /etc/hosts.allow is expected to exist
expected File /etc/hosts.allow to exist
× cis-dil-benchmark-3.3.3: Ensure /etc/hosts.deny is configured
× File /etc/hosts.deny content is expected to match /^ALL: ALL/
expected nil to match /^ALL: ALL/
× cis-dil-benchmark-3.3.4: Ensure permissions on /etc/hosts.allow are configured (5 failed)
× File /etc/hosts.allow is expected to exist
expected File /etc/hosts.allow to exist
× File /etc/hosts.allow is expected to be file
expected `File /etc/hosts.allow.file?` to be truthy, got false
× File /etc/hosts.allow owner is expected to cmp == "root"
expected: root
got:
(compared using `cmp` matcher)
× File /etc/hosts.allow group is expected to cmp == "root"
expected: root
got:
(compared using `cmp` matcher)
× File /etc/hosts.allow mode is expected to cmp == "0644"
can't convert nil into Integer
× cis-dil-benchmark-3.3.5: Ensure permissions on /etc/hosts.deny are configured (5 failed)
× File /etc/hosts.deny is expected to exist
expected File /etc/hosts.deny to exist
× File /etc/hosts.deny is expected to be file
expected `File /etc/hosts.deny.file?` to be truthy, got false
× File /etc/hosts.deny owner is expected to cmp == "root"
expected: root
got:
(compared using `cmp` matcher)
× File /etc/hosts.deny group is expected to cmp == "root"
expected: root
got:
(compared using `cmp` matcher)
× File /etc/hosts.deny mode is expected to cmp == "0644"
can't convert nil into Integer
× cis-dil-benchmark-3.4.1: Ensure DCCP is disabled (1 failed)
✔ Kernel Module dccp is expected not to be loaded
× Kernel Module dccp is expected to be disabled
expected `Kernel Module dccp.disabled?` to be truthy, got false
× cis-dil-benchmark-3.4.2: Ensure SCTP is disabled (1 failed)
✔ Kernel Module sctp is expected not to be loaded
× Kernel Module sctp is expected to be disabled
expected `Kernel Module sctp.disabled?` to be truthy, got false
× cis-dil-benchmark-3.4.3: Ensure RDS is disabled (1 failed)
✔ Kernel Module rds is expected not to be loaded
× Kernel Module rds is expected to be disabled
expected `Kernel Module rds.disabled?` to be truthy, got false
× cis-dil-benchmark-3.4.4: Ensure TIPC is disabled (1 failed)
✔ Kernel Module tipc is expected not to be loaded
× Kernel Module tipc is expected to be disabled
expected `Kernel Module tipc.disabled?` to be truthy, got false
× cis-dil-benchmark-3.5.1.1: Ensure IPv6 default deny firewall policy (3 failed)
× Ip6tables is expected to have rule "-P INPUT DROP"
expected Ip6tables to have rule "-P INPUT DROP"
× Ip6tables is expected to have rule "-P OUTPUT DROP"
expected Ip6tables to have rule "-P OUTPUT DROP"
× Ip6tables is expected to have rule "-P FORWARD DROP"
expected Ip6tables to have rule "-P FORWARD DROP"
× cis-dil-benchmark-3.5.1.2: Ensure IPv6 loopback traffic is configured (9 failed)
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s ::1)(?=.*-j DROP)/
+"-P OUTPUT ACCEPT"
× cis-dil-benchmark-3.5.1.3: Ensure IPv6 outbound and established connections are configured (18 failed)
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× cis-dil-benchmark-3.5.1.4: Ensure IPv6 firewall rules exist for all open ports (2 failed)
× Firewall rule should exist for port 68 is expected to equal true
expected true
got false
× Firewall rule should exist for port 22 is expected to equal true
expected true
got false
× cis-dil-benchmark-3.5.2.1: Ensure default deny firewall policy (3 failed)
× Iptables is expected to have rule "-P INPUT DROP"
expected Iptables to have rule "-P INPUT DROP"
× Iptables is expected to have rule "-P OUTPUT DROP"
expected Iptables to have rule "-P OUTPUT DROP"
× Iptables is expected to have rule "-P FORWARD DROP"
expected Iptables to have rule "-P FORWARD DROP"
× cis-dil-benchmark-3.5.2.2: Ensure loopback traffic is configured (9 failed)
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-i lo)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-o lo)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-s 127\.0\.0\.0\/8)(?=.*-j DROP)/
+"-P OUTPUT ACCEPT"
× cis-dil-benchmark-3.5.2.3: Ensure outbound and established connections are configured (18 failed)
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p tcp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p tcp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p udp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p udp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A OUTPUT)(?=.*-p icmp)(?=.*-m state --state NEW,ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× -P INPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P INPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P INPUT ACCEPT"
× -P FORWARD ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P FORWARD ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P FORWARD ACCEPT"
× -P OUTPUT ACCEPT is expected to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
expected "-P OUTPUT ACCEPT" to match /(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
Diff:
@@ -1 +1 @@
-/(?=.*-A INPUT)(?=.*-p icmp)(?=.*-m state --state ESTABLISHED)(?=.*-j ACCEPT)/
+"-P OUTPUT ACCEPT"
× cis-dil-benchmark-3.5.2.4: Ensure firewall rules exist for all open ports (2 failed)
× Firewall rule should exist for port 68 is expected to equal true
expected true
got false
× Firewall rule should exist for port 22 is expected to equal true
expected true
got false
↺ cis-dil-benchmark-3.5.3: Ensure iptables is installed
↺ The `package` resource is not supported on your OS yet.
↺ cis-dil-benchmark-3.6: Ensure wireless interfaces are disabled
↺ Not implemented
↺ cis-dil-benchmark-3.7: Disable IPv6
↺ Not implemented
✔ cis-dil-benchmark-4.1.1.1: Ensure audit log storage size is configured
✔ File /etc/audit/auditd.conf content is expected to match /^max_log_file = \d+\s*(?:#.*)?$/
× cis-dil-benchmark-4.1.1.2: Ensure system is disabled when audit logs are full (2 failed)
× File /etc/audit/auditd.conf content is expected to match /^space_left_action = email\s*(?:#.*)?$/
expected "#\n# This file controls the configuration of the audit daemon\n#\n\nlocal_events = yes\nwrite_logs =...b5 = no\nkrb5_principal = auditd\n##krb5_key_file = /etc/audit/audit.key\ndistribute_network = no\n" to match /^space_left_action = email\s*(?:#.*)?$/
Diff:
@@ -1,37 +1,73 @@
-/^space_left_action = email\s*(?:#.*)?$/
+#
+# This file controls the configuration of the audit daemon
+#
+
+local_events = yes
+write_logs = yes
+log_file = /var/log/audit/audit.log
+log_group = root
+log_format = RAW
+flush = INCREMENTAL_ASYNC
+freq = 50
+max_log_file = 8
+num_logs = 5
+priority_boost = 4
+disp_qos = lossy
+dispatcher = /sbin/audispd
+name_format = NONE
+##name = mydomain
+max_log_file_action = ROTATE
+space_left = 75
+space_left_action = SYSLOG
+verify_email = yes
+action_mail_acct = root
+admin_space_left = 50
+admin_space_left_action = SUSPEND
+disk_full_action = SUSPEND
+disk_error_action = SUSPEND
+use_libwrap = yes
+##tcp_listen_port = 60
+tcp_listen_queue = 5
+tcp_max_per_addr = 1
+##tcp_client_ports = 1024-65535
+tcp_client_max_idle = 0
+enable_krb5 = no
+krb5_principal = auditd
+##krb5_key_file = /etc/audit/audit.key
+distribute_network = no
✔ File /etc/audit/auditd.conf content is expected to match /^action_mail_acct = root\s*(?:#.*)?$/
× File /etc/audit/auditd.conf content is expected to match /^admin_space_left_action = halt\s*(?:#.*)?$/
expected "#\n# This file controls the configuration of the audit daemon\n#\n\nlocal_events = yes\nwrite_logs =...b5 = no\nkrb5_principal = auditd\n##krb5_key_file = /etc/audit/audit.key\ndistribute_network = no\n" to match /^admin_space_left_action = halt\s*(?:#.*)?$/
Diff:
@@ -1,37 +1,73 @@
-/^admin_space_left_action = halt\s*(?:#.*)?$/
+#
+# This file controls the configuration of the audit daemon
+#
+
+local_events = yes
+write_logs = yes
+log_file = /var/log/audit/audit.log
+log_group = root
+log_format = RAW
+flush = INCREMENTAL_ASYNC
+freq = 50
+max_log_file = 8
+num_logs = 5
+priority_boost = 4
+disp_qos = lossy
+dispatcher = /sbin/audispd
+name_format = NONE
+##name = mydomain
+max_log_file_action = ROTATE
+space_left = 75
+space_left_action = SYSLOG
+verify_email = yes
+action_mail_acct = root
+admin_space_left = 50
+admin_space_left_action = SUSPEND
+disk_full_action = SUSPEND
+disk_error_action = SUSPEND
+use_libwrap = yes
+##tcp_listen_port = 60
+tcp_listen_queue = 5
+tcp_max_per_addr = 1
+##tcp_client_ports = 1024-65535
+tcp_client_max_idle = 0
+enable_krb5 = no
+krb5_principal = auditd
+##krb5_key_file = /etc/audit/audit.key
+distribute_network = no
× cis-dil-benchmark-4.1.1.3: Ensure audit logs are not automatically deleted
× File /etc/audit/auditd.conf content is expected to match /^max_log_file_action = keep_logs\s*(?:#.*)?$/
expected "#\n# This file controls the configuration of the audit daemon\n#\n\nlocal_events = yes\nwrite_logs =...b5 = no\nkrb5_principal = auditd\n##krb5_key_file = /etc/audit/audit.key\ndistribute_network = no\n" to match /^max_log_file_action = keep_logs\s*(?:#.*)?$/
Diff:
@@ -1,37 +1,73 @@
-/^max_log_file_action = keep_logs\s*(?:#.*)?$/
+#
+# This file controls the configuration of the audit daemon
+#
+
+local_events = yes
+write_logs = yes
+log_file = /var/log/audit/audit.log
+log_group = root
+log_format = RAW
+flush = INCREMENTAL_ASYNC
+freq = 50
+max_log_file = 8
+num_logs = 5
+priority_boost = 4
+disp_qos = lossy
+dispatcher = /sbin/audispd
+name_format = NONE
+##name = mydomain
+max_log_file_action = ROTATE
+space_left = 75
+space_left_action = SYSLOG
+verify_email = yes
+action_mail_acct = root
+admin_space_left = 50
+admin_space_left_action = SUSPEND
+disk_full_action = SUSPEND
+disk_error_action = SUSPEND
+use_libwrap = yes
+##tcp_listen_port = 60
+tcp_listen_queue = 5
+tcp_max_per_addr = 1
+##tcp_client_ports = 1024-65535
+tcp_client_max_idle = 0
+enable_krb5 = no
+krb5_principal = auditd
+##krb5_key_file = /etc/audit/audit.key
+distribute_network = no
× cis-dil-benchmark-4.1.2: Ensure auditd is installed (4 failed)
× System Package audit is expected to be installed
expected that `System Package audit` is installed
× System Package auditd is expected to be installed
expected that `System Package auditd` is installed
× System Package audit-libs is expected to be installed
expected that `System Package audit-libs` is installed
× System Package audispd-plugins is expected to be installed
expected that `System Package audispd-plugins` is installed
× cis-dil-benchmark-4.1.3: Ensure auditd service is enabled (2 failed)
× Service auditd is expected to be enabled
expected that `Service auditd` is enabled
× Service auditd is expected to be running
expected that `Service auditd` is running
× cis-dil-benchmark-4.1.4: Ensure auditing for processes that start prior to auditd is enabled (7 failed)
× File /boot/grub/grub.conf content is expected to match /audit=1/
expected nil to match /audit=1/
× File /boot/grub/grub.cfg content is expected to match /audit=1/
expected nil to match /audit=1/
× File /boot/grub/menu.lst content is expected to match /audit=1/
expected nil to match /audit=1/
× File /boot/boot/grub/grub.conf content is expected to match /audit=1/
expected nil to match /audit=1/
× File /boot/boot/grub/grub.cfg content is expected to match /audit=1/
expected nil to match /audit=1/
× File /boot/boot/grub/menu.lst content is expected to match /audit=1/
expected "timeout 0\ntitle CoreOS GRUB2\nroot (hd0,0)\nkernel /xen/pvboot-x86_64.elf\n" to match /audit=1/
Diff:
@@ -1,4 +1,7 @@
-/audit=1/
+timeout 0
+title CoreOS GRUB2
+root (hd0,0)
+kernel /xen/pvboot-x86_64.elf
× File /boot/grub2/grub.cfg content is expected to match /audit=1/
expected nil to match /audit=1/
× cis-dil-benchmark-4.1.5: Ensure events that modify date and time information are collected (5 failed)
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b32 -S adjtimex -S settimeofday -S stime -k time-change$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b32 -S adjtimex -S settimeofday -S stime -k time-change$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b32 -S adjtimex -S settimeofday -S stime -k time-change$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b32 -S clock_settime -k time-change$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b32 -S clock_settime -k time-change$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b32 -S clock_settime -k time-change$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/localtime -p wa -k time-change$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/localtime -p wa -k time-change$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/localtime -p wa -k time-change$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b64 -S adjtimex -S settimeofday -k time-change$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b64 -S adjtimex -S settimeofday -k time-change$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b64 -S adjtimex -S settimeofday -k time-change$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b64 -S clock_settime -k time-change$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b64 -S clock_settime -k time-change$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b64 -S clock_settime -k time-change$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.6: Ensure events that modify user/group information are collected (5 failed)
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/group -p wa -k identity$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/group -p wa -k identity$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/group -p wa -k identity$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/passwd -p wa -k identity$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/passwd -p wa -k identity$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/passwd -p wa -k identity$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/gshadow -p wa -k identity$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/gshadow -p wa -k identity$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/gshadow -p wa -k identity$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/shadow -p wa -k identity$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/shadow -p wa -k identity$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/shadow -p wa -k identity$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/security\/opasswd -p wa -k identity$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/security\/opasswd -p wa -k identity$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/security\/opasswd -p wa -k identity$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.7: Ensure events that modify the system's network environment are collected (6 failed)
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b32 -S sethostname -S setdomainname -k system-locale$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b32 -S sethostname -S setdomainname -k system-locale$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b32 -S sethostname -S setdomainname -k system-locale$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/issue -p wa -k system-locale$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/issue -p wa -k system-locale$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/issue -p wa -k system-locale$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/issue\.net -p wa -k system-locale$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/issue\.net -p wa -k system-locale$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/issue\.net -p wa -k system-locale$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/hosts -p wa -k system-locale$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/hosts -p wa -k system-locale$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/hosts -p wa -k system-locale$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/sysconfig\/network -p wa -k system-locale$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/sysconfig\/network -p wa -k system-locale$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/sysconfig\/network -p wa -k system-locale$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b64 -S sethostname -S setdomainname -k system-locale$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b64 -S sethostname -S setdomainname -k system-locale$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b64 -S sethostname -S setdomainname -k system-locale$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.8: Ensure events that modify the system's Mandatory Access Controls are collected (4 failed)
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/selinux\/ -p wa -k MAC-policy$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/selinux\/ -p wa -k MAC-policy$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/selinux\/ -p wa -k MAC-policy$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/usr\/share\/selinux\/ -p wa -k MAC-policy$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/usr\/share\/selinux\/ -p wa -k MAC-policy$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/usr\/share\/selinux\/ -p wa -k MAC-policy$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/apparmor\/ -p wa -k MAC-policy$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/apparmor\/ -p wa -k MAC-policy$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/apparmor\/ -p wa -k MAC-policy$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/apparmor.d\/ -p wa -k MAC-policy$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/apparmor.d\/ -p wa -k MAC-policy$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/apparmor.d\/ -p wa -k MAC-policy$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.9: Ensure login and logout events are collected (3 failed)
× File /etc/audit/audit.rules content is expected to match /^-w \/var\/log\/faillog -p wa -k logins$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/var\/log\/faillog -p wa -k logins$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/var\/log\/faillog -p wa -k logins$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/var\/log\/lastlog -p wa -k logins$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/var\/log\/lastlog -p wa -k logins$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/var\/log\/lastlog -p wa -k logins$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/var\/log\/tallylog -p wa -k logins$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/var\/log\/tallylog -p wa -k logins$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/var\/log\/tallylog -p wa -k logins$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.10: Ensure session initiation information is collected (3 failed)
× File /etc/audit/audit.rules content is expected to match /^-w \/var\/run\/utmp -p wa -k session$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/var\/run\/utmp -p wa -k session$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/var\/run\/utmp -p wa -k session$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/var\/log\/wtmp -p wa -k logins$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/var\/log\/wtmp -p wa -k logins$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/var\/log\/wtmp -p wa -k logins$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/var\/log\/btmp -p wa -k logins$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/var\/log\/btmp -p wa -k logins$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/var\/log\/btmp -p wa -k logins$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.11: Ensure discretionary access control permission modification events are collected (6 failed)
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b32 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b32 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b32 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b32 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b32 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b32 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b32 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b64 -S setxattr -S lsetxattr -S fsetxattr -S removexattr -S lremovexattr -S fremovexattr -F auid>=1000 -F auid!=4294967295 -k perm_mod$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.12: Ensure unsuccessful unauthorized file access attempts are collected (4 failed)
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b32 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.14: Ensure successful file system mounts are collected (2 failed)
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b32 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b64 -S mount -F auid>=1000 -F auid!=4294967295 -k mounts$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.15: Ensure file deletion events by users are collected (2 failed)
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.16: Ensure changes to system administration scope (sudoers) is collected (2 failed)
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/sudoers -p wa -k scope$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/sudoers -p wa -k scope$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/sudoers -p wa -k scope$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/etc\/sudoers\.d\/? -p wa -k scope$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/etc\/sudoers\.d\/? -p wa -k scope$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/etc\/sudoers\.d\/? -p wa -k scope$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.17: Ensure system administrator actions (sudolog) are collected
× File /etc/audit/audit.rules content is expected to match /^-w \/var\/log\/sudo\.log -p wa -k actions$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/var\/log\/sudo\.log -p wa -k actions$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/var\/log\/sudo\.log -p wa -k actions$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.18: Ensure kernel module loading and unloading is collected (4 failed)
× File /etc/audit/audit.rules content is expected to match /^-w \/sbin\/insmod -p x -k modules$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/sbin\/insmod -p x -k modules$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/sbin\/insmod -p x -k modules$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/sbin\/rmmod -p x -k modules$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/sbin\/rmmod -p x -k modules$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/sbin\/rmmod -p x -k modules$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-w \/sbin\/modprobe -p x -k modules$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-w \/sbin\/modprobe -p x -k modules$/
Diff:
@@ -1,7 +1,13 @@
-/^-w \/sbin\/modprobe -p x -k modules$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× File /etc/audit/audit.rules content is expected to match /^-a (always,exit|exit,always) -F arch=b64 -S init_module -S delete_module -k modules$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-a (always,exit|exit,always) -F arch=b64 -S init_module -S delete_module -k modules$/
Diff:
@@ -1,7 +1,13 @@
-/^-a (always,exit|exit,always) -F arch=b64 -S init_module -S delete_module -k modules$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
× cis-dil-benchmark-4.1.19: Ensure the audit configuration is immutable
× File /etc/audit/audit.rules content is expected to match /^-e 2$/
expected "## This file is automatically generated from /etc/audit/rules.d\n-D\n\n\n-a exclude,never -F msgtype...400 -F msgtype<=1499\n-a exclude,never -F msgtype=CONFIG_CHANGE\n-a exclude,always -F msgtype>0\n\n" to match /^-e 2$/
Diff:
@@ -1,7 +1,13 @@
-/^-e 2$/
+## This file is automatically generated from /etc/audit/rules.d
+-D
+
+
+-a exclude,never -F msgtype>=1400 -F msgtype<=1499
+-a exclude,never -F msgtype=CONFIG_CHANGE
+-a exclude,always -F msgtype>0
↺ cis-dil-benchmark-4.2.1.1: Ensure rsyslog Service is insalled
↺ The `package` resource is not supported on your OS yet.
× cis-dil-benchmark-4.2.1.2: Ensure rsyslog Service is enabled (2 failed)
× Service rsyslog is expected to be enabled
expected that `Service rsyslog` is enabled
× Service rsyslog is expected to be running
expected that `Service rsyslog` is running
× cis-dil-benchmark-4.2.1.3: Ensure logging is configured
× File /etc/rsyslog.conf is expected to exist
expected File /etc/rsyslog.conf to exist
× cis-dil-benchmark-4.2.1.4: Ensure rsyslog default file permissions configured
× File /etc/rsyslog.conf content is expected to match /^\$FileCreateMode\s+0[0-6][0-4]0/
expected nil to match /^\$FileCreateMode\s+0[0-6][0-4]0/
× cis-dil-benchmark-4.2.1.5: Ensure rsyslog is configured to send logs to a remote log host
× File /etc/rsyslog.conf content is expected to match /^\s*\*\.\*\s+@/
expected nil to match /^\s*\*\.\*\s+@/
↺ cis-dil-benchmark-4.2.1.6: Ensure remote rsyslog messages are only accepted on designated log hosts.
↺ Not implemented
× cis-dil-benchmark-4.2.2.1: Ensure journald is configured to send logs to rsyslog
× Parse Config File /etc/systemd/journald.conf Journal is expected to include {"ForwardToSyslog" => "yes"}
expected {} to include {"ForwardToSyslog" => "yes"}
Diff:
@@ -1,2 +1 @@
-"ForwardToSyslog" => "yes",
× cis-dil-benchmark-4.2.2.2: Ensure journald is configured to compress large log files
× Parse Config File /etc/systemd/journald.conf Journal is expected to include {"Compress" => "yes"}
expected {} to include {"Compress" => "yes"}
Diff:
@@ -1,2 +1 @@
-"Compress" => "yes",
× cis-dil-benchmark-4.2.2.3: Ensure journald is configured to write logfiles to persistent disk
× Parse Config File /etc/systemd/journald.conf Journal is expected to include {"Storage" => "persistent"}
expected {} to include {"Storage" => "persistent"}
Diff:
@@ -1,2 +1 @@
-"Storage" => "persistent",
× cis-dil-benchmark-4.2.3: Ensure permissions on all logfiles are configured (2 failed)
✔ File /var/log/tallylog is expected not to be writable by group
✔ File /var/log/tallylog is expected not to be executable by group
✔ File /var/log/tallylog is expected not to be readable by other
✔ File /var/log/tallylog is expected not to be writable by other
✔ File /var/log/tallylog is expected not to be executable by other
✔ File /var/log/faillog is expected not to be writable by group
✔ File /var/log/faillog is expected not to be executable by group
× File /var/log/faillog is expected not to be readable by other
expected File /var/log/faillog not to be readable by other
✔ File /var/log/faillog is expected not to be writable by other
✔ File /var/log/faillog is expected not to be executable by other
✔ File /var/log/journal/e6d76ebe5f4d487aa425a47165856433/system.journal is expected not to be writable by group
✔ File /var/log/journal/e6d76ebe5f4d487aa425a47165856433/system.journal is expected not to be executable by group
✔ File /var/log/journal/e6d76ebe5f4d487aa425a47165856433/system.journal is expected not to be readable by other
✔ File /var/log/journal/e6d76ebe5f4d487aa425a47165856433/system.journal is expected not to be writable by other
✔ File /var/log/journal/e6d76ebe5f4d487aa425a47165856433/system.journal is expected not to be executable by other
× File /var/log/btmp is expected not to be writable by group
expected File /var/log/btmp not to be writable by group
✔ File /var/log/btmp is expected not to be executable by group
✔ File /var/log/btmp is expected not to be readable by other
✔ File /var/log/btmp is expected not to be writable by other
✔ File /var/log/btmp is expected not to be executable by other
✔ File /var/log/lastlog is expected not to be executable by group
✔ File /var/log/lastlog is expected not to be writable by other
✔ File /var/log/lastlog is expected not to be executable by other
✔ File /var/log/wtmp is expected not to be executable by group
✔ File /var/log/wtmp is expected not to be writable by other
✔ File /var/log/wtmp is expected not to be executable by other
↺ cis-dil-benchmark-4.3: Ensure logrotate is configured
↺ Not implemented
× cis-dil-benchmark-5.1.1: Ensure cron daemon is enabled (4 failed)
× Service cron is expected to be enabled
expected that `Service cron` is enabled
× Service cron is expected to be running
expected that `Service cron` is running
× Service crond is expected to be enabled
expected that `Service crond` is enabled
× Service crond is expected to be running
expected that `Service crond` is running
× cis-dil-benchmark-5.1.2: Ensure permissions on /etc/crontab are configured (3 failed)
× File /etc/crontab is expected to exist
expected File /etc/crontab to exist
✔ File /etc/crontab is expected not to be readable by group
✔ File /etc/crontab is expected not to be writable by group
✔ File /etc/crontab is expected not to be executable by group
✔ File /etc/crontab is expected not to be readable by other
✔ File /etc/crontab is expected not to be writable by other
✔ File /etc/crontab is expected not to be executable by other
× File /etc/crontab uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/crontab gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.1.3: Ensure permissions on /etc/cron.hourly are configured (3 failed)
× File /etc/cron.hourly is expected to exist
expected File /etc/cron.hourly to exist
✔ File /etc/cron.hourly is expected not to be readable by group
✔ File /etc/cron.hourly is expected not to be writable by group
✔ File /etc/cron.hourly is expected not to be executable by group
✔ File /etc/cron.hourly is expected not to be readable by other
✔ File /etc/cron.hourly is expected not to be writable by other
✔ File /etc/cron.hourly is expected not to be executable by other
× File /etc/cron.hourly uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/cron.hourly gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.1.4: Ensure permissions on /etc/cron.daily are configured (3 failed)
× File /etc/cron.daily is expected to exist
expected File /etc/cron.daily to exist
✔ File /etc/cron.daily is expected not to be readable by group
✔ File /etc/cron.daily is expected not to be writable by group
✔ File /etc/cron.daily is expected not to be executable by group
✔ File /etc/cron.daily is expected not to be readable by other
✔ File /etc/cron.daily is expected not to be writable by other
✔ File /etc/cron.daily is expected not to be executable by other
× File /etc/cron.daily uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/cron.daily gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.1.5: Ensure permissions on /etc/cron.weekly are configured (4 failed)
✔ File /etc/cron.weekly is expected to exist
× File /etc/cron.weekly is expected not to be readable by group
expected File /etc/cron.weekly not to be readable by group
✔ File /etc/cron.weekly is expected not to be writable by group
× File /etc/cron.weekly is expected not to be executable by group
expected File /etc/cron.weekly not to be executable by group
× File /etc/cron.weekly is expected not to be readable by other
expected File /etc/cron.weekly not to be readable by other
✔ File /etc/cron.weekly is expected not to be writable by other
× File /etc/cron.weekly is expected not to be executable by other
expected File /etc/cron.weekly not to be executable by other
✔ File /etc/cron.weekly uid is expected to cmp == 0
✔ File /etc/cron.weekly gid is expected to cmp == 0
× cis-dil-benchmark-5.1.6: Ensure permissions on /etc/cron.monthly are configured (3 failed)
× File /etc/cron.monthly is expected to exist
expected File /etc/cron.monthly to exist
✔ File /etc/cron.monthly is expected not to be readable by group
✔ File /etc/cron.monthly is expected not to be writable by group
✔ File /etc/cron.monthly is expected not to be executable by group
✔ File /etc/cron.monthly is expected not to be readable by other
✔ File /etc/cron.monthly is expected not to be writable by other
✔ File /etc/cron.monthly is expected not to be executable by other
× File /etc/cron.monthly uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/cron.monthly gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.1.7: Ensure permissions on /etc/cron.d are configured (3 failed)
× File /etc/cron.d is expected to exist
expected File /etc/cron.d to exist
✔ File /etc/cron.d is expected not to be readable by group
✔ File /etc/cron.d is expected not to be writable by group
✔ File /etc/cron.d is expected not to be executable by group
✔ File /etc/cron.d is expected not to be readable by other
✔ File /etc/cron.d is expected not to be writable by other
✔ File /etc/cron.d is expected not to be executable by other
× File /etc/cron.d uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/cron.d gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.1.8: Ensure at/cron is restricted to authorized users (6 failed)
✔ File /etc/cron.deny is expected not to exist
× File /etc/cron.allow is expected to exist
expected File /etc/cron.allow to exist
✔ File /etc/cron.allow is expected not to be readable by group
✔ File /etc/cron.allow is expected not to be writable by group
✔ File /etc/cron.allow is expected not to be executable by group
✔ File /etc/cron.allow is expected not to be readable by other
✔ File /etc/cron.allow is expected not to be writable by other
✔ File /etc/cron.allow is expected not to be executable by other
× File /etc/cron.allow uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/cron.allow gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
✔ File /etc/at.deny is expected not to exist
× File /etc/at.allow is expected to exist
expected File /etc/at.allow to exist
✔ File /etc/at.allow is expected not to be readable by group
✔ File /etc/at.allow is expected not to be writable by group
✔ File /etc/at.allow is expected not to be executable by group
✔ File /etc/at.allow is expected not to be readable by other
✔ File /etc/at.allow is expected not to be writable by other
✔ File /etc/at.allow is expected not to be executable by other
× File /etc/at.allow uid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
× File /etc/at.allow gid is expected to cmp == 0
expected: 0
got:
(compared using `cmp` matcher)
✔ cis-dil-benchmark-5.2.1: Ensure permissions on /etc/ssh/sshd_config are configured (Scored)
✔ File /etc/ssh/sshd_config is expected to exist
✔ File /etc/ssh/sshd_config is expected not to be readable by group
✔ File /etc/ssh/sshd_config is expected not to be writable by group
✔ File /etc/ssh/sshd_config is expected not to be executable by group
✔ File /etc/ssh/sshd_config is expected not to be readable by other
✔ File /etc/ssh/sshd_config is expected not to be writable by other
✔ File /etc/ssh/sshd_config is expected not to be executable by other
✔ File /etc/ssh/sshd_config uid is expected to cmp == 0
✔ File /etc/ssh/sshd_config gid is expected to cmp == 0
✔ cis-dil-benchmark-5.2.2: Ensure permissions on SSH private host key files are configured (Scored)
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be readable by group
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be writable by group
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be executable by group
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be readable by other
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be writable by other
✔ File /etc/ssh/ssh_host_ed25519_key is expected not to be executable by other
✔ File /etc/ssh/ssh_host_ed25519_key gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ed25519_key uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be readable by group
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be writable by group
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be executable by group
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be readable by other
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be writable by other
✔ File /etc/ssh/ssh_host_rsa_key is expected not to be executable by other
✔ File /etc/ssh/ssh_host_rsa_key gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_rsa_key uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be readable by group
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be writable by group
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be executable by group
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be readable by other
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be writable by other
✔ File /etc/ssh/ssh_host_ecdsa_key is expected not to be executable by other
✔ File /etc/ssh/ssh_host_ecdsa_key gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ecdsa_key uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be readable by group
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be writable by group
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be executable by group
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be readable by other
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be writable by other
✔ File /etc/ssh/ssh_host_dsa_key is expected not to be executable by other
✔ File /etc/ssh/ssh_host_dsa_key gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_dsa_key uid is expected to cmp == 0
✔ cis-dil-benchmark-5.2.3: Ensure permissions on SSH public host key files are configured (Scored)
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected to be readable by group
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected not to be writable by group
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected not to be executable by group
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected to be readable by other
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected not to be writable by other
✔ File /etc/ssh/ssh_host_dsa_key.pub is expected not to be executable by other
✔ File /etc/ssh/ssh_host_dsa_key.pub gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_dsa_key.pub uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected to be readable by group
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected not to be writable by group
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected not to be executable by group
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected to be readable by other
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected not to be writable by other
✔ File /etc/ssh/ssh_host_rsa_key.pub is expected not to be executable by other
✔ File /etc/ssh/ssh_host_rsa_key.pub gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_rsa_key.pub uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected to be readable by group
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected not to be writable by group
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected not to be executable by group
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected to be readable by other
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected not to be writable by other
✔ File /etc/ssh/ssh_host_ed25519_key.pub is expected not to be executable by other
✔ File /etc/ssh/ssh_host_ed25519_key.pub gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ed25519_key.pub uid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected to be readable by group
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected not to be writable by group
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected not to be executable by group
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected to be readable by other
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected not to be writable by other
✔ File /etc/ssh/ssh_host_ecdsa_key.pub is expected not to be executable by other
✔ File /etc/ssh/ssh_host_ecdsa_key.pub gid is expected to cmp == 0
✔ File /etc/ssh/ssh_host_ecdsa_key.pub uid is expected to cmp == 0
× cis-dil-benchmark-5.2.4: Ensure SSH Protocol is set to 2 (Scored)
× SSHD Configuration Protocol is expected to cmp == 2
expected: 2
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.2.5: Ensure SSH LogLevel is appropriate (Scored)
× SSHD Configuration LogLevel is expected to eq "VERBOSE"
expected: "VERBOSE"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.6: Ensure SSH X11 forwarding is disabled (Scored)
× SSHD Configuration X11Forwarding is expected to eq "no"
expected: "no"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.7: Ensure SSH MaxAuthTries is set to 4 or less (Scored)
× SSHD Configuration MaxAuthTries is expected to cmp <= 4
expected it to be <= 4
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.2.8: Ensure SSH IgnoreRhosts is enabled (Scored)
× SSHD Configuration IgnoreRhosts is expected to eq "yes"
expected: "yes"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.9: Ensure SSH HostbasedAuthentication is disabled (Scored)
× SSHD Configuration HostbasedAuthentication is expected to eq "no"
expected: "no"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.10: Ensure SSH root login is disabled (Scored)
× SSHD Configuration PermitRootLogin is expected to eq "no"
expected: "no"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.11: Ensure SSH PermitEmptyPasswords is disabled (Scored)
× SSHD Configuration PermitEmptyPasswords is expected to eq "no"
expected: "no"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.12: Ensure SSH PermitUserEnvironment is disabled (Scored)
× SSHD Configuration PermitUserEnvironment is expected to eq "no"
expected: "no"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.13: Ensure only strong Ciphers are used (Scored)
× SSHD Configuration Ciphers is expected not to be nil
expected: not nil
got: nil
× cis-dil-benchmark-5.2.14: Ensure only strong MAC algorithms are used (Scored)
× SSHD Configuration MACs is expected not to be nil
expected: not nil
got: nil
× cis-dil-benchmark-5.2.15: Ensure only strong Key Exchange algorithms are used (Scored)
× SSHD Configuration KexAlgorithms is expected not to be nil
expected: not nil
got: nil
× cis-dil-benchmark-5.2.16: Ensure SSH Idle Timeout Interval is configured (Scored) (1 failed)
✔ SSHD Configuration ClientAliveInterval is expected to cmp <= 300
× SSHD Configuration ClientAliveCountMax is expected to cmp <= 0
expected it to be <= 0
got:
(compared using `cmp` matcher)
× cis-dil-benchmark-5.2.17: Ensure SSH LoginGraceTime is set to one minute or less (Scored)
× SSHD Configuration LoginGraceTime is expected to satisfy expression `x == '1m' || ((matches = x.match(/(?[0-9]+)s?/)) && Integer(matches[:secs]) <= 60)`
undefined method `match' for nil:NilClass
× cis-dil-benchmark-5.2.18: Ensure SSH access is limited (Scored) (4 failed)
× SSHD Configuration AllowUsers is expected not to be nil
expected: not nil
got: nil
× SSHD Configuration AllowGroups is expected not to be nil
expected: not nil
got: nil
× SSHD Configuration DenyUsers is expected not to be nil
expected: not nil
got: nil
× SSHD Configuration DenyGroups is expected not to be nil
expected: not nil
got: nil
× cis-dil-benchmark-5.2.19: Ensure SSH warning banner is configured (Scored)
× SSHD Configuration Banner is expected not to be nil
expected: not nil
got: nil
✔ cis-dil-benchmark-5.2.20: Ensure SSH PAM is enabled (Scored)
✔ SSHD Configuration UsePAM is expected to eq "yes"
× cis-dil-benchmark-5.2.21: Ensure SSH AllowTcpForwarding is disabled (Scored)
× SSHD Configuration AllowTcpForwarding is expected to eq "no"
expected: "no"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.22: Ensure SSH MaxStartups is configured (Scored)
× SSHD Configuration MaxStartups is expected to eq "10:30:60"
expected: "10:30:60"
got: nil
(compared using ==)
× cis-dil-benchmark-5.2.23: Ensure SSH MaxSessions is set to 4 or less (Scored)
× SSHD Configuration MaxSessions is expected to cmp <= 4
expected it to be <= 4
got:
(compared using `cmp` matcher)
↺ cis-dil-benchmark-5.3.2: Ensure lockout for failed password attempts is configured
↺ Not implemented
× cis-dil-benchmark-5.3.3: Ensure password reuse is limited (4 failed)
× File /etc/pam.d/common-password content is expected to match /^password\s+(\S+\s+)+pam_unix\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
expected nil to match /^password\s+(\S+\s+)+pam_unix\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
× File /etc/pam.d/common-password content is expected to match /^password\s+(\S+\s+)+pam_pwhistory\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
expected nil to match /^password\s+(\S+\s+)+pam_pwhistory\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
× File /etc/pam.d/system-auth content is expected to match /^password\s+(\S+\s+)+pam_unix\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
expected nil to match /^password\s+(\S+\s+)+pam_unix\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
× File /etc/pam.d/system-auth content is expected to match /^password\s+(\S+\s+)+pam_pwhistory\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
expected nil to match /^password\s+(\S+\s+)+pam_pwhistory\.so (\S+\s+)*remember=([56789]|[1-9][0-9]+)/
× cis-dil-benchmark-5.3.4: Ensure password hashing algorithm is SHA-512 (3 failed)
× File /etc/pam.d/common-password content is expected to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
expected nil to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
× File /etc/pam.d/system-auth content is expected to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
expected nil to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
× File /etc/pam.d/password-auth content is expected to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
expected nil to match /^password(\s+\S+\s+)+pam_unix\.so\s+(\S+\s+)*sha512/
× cis-dil-benchmark-5.4.1.1: Ensure password expiration is 365 days or less
× login.defs PASS_MAX_DAYS is expected to cmp <= 365
expected it to be <= 365
got: 99999
(compared using `cmp` matcher)
× cis-dil-benchmark-5.4.1.2: Ensure minimum days between password changes is 7 or more
× login.defs PASS_MIN_DAYS is expected to cmp >= 7
expected it to be >= 7
got: 0
(compared using `cmp` matcher)
✔ cis-dil-benchmark-5.4.1.3: Ensure password expiration warning days is 7 or more
✔ login.defs PASS_WARN_AGE is expected to cmp >= 7
× cis-dil-benchmark-5.4.1.4: Ensure inactive password lock is 30 days or less
× Command: `useradd -D` stdout is expected to match /^INACTIVE=(30|[1-2][0-9]|[1-9])$/
expected "GROUP=100\nHOME=/home\nINACTIVE=-1\nEXPIRE=\nSHELL=/bin/bash\nSKEL=/etc/skel\nCREATE_MAIL_SPOOL=no\n" to match /^INACTIVE=(30|[1-2][0-9]|[1-9])$/
Diff:
@@ -1,7 +1,13 @@
-/^INACTIVE=(30|[1-2][0-9]|[1-9])$/
+GROUP=100
+HOME=/home
+INACTIVE=-1
+EXPIRE=
+SHELL=/bin/bash
+SKEL=/etc/skel
+CREATE_MAIL_SPOOL=no
× cis-dil-benchmark-5.4.2: Ensure system accounts are secured (26 failed)
× /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
expected "/bin/bash" to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
Diff:
@@ -1 +1 @@
-/(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
+"/bin/bash"
✔ /etc/shadow with user == "core" passwords is expected to cmp == /^[*!]/
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
✔ /etc/shadow with user == "systemd-timesync" passwords is expected to cmp == /^[*!]/
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
✔ /etc/shadow with user == "systemd-coredump" passwords is expected to cmp == /^[*!]/
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "bin" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "daemon" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "adm" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "lp" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "news" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "uucp" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "operator" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "man" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "messagebus" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "syslog" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "ntp" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "sshd" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "tcpdump" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "dhcp" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "etcd" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "docker" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "tlsdate" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "polkitd" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "tss" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "systemd-journal-remote" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "systemd-network" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "systemd-resolve" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "systemd-bus-proxy" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
✔ /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
× /etc/shadow with user == "portage" passwords is expected to cmp == /^[*!]/
expected: (?-mix:^[*!])
got: []
(compared using `cmp` matcher)
× /etc/passwd with uid to_i < 1000 one entry shell is expected to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
expected "/bin/bash" to match /(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
Diff:
@@ -1 +1 @@
-/(\/usr\/sbin\/nologin|\/sbin\/nologin|\/bin\/false)/
+"/bin/bash"
✔ /etc/shadow with user == "core" passwords is expected to cmp == /^[*!]/
✔ cis-dil-benchmark-5.4.3: Ensure default group for the root account is GID 0
✔ /etc/passwd with user == "root" gids is expected to cmp == 0
× cis-dil-benchmark-5.4.4: Ensure default user umask is 027 or more restrictive (2 failed)
× File /etc/profile content is expected not to match /^\s*umask [0-7](0[1-7]|[1-7][1-6])\s*(?:#.*)?$/
expected "# /etc/profile: login shell setup\n#\n# That this file is used by any Bourne-shell derivative to set... \"$sh\"\ndone\nfor sh in /etc/profile.d/*.sh ; do\n\t[ -r \"$sh\" ] && . \"$sh\"\ndone\nunset sh\n" not to match /^\s*umask [0-7](0[1-7]|[1-7][1-6])\s*(?:#.*)?$/
Diff:
@@ -1,59 +1,117 @@
-/^\s*umask [0-7](0[1-7]|[1-7][1-6])\s*(?:#.*)?$/
+# /etc/profile: login shell setup
+#
+# That this file is used by any Bourne-shell derivative to setup the
+# environment for login shells.
+#
+
+# Load environment settings from profile.env, which is created by
+# env-update from the files in /etc/env.d
+if [ -e /etc/profile.env ] ; then
+ . /etc/profile.env
+elif [ -e /usr/share/baselayout/profile.env ] ; then
+ . /usr/share/baselayout/profile.env
+fi
+
+# You should override these in your ~/.bashrc (or equivalent) for per-user
+# settings. For system defaults, you can add a new file in /etc/profile.d/.
+export EDITOR=${EDITOR:-/usr/bin/vim}
+export PAGER=${PAGER:-/usr/bin/less}
+
+# 077 would be more secure, but 022 is generally quite realistic
+umask 022
+
+# Set up PATH, all users get both bin and sbin to keep things simple.
+# Gentoo normally splits this up which is why the variable is called ROOTPATH
+export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin${ROOTPATH:+:}${ROOTPATH-}"
+unset ROOTPATH
+
+if [ -n "${BASH_VERSION-}" ] ; then
+ # Newer bash ebuilds include /etc/bash/bashrc which will setup PS1
+ # including color. We leave out color here because not all
+ # terminals support it.
+ if [ -f /etc/bash/bashrc ] ; then
+ # Bash login shells run only /etc/profile
+ # Bash non-login shells run only /etc/bash/bashrc
+ # Since we want to run /etc/bash/bashrc regardless, we source it
+ # from here. It is unfortunate that there is no way to do
+ # this *after* the user's .bash_profile runs (without putting
+ # it in the user's dot-files), but it shouldn't make any
+ # difference.
+ . /etc/bash/bashrc
+ elif [ -f /usr/share/bash/bashrc ] ; then
+ . /usr/share/bash/bashrc
+ else
+ PS1='\u@\h \w \$ '
+ fi
+else
+ # Setup a bland default prompt. Since this prompt should be useable
+ # on color and non-color terminals, as well as shells that don't
+ # understand sequences such as \h, don't put anything special in it.
+ PS1="${USER:-$(whoami 2>/dev/null)}@$(uname -n 2>/dev/null) \$ "
+fi
+
+for sh in /usr/share/profile.d/*.sh ; do
+ [ -r "$sh" ] && . "$sh"
+done
+for sh in /etc/profile.d/*.sh ; do
+ [ -r "$sh" ] && . "$sh"
+done
+unset sh
× File /etc/profile content is expected to match /^\s*umask [0-7][2367]7\s*(?:#.*)?$/
expected "# /etc/profile: login shell setup\n#\n# That this file is used by any Bourne-shell derivative to set... \"$sh\"\ndone\nfor sh in /etc/profile.d/*.sh ; do\n\t[ -r \"$sh\" ] && . \"$sh\"\ndone\nunset sh\n" to match /^\s*umask [0-7][2367]7\s*(?:#.*)?$/
Diff:
@@ -1,59 +1,117 @@
-/^\s*umask [0-7][2367]7\s*(?:#.*)?$/
+# /etc/profile: login shell setup
+#
+# That this file is used by any Bourne-shell derivative to setup the
+# environment for login shells.
+#
+
+# Load environment settings from profile.env, which is created by
+# env-update from the files in /etc/env.d
+if [ -e /etc/profile.env ] ; then
+ . /etc/profile.env
+elif [ -e /usr/share/baselayout/profile.env ] ; then
+ . /usr/share/baselayout/profile.env
+fi
+
+# You should override these in your ~/.bashrc (or equivalent) for per-user
+# settings. For system defaults, you can add a new file in /etc/profile.d/.
+export EDITOR=${EDITOR:-/usr/bin/vim}
+export PAGER=${PAGER:-/usr/bin/less}
+
+# 077 would be more secure, but 022 is generally quite realistic
+umask 022
+
+# Set up PATH, all users get both bin and sbin to keep things simple.
+# Gentoo normally splits this up which is why the variable is called ROOTPATH
+export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin${ROOTPATH:+:}${ROOTPATH-}"
+unset ROOTPATH
+
+if [ -n "${BASH_VERSION-}" ] ; then
+ # Newer bash ebuilds include /etc/bash/bashrc which will setup PS1
+ # including color. We leave out color here because not all
+ # terminals support it.
+ if [ -f /etc/bash/bashrc ] ; then
+ # Bash login shells run only /etc/profile
+ # Bash non-login shells run only /etc/bash/bashrc
+ # Since we want to run /etc/bash/bashrc regardless, we source it
+ # from here. It is unfortunate that there is no way to do
+ # this *after* the user's .bash_profile runs (without putting
+ # it in the user's dot-files), but it shouldn't make any
+ # difference.
+ . /etc/bash/bashrc
+ elif [ -f /usr/share/bash/bashrc ] ; then
+ . /usr/share/bash/bashrc
+ else
+ PS1='\u@\h \w \$ '
+ fi
+else
+ # Setup a bland default prompt. Since this prompt should be useable
+ # on color and non-color terminals, as well as shells that don't
+ # understand sequences such as \h, don't put anything special in it.
+ PS1="${USER:-$(whoami 2>/dev/null)}@$(uname -n 2>/dev/null) \$ "
+fi
+
+for sh in /usr/share/profile.d/*.sh ; do
+ [ -r "$sh" ] && . "$sh"
+done
+for sh in /etc/profile.d/*.sh ; do
+ [ -r "$sh" ] && . "$sh"
+done
+unset sh
× cis-dil-benchmark-5.4.5: Ensure default user shell timeout is 900 seconds or less
× File /etc/profile content is expected to match /^\s*TMOUT=([0-8][0-9]{0,2}|900)\s*(?:#.*)?$/
expected "# /etc/profile: login shell setup\n#\n# That this file is used by any Bourne-shell derivative to set... \"$sh\"\ndone\nfor sh in /etc/profile.d/*.sh ; do\n\t[ -r \"$sh\" ] && . \"$sh\"\ndone\nunset sh\n" to match /^\s*TMOUT=([0-8][0-9]{0,2}|900)\s*(?:#.*)?$/
Diff:
@@ -1,59 +1,117 @@
-/^\s*TMOUT=([0-8][0-9]{0,2}|900)\s*(?:#.*)?$/
+# /etc/profile: login shell setup
+#
+# That this file is used by any Bourne-shell derivative to setup the
+# environment for login shells.
+#
+
+# Load environment settings from profile.env, which is created by
+# env-update from the files in /etc/env.d
+if [ -e /etc/profile.env ] ; then
+ . /etc/profile.env
+elif [ -e /usr/share/baselayout/profile.env ] ; then
+ . /usr/share/baselayout/profile.env
+fi
+
+# You should override these in your ~/.bashrc (or equivalent) for per-user
+# settings. For system defaults, you can add a new file in /etc/profile.d/.
+export EDITOR=${EDITOR:-/usr/bin/vim}
+export PAGER=${PAGER:-/usr/bin/less}
+
+# 077 would be more secure, but 022 is generally quite realistic
+umask 022
+
+# Set up PATH, all users get both bin and sbin to keep things simple.
+# Gentoo normally splits this up which is why the variable is called ROOTPATH
+export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin${ROOTPATH:+:}${ROOTPATH-}"
+unset ROOTPATH
+
+if [ -n "${BASH_VERSION-}" ] ; then
+ # Newer bash ebuilds include /etc/bash/bashrc which will setup PS1
+ # including color. We leave out color here because not all
+ # terminals support it.
+ if [ -f /etc/bash/bashrc ] ; then
+ # Bash login shells run only /etc/profile
+ # Bash non-login shells run only /etc/bash/bashrc
+ # Since we want to run /etc/bash/bashrc regardless, we source it
+ # from here. It is unfortunate that there is no way to do
+ # this *after* the user's .bash_profile runs (without putting
+ # it in the user's dot-files), but it shouldn't make any
+ # difference.
+ . /etc/bash/bashrc
+ elif [ -f /usr/share/bash/bashrc ] ; then
+ . /usr/share/bash/bashrc
+ else
+ PS1='\u@\h \w \$ '
+ fi
+else
+ # Setup a bland default prompt. Since this prompt should be useable
+ # on color and non-color terminals, as well as shells that don't
+ # understand sequences such as \h, don't put anything special in it.
+ PS1="${USER:-$(whoami 2>/dev/null)}@$(uname -n 2>/dev/null) \$ "
+fi
+
+for sh in /usr/share/profile.d/*.sh ; do
+ [ -r "$sh" ] && . "$sh"
+done
+for sh in /etc/profile.d/*.sh ; do
+ [ -r "$sh" ] && . "$sh"
+done
+unset sh
↺ cis-dil-benchmark-5.5: Ensure root login is restricted to system console
↺ Not implemented
× cis-dil-benchmark-5.6: Ensure access to the su command is restricted (1 failed)
× File /etc/pam.d/su content is expected to match /^auth\s+required\s+pam_wheel.so use_uid$/
expected nil to match /^auth\s+required\s+pam_wheel.so use_uid$/
✔ Groups with name == "wheel" is expected to exist
↺ cis-dil-benchmark-6.1.1: Audit system file permissions
↺ Not implemented
✔ cis-dil-benchmark-6.1.2: Ensure permissions on /etc/passwd are configured
✔ File /etc/passwd is expected to exist
✔ File /etc/passwd mode is expected to cmp == "0644"
✔ File /etc/passwd uid is expected to cmp == 0
✔ File /etc/passwd gid is expected to cmp == 0
✔ File /etc/passwd sticky is expected to equal false
✔ File /etc/passwd suid is expected to equal false
✔ File /etc/passwd sgid is expected to equal false
✔ File /usr/share/baselayout/passwd is expected to exist
✔ File /usr/share/baselayout/passwd mode is expected to cmp == "0644"
✔ File /usr/share/baselayout/passwd uid is expected to cmp == 0
✔ File /usr/share/baselayout/passwd gid is expected to cmp == 0
✔ File /usr/share/baselayout/passwd sticky is expected to equal false
✔ File /usr/share/baselayout/passwd suid is expected to equal false
✔ File /usr/share/baselayout/passwd sgid is expected to equal false
✔ cis-dil-benchmark-6.1.3: Ensure permissions on /etc/shadow are configured
✔ File /etc/shadow is expected to exist
✔ File /etc/shadow is expected not to be more permissive than "0644"
✔ File /etc/shadow uid is expected to cmp == 0
✔ File /etc/shadow gid is expected to cmp == 0
✔ File /usr/share/baselayout/shadow is expected to exist
✔ File /usr/share/baselayout/shadow is expected not to be more permissive than "0644"
✔ File /usr/share/baselayout/shadow uid is expected to cmp == 0
✔ File /usr/share/baselayout/shadow gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.4: Ensure permissions on /etc/group are configured
✔ File /etc/group is expected to exist
✔ File /etc/group mode is expected to cmp == "0644"
✔ File /etc/group uid is expected to cmp == 0
✔ File /etc/group gid is expected to cmp == 0
✔ File /usr/share/baselayout/group is expected to exist
✔ File /usr/share/baselayout/group mode is expected to cmp == "0644"
✔ File /usr/share/baselayout/group uid is expected to cmp == 0
✔ File /usr/share/baselayout/group gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.5: Ensure permissions on /etc/gshadow are configured
✔ File /etc/gshadow is expected to exist
✔ File /etc/gshadow is expected not to be more permissive than "0640"
✔ File /etc/gshadow uid is expected to cmp == 0
✔ File /etc/gshadow gid is expected to cmp == 0
× cis-dil-benchmark-6.1.6: Ensure permissions on /etc/passwd- are configured (1 failed)
✔ File /etc/passwd- is expected to exist
× File /etc/passwd- is expected not to be more permissive than "0600"
expected `File /etc/passwd-.more_permissive_than?("0600")` to be falsey, got true
✔ File /etc/passwd- uid is expected to cmp == 0
✔ File /etc/passwd- gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.7: Ensure permissions on /etc/shadow- are configured
✔ File /etc/shadow- is expected to exist
✔ File /etc/shadow- is expected not to be more permissive than "0640"
✔ File /etc/shadow- uid is expected to cmp == 0
✔ File /etc/shadow- gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.8: Ensure permissions on /etc/group- are configured
✔ File /etc/group- is expected to exist
✔ File /etc/group- is expected not to be more permissive than "0644"
✔ File /etc/group- uid is expected to cmp == 0
✔ File /etc/group- gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.9: Ensure permissions on /etc/gshadow- are configured
✔ File /etc/gshadow- is expected to exist
✔ File /etc/gshadow- is expected not to be more permissive than "0640"
✔ File /etc/gshadow- uid is expected to cmp == 0
✔ File /etc/gshadow- gid is expected to cmp == 0
✔ cis-dil-benchmark-6.1.10: Ensure no world writable files exist
✔ Command: `df --local -P | awk '{ if (NR!=1) print $6 }' | xargs -I '{}' find '{}' -xdev -type f -perm -0002` stdout is expected to cmp == ""
× cis-dil-benchmark-6.1.11: Ensure no unowned files or directories exist
× Command: `df --local -P | awk '{ if (NR!=1) print $6 }' | xargs -I '{}' find '{}' -xdev -nouser` stdout is expected to cmp == ""
expected:
got: /media/configvirtfs
/media/configvirtfs
/media/configvirtfs/openstack
/media/configvirtfs/openstack/latest
/media/configvirtfs/openstack/latest/user_data
(compared using `cmp` matcher)
× cis-dil-benchmark-6.1.12: Ensure no ungrouped files or directories exist
× Command: `df --local -P | awk '{ if (NR!=1) print $6 }' | xargs -I '{}' find '{}' -xdev -nogroup` stdout is expected to cmp == ""
expected:
got: /media/configvirtfs
/media/configvirtfs
/media/configvirtfs/openstack
/media/configvirtfs/openstack/latest
/media/configvirtfs/openstack/latest/user_data
(compared using `cmp` matcher)
↺ cis-dil-benchmark-6.1.13: Audit SUID executables
↺ Not implemented
↺ cis-dil-benchmark-6.1.14: Audit SGID executables
↺ Not implemented
✔ cis-dil-benchmark-6.2.1: Ensure password fields are not empty
✔ /etc/shadow passwords is expected not to include ""
✔ /usr/share/baselayout/shadow passwords is expected not to include ""
✔ cis-dil-benchmark-6.2.2: Ensure no legacy "+" entries exist in /etc/passwd
✔ /etc/passwd users is expected not to include "+"
✔ /etc/passwd users is expected not to include "+"
✔ cis-dil-benchmark-6.2.3: Ensure no legacy "+" entries exist in /etc/shadow
✔ /etc/shadow users is expected not to include "+"
✔ /usr/share/baselayout/shadow users is expected not to include "+"
✔ cis-dil-benchmark-6.2.4: Ensure no legacy "+" entries exist in /etc/group
✔ /etc/group groups is expected not to include "+"
✔ /etc/group groups is expected not to include "+"
✔ cis-dil-benchmark-6.2.5: Ensure root is the only UID 0 account
✔ /etc/passwd with uid == 0 users is expected to cmp == ["root"]
✔ /etc/passwd with uid == 0 users is expected to cmp == ["root"]
✔ cis-dil-benchmark-6.2.6: Ensure root PATH Integrity
✔ ["/usr/bin", "/bin", "/usr/sbin", "/sbin"] is expected not to be empty
✔ ["/usr/bin", "/bin", "/usr/sbin", "/sbin"] is expected not to include ""
✔ ["/usr/bin", "/bin", "/usr/sbin", "/sbin"] is expected not to include "."
✔ File /usr/bin is expected to be directory
✔ File /usr/bin is expected not to be writable by group
✔ File /usr/bin is expected not to be writable by other
✔ File /usr/bin uid is expected to cmp == 0
✔ File /bin is expected to be directory
✔ File /bin is expected not to be writable by group
✔ File /bin is expected not to be writable by other
✔ File /bin uid is expected to cmp == 0
✔ File /usr/sbin is expected to be directory
✔ File /usr/sbin is expected not to be writable by group
✔ File /usr/sbin is expected not to be writable by other
✔ File /usr/sbin uid is expected to cmp == 0
✔ File /sbin is expected to be directory
✔ File /sbin is expected not to be writable by group
✔ File /sbin is expected not to be writable by other
✔ File /sbin uid is expected to cmp == 0
✔ cis-dil-benchmark-6.2.11: Ensure no users have .forward files
✔ File /root/.forward is expected not to exist
✔ File /home/core/.forward is expected not to exist
✔ File //.forward is expected not to exist
✔ File //.forward is expected not to exist
✔ File /root/.forward is expected not to exist
✔ File /bin/.forward is expected not to exist
✔ File /sbin/.forward is expected not to exist
✔ File /var/adm/.forward is expected not to exist
✔ File /var/spool/lpd/.forward is expected not to exist
✔ File /sbin/.forward is expected not to exist
✔ File /sbin/.forward is expected not to exist
✔ File /sbin/.forward is expected not to exist
✔ File /var/spool/news/.forward is expected not to exist
✔ File /var/spool/uucp/.forward is expected not to exist
✔ File /root/.forward is expected not to exist
✔ File /usr/share/man/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /var/empty/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /var/lib/dhcpcd/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /var/lib/polkit-1/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /dev/null/.forward is expected not to exist
✔ File /var/tmp/portage/.forward is expected not to exist
✔ File /home/core/.forward is expected not to exist
✔ File /var/empty/.forward is expected not to exist
✔ cis-dil-benchmark-6.2.12: Ensure no users have .netrc files
✔ File /root/.netrc is expected not to exist
✔ File /home/core/.netrc is expected not to exist
✔ File //.netrc is expected not to exist
✔ File //.netrc is expected not to exist
✔ File /root/.netrc is expected not to exist
✔ File /bin/.netrc is expected not to exist
✔ File /sbin/.netrc is expected not to exist
✔ File /var/adm/.netrc is expected not to exist
✔ File /var/spool/lpd/.netrc is expected not to exist
✔ File /sbin/.netrc is expected not to exist
✔ File /sbin/.netrc is expected not to exist
✔ File /sbin/.netrc is expected not to exist
✔ File /var/spool/news/.netrc is expected not to exist
✔ File /var/spool/uucp/.netrc is expected not to exist
✔ File /root/.netrc is expected not to exist
✔ File /usr/share/man/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /var/empty/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /var/lib/dhcpcd/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /var/lib/polkit-1/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /dev/null/.netrc is expected not to exist
✔ File /var/tmp/portage/.netrc is expected not to exist
✔ File /home/core/.netrc is expected not to exist
✔ File /var/empty/.netrc is expected not to exist
✔ cis-dil-benchmark-6.2.14: Ensure no users have .rhosts files
✔ File /root/.rhosts is expected not to exist
✔ File /home/core/.rhosts is expected not to exist
✔ File //.rhosts is expected not to exist
✔ File //.rhosts is expected not to exist
✔ File /root/.rhosts is expected not to exist
✔ File /bin/.rhosts is expected not to exist
✔ File /sbin/.rhosts is expected not to exist
✔ File /var/adm/.rhosts is expected not to exist
✔ File /var/spool/lpd/.rhosts is expected not to exist
✔ File /sbin/.rhosts is expected not to exist
✔ File /sbin/.rhosts is expected not to exist
✔ File /sbin/.rhosts is expected not to exist
✔ File /var/spool/news/.rhosts is expected not to exist
✔ File /var/spool/uucp/.rhosts is expected not to exist
✔ File /root/.rhosts is expected not to exist
✔ File /usr/share/man/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /var/empty/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /var/lib/dhcpcd/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /var/lib/polkit-1/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /dev/null/.rhosts is expected not to exist
✔ File /var/tmp/portage/.rhosts is expected not to exist
✔ File /home/core/.rhosts is expected not to exist
✔ File /var/empty/.rhosts is expected not to exist
× cis-dil-benchmark-6.2.15: Ensure all groups in /etc/passwd exist in /etc/group (2 failed)
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 500
✔ /etc/group gids is expected to include 500
✔ /etc/group gids is expected to include 998
✔ /etc/group gids is expected to include 997
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 1
✔ /etc/group gids is expected to include 2
✔ /etc/group gids is expected to include 4
✔ /etc/group gids is expected to include 7
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 13
✔ /etc/group gids is expected to include 14
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 0
✔ /etc/group gids is expected to include 15
✔ /etc/group gids is expected to include 201
✔ /etc/group gids is expected to include 202
✔ /etc/group gids is expected to include 203
✔ /etc/group gids is expected to include 204
✔ /etc/group gids is expected to include 215
✔ /etc/group gids is expected to include 224
✔ /etc/group gids is expected to include 232
✔ /etc/group gids is expected to include 233
✔ /etc/group gids is expected to include 233
✔ /etc/group gids is expected to include 234
✔ /etc/group gids is expected to include 235
× /etc/group gids is expected to include 236
expected [0, 10, 150, 233, 500, 999, 251, 998, 997] to include 236
× /etc/group gids is expected to include 236
expected [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 26, 27, 28, 29, 30, 78, 80, 85, 100, 1..., 204, 215, 224, 232, 233, 234, 235, 242, 244, 245, 246, 248, 249, 250, 252, 406, 500, 65533, 65534] to include 236
✔ /etc/group gids is expected to include 242
✔ /etc/group gids is expected to include 244
✔ /etc/group gids is expected to include 245
✔ /etc/group gids is expected to include 246
✔ /etc/group gids is expected to include 250
✔ /etc/group gids is expected to include 500
✔ /etc/group gids is expected to include 500
✔ /etc/group gids is expected to include 65534
✔ cis-dil-benchmark-6.2.16: Ensure no duplicate UIDs exist
✔ is expected to be nil
✔ is expected to be nil
✔ cis-dil-benchmark-6.2.17: Ensure no duplicate GIDs exist
✔ is expected to be nil
✔ is expected to be nil
✔ cis-dil-benchmark-6.2.18: Ensure no duplicate user names exist
✔ is expected to be nil
✔ is expected to be nil
✔ cis-dil-benchmark-6.2.19: Ensure no duplicate group names exist
✔ is expected to be nil
✔ is expected to be nil
✔ cis-dil-benchmark-6.2.20: Ensure shadow group is empty
✔ # users is expected to be empty
✔ # users is expected to be empty
Profile Summary: 68 successful controls, 118 control failures, 43 controls skipped
Test Summary: 606 successful, 344 failures, 50 skipped
================================================
FILE: CIS/level1-remediation_notes-2020-12-08.md
================================================
# CIS review
## Level 1
### Level 1 benchmark feedback
* 1.1.1.1 - cramfs: is not disabled, because it is not even provided
* 1.1.1.2 - freevxfs: is not disabled, because it is not even provided
* 1.1.1.3 - jffs2: is not disabled, because it is not even provided
* 1.1.1.4 - hfs: is not disabled, because it is not even provided
* 1.1.1.5 - hfsplus: is not disabled, because it is not even provided
* 1.1.1.6 - squashfs: we provide hardening to remediate
* 1.1.1.7 - udf: we provide hardening to remediate
* 1.1.5 - /tmp "noexec": remediation provided
* 1.1.17 - /dev/shm "noexec": remediation provided
* 1.1.23 - usb_storage: we provide hardening to remediate
* 1.3.1 - aide: available to be run in a container (even the system `toolbox`)
* 1.3.2 - scheduled aide checks: available through container
* 1.4.1 - grub config is stored in the cryptographically immutable /usr partition (/usr/boot/syslinux/root.A.cfg and /usr/boot/syslinux/root.B.cfg), though it is readable 0644.
* 1.4.2 - grub password: remediation provided
* 1.4.3 - root password: remediation provided (/etc/inittab nor /etc/sysconfig/init will exist or matter)
* 1.4.4 - core dump restriction: remediation provided
* 1.7.1.6 - /etc/issue.net does not exist
* 2.2.1.2 - ntpd: is ready, but not enabled by default. And will run as non-root user "ntp"
* 3.1.1 - sysctl ip_forward: remediation provided
* 3.1.2 - sysctl send_redirects: remediation provided
* 3.2.2 - sysctl accept_redirects: remediation provided
* 3.2.3 - sysctl secure_redirects: remediation provided
* 3.2.4 - sysctl log_martians: remediation provided
* 3.2.9 - sysctl accept_ra: remediation provided
* 3.3.1 - tcp_wrappers (libwrap0): this package is not provided, as it only works for TCP traffic, and unless an application links to libwrap, then the /etc/hosts.{allow,deny} do not apply anyways. Modern applications require iptables, nftables, ipset, and/or BPF rules for network policy.
* 3.3.2 - see 3.3.1 answer
* 3.3.3 - see 3.3.1 answer
* 3.3.4 - see 3.3.1 answer
* 3.3.5 - see 3.3.1 answer
* 3.5.1.1 - ip6tables: our default policy is clean slate. remediation provided.
* 3.5.1.2 - ip6tables: remediation provided
* 3.5.1.3 - ip6tables: remediation provided
* 3.5.1.4 - ip6tables ports: remediation provided
* 3.5.2.1 - iptables: remediation provided
* 3.5.2.2 - iptables: remediation provided
* 3.5.2.3 - iptables: remediation provided
* 3.5.2.4 - iptables: remediation provided
* 4.2.1.2 - rsyslog: available via container
* 4.2.1.3 - rsyslog: remediation provided
* 4.2.1.4 - rsyslog: remediation provided
* 4.2.1.5 - rsyslog: remediation provided
* 4.2.2.1 - journald to syslog: remediation provided
* 4.2.3 - log permissions (faillog and btmp): remediation provided
* 5.1.1 - cron: this is not provided. Use systemd.timer instead
* 5.1.2 - cron: this is not provided. Use systemd.timer instead
* 5.1.3 - cron: this is not provided. Use systemd.timer instead
* 5.1.4 - cron: this is not provided. Use systemd.timer instead
* 5.1.5 - cron: this is not provided. Use systemd.timer instead
* 5.1.6 - cron: this is not provided. Use systemd.timer instead
* 5.1.7 - cron: this is not provided. Use systemd.timer instead
* 5.1.8 - cron.allow/cron.deny: concept does not translate to systemd.timer
* 5.2.4 - sshd protocol: 2 has been the default, and the field is a noop
* 5.2.5 - sshd: remediation provided
* 5.2.6 - sshd: remediation provided
* 5.2.7 - sshd: remediation provided
* 5.2.8 - sshd: remediation provided
* 5.2.9 - sshd: remediation provided
* 5.2.10 - sshd: remediation provided
* 5.2.11 - sshd: remediation provided
* 5.2.12 - sshd: remediation provided
* 5.2.13 - sshd: remediation provided
* 5.2.14 - sshd: remediation provided
* 5.2.15 - sshd: remediation provided
* 5.2.16 - sshd: remediation provided
* 5.2.17 - sshd: remediation provided
* 5.2.18 - sshd: remediation provided
* 5.2.19 - sshd: remediation provided
* 5.2.22 - sshd: remediation provided
* 5.2.23 - sshd: remediation provided
* 5.3.3 - pam: TODO testing needed, as /usr/lib64/pam.d/ is readonly
* 5.3.4 - pam: TODO testing needed, as /usr/lib64/pam.d/ is readonly
* 5.4.1.1 - login.defs: remediation provided
* 5.4.1.2 - login.defs: remediation provided
* 5.4.1.4 - useradd: remediation provided
* 5.4.2 - system accounts: TODO not sure about making "core" as a UID >=1000 and `/sbin/nologin` for all other accounts
* 5.4.4 - umask: remediation provided
* 5.6 - su: su is unusable by any user but root by default (/usr/lib64/pam.d/su is the location)
* 6.1.6 - /etc/passwd- permission: remediation provided
* 6.1.11 - unowned files (UID): the config filesystem (i.e. cloud-init, or qemu config) are UID 1000, which is not mapped. Also, this is largely irrelevant for UIDs that are not mapped by the host, as this is a container host, and files on the disk will be owned the full range of the 128 bit integer UIDs.
* 6.1.12 - unowned files (GID): see 6.1.11 explanation
* 6.2.15 - accounted for groups: TODO determine why this 236 GID is there (it's not in the qemu image)
### Level 1 hardening notes
* /etc/modprobe.d/blacklist-1.1.1.conf to blacklist modules
```shell
blacklist cramfs
blacklist freevxfs
blacklist jffs2
blacklist hfs
blacklist hfsplus
blacklist squashfs
blacklist udf
```
* /tmp with "noexec"
```ini
# /etc/systemd/system/tmp.mount.d/noexec.conf
[Mount]
Options=mode=1777,strictatime,nosuid,nodev,size=50%,nr_inodes=400k,noexec
```
* /dev/shm with "noexec" (could figure this out in a systemd drop-in...)
```shell
echo "none /dev/shm tmpfs rw,nosuid,nodev,seclabel,noexec 0 0" >> /etc/fstab
```
* /etc/modprobe.d/blacklist-1.1.23.conf to blacklist modules
```shell
blacklist usb_storage
```
* install aide (NOTE: this will require an updated toolbox:/etc/aide.conf for looking into /media/root/)
```shell
toolbox
dnf install -y aide
aide --init
mv /var/lib/aide/aide.db{.new,}.gz
aide --check
```
* check with aide (NOTE: see prior)
```shell
toolbox aide --check
```
* grub/menu.list permissions:
```shell
chmod 0600 /boot/boot/grub/menu.lst
# BUG permissions are 0755, and the chmod does not persist on reboot...
# https://github.com/kinvolk/Flatcar/issues/296
```
* grub password: /usr/share/oem/grub.cfg
```shell
set superusers="user1"
password user1 password1
```
* root password: `passwd` to set a root password; or hash in cloud-init/ignition
* core dump restriction:
```shell
# /etc/security/limits.d/restrict.conf
* hard core 0
```
* sysctl (currently there is a bug for persistence of these settings https://github.com/kinvolk/Flatcar/issues/297)
* IP forwarding
```sysclt
# /etc/sysctl.d/forward.conf
net.ipv4.ip_forward=0
```
* send_redirects; accept_redirects; secure_redirects
```sysctl
# /etc/sysctl.d/redirects.conf
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.default.accept_redirects=0
net.ipv4.conf.all.secure_redirect=0
net.ipv4.conf.default.secure_redirects=0
```
* log_martians
```sysctl
# /etc/sysctl.d/martians.conf
net.ipv4.conf.all.log_martians=1
net.ipv4.conf.default.log_martians=1
```
* accept_ra (router advertisements)
```sysctl
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.default.accept_ra=0
```
* lastly, after all that;
```shell
sysctl --system
# OR
systemctl restart systemd-sysctl # this ought to pick this up on reboot...
```
* ip6tables
```shell
ip6tables -P INPUT DROP
ip6tables -P OUTPUT DROP
ip6tables -P FORWARD DROP
ip6tables -I INPUT 1 -i lo -j ACCEPT
ip6tables -I FORWARD 1 -i lo -j ACCEPT # needs to be validated
ip6tables -I FORWARD 2 -o lo -j ACCEPT # needs to be validated
ip6tables -I FORWARD 3 -i lo -o lo -j ACCEPT # needs to be validated
ip6tables -I OUTPUT 1 -o lo -j ACCEPT
ip6tables -A INPUT -s ::1 -j DROP
ip6tables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
ip6tables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
ip6tables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p udp --dport 68 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
# Persist with something like (which may screw up container networking tools):
systemctl enable --now ip6tables-store.service ip6tables-restore.service
```
* iptables:
```shell
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -I FORWARD 1 -i lo -j ACCEPT # needs to be validated
iptables -I FORWARD 2 -o lo -j ACCEPT # needs to be validated
iptables -I FORWARD 3 -i lo -o lo -j ACCEPT # needs to be validated
iptables -I OUTPUT 1 -o lo -j ACCEPT
iptables -A INPUT -s 127.0.0.0/8 -j DROP
iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 68 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Persist with something like (which may screw up container networking tools):
systemctl enable --now iptables-store.service iptables-restore.service
```
* rsyslog, configured like a host service
```Dockerfile
# https://github.com/voxxit/dockerfiles/blob/master/rsyslog/Dockerfile
FROM alpine:latest
#FROM voxxit/base:alpine
#MAINTAINER Joshua Delsman
RUN apk add --update rsyslog \
&& rm -rf /var/cache/apk/*
EXPOSE 514 514/udp
VOLUME [ "/var/log", "/etc/rsyslog.d" ]
# for some reason, the apk comes built with a v5
# config file. using this one for v8:
COPY ./etc/rsyslog.conf /etc/rsyslog.conf
ENTRYPOINT [ "rsyslogd", "-n" ]
```
```rsyslog
# rsyslog.conf
#
# if you experience problems, check:
# http://www.rsyslog.com/troubleshoot
$FileCreateMode 0640
#### MODULES ####
module(load="imuxsock") # local system logging support (e.g. via logger command)
#module(load="imklog") # kernel logging support (previously done by rklogd)
module(load="immark") # --MARK-- message support
module(load="imudp") # UDP listener support
module(load="imtcp") # TCP listener support
input(type="imudp" port="514")
input(type="imtcp" port="514")
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
kern.* action(type="omfile" file="/dev/console")
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none action(type="omfile" file="/var/log/messages")
# The authpriv file has restricted access.
authpriv.* action(type="omfile" file="/var/log/secure")
# Log all the mail messages in one place.
mail.* action(type="omfile" file="/var/log/maillog")
# Log cron stuff
cron.* action(type="omfile" file="/var/log/cron")
# Everybody gets emergency messages
*.emerg action(type="omusrmsg" users="*")
# Save news errors of level crit and higher in a special file.
uucp,news.crit action(type="omfile" file="/var/log/spooler")
# Save boot messages also to boot.log
local7.* action(type="omfile" file="/var/log/boot.log")
#*.* @@loghost.example.com
# Include all .conf files in /etc/rsyslog.d
$IncludeConfig /etc/rsyslog.d/*.conf
```
```shell
docker run -it --rm --entrypoint="" rsyslog cat /etc/rsyslog.conf > /etc/rsyslog.conf
docker run -d -it --name rsyslog --restart=always --env TZ=UTC --cap-add SYSLOG -v /etc/rsyslog.conf:/etc/rsyslog.conf -v /var/log/:/var/log -v /etc/rsyslog.d:/etc/rsyslog.d -p 514:514/udp -p 514:514 rsyslog
```
* journald
```shell
sed -i 's/^#*ForwardToSyslog=.*$/ForwardToSyslog=yes/' /etc/systemd/journald.conf
sed -i 's/^#*Compress=.*$/Compress=yes/' /etc/systemd/journald.conf
sed -i 's/^#*Storage=.*$/Storage=persistent/' /etc/systemd/journald.conf
systemctl restart systemd-journald
```
* permissions of faillog and btmp
```shell
chmod 0600 /var/log/faillog
chmod 0600 /var/log/btmp
# if they're wanting to be sure, then make a systemd unit that sets it on boot
```
* sshd configs
```shell
cat /etc/ssh/sshd_config > /tmp/sshd_config
rm /etc/ssh/sshd_config
mv /tmp/sshd_config
chmod 0600 /etc/ssh/sshd_config
# maybe sed -i 'd/...' to clean the file first?
echo "Protocol 2" >> /etc/ssh/sshd_config
echo "LogLevel VERBOSE" >> /etc/ssh/sshd_config
echo "X11Forwarding no" >> /etc/ssh/sshd_config
echo "MaxAuthTries 4" >> /etc/ssh/sshd_config
echo "IgnoreRhosts yes" >> /etc/ssh/sshd_config
echo "HostbasedAuthentication no" >> /etc/ssh/sshd_config
echo "PermitRootLogin no" >> /etc/ssh/sshd_config
echo "PermitEmptyPasswords no" >> /etc/ssh/sshd_config
echo "PermitUserEnvironment no" >> /etc/ssh/sshd_config
echo "Ciphers chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com" >> /etc/ssh/sshd_config
echo "MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha2-512,umac-128-etm@openssh.com,umac-128@openssh.com" >> /etc/ssh/sshd_config
echo "KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256" >> /etc/ssh/sshd_config
echo "ClientAliveCountMax 0" >> /etc/ssh/sshd_config
echo "LoginGraceTime 60" >> /etc/ssh/sshd_config
echo "AllowGroups core" >> /etc/ssh/sshd_config
cat > /etc/ssh/banner.txt <
------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
EOF
echo "Banner /etc/ssh/banner.txt" >> /etc/ssh/sshd_config
echo "MaxStartups 10:30:60" >> /etc/ssh/sshd_config
echo "MaxSessions 4" >> /etc/ssh/sshd_config
systemctl restart sshd.service
```
* pam
```shell
```
* login.defs
```shell
cat /etc/login.defs > /tmp/login.defs
rm /etc/login.defs
mv /tmp/login.defs /etc/login.defs
chmod 0644 /etc/login.defs
sed -i 's/^PASS_MAX_DAYS.*$/PASS_MAX_DAYS 365/' /etc/login.defs
sed -i 's/^PASS_MIN_DAYS.*$/PASS_MIN_DAYS 7/' /etc/login.defs
```
* useradd defaults
```shell
cat /etc/default/useradd > /tmp/useradd
rm /etc/default/useradd
mv /tmp/useradd /etc/default/useradd
chmod 0644 /etc/default/useradd
sed -i 's/^INACTIVE.*$/INACTIVE=30/' /etc/default/useradd
```
* umask for logins
```shell
cat /etc/profile > /tmp/profile
rm /etc/profile
mv /tmp/profile /etc/profile
chmod 0644 /etc/profile
sed -i 's/^umask.*$/umask 027/' /etc/profile
```
* passwd- permission
```shell
chmod 0600 /etc/passwd-
```
================================================
FILE: CODEOWNERS
================================================
# CODEOWNERS file for Flatcar
# This file defines who is responsible for code review
# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
* @flatcar/flatcar-maintainers
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct
We follow the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
Please contact [private Maintainer mailing list](maintainers@flatcar-linux.org) or the Cloud Native Foundation mediator, conduct@cncf.io, to report an issue.
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing Guide
Welcome! We're so glad you're here and interested in contributing to Flatcar! 💖
## Table of Contents
- [Contributing Guide](#contributing-guide)
- [Table of Contents](#table-of-contents)
- [Ways to Contribute](#ways-to-contribute)
- [Getting Started](#getting-started)
- [Finding Issues](#finding-issues)
- [Proposing New Features](#proposing-new-features)
- [Communication Channels](#communication-channels)
- [Development](#development)
- [Development Environment Setup](#development-environment-setup)
- [Pull Request Lifecycle](#pull-request-lifecycle)
- [Authoring PRs](#authoring-prs)
- [Commit Best Practices](#commit-best-practices)
- [PR Description](#pr-description)
- [Commit Guidelines](#commit-guidelines)
- [The Rules](#the-rules)
- [Examples](#examples)
---
As a newcomer, you're actually in the best position to help us improve! We'd really love your feedback on:
- Confusing steps when setting up your developer environment
- Missing information in our guides or documentation
- Bugs or rough edges in our automation scripts
If something doesn't make sense or doesn't work, please let us know by opening a bug report — we genuinely appreciate it and every bit of feedback helps make Flatcar better!
---
## Ways to Contribute
There are so many ways to get involved! We welcome all kinds of contributions:
| Category | Examples |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Code** | New features, bug fixes, builds, CI/CD |
| **Documentation** | Guides, tutorials, API docs |
| **Community** | Issue triage, answering questions on Discord/Matrix/Slack |
| **Flatcar Apps** | Create reference implementations for running services on Flatcar (e.g., [Minecraft](https://github.com/flatcar/flatcar-app-minecraft), [Jitsi](https://github.com/flatcar/flatcar-app-jitsi)) — great for learning! |
| **Outreach** | Blog posts, talks, presentations, workshops |
| **Coordination** | Release management, upstream project coordination (e.g., Flatcar CAPI, sysext initiative) |
| **Events** | Bug fixing days, doc writing days, devrooms, meetups, conferences |
| **Design** | Web design, maintaining the Flatcar website |
Not everything happens through a GitHub pull request. Please come to our [meetings or contact us](https://github.com/flatcar/Flatcar/blob/main/README.md#community-meetings) to discuss how we can work together — we'd love to meet you!
---
## Getting Started
Thinking of contributing? Awesome! The best way to start is to engage with the project early — drop a comment on an existing issue or open a new one. Let us know what you're interested in working on. This helps us help you, and it's often the key to getting your contribution accepted smoothly.
To report bugs or request features, just file an [issue](https://github.com/flatcar/Flatcar/issues) — we're always happy to help point you in the right direction!
### Finding Issues
Not sure where to start? No worries — we've got you covered!
| Label | Description |
| --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| [`good first issue`](https://github.com/flatcar/Flatcar/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) | Extra guidance to help you make your first contribution |
| [`help wanted`](https://github.com/flatcar/Flatcar/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) | Issues suitable for non-core maintainers |
> 💡 **Tip:** Don't see any issues with these labels? No problem! There's always something exciting to work on. Hop on [Discord](https://discord.gg/PMYjFUsJyq) or join one of our Office Hours — we'll find something that fits your interests and skill level.
> 🌟 **Great for newcomers:** Consider contributing a [Flatcar App](https://github.com/flatcar/Flatcar/issues/2029)! A Flatcar App is a reference implementation showing how to run a specific service on Flatcar (e.g., [Minecraft Server](https://github.com/flatcar/flatcar-app-minecraft), [Jitsi](https://github.com/flatcar/flatcar-app-jitsi)). It's a fantastic way to learn Flatcar hands-on while creating something awesome that helps other newcomers learn too!
Found something you'd like to work on? Excellent! Just leave a comment like "I'd like to work on this" — that's all it takes to claim it.
### Proposing New Features
Got an idea for a new feature or a big architectural change? We'd love to hear it! Don't be shy — the best approach is to open an issue first so we can discuss it together before you invest time in implementation.
For package requests, use the "New Package Request" issue type and check out [Adding New Packages](https://github.com/flatcar/Flatcar/blob/main/adding-new-packages.md) for guidelines.
---
## Communication Channels
For all communication channels, community meetings, and social media links, see the [Communication Channels](https://github.com/flatcar/Flatcar/blob/main/README.md#communication-channels) section in the README. Come hang out with us on [Discord](https://discord.gg/PMYjFUsJyq)!
---
## Development
### Development Environment Setup
Ready to dive into the code? Let's go! Our [Developer Guides](https://www.flatcar.org/docs/latest/reference/developer-guides/) will walk you through the Flatcar SDK and common tasks like adding or upgrading packages. Start here:
- [Building Custom Images from Source](https://www.flatcar.org/docs/latest/reference/developer-guides/sdk-modifying-flatcar/)
These guides will give you a solid foundation for working with the SDK and help you submit PRs that sail through review!
### Pull Request Lifecycle
Pull requests can be issued from repository branches (maintainers only) or from forks. The project treats all PRs equally for review and merge, regardless of origin.
**Requirements:**
- Successful CI
- At least one LGTM from a maintainer who is not the PR author
- Approvers may be co-authors (allowing reviewers to suggest changes)
**Stages:**
| Stage | Description |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **1. Filed** | PR is created. Draft PRs only undergo build+test when explicitly requested. |
| **2. Ready for Review** | Maintainers can begin reviewing and approve CI runs. Authors may file directly in this stage if the PR is ready. |
| **3. Under Review** | Maintainers add comments, request changes, and vet against Flatcar's mission and core principles. |
| **4. Merged or Closed** | PR is merged upon approval or closed without merge. |
> 💡 **Tip:** PR feeling stuck? Don't be shy — reach out on [Discord](https://discord.gg/PMYjFUsJyq) or bring it up in a community meeting. We're here to help and we want to see your contribution succeed!
### Authoring PRs
Here are some tips to make your PRs shine and get merged quickly:
#### Commit Best Practices
- **Atomic commits:** Each commit should be self-contained and address a single logical change. See the Linux Kernel guide on [separating changes][linux-sep-changes].
- **Meaningful messages:** Commit messages should explain _why_ something is done, not just _what_. See [describing changes][linux-desc-changes].
- **Clean history:** Use `git rebase` to squash and order commits logically. Don't retain messy development history.
- **No throwaway commits:** Don't add code you'll change in a later commit. Squash related changes together.
- **Self-review:** Give your own code a critical look before submitting — you'll often spot things you missed, and reviewers will thank you!
#### PR Description
Think of your PR description as a cover letter. Help reviewers understand:
- Explain _why_ you're proposing the change
- Provide an overview of the changes
- List any unresolved questions or TODO items
- Give reviewers the context they need
### Commit Guidelines
Great commit messages make everyone's life easier (and make you look like a pro!). Here's the format we use:
```
:
Detailed information about the commit message goes here.
```
#### The Rules
| Rule | Details |
| --------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Line length** | Title ≤ 72 characters; body wrapped at 72 characters |
| **Blank line** | Separate title and body with one empty line |
| **Title mood** | Use [imperative mood](https://chris.beams.io/posts/git-commit/#imperative) (e.g., "Add feature" not "Added feature") |
| **Title punctuation** | No period at the end |
| **Body punctuation** | End sentences with periods |
#### Examples
✅ **Good:**
```
app-shells/bash: update ebuild to 5.3
Gentoo upstream has unmasked bash 5.3 and declared it stable.
This change updates the component to use the latest upstream ebuild.
```
❌ **Bad:**
```
Update bash
Updated bash to the latest one.
```
---
Thanks for reading, and thank you so much for contributing! 🙏 We're thrilled to have you as part of the Flatcar community. If you have any questions at all, don't hesitate to reach out — we're always happy to help and can't wait to see what you build! 🎉
[linux-sep-changes]: https://www.kernel.org/doc/html/latest/process/submitting-patches.html#separate-your-changes
[linux-desc-changes]: https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes
================================================
FILE: EMERITUS_MAINTAINERS.md
================================================
# Flatcar Container Linux Emeritus Maintainers
This file lists contributors to the Flatcar project whose maintainership rests.
It is meant to provide a fast-track back to active maintainer status should the emeritus decide to do so.
* William Light [@wrl](https://github.com/wrl)
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: MAINTAINERS.md
================================================
# Maintainers
See [Governance](https://github.com/flatcar/Flatcar/blob/main/governance.md) for governance, access, and voting guidelines as well as maintainer responsibilities. Everybody listed in this file is a maintainer as per governance definition. See also [Onboarding](https://github.com/flatcar/Flatcar/blob/main/ONBOARDING.md) for the new maintainer onboarding checklist, [Contributing](https://github.com/flatcar/Flatcar/blob/main/CONTRIBUTING.md) for contribution guidelines, [README](https://github.com/flatcar/Flatcar/blob/main/README.md) for general project information, and [Security](https://github.com/flatcar/Flatcar/blob/main/SECURITY.md) for security policies and reporting.
## Flatcar Maintainers
Official Flatcar project maintainers. All maintainers listed here should also be present in the [CNCF project maintainers list](https://github.com/cncf/foundation/blob/main/project-maintainers.csv).
| Name | GitHub |
| ----------------- | ------------------------------------------------------ |
| James Le Cuirot | [@chewi](https://github.com/chewi) |
| Thilo From | [@t-lo](https://github.com/t-lo) |
| Krzesimir Nowak | [@krnowak](https://github.com/krnowak) |
| Sayan Chowdhury | [@sayanchowdhury](https://github.com/sayanchowdhury) |
| Gabriel Samfira | [@gabriel-samfira](https://github.com/gabriel-samfira) |
| Kai Lüke | [@pothos](https://github.com/pothos) |
| Adrian Vladu | [@ader1990](https://github.com/ader1990) |
| Daniel Zatovic | [@danzatt](https://github.com/danzatt) |
| Jeremi Piotrowski | [@jepio](https://github.com/jepio) |
| Dongsu Park | [@dongsupark](https://github.com/dongsupark) |
| Danielle Tal | [@miao0miao](https://github.com/miao0miao) |
| Mathieu Tortuyaux | [@tormath1](https://github.com/tormath1) |
| Ervin Racz | [@ervcz](https://github.com/ervcz) |
| Jan Bronicki | [@John15321](https://github.com/John15321) |
## Flatcar Security Team
The Flatcar Security Task Force.
| Name | GitHub |
| ----------------- | ---------------------------------------------------- |
| Vincent Batts | [@vbatts](https://github.com/vbatts) |
| Thilo Fromm | [@t-lo](https://github.com/t-lo) |
| Krzesimir Nowak | [@krnowak](https://github.com/krnowak) |
| Sayan Chowdhury | [@sayanchowdhury](https://github.com/sayanchowdhury) |
| Kai Lüke | [@pothos](https://github.com/pothos) |
| Dongsu Park | [@dongsupark](https://github.com/dongsupark) |
| Mathieu Tortuyaux | [@tormath1](https://github.com/tormath1) |
## Maintainer Subgroups
Subgroups are teams of maintainers responsible for specific sets of repositories. They serve as primary reviewers and first responders for changes in their area. These subgroups are enforced via [GitHub teams](https://github.com/orgs/flatcar/teams) and `CODEOWNERS` files in each repository. All groups and subgroups listed in this document are sourced from the [Flatcar GitHub teams page](https://github.com/orgs/flatcar/teams). Repositories not listed below have `@flatcar/flatcar-maintainers` assigned in their `CODEOWNERS`, meaning all maintainers will be requested for review.
| Subgroup | Description | Members | Repositories |
| ------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **nebraska-maintainers** | Reviews Nebraska-related update and Omaha projects for Flatcar. | [@t-lo](https://github.com/t-lo)
[@pothos](https://github.com/pothos)
[@jepio](https://github.com/jepio)
[@miao0miao](https://github.com/miao0miao)
[@tormath1](https://github.com/tormath1)
[@ervcz](https://github.com/ervcz) | [flatcar-maintainer-private](https://github.com/flatcar/flatcar-maintainer-private)
[go-omaha](https://github.com/flatcar/go-omaha)
[nebraska](https://github.com/flatcar/nebraska)
[nebraska-update-agent](https://github.com/flatcar/nebraska-update-agent) |
| **flatcar-integrations** | Reviews integrations and extension projects for Flatcar. | [@t-lo](https://github.com/t-lo)
[@danzatt](https://github.com/danzatt)
[@tormath1](https://github.com/tormath1)
[@John15321](https://github.com/John15321)
[@pothos](https://github.com/pothos) | [sysext-bakery](https://github.com/flatcar/sysext-bakery)
[flatcar-app-minecraft](https://github.com/flatcar/flatcar-app-minecraft)
[flatcar-app-jitsi](https://github.com/flatcar/flatcar-app-jitsi) |
| **flatcar-communication** | Reviews website, social, and communication content for Flatcar. | [@sayanchowdhury](https://github.com/sayanchowdhury)
[@pothos](https://github.com/pothos)
[@LexiNadolski](https://github.com/LexiNadolski)
[@tormath1](https://github.com/tormath1)
[@ervcz](https://github.com/ervcz)
[@John15321](https://github.com/John15321) | [flatcar-website](https://github.com/flatcar/flatcar-website)
[flatcar-socials](https://github.com/flatcar/flatcar-socials) |
| **flatcar-ci** | Reviews CI/CD and build automation for Flatcar. | [@tormath1](https://github.com/tormath1)
[@jepio](https://github.com/jepio)
[@sayanchowdhury](https://github.com/sayanchowdhury)
[@chewi](https://github.com/chewi)
[@pothos](https://github.com/pothos)
[@dongsupark](https://github.com/dongsupark)
[@John15321](https://github.com/John15321) | [mantle](https://github.com/flatcar/mantle)
[jenkins-os](https://github.com/flatcar/jenkins-os)
[jenkins-secret](https://github.com/flatcar/jenkins-secret) |
| **flatcar-infra** | Reviews infrastructure and secrets management for Flatcar. | [@tormath1](https://github.com/tormath1)
[@John15321](https://github.com/John15321)
[@sayanchowdhury](https://github.com/sayanchowdhury)
[@jepio](https://github.com/jepio)
[@pothos](https://github.com/pothos)
[@dongsupark](https://github.com/dongsupark) | [flatcar-linux-build-secrets](https://github.com/flatcar/flatcar-linux-build-secrets)
[flatcar-linux-infra-secrets](https://github.com/flatcar/flatcar-linux-infra-secrets)
[flatcar-linux-infra](https://github.com/flatcar/flatcar-linux-infra) |
================================================
FILE: ONBOARDING.md
================================================
# Maintainer Onboarding Checklist
Welcome to the Flatcar maintainer team! 🎉
This document is a **template** for onboarding new Flatcar maintainers.
> **How to use this template:**
> Copy the raw Markdown contents of this file and paste them into a new GitHub issue (e.g. titled _"Onboarding: \"_). Track progress and tick off checklist items in that issue — do **not** edit the checkboxes in this file. This document remains the canonical template for all future onboardings.
>
> **Improving this template:**
> If you find that this document does not reflect the realities of onboarding (missing steps, outdated information, etc.), please open a pull request to update it.
The checklist is split into two parts:
- **[For the onboarding coordinator](#for-the-onboarding-coordinator)** — actions that an existing maintainer or project coordinator must perform on behalf of the new maintainer.
- **[For the new maintainer](#for-the-new-maintainer)** — actions the new maintainer should complete themselves.
Once onboarding is complete, both parties should confirm each item is ticked off in the tracking issue.
---
## For the Onboarding Coordinator
These steps require elevated access and must be completed by an existing maintainer or project coordinator.
### GitHub Access
- [ ] Add the new maintainer to the [flatcar-maintainers](https://github.com/orgs/flatcar/teams/flatcar-maintainers) GitHub team.
- [ ] Verify the new maintainer has appropriate permissions on all relevant repositories (see [MAINTAINERS.md](./MAINTAINERS.md) for the list of repositories).
- [ ] Assign the new maintainer to the relevant PR review groups based on their area of focus, for example:
- `flatcar-ci`
- `nebraska-maintainers`
- Other repository-specific teams as applicable.
- [ ] If the new maintainer will be involved in release management, add them to the Nebraska read-only (`ro`) or read-write (`rw`) groups in the Nebraska release process as appropriate. See [RELEASES.md](./RELEASES.md) for the full release guide.
### CNCF Registration
- [ ] Add the new maintainer to the [CNCF project maintainers list](https://github.com/cncf/foundation/blob/main/project-maintainers.csv) by opening a pull request against the [cncf/foundation](https://github.com/cncf/foundation/) repository (see [example PR](https://github.com/cncf/foundation/pull/1075)).
- [ ] Ensure the new maintainer has access to CNCF accounts and services used by the project (e.g. CNCF service desk, CNCF Slack).
### Mailing Lists
Add the new maintainer to the following mailing lists:
**Private lists** (maintainer-only):
- [ ] `maintainers@flatcar-linux.org` — maintainer coordination and voting
- [ ] Infra mailing list — infrastructure and operational discussions
- [ ] Security mailing list — undisclosed security issue handling
**Public lists** (community-facing):
- [ ] [Flatcar Users](https://groups.google.com/g/flatcar-linux-user)
### Infrastructure Access
Grant the new maintainer access to the following infrastructure systems (at minimum read/user level; escalate as required by their role):
- [ ] Jenkins (CI)
### Communication and Collaboration Tools
- [ ] Grant access to the shared Flatcar events Google Calendar.
- [ ] Grant access to the Flatcar YouTube channel.
- [ ] Grant access to the [HackMD](https://hackmd.io) workspace used for collaborative documents.
### Linux Foundation
- [ ] Ensure the new maintainer has a Linux Foundation account.
- [ ] Grant access to the Linux Foundation Jira project used for tracking Flatcar work items.
---
## For the New Maintainer
These are steps you should complete yourself after your coordinator has provisioned your access.
### GitHub
- [ ] Accept the invitation to the [flatcar GitHub organisation](https://github.com/flatcar) and the `flatcar-maintainers` team.
- [ ] Review the list of repositories you have been added to and familiarise yourself with their purpose (see [MAINTAINERS.md](./MAINTAINERS.md)).
- [ ] Review the [Governance document](./governance.md) to understand the project's decision-making process, voting, and maintainer responsibilities.
### Calendar and Meetings
- [ ] Add the Flatcar community calendar to your calendar app using the iCal link:
`https://calendar.google.com/calendar/ical/c_ii991mqrpta9en8o7ofd4v19g4%40group.calendar.google.com/public/basic.ics`
- [ ] Alternatively, subscribe via the [Google Calendar link](https://calendar.google.com/calendar/u/0/embed?src=c_ii991mqrpta9en8o7ofd4v19g4@group.calendar.google.com).
- [ ] Attend your first [Flatcar Developer Sync](https://meet.flatcar.org/OfficeHours) — check the community calendar for the current schedule.
- [ ] Attend your first [Flatcar Office Hours](https://meet.flatcar.org/OfficeHours) — check the community calendar for the current schedule.
### Mailing Lists
- [ ] Confirm you have been added to the private maintainer, infra, and security mailing lists and that you can send and receive messages.
- [ ] Confirm you have been subscribed to the [Flatcar Users](https://groups.google.com/g/flatcar-linux-user) public mailing list.
### Community Channels
- [ ] Join the Flatcar Discord server: [discord.gg/PMYjFUsJyq](https://discord.gg/PMYjFUsJyq)
- [ ] Join the Flatcar Matrix room: [#flatcar:matrix.org](https://app.element.io/#/room/#flatcar:matrix.org)
- [ ] Join the [#flatcar channel](https://kubernetes.slack.com/archives/C03GQ8B5XNJ) in the Kubernetes Slack workspace.
### Infrastructure and Tooling
- [ ] Verify your access to Jenkins
- [ ] Log in to HackMD and confirm access to shared Flatcar documents.
- [ ] Log in to the Linux Foundation Jira and confirm access to the Flatcar project board.
- [ ] Verify CNCF account access.
### Knowledge Sharing
- [ ] Schedule onboarding knowledge-sharing sessions with existing maintainers to cover key areas of the project. Suggested topics include:
- Overview of the Flatcar build system and SDK
- CI/CD pipeline and infrastructure
- Release management process (see [RELEASES.md](./RELEASES.md))
- Security response process
- Governance and decision-making
- [ ] Read through the [Flatcar developer guides](https://www.flatcar.org/docs/latest/reference/developer-guides/) and the [SDK how-to](https://www.flatcar.org/docs/latest/reference/developer-guides/sdk-modifying-flatcar/).
- [ ] Review the [CONTRIBUTING.md](./CONTRIBUTING.md) guide.
- [ ] Review the [SECURITY.md](./SECURITY.md) policy.
- [ ] Review the [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
---
## Questions and Support
If you have any questions during onboarding, please reach out to the maintainer team via:
- Discord: [discord.gg/PMYjFUsJyq](https://discord.gg/PMYjFUsJyq)
- Matrix: [#flatcar:matrix.org](https://app.element.io/#/room/#flatcar:matrix.org)
- Slack: [#flatcar](https://kubernetes.slack.com/archives/C03GQ8B5XNJ) in the Kubernetes Slack org
- Private maintainer mailing list: `maintainers@flatcar-linux.org`
================================================
FILE: README.md
================================================
[](https://www.flatcar.org/)
[](https://discord.gg/PMYjFUsJyq)
[](https://app.element.io/#/room/#flatcar:matrix.org)
[](https://kubernetes.slack.com/archives/C03GQ8B5XNJ)
[](https://x.com/flatcar)
[](https://hachyderm.io/@flatcar)
[](https://bsky.app/profile/flatcar.org)
[](https://www.bestpractices.dev/projects/10926)
> **Note:** To file an issue for any Flatcar repository, please use the [central Flatcar issue tracker](https://github.com/flatcar/Flatcar/issues).
# Flatcar Container Linux
Welcome to the Flatcar community! Whether you're a user, contributor, or just curious — we're glad you're here! 👋
_Flatcar Container Linux is a fully open source, minimal-footprint, secure by default and always up-to-date Linux distribution for running containers at scale._
Flatcar ships only the essentials needed to run containers — no package manager, no configuration drift. Its immutable, read-only filesystem minimizes attack surfaces, and atomic, automated updates keep your system secure and up-to-date without manual intervention.
Don't forget to check out [flatcar.org](https://www.flatcar.org/) for documentation, guides, and other useful resources!
## Table of Contents
- [Flatcar Container Linux](#flatcar-container-linux)
- [Table of Contents](#table-of-contents)
- [Install and Operate Flatcar](#install-and-operate-flatcar)
- [Communication Channels](#communication-channels)
- [Social Media](#social-media)
- [Community Meetings](#community-meetings)
- [Office Hours](#office-hours)
- [Developer Syncs](#developer-syncs)
- [Report Bugs and Request Features](#report-bugs-and-request-features)
- [Participate and Contribute](#participate-and-contribute)
- [Becoming a Maintainer](#becoming-a-maintainer)
- [Project Status and Roadmap](#project-status-and-roadmap)
- [Release Process](#release-process)
- [LTS](#lts)
- [Project Governance](#project-governance)
- [Code of Conduct](#code-of-conduct)
- [Reference](#reference)
---
## Install and Operate Flatcar
Flatcar Container Linux has a dedicated [documentation site](https://www.flatcar.org/docs/latest/). Start here:
- [Getting Started](https://www.flatcar.org/docs/latest/installing/) — covers Ignition, local testing with QEMU, automatic updates, and cloud providers
| Resource | Link |
| --------------------------- | -------------------------------------------------------- |
| **Current Releases** | [flatcar.org/releases](https://www.flatcar.org/releases) |
| **Interoperability Matrix** | [interop-matrix.md](interop-matrix.md) |
| **CIS Benchmarks** | [CIS reports](CIS/README.md) |
---
## Communication Channels
We're a friendly bunch and always excited to chat! Here's where you can find us:
| Channel | Link |
| ------------------------ | -------------------------------------------------------------------------------------------------------------- |
| **Discord** (preferred) | [discord.gg/PMYjFUsJyq](https://discord.gg/PMYjFUsJyq) — text, voice & video with contributors and maintainers |
| **Matrix** | [#flatcar:matrix.org](https://app.element.io/#/room/#flatcar:matrix.org) |
| **Slack** | [#flatcar](https://kubernetes.slack.com/archives/C03GQ8B5XNJ) (Kubernetes Slack) |
| **GitHub Discussions** | [flatcar/Flatcar/discussions](https://github.com/flatcar/Flatcar/discussions) |
| **Mailing List (Users)** | [flatcar-linux-user](https://groups.google.com/g/flatcar-linux-user) |
> 💡 Want to report a bug or request a feature? [File an issue](https://github.com/flatcar/Flatcar/issues/new/choose). Have a question or not sure where to start? Jump into one of our chats and ask — we're happy to help!
#### Social Media
| Platform | Link |
| ------------ | ------------------------------------------------------ |
| **Mastodon** | [@flatcar@hachyderm.io](https://hachyderm.io/@flatcar) |
| **Bluesky** | [@flatcar.org](https://bsky.app/profile/flatcar.org) |
| **X** | [@flatcar](https://x.com/flatcar) |
### Community Meetings
Come say hi! Check our [Google Calendar](https://calendar.google.com/calendar/u/0/embed?src=c_ii991mqrpta9en8o7ofd4v19g4@group.calendar.google.com) ([iCal](https://calendar.google.com/calendar/ical/c_ii991mqrpta9en8o7ofd4v19g4%40group.calendar.google.com/public/basic.ics)) for all meeting times.
#### Office Hours
| | |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **When** | 2nd Wednesday of every month at 2:30pm UTC (double check calendar) |
| **Where** | [meet.flatcar.org/OfficeHours](https://meet.flatcar.org/OfficeHours) (all you need is a browser, no installations/accounts required) |
| **Agenda** | [Office Hours Discussions](https://github.com/flatcar/Flatcar/discussions/categories/flatcar-office-hours) |
Engage with the Flatcar community, learn about project directions, discuss contributions, and catch occasional demos of image-based Linux technologies. Each call includes a brief Release Planning update.
#### Developer Syncs
| | |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **When** | 4th Wednesday of every month at 2:30pm UTC (check calendar) |
| **Where** | [meet.flatcar.org/OfficeHours](https://meet.flatcar.org/OfficeHours) (all you need is a browser, no installations/accounts required) |
| **Agenda** | [Developer Sync Discussions](https://github.com/flatcar/Flatcar/discussions/categories/flatcar-developer-sync) |
Backlog grooming, task planning, roadmap discussions, and day-to-day issues. If you want to get hands-on with development, this is the call for you!
> 🎥 All meetings are live-streamed on YouTube — recordings are linked in each meeting's agenda.
---
## Report Bugs and Request Features
Found a bug or have a feature request? [File an issue](https://github.com/flatcar/Flatcar/issues/new/choose) — please select the appropriate issue type to help us triage.
> 💡 **Tip:** Want a new package in the base image? Use the "New Package Request" issue type and check out the [package addition guidelines](adding-new-packages.md).
---
## Participate and Contribute
Thinking of making a contribution? Engage with the project early — comment on an existing issue or create a new one. Making your intent visible is often the key to getting your work accepted!
For full details, check out our [Contributing Guide](CONTRIBUTING.md) which covers:
| Topic | What you'll find |
| ---------------------- | ------------------------------------------------------------------------------------------------------- |
| **Ways to Contribute** | Code, docs, community, outreach, and more |
| **Finding Issues** | Labels like `good first issue` and `help wanted` |
| **Development Setup** | SDK walkthrough and [developer guides](https://www.flatcar.org/docs/latest/reference/developer-guides/) |
| **PR Lifecycle** | From filing to merge |
| **Commit Guidelines** | Format, style, and best practices |
> 🌟 **New to Flatcar?** Consider building a [Flatcar App](https://github.com/flatcar/Flatcar/issues/2029) — a great hands-on way to learn!
### Becoming a Maintainer
The Flatcar maintainer path is laid out in our [governance document](governance.md).
---
## Project Status and Roadmap
| Board | Description |
| ------------------------------------------------------------------------ | ---------------------------------------------------------- |
| [**Issue Tracker**](https://github.com/flatcar/Flatcar/issues) | Short-term concerns — bugs and minor enhancements |
| [**Tactical Board**](https://github.com/orgs/flatcar/projects/7/views/1) | What maintainers and contributors are currently working on |
| [**Release Board**](https://github.com/orgs/flatcar/projects/7/views/8) | Completed items assigned to upcoming releases |
| [**Releases Tracker**](https://github.com/orgs/flatcar/projects/7/views/24) | Track the status of each release across all channels |
| [**Roadmap Board**](https://github.com/orgs/flatcar/projects/7/views/9) | Epics, major features, and long-term items |
---
## Release Process
Flatcar Container Linux follows an **Alpha → Beta → Stable** release process:
- **New features** and major version upgrades enter Alpha, transition to Beta, then land in Stable.
- **Bug fixes** are released directly to the affected channel (Alpha fixes go to Alpha, Beta to Beta, Stable to Stable).
Within each channel, updates are planned on a **14-day cadence**. Major releases follow a broader rhythm:
| Promotion | Target cadence |
|-----------|----------------|
| New major **Alpha** | Monthly |
| Alpha → **Beta** | Every 2 months |
| Beta → **Stable** | Every 3–4 months |
| New **LTS** | Yearly |
Up-to-date planning status is reflected in our [release planning board](https://github.com/orgs/flatcar/projects/7). For the full release process documentation, see the [Release Guide](RELEASES.md).
### LTS
Some users prefer to avoid frequent version upgrades. The Flatcar **LTS channel** provides a longer support window:
| Detail | Value |
| ---------------------- | ------------------------- |
| **Based on** | A "golden Stable" release |
| **Maintenance period** | 18 months |
| **New LTS frequency** | Every 12 months |
| **Upgrade window** | 6 months overlap |
---
## Project Governance
Flatcar is a community-driven project. Every participant — bug reporter, feature requester, code contributor — is considered a contributor. Maintainers have commit access and help govern the project, driving it forward and maintaining its scope and vision.
For full details see our [governance document](governance.md).
| Resource | Link |
| ------------------- | -------------------------------- |
| **Governance** | [governance.md](governance.md) |
| **Maintainers** | [MAINTAINERS.md](MAINTAINERS.md) |
| **Security Policy** | [SECURITY.md](SECURITY.md) |
---
## Code of Conduct
We follow the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
Please contact the [private Maintainer mailing list](mailto:maintainers@flatcar-linux.org) or the Linux Foundation mediator, Mishi Choudhary ([mishi@linux.com](mailto:mishi@linux.com)), to report an issue.
---
## Reference
| Document | Description |
| -------------------------------------------------- | -------------------------------------------------------------------------------------- |
| [CONTRIBUTING.md](CONTRIBUTING.md) | How to contribute — finding issues, development setup, PR lifecycle, commit guidelines |
| [RELEASES.md](RELEASES.md) | Release channels, downloads, and the release process |
| [governance.md](governance.md) | Project governance model, maintainer roles, and decision-making |
| [MAINTAINERS.md](MAINTAINERS.md) | Current list of project maintainers |
| [EMERITUS_MAINTAINERS.md](EMERITUS_MAINTAINERS.md) | Former maintainers who have stepped down |
| [ONBOARDING.md](ONBOARDING.md) | Checklist for onboarding new maintainers |
| [SECURITY.md](SECURITY.md) | Security policy and vulnerability reporting |
| [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) | CNCF Code of Conduct |
| [adding-new-packages.md](adding-new-packages.md) | Guidelines for requesting and adding new packages to Flatcar |
| [interop-matrix.md](interop-matrix.md) | Platform and provider interoperability matrix |
| [CODEOWNERS](CODEOWNERS) | Code ownership and review assignments |
| [LICENSE](LICENSE) | Project license (Apache 2.0) |
================================================
FILE: RELEASES.md
================================================
# Flatcar Releases
Flatcar Container Linux uses **automatic, atomic updates** to keep your system secure and up-to-date without manual intervention. Each Flatcar instance receives updates from one of four release channels:
- **Alpha** — the bleeding edge. New features, major version upgrades, and experimental changes land here first. Expect frequent updates and occasional rough edges.
- **Beta** — a stabilization step. Changes that have proven themselves in Alpha are promoted here for broader testing before reaching production.
- **Stable** — the default and recommended channel for production workloads. Only thoroughly tested releases make it here.
- **LTS** — the gold standard for stability. An LTS release is cut from a battle-tested Stable version that has proven itself exceptionally reliable across the community. It receives only critical security and bug fix updates for **18 months**, with a new LTS published every 12 months and a 6-month overlap between consecutive LTS releases so you have plenty of time to upgrade. Ideal for environments where predictability and minimal change are paramount.
Each channel always points to its latest version as the `current` release. Every release has its own version number and dedicated release notes. Bug fixes are shipped directly to the affected channel — an Alpha fix goes to Alpha, a Beta fix to Beta, a Stable fix to Stable, and an LTS fix to LTS.
Within each channel, updates are planned on a **14-day cadence**. Major releases follow a broader rhythm:
| Promotion | Target cadence |
|-----------|----------------|
| New major **Alpha** | Monthly |
| Alpha → **Beta** | Every 2 months |
| Beta → **Stable** | Every 3–4 months |
| New **LTS** | Yearly |
You can learn more about switching between channels and configuring update behavior in the [channel docs](https://www.flatcar.org/docs/latest/setup/releases/switching-channels/).
## Download Images
Browse all available releases at [flatcar.org/releases](https://www.flatcar.org/releases/). Click `amd64` or `arm64` on the channel overview to download images for the `current` release, or navigate to a specific version's release notes to grab that particular build. You'll be able to choose from images for many platforms and cloud providers. The [installation docs](https://www.flatcar.org/docs/latest/installing/) have a quick start guide and information about public images directly available at each cloud provider.
## Track Releases
| Resource | Link |
|----------|------|
| **Releases Tracker** | [Project board](https://github.com/orgs/flatcar/projects/7/views/24) — status of each release across all channels |
| **Release issues** | [kind/release](https://github.com/flatcar/Flatcar/issues?q=is%3Aissue+state%3Aopen+label%3Akind%2Frelease) — upcoming and in-progress releases that populate the tracker |
## Release Process
For the full release process documentation — how releases are built, tested, signed, and published — see the [Release Guide](https://www.flatcar.org/docs/latest/reference/developer-guides/release-guide/) on the Flatcar documentation site.
Have questions about releases or updates? Join one of our [chats or community calls](https://github.com/flatcar/Flatcar/blob/main/README.md#communication-channels) — we're always happy to help!
================================================
FILE: SECURITY.md
================================================
# Flatcar Security
To keep Flatcar secure, the maintainers put a strong focus on tracking new and existing security issues.
Dealing with Security concerns is owned by the [Flatcar Security team](https://github.com/orgs/flatcar/teams/flatcar-security-team), a subset of the Maintainers team, and elected by the Maintainers (see [governance.md](./governance.md)).
While the team actively researches and tracks new and existing security issues, it may also be notified of issues via [security@flatcar-linux.org](mailto:security@flatcar-linux.org).
The Security team meets on a fortnightly cadence, in a private video call.
The team maintains an internal list of security Primaries and Secondaries, which are rotated on a weekly basis.
The Primary and Secondary are expected to actively engage in security work each day, including executing the Runbook (see below) and working on fixing ongoing security issues.
Undisclosed security issues are tracked in a private repository only accessible by members of the security team.
Public issues are tracked publicly in the project's main issue tracker.
Security issues are addressed by releasing an updated OS image. Releases may be expedited depending on the issues' severity. For each release, release notes contain a concise list of security issues fixed. Also, a separate, detailed report on each of the issues addressed is part of every release.
## Daily security runbook for Security team primaries and secondaries
The runbook below discusses steps for identifying new potential security issues and for making the issues known to the Flatcar project's maintainers and/or the other members of the Security team.
Primaries are expected to execute the runbook at least once per day, optionally assisted or off-loaded by Secondaries.
Every day look into upstream security trackers like below:
- Gentoo security vulnerabilities. It might be useful to use gorss + RSS feed for this.
- oss-security mailing list
- Golang announce mailing list
- Rust security announcements
- (optional) issue trackers of other distros
- Whenever we discover any new CVE, we add it to an internal database, and use automation tools to create a new issue about the CVE in [Flatcar GitHub issues](https://github.com/Flatcar/Flatcar/issues) with labels `security` and `advisory`.
- If an issue for updating the specific package affected by the new CVE is already open in [Flatcar GitHub issues](https://github.com/Flatcar/Flatcar/issues), then unfortunately we need to manually edit the existing issue to add the new CVE.
================================================
FILE: adding-new-packages.md
================================================
# Proposing new packages for inclusion into Flatcar Container Linux
Flatcar Container Linux is a modern Linux distribution for running container workloads.
To stay modern, the packages included need to be kept up-to-date, and sometimes new packages introduced.
This documents explains the process for the latter.
## Project definition
When proposing new packages for inclusion into Flatcar Container Linux, it's important to keep in mind how the project defines itself:
_Flatcar Container Linux is a fully open source, minimal-footprint, secure by default and always up-to-date Linux distribution for running containers at scale._
## New package criteria
As a minimal Linux distribution, the tools and applications included in Flatcar Container Linux are to be kept to a minimum.
This is to reduce both the image size and attack surface.
Package addition requests are evaluated with this in mind.
Other criteria that are weighed are the following.
- ***Secure by default***: Does the package increase the security of Flatcar?
- ***Always up-to-date***: Is the package actively maintained?
- ***Running containers***: Does the package make Flatcar more relevant for container environments?
- ***At scale***: Does the package improve automation of or telemetry served by Flatcar and/or ease operational burden?
## How to propose a package for inclusion
In order to propose a new package for inclusion, [open an issue using the "New Package Request" template](https://github.com/flatcar/Flatcar/issues/new?assignees=&labels=kind%2Fnew-package&template=new-package-request.md&title=New+Package+Request%3A+%5Bpackage-name%5D).
================================================
FILE: attic/community-meetings/2021-05-11.md
================================================
# Flatcar community call Tuesday, 11th of May, 17:30 CEST
- [Slide deck](2021-05-11-slides.pdf)
- Youtube recording: [https://youtu.be/YBfq2fcjp8E](https://youtu.be/YBfq2fcjp8E)
# Call Agenda
## Welcome
- Introduction to the new community meetings
- Meet the team
- Review agenda
- Introduction: Brief intro of the team and community members participating in the call
## Flatcar Interoperability
Review of our work on interoperability and how we plan to track/report
## Upcoming releases
We give a brief overview of upcoming releases and the features included.
## Spotlight: CAPI
Details on our ClusterAPI work so far and future plans
## Community Q&A
Open Q&A / discussion
# Call Minutes
The meeting largely followed the [slide deck](2021-05-11-slides.pdf). After the presentation, community participants raised a total of 3 questions.
1. The Flatcar team, Thilo, Sayan, Marga, Dongsu, Mathieu, Andy, Kai, and Iago introduce themselves.
2. Andy briefly addresses the future of Flatcar following Kinvolk's acquisition by Microsoft.
- “[...] we want to assure the Flatcar community that Microsoft and the Kinvolk team will continue to collaborate with the larger Flatcar community on the evolution of Flatcar Container Linux.” - Brendan Burns, Microsoft
- “This will not be a replay of the movie you’ve seen before. In fact, we and Microsoft are committed to doubling down on the Flatcar community: we want to expand the universe of partners, contributors, and users, to ensure a vibrant, successful and sustainable long-term future for Flatcar as a truly open, community-driven project.” - Chris Kühl, Kinvolk
3. Thilo introduces monthly community calls and the new community focus of the Flatcar project, overcoming and leaving behind its single vendor past.
4. Marga introduces the [interop matrix](../interop-matrix.md) as a means to track Flatcar's support of runtime environments (clouds, on premise, etc.).
- Some environments, while supported, do not currently have an owner.
- The project aims to have community owners who operate workloads / clusters in the respective environments, in the long term.
5. Andy elaborates on Flatcar's core philosophy and shares details on stabilisation process and on release cadence.
- Alpha introduces new major versions, which then transition to Beta and Stable. Not every Alpha is promoted to Beta, not every Beta becomes Stable.
- Frequent Alpha releases, every 2 weeks on average.
- Beta release for (typically) every second Alpha, with patch releases in between.
- Stable releases roughly every 2 months.
- "golden" Stable to become LTS once a year.
6. Sayan summarises the last round of releases, and provides an outlook of upcoming releases.
- April 28th round shipped new major Alpha (2857.0.0) and Beta (2823.1.0) versions, and patch level updates to Stable (2765.2.3) and to LTS (2605.15.1).
- Alpha release removes `rkt` and `kubelet-wrapper`. The changes will transition to Beta in June, and to Stable in July.
- Upcoming May 19th releases will ship a new major Alpha (2879.0.0) and patch level updates to Beta, Stable, and LTS.
7. Dongsu provide an overview of ClusterAPI, and elaborates on our work to add Flatcar support to CAPI.
- CAPI utilises a management cluster to deploy workload clusters on a variety of inrastructure providers.
- Adding OS support for providers requires a separate implementation for each; there is no unified standard for OS config.
- OS images are provided via the ClusterAPI Image Builder project.
- Workload clusters are provisioned via the ClusterAPI Bootstrap provider.
- Current Flatcar status:
- QEmu and AWS OS images supported for Flatcar in Image builder.
- Bootstrap (kubeadm) Ignition support added to enable Flatcar OS config.
- AWS provider Ignition support added to enable Flatcar OS config.
- Future plans:
- support other cloud providers (Metal3, Azure, vSphere, Tinkerbell, Equinix Metal)
8. Thilo shares call for action to the community to join the project
## Q&A
- Q: **What's the relationship between ClusterAPI and Lokomotive?**
- Iago: Currently, no direct relation. We plan to investigate using parts of CAPI in the future, e.g. provisioning, but we do not plan to support the full-blown management / workload clusters pattern at this time.
- Q: **here seems to be a lack of bare metal deployments / supported platforms in the compatibility matrix - is this intentional? Do we exepct Flatcar to "just work" since it's using Linux? Is there potential to add bare metal platforms (we use / plan to use Flatcar primarily on bare metal)?**
- Thilo: It's Linux, as long as it PXE boots, you should be fine.
- Andy: Are we discussing a hardware compatibility list?
- Jannik: Not quite, however since we'll be running on bare metal we'll also test our bare metal. We're willing to support the community for our use cases.
- Vincent: Currently, if you run into issues it's best to just open a ticket. If you'd like to expose your work to the community (test results etc.) you're of course welcome to do so!
- Kai: We cover bare metal PXE boot / ignition config implicitly by our Equinix Metal workloads / CI / release tests. Lokomotive also maintains a bare metal CI test which covers PXE boots and deployments.
- Marga: It's a good point that our interop matrix currently does not discuss hardware support at all. For instance, it's tribal knowledge that Flatcar boots on Rasperry Pi (with some tweaks), but that's not documented anywhere.
- Andy: This might be something we should involve the larger community with, e.g. establishing a hardware interop list for users' existing deployments. Individual users then could volunteer to keep that list up to date for new releases since they'd be testing the release on their hardware anyway.
- Jannik: We could use the hardware interop doc to also share tweaks / notes for specific environments more easily.
- Q: **Can you talk about ARM64 support? There's Alpha support, but what's the path to Beta and Stable?**
- Thilo: It's work in progress, we staffed / resourced this concern very recently. Some plumbing level and package upgrades are necessary to make things work for Stable, these are being worked on as we speak.
- Kai: A number of system components' tests are currently failing. We're also interested in hardware enablement, i.e. getting feedback on our ARM64 kernel config / modules on different ARM64 platforms. Other than that, it's about ensuring our release tests pass.
- Thilo: We need to discuss this in terms of support levels - you could go ahead and use Alpha ARM64 support today, there are no deal breakers we know of - it will support your workload.
It just won't support the entire range of Flatcar features, and some boot-up units might fail (SELinux in particular).
We're working on bringing up these components on ARM64.
================================================
FILE: attic/community-meetings/2021-06-08.md
================================================
# Flatcar community call Tuesday, 8th of June, 17:30 CEST
- [Slide deck](2021-06-08-slides.pdf)
- Youtube recording: [https://www.youtube.com/watch?v=cZ4o-ZD6r10&t=235s](https://www.youtube.com/watch?v=cZ4o-ZD6r10&t=235s)
## Welcome
- Brief intro / check-in of all participants in the Zoom call. Please introduce yourself and share what brings you here today.
- Review the meeting agenda.
## Spotlight: Nebraska update server
- Brief presentation of Flatcar’s open source update server.
## Spotlight: Nightlies, Tests, and Releases
- Brief presentation of Flatcar’s test and releases process.
## Status update: ARM64
- What’s done, what’s missing, and how to help.
## Releases review & planning
- We share details of the May 19th release, some bumps encountered.
- We plan the next releases, including new features, bug fixes, and related PRs.
## Q&A
- Questions from community participants, answered by the Flatcar maintainers.
# Call Minutes
As usual, the meeting minutes will be added here after the call.
[tbd.]
## Q&A
No questions this time.
================================================
FILE: attic/community-meetings/2021-07-13.md
================================================
# Agenda for the Flatcar community call on Tuesday, 13th of July, 17:30 CEST
## Links for participants
- [Slide deck](2021-07-13-slides.pdf)
- Youtube live stream link (for passively watching): [http://www.youtube.com/watch?v=jcwH4ZTrXnk](http://www.youtube.com/watch?v=jcwH4ZTrXnk)
## Welcome
- Brief intro / check-in of all participants in the Zoom call. Please introduce yourself and share what brings you here today.
- Review the meeting agenda.
## Spotlight: Flatcar Release Process
- We will be talking about the Flatcar Release Process and Planning.
## Status update: ARM64
- List of release tests that fail
- Deep dive into selected test failures
## NEW: Release planning
- Introducing our public release planning board
- Items to be in the release of the week of July 21st
- Community input wanted for upcoming releases!
## Q&A
- Questions from community participants, answered by the Flatcar maintainers.
# Call Minutes
1. Sayan introduces agenda for today:
- Flatcar releases
- Arm updates
- Flatcar release planning
- QA
2. Flatcar team introduce themselves: Sayan, Jeremi, Kai, Marga, William, Danielle (program manager for ARM support for Flatcar)
3. Kai talks about Flatcar Release Process
- In contrast to regular distros, releases are not just bi-yearly but more frequent
- Update granularity is whole image, not single packages
- Releases are based on package updates, open PRs that are ready, and critical security fixes
- Build is performed on private Jenkins instance, from scratch
- Flatcar test suite runs on PRs
- Big test run right before a release may uncover issues not found during development
- Each release is signed and gets uploaded to our website and all supported cloud providers
- Release planning happens every two weeks: review pending PRs and see if they can be fast tracked into the release
- Release planning board has been made public today (https://github.com/orgs/kinvolk/projects/15) 😊 Community input is welcome!
- Build/Test:
- New SDK is produced on alpha release
- Update signature is always cryptographically verified
- Nightlies: packages from nightly builds can be consumed by SDK
- Planned improvements to the CI process
- Setting up a community accessible CI system (Concourse maybe)
- Setting up automatic CI for PRs
- Making release scripts independent of Jenkins and making it possible to build releases on dev machines
4. William talks about state of ARM64:
- William lists failing test cases
- A lot of test cases seem to be failing due to similar root causes, we hope the community can help investigate
- Ongoing work in the ARM64 stream:
- Polkit depends on spidermonkey, but spidermonkey is complex for cross-compilation and ARM64
- We are going to replace spidermonkey with duktape like others in open source community have done
- Help welcome! Find us on Matrix/IRC "wrl"
5. Sayan talks about recent releases:
- Alpha 2920.0.0, Beta 2905.1.0
- There will be monthly community call for release planning and a smaller bi-weekly to check progress
- Sayan introduces the planning board (https://github.com/orgs/kinvolk/projects/15)
- Columns for planned/in-progress/ready-for-review and items-completed for the closest update of alpha (and bumps of the other release channels).
## Q&A
* Q (Adam): migrated from CoreOS to Flatcar for hosting bioinformatics workloads on Kubernetes. Hitting limits on ignition file sizes on AWS (16K), wondering about possibility of using compression to buy some more time (ignition v3). Is ignition the right thing to use, plans for upgrade (flatcar is currently on v2)?
* A (Kai): Probably will upgrade to v3 at some point, but keep v2 support unlike upstream. For the AWS issue, recommend fetching bigger ignition payloads from S3, is secured by IAM.
* Q (Adam): what's the practical difference between cloud-config vs. Ignition. If cloud-config works for us, should we still migrate?
* A (Kai): differences: ignition runs during initramfs, before systemd from rootfs starts, allowing more customization and potentially sparing users from a reboot. Also ignition runs once and not on every boot. Coreos-cloudconfig is an independent Go implementation of the Python cloudconfig found in Ubuntu. It’s not actively developed but will stick around.
================================================
FILE: attic/community-meetings/2021-07-26.md
================================================
# Agenda for the Flatcar Release Planning call on Monday, 26th of July, 17:30 CEST
## Links for participants
- Call (for actively participating): [https://zoom.us/j/99741357880](https://zoom.us/j/99741357880)
- Youtube live stream link (for passively watching): https://www.youtube.com/watch?v=SM4lfaITzsI
- Release Planning Board: [https://github.com/orgs/kinvolk/projects/15](https://github.com/orgs/kinvolk/projects/15)
## Welcome
- Brief introduction of new participants or attendees
- Status of the previous Flatcar Release
- Planning for the upcoming release for the week of August 2nd.
## Q&A
- Questions from community participants, answered by the Flatcar maintainers.
# Call Minutes
As usual, the meeting minutes will be added here after the call.
================================================
FILE: attic/community-meetings/2021-08-10.md
================================================
# Flatcar community call Tuesday, 10th of August, 5:30 pm CEST
- [Slide deck](2021-08-10-slides.pdf)
- Youtube recording: [https://www.youtube.com/watch?v=Hy34rw7kax8](https://www.youtube.com/watch?v=Hy34rw7kax8)
## Welcome
- Brief intro / check-in of all participants in the Zoom call. Please introduce yourself and share what brings you here today.
- Review the meeting agenda.
## News
- New section! We will discuss news and happenings in the Flatcar world, including how the team handled issues recently with Cilium interoperability and an image availability failure.
## Spotlight: Docker 20.10 / cgroups v2 update
- Docker 20 and CGroups v2 (unified mode) are coming to Flatcar Linux! We'll give an overview of the challenges and the implications, as well as discuss the timeline.
## Spotlight community committer: contributing to Flatcar
- What it took Aniruddha to contribute to Flatcar and solve the locksmith reboot issue.
## Status update: ARM64
- What’s done, what’s missing, and how to help.
## Releases review & planning
- Update from our planning for the next releases, including new features, bug fixes, and related PRs.
## Q&A
- Questions from community participants, answered by the Flatcar maintainers.
================================================
FILE: attic/community-meetings/2021-08-23.md
================================================
# Agenda for the Flatcar Release Planning call on Monday, August of 23rd, 17:30 CEST
## Links for participants
- Call (for actively participating): [https://us06web.zoom.us/j/85781192057](https://us06web.zoom.us/j/85781192057)
- Youtube live stream link (for passively watching): http://www.youtube.com/watch?v=TfmiNy5020g
- Release Planning Board: [https://github.com/orgs/kinvolk/projects/15](https://github.com/orgs/kinvolk/projects/15)
## Welcome
- Brief introduction of new participants or attendees
- Status of the previous Flatcar Release
- Planning for the upcoming release for the week of August 30th.
## Q&A
- Questions from community participants, answered by the Flatcar maintainers.
================================================
FILE: attic/community-meetings/2021-09-14.md
================================================
# Flatcar community call Tuesday, 14th of September, 5:30pm CEST / 9pm IST / 3:30pm GMT / 11:30am EDT / 8:30am PST
- [Slide deck](2021-09-14-slides.pdf)
- Youtube recording: http://www.youtube.com/watch?v=9YxsZYyQrkA
## Welcome
- Brief intro / check-in of all participants in the Zoom call. Please introduce yourself and share what brings you here today.
## News
- We will discuss news and happenings in the Flatcar world, including our move out of the Kinvolk github org / website back into our own, features coming to the Flatcar community release images, and the results of our recent user survey.
## Spotlight: Equinix Metal's use of Flatcar Container Linux
- Andy Holtzmann [@andy-v-h](https://github.com/andy-v-h) gives an introduction on EM's use of Flatcar.
## Status update: ARM64
- Progress made, remaining items, and next steps.
- Ed Vielmetti [@vielmetti](https://github.com/vielmetti) shares information on the "Works on ARM" project at Equinix Metal, inclunding hardware available today and in the near future.
## Releases review & planning (updated section!)
- We'll wrap up changes for the upcoming release (week of September 20) and will plan items we aim to integrate for the release after that (week of October 4th).
## Q&A
- Questions from community participants, answered by the Flatcar maintainers.
================================================
FILE: attic/community-meetings/2021-09-28.md
================================================
# Agenda for the Flatcar Release Team call on Tuesday, September 28th, 5:30pm CEST / 9pm IST / 3:30pm GMT / 11:30am EDT / 8:30am PST
## Links for participants
* Zoom link: [https://us06web.zoom.us/j/82054240491](https://us06web.zoom.us/j/82054240491)
* Meeting ID: 843 3611 6610
* Passcode: 444888
- Youtube live stream / recording: [https://www.youtube.com/watch?v=XbkHZMJlC8g](https://www.youtube.com/watch?v=XbkHZMJlC8g)
- Release Planning Board: [https://github.com/orgs/flatcar-linux/projects/5](https://github.com/orgs/flatcar-linux/projects/5)
## Welcome
- Brief introduction of new participants or attendees
- Status of the previous Flatcar Release
- Status/Planning for the release for the week of October 4th
- Planning for the release for the week of October 18th
## Q&A
- Questions from community participants, answered by the Flatcar maintainers.
================================================
FILE: attic/community-meetings/2021-10-19.md
================================================
# Flatcar community call Tuesday, 19th of October, 5:30pm CEST / 9pm IST / 3:30pm GMT / 11:30am EDT / 8:30am PST
- [Slide deck](2021-10-11-slides.pdf)
- Youtube recording: [https://www.youtube.com/watch?v=YP9HnYxepVo](https://www.youtube.com/watch?v=YP9HnYxepVo)
## Welcome
- Brief intro / check-in of all participants in the Zoom call. Please introduce yourself and share what brings you here today.
## News
- We will discuss news and happenings in the Flatcar world.
- We will elaborate on recent issues with our CI infrastructure, and repercussions for people using the SDK or the developer container.
- Today's call won't have a release planning section (there's a dedicated release planning coming up right next week).
- We're participating in [Hacktoberfest](https://hacktoberfest.digitalocean.com/), your contribution to a Flatcar repo will count!
## Spotlight: Flatcar dev mini-projects
- Support for Ignition v3
- Flog, the automated changelog generator
- SDK container
## Status update: ARM64
- Progress made, remaining items, and next steps.
## Q&A
- Questions from community participants, answered by the Flatcar maintainers.
================================================
FILE: attic/community-meetings/2021-10-26.md
================================================
# Agenda for the Flatcar Release Team call on Tuesday, October 26th, 5:30pm CEST / 9pm IST / 3:30pm GMT / 11:30am EDT / 8:30am PST
## Links for participants
- Zoom link: [https://us06web.zoom.us/j/82054240491](https://us06web.zoom.us/j/82054240491)
- Meeting ID: 820 5424 0491
- Passcode: 444888
- Youtube live stream / recording: [https://www.youtube.com/watch?v=xh-MkIoZvVw](https://www.youtube.com/watch?v=xh-MkIoZvVw)
- Release Planning Board: [https://github.com/orgs/flatcar-linux/projects/5](https://github.com/orgs/flatcar-linux/projects/5)
## Welcome
- Brief introduction of new participants or attendees
- Status of the previous Flatcar Release
- Status/Planning for the release for the week of November 1st
- Planning for the release for the week of November 15th
## Q&A
- Questions from community participants, answered by the Flatcar maintainers.
================================================
FILE: attic/community-meetings/2021-11-09.md
================================================
# Flatcar community call Tuesday, 9th of November, 5:30pm CET / 10pm IST / 4:30pm GMT / 11:30am EST / 8:30am PST
- Zoom link: [https://us06web.zoom.us/j/84336116610](https://us06web.zoom.us/j/84336116610)
- Meeting ID: 843 3611 6610
- Passcode: 444888
- Youtube live stream / recording: https://www.youtube.com/watch?v=5XCgOByOSeQ
- Community Calls calendar (all future calls): [link](https://calendar.google.com/calendar/u/0/embed?src=c_ii991mqrpta9en8o7ofd4v19g4@group.calendar.google.com)
- iCal version: [link](https://calendar.google.com/calendar/ical/c_ii991mqrpta9en8o7ofd4v19g4%40group.calendar.google.com/public/basic.ics)
## Welcome
- Brief intro / check-in of all participants in the Zoom call. Please introduce yourself and share what brings you here today.
## News
- We will discuss news and happenings in the Flatcar world.
- CGroups V2 are coming to stable
- ARM64 goes beta
## Spotlight: Flatcar dev mini-projects
- OpenSSL 3.0 in Alpha-3046.0.0 FIPS provider showcase
- ignition-as-a-service: online ignition transpiler
- Flatcar on Firecracker hack + demo
## Status update: ARM64
- Progress made, next steps, and path to stable.
## Release planning
- Status/Planning for the release for the week of November 15th
- Planning for the release for the week of November 29th
## Q&A
- Questions from community participants, answered by the Flatcar maintainers - e.g. feedback on the new Stable release w/ cgroups v2.
================================================
FILE: attic/community-meetings/2021-11-23.md
================================================
# Agenda for the Flatcar Release Team call on Tuesday, 23rd of November 5:30pm CET / 10pm IST / 4:30pm GMT / 11:30am EST / 8:30am PST
## Links for participants
- Zoom link: [https://us06web.zoom.us/j/82054240491](https://us06web.zoom.us/j/82054240491)
- Meeting ID: 820 5424 0491
- Passcode: 444888
- Youtube live stream / recording: [https://www.youtube.com/watch?v=VUzMuZgFQfY](https://www.youtube.com/watch?v=VUzMuZgFQfY)
- Release Planning Board: [https://github.com/orgs/flatcar-linux/projects/5](https://github.com/orgs/flatcar-linux/projects/5)
## Welcome
- Brief introduction of new participants or attendees
- Status of the previous Flatcar Release
- Status/Planning for the release for the week of November 29th
- Planning for the release for the week of December 13th
## Q&A
- Questions from community participants, answered by the Flatcar maintainers.
================================================
FILE: attic/community-meetings/2021-12-17.md
================================================
# Agenda for the Flatcar community call on Friday, 17th of December 5:30pm CET / 10pm IST / 4:30pm GMT / 11:30am EST / 8:30am PST
- [Slide deck](2021-12-17-slides.pdf)
- Youtube recording: [https://www.youtube.com/watch?v=1YsY9XEtF7Q](https://www.youtube.com/watch?v=1YsY9XEtF7Q)
## Welcome
- Brief intro / check-in of all participants in the Zoom call. Please introduce yourself and share what brings you here today.
## News
- We will discuss news and happenings in the Flatcar world.
- ARM64 goes stable
- Flatcar CAPI support with CAPI release 1.1
## Q&A
- Questions from community participants, answered by the Flatcar maintainers
================================================
FILE: attic/community-meetings/2022-01-11.md
================================================
# Agenda for the Flatcar community call on Tuesday, 11th of January 5:30pm CET / 10pm IST / 4:30pm GMT / 11:30am EST / 8:30am PST
- Zoom link: [https://us06web.zoom.us/j/84336116610](https://us06web.zoom.us/j/84336116610)
- Meeting ID: 843 3611 6610
- Passcode: 444888
- Youtube live stream / recording: [link](https://www.youtube.com/watch?v=X_nqgXLOmLk)
- [Slide deck](2022-01-11-slides.pdf)
- Community Calls calendar (all future calls): [link](https://calendar.google.com/calendar/u/0/embed?src=c_ii991mqrpta9en8o7ofd4v19g4@group.calendar.google.com)
- iCal version: [link](https://calendar.google.com/calendar/ical/c_ii991mqrpta9en8o7ofd4v19g4%40group.calendar.google.com/public/basic.ics)
## Welcome
- Brief intro / check-in of all participants in the Zoom call. Please introduce yourself and share what brings you here today.
## News
- 5.15 Kernel in Alpha
- upcoming FOSDEM devroom talks overview
## Spotlight
- 2021 recap - cgroupsv2, systemd updates, docker 20, ARM64
- Flatcar on Raspberry Pi blog
- Fleetlock (@aniruddha2000, @tormath1 )
## Release planning
- Ongoing and upcoming releases (https://github.com/orgs/flatcar-linux/projects/5)
## Q&A
- Questions from community participants, answered by the Flatcar maintainers
================================================
FILE: attic/community-meetings/README.md
================================================
# Old-style community meeting agendas and presentation slides
Community meeting planning / agendas has moved to [Github discussions](../../../../discussions/categories/community-meeting-agenda)
This section in the attic contains agenda markdown files of "old style" Flatcar community calls where the agenda was agreed on in a PR instead of a github discussion.
Also archived here are slide decks used in these meetings.
================================================
FILE: governance.md
================================================
# Flatcar Project Governance
Flatcar is a community based project, anyone who wants to participate is welcomed.
We adopted the [CNCF code of Conduct](./CODE_OF_CONDUCT.md) as we pledge to be an opening and welcoming community for anyone who want to participate in it.
The project is governed by a flat hierarchy - a group of people sharing a common vision of Flatcar in accordance to its mission statement.
This goverance explains how the project is run.
- [Values](#values)
- [Maintainers](#maintainers)
- [Becoming a Maintainer](#becoming-a-maintainer)
- [Meetings](#meetings)
- [CNCF Resources](#cncf-resources)
- [Code of Conduct Enforcement](#code-of-conduct)
- [Security Response Team](#security-response-team)
- [Voting](#voting)
- [Modifications](#modifying-this-charter)
## Values
The Flatcar project, its leadership, and its maintainers embrace the following values:
* Openness: Communication and decision-making happens in the open and is discoverable for future
reference. As much as possible, all discussions and work take place in public
forums and open repositories.
* Fairness: All stakeholders have the opportunity to provide feedback and submit
contributions, which will be considered on their merits.
* Community over Product or Company: Sustaining and growing our community takes
priority over shipping code or sponsors' organizational goals. Each
contributor participates in the project as an individual.
* Inclusivity: We innovate through different perspectives and skill sets, which
can only be accomplished in a welcoming and respectful environment.
* Participation: Responsibilities within the project are earned through
participation, and there is a clear path up the contributor ladder into leadership
positions.
## Maintainers
Flatcar Maintainers have full access to most of the repositories in the [Flatcar project](https://github.com/orgs/flatcar/), except for very few repositories that contain sensitive information, e.g. for with undisclosed security issues (see [SECURITY.md](./SECURITY.md) for more information).
Maintainers can merge PRs, approve PR builds+tests, and create and publish releases.
Maintainers collectively manage the project's resources, interact with contributors, elect new maintainers, and remove inactive ones.
The current list of maintainers can be found in [MAINTAINERS.md](./MAINTAINERS.md). Most maintainer access privileges are granted via membership of the Flatcar Github organisation's [Flatcar Maintainers team](https://github.com/orgs/flatcar/teams/flatcar-maintainers).
This privilege is granted with some expectation of responsibility: maintainers
are people who care about the Flatcar project and want to help it grow and
improve. A maintainer is not just someone who can make changes, but someone who
has demonstrated their ability to collaborate with the team, get the most
knowledgeable people to review code and docs, contribute high-quality code, and
follow through to fix issues (in code or tests).
A maintainer is a contributor to the project's success and a citizen helping
the project succeed.
The collective team of all Maintainers is known as the Maintainer Council, which
is the governing body for the project.
### Becoming a Maintainer
Maintainers are active community members who are responsible for the overall quality and stewardship of the project, and are expected to remain actively involved in the project and participate in voting and discussing of proposed project level changes.
Anyone with an established track record of contributions to the project can become a maintainer.
The contributions are expected to be substantial, and must demonstrate a commitment to the long-term success of the project.
Maintainership is not limited to engineering / development merits; all contributions - e.g. working with issues, providing guidance and feedback to users, reviewing PRs, contributing to docs, evangelising Flatcar - count.
Becoming a maintainer is about building trust with the current maintainers of the project and being a person that they can depend on to make decisions in the best interest of the project in a consistent manner.
Maintainer candidates should have demonstrated they:
- Collaborate well.
- Have a deep and comprehensive understanding of the Flatcar code base, technical goals, and directions.
- Actively engage with major Flatcar feature proposals and implementations.
The Flatcar project welcomes both development as well as community-focuses contributions.
To gain maintainership, the following is expected:
* commitment to the project's continued success:
* participate in discussions, contributions, code and documentation reviews for 6 months or more,
* actively evangelise Flatcar in at least 20 talks/presentations at 10 different conferences or meetups
* organise and chair at least 15 maintainer events, e.g. bug fixing or doc writing days, with at least 5 maintainers participating each event
* Contribute to the project's development
* perform reviews for 30 non-trivial pull requests,
* contribute 10 non-trivial pull requests and have them merged,
* ability to write quality code and/or documentation,
* ability to collaborate with the team,
* demonstrated understanding of how the team works (policies, processes for testing and code review, etc),
* understanding of the project's code base and coding and / or documentation style.
Periodically, the existing maintainers curate a list of contributors that have shown regular activity on the project over the prior months.
The nominating maintainer will create a PR to update the Maintainers List.
It is recommended to describe the reasons for the nomination and the contribution of the nominee in the PR.
Upon consensus of incumbent maintainers, the PR will be approved and the new maintainer becomes active.
Maintainers who are selected will be granted the necessary GitHub rights.
### Removing a Maintainer
Life priorities, interests, and passions can change.
If you're a maintainer but feel you must remove yourself from the list, inform other maintainers that you intend to step down, and if possible, help find someone to pick up your work.
At the very least, ensure your work can be continued where you left off.
After you've informed other maintainers, create a pull request to remove yourself from the [MAINTAINERS](MAINTAINERS.md) file.
If applicable, include a change to [EMERITUS_MAINTAINERS](EMERITUS_MAINTAINERS.md) to add yourself to the list of emeritus maintainers.
This will ease your return to active maintainership in the future.
Maintainers may also be removed after being inactive, failure to fulfill their
Maintainer responsibilities, violating the Code of Conduct, or other reasons.
Inactivity is defined as a period of very low or no activity in the project
for a year or more, with no definite schedule to return to full Maintainer
activity.
A Maintainer may be removed at any time by a 2/3 vote of the remaining maintainers.
Depending on the reason for removal, a Maintainer may be converted to Emeritus
status. Emeritus Maintainers will still be consulted on some project matters,
and can be rapidly returned to Maintainer status if their availability changes.
## Meetings
Time zones permitting, Maintainers are expected to participate in the Flatcar Developer Syncs meeting every 4th Wednesday of a month.
The meeting time observes the Universal Coordinated time. It occurs at 2:30pm UTC.
Depending on your local timezone, the slot might be subject to summer time changes.
* During daylight saving time, the meeting occurs at 8pm IST (IST does not observe daylight saving time) / 4:30pm CEST / 10:30am EDT / 7:30am PST.
* Outside of daylight saving time, the meeting occurs at 8pm IST / 3:30pm CET / 9:30am EST / 6:30am PST.
A calendar is available to ease planning. The calendar contains Developer syncs, project office hours, and one-off events like bug fixing or doc writing days.
* Google calendar link: https://calendar.google.com/calendar/u/0/embed?src=c_ii991mqrpta9en8o7ofd4v19g4@group.calendar.google.com
* iCal link (for importing): https://calendar.google.com/calendar/ical/c_ii991mqrpta9en8o7ofd4v19g4%40group.calendar.google.com/public/basic.ics
Maintainers will also have closed meetings in order to discuss security reports
or Code of Conduct violations. Such meetings should be scheduled by any
Maintainer on receipt of a security issue or CoC report. All current Maintainers
must be invited to such closed meetings, except for any Maintainer who is
accused of a CoC violation.
## CNCF Resources
Any Maintainer may suggest a request for CNCF resources during a
meeting. A simple majority of Maintainers approves the request. The Maintainers
may also choose to delegate working with the CNCF to non-Maintainer community
members, who will then be added to the [CNCF's Maintainer List](https://github.com/cncf/foundation/blob/main/project-maintainers.csv)
for that purpose.
## Code of Conduct
[Code of Conduct](./code-of-conduct.md)
violations by community members will be discussed and resolved
on the [private Maintainer mailing list](maintainers@flatcar-linux.org). If a Maintainer is directly involved
in the report, the Maintainers will instead designate two Maintainers to work
with the CNCF Code of Conduct Committee in resolving it.
## Security Response Team
The Maintainers will appoint a Security Response Team to handle security reports.
This committee is a sub-set of the Maintainer Council with full access to undisclosed security issues tracked by the project.
Members of the Security Response team as well as respective access permissions to sensitive data are administrated via membership in the [Flatcar Github organisation's Security team](https://github.com/orgs/flatcar/teams/flatcar-security-team).
The Maintainers will review who is assigned to this at least once a year.
The Security Response Team is responsible for handling all reports of security
issues and breaches according to the [security policy](./SECURITY.md).
## Voting
While most business in Flatcar is conducted by "[lazy consensus](https://community.apache.org/committers/lazyConsensus.html)",
periodically the Maintainers may need to vote on specific actions or changes.
A vote can be taken on
[the private Maintainer mailing list](maintainers@flatcar-linux.org) for security or conduct matters.
Votes may also be taken at [Flatcar Developer Syncs meetings](https://meet.flatcar.org/OfficeHours). Any Maintainer may
demand a vote be taken.
Most votes require a simple majority of all Maintainers to succeed, except where
otherwise noted. Two-thirds majority votes mean at least two-thirds of all
existing maintainers.
## Modifying this Charter
Changes to this Governance and its supporting documents may be approved by
a 2/3 vote of the Maintainers.
================================================
FILE: interop-matrix.md
================================================
# Flatcar inter-operation matrix
This document tracks Flatcar inter-operability across environments.
Ownership of an item implies ensuring test coverage in release tests of official Flatcar releases (L2 and above) as well as handling bugs and feature requests that affect the respective environment specifically.
Please propose ownership by filing a PR for this document.
## Public cloud (machines)
| Environment | Full-Feature (release blocker) | Works | Tested (CI) | Owner | Reference (e.g. GH issue) | Notes |
|-------------|--------------------------------|-------|-------------|-------|---------------------------|-------|
| EC2 | Partial | X | X | @flatcar/flatcar-maintainers | | IAM 2.0 support missing |
| Azure | X | X | X | @flatcar/flatcar-maintainers | | |
| GCE | X | X | X | @flatcar/flatcar-maintainers | | |
| Digital Ocean (VMs) | X | X | X | @flatcar/flatcar-maintainers | | |
| Equinix Metal | X | X | X | @flatcar/flatcar-maintainers | | |
| ESXi / vSphere | X | X | X | @flatcar/flatcar-maintainers | | |
| Hetzner Cloud | | X | | [no owner] | | |
| Vultr VPS | | X | | [no owner] | | |
| Cloudscale | | X | | [no owner] | | |
| Oracle Cloud | | X | | [no owner] | | Bring-your-own-image on OCI VMs; install via Ubuntu on OCI bare metal |
| Tencent | | | | [no owner] | | |
| AliCloud | | | | [no owner] | | |
| Yandex | | | | [no owner] | | |
| Brightbox | X | X | X | @flatcar/flatcar-maintainers | | |
## Private Cloud (machines)
| Environment | Full-Feature (release blocker) | Works | Tested (CI) | Owner | Reference (e.g. GH issue) | Notes |
|-------------|--------------------------------|-------|-------------|-------|---------------------------|-------|
| Azure Stack | | w/ caveat | | [no owner] | | controller node not supported on Flatcar (cloud-init feature missing) |
| Tinkerbell | | X | | [no owner] | | |
| Rancher (VMs) | | X | | [no owner] | | |
| QEmu / KVM backed | X | X | X | @flatcar/flatcar-maintainers | | |
| OpenStack | X | X | X | @flatcar/flatcar-maintainers | | |
| VirtualBox | | X | | [no owner] | | |
| Vagrant | | X | | [no owner] | | Isn't this plain qemu/kvm? |
## Managed Kubernetes
| Environment | Full-Feature (release blocker) | Works | Tested (CI) | Owner | Reference (e.g. GH issue) | Notes |
|-------------|--------------------------------|-------|-------------|-------|---------------------------|-------|
| EKS | | X | | [no owner] | | |
| GiantSwarm | | X | | Provider | | |
## Cluster API
| Environment | Full-Feature (release blocker) | Works | Tested (CI) | Owner | Reference (e.g. GH issue) | Notes |
|-------------|--------------------------------|-------|-------------|-------|---------------------------|-------|
| CAPB | X | X | X (upstream) | Upstream | | Covered by CAPB release tests |
| CAPA | X | X | X (upstream) | Upstream | | Covered by CAPA release tests |
| CAPA EKS | | | | [no owner] | | |
| CAPZ | | w/ caveat | | @flatcar/flatcar-maintainers | | WIP Prototype |
| CAPV | | [no owner] | | | |
| CAPM3 | | [no owner] | | | |
| CAPG | | [no owner] | | | |
| CAPO | | X | X (upstream) | Upstream | | |
## Kubernetes Distros
| Environment | Full-Feature (release blocker) | Works | Tested (CI) | Owner | Reference (e.g. GH issue) | Notes |
|-------------|--------------------------------|-------|-------------|-------|---------------------------|-------|
| AKS Engine | | X | | [no owner] | | https://kinvolk.io/blog/2020/12/supercharging-aks-engine-with-flatcar-container-linux/ |
| Rancher (rke) | | X | | [no owner] | | |
| Rancher (rke2) | | | | [no owner] | | |
| Lokomotive | X | X | X | @kinvolk/lokomotive-developers | | |
| Tanzu KG | | X | | [no owner] | | |
| K3s | | X | | [no owner] | | |
| EKS-Distro | | X | | [no owner] | | |
| KOPS | | X | | upstream | | |
| Kubematic | | X | | [no owner] | | |
| Gardener | | X | | [no owner] | | |
## Other
Please add below what does not fit into any of the categories above.
| Environment | Full-Feature (release blocker) | Works | Tested (CI) | Owner | Reference (e.g. GH issue) | Notes |
|-------------|--------------------------------|-------|-------------|-------|---------------------------|-------|
| | | | | | | |
================================================
FILE: sync-maintainers/README
================================================
A personal access token with public_repo scope is needed.
Usage:
```
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
./sync-maintainers.py list
./sync-maintainers.py repo --repo=REPONAME
GITHUB_TOKEN=... ./sync-maintainers github --repo=REPONAME
```
================================================
FILE: sync-maintainers/requirements.txt
================================================
requests
black
================================================
FILE: sync-maintainers/sync-maintainers.py
================================================
#!/usr/bin/env python3
import requests
import json
import subprocess
import os
import sys
import argparse
def parse(m):
para = []
repos = []
while len(m):
line = m.pop(0)
if line == "# Maintainers":
line = m.pop(0)
while not line.startswith("#"):
para.append(line)
line = m.pop(0)
if line.startswith("###"):
repo = line.split("### ")[1].strip()
maint = []
m.pop(0) # maintainers:
line = m.pop(0)
while line.startswith("* "):
maint.append(line)
line = m.pop(0) if len(m) else ""
if repo != "Flatcar":
repos.append((repo, maint))
return para, repos
MAINTAINERS_TEMPLATE = """# Maintainers
{maintainers}
{paragraph}
The contents of this file are synchronized from [Flatcar/MAINTAINERS.md](https://github.com/flatcar/Flatcar/blob/main/MAINTAINERS.md).
"""
def write_maintainers_file(repo_name, paragraph, maintainers):
maintainers_entry = "\n".join(maintainers)
maintainers_content = MAINTAINERS_TEMPLATE.format(
maintainers=maintainers_entry, paragraph=paragraph
)
repo_filename = f"{repo_name}/MAINTAINERS.md"
with open(repo_filename, "w") as f:
f.write(maintainers_content)
BRANCH_NAME = "sync-maintainers"
def checkout_branch(repo_name):
return subprocess.run(
["git", "-C", repo_name, "checkout", "-B", BRANCH_NAME, "origin/HEAD"],
check=True,
)
def commit(repo_name):
subprocess.run(["git", "-C", repo_name, "add", "MAINTAINERS.md"], check=True)
subprocess.run(
[
"git",
"-C",
repo_name,
"commit",
"-m",
"Sync maintainers file from flatcar/flatcar repository",
],
check=True,
)
def push(repo_name):
subprocess.run(
["git", "-C", repo_name, "push", "--force", "origin", BRANCH_NAME], check=True
)
def parse_maintainers(repo=None):
maint_file = "../MAINTAINERS.md"
with open(maint_file) as f:
m = f.read().splitlines()
para, repos = parse(m)
paragraph = "\n".join(para).strip()
if repo:
repos = [r for r in repos if r[0] == repo]
return repos, paragraph
def main_repo(args):
repos, paragraph = parse_maintainers(args.repo)
for (repo_name, maintainers) in repos:
repo_url = f"git@github.com:flatcar/{repo_name}"
subprocess.run(["git", "clone", "--depth=1", repo_url])
checkout_branch(repo_name)
write_maintainers_file(repo_name, paragraph, maintainers)
commit(repo_name)
push(repo_name)
def prepare_req(repo, token, api):
api = "/" + api if api else ""
url = f"https://api.github.com/repos/flatcar/{repo}{api}"
headers = {
"Accept": "application/vnd.github+json",
f"Authorization": "Bearer {token}",
}
return url, headers
def get_pr(repo, token):
url, headers = prepare_req(repo, token, "pulls")
params = {"state": "open", "head": f"flatcar:{BRANCH_NAME}"}
return requests.get(url, headers=headers, params=params)
def get_default_branch(repo, token):
url, headers = prepare_req(repo, token, "")
resp = requests.get(url, headers=headers).json()
return resp["default_branch"]
def create_pr(repo, token, base):
url, headers = prepare_req(repo, token, "pulls")
data = {
"title": "Sync MAINTAINERS.md",
"head": f"flatcar:{BRANCH_NAME}",
"base": base,
}
return requests.post(url, headers=headers, json=data)
def update_assignees(repo, token, pr, assignees):
url, headers = prepare_req(repo, token, f"pulls/{pr}/requested_reviewers")
data = {"reviewers": assignees}
return requests.post(url, headers=headers, json=data)
def get_assignees(maintainers):
assignees = [e.split("@")[1] for e in maintainers]
return assignees
def main_github(args):
token = os.getenv("GITHUB_TOKEN")
if not token:
raise Exception("Missing GITHUB_TOKEN env variable")
repos, _ = parse_maintainers(args.repo)
for (repo_name, maintainers) in repos:
pr = get_pr(repo_name, token).json()
if not pr:
print(f"{repo_name} creating pr")
base = get_default_branch(repo_name, token)
pr = [create_pr(repo_name, token, base).json()]
prnum = pr[0]["number"]
assignees = get_assignees(maintainers)
resp = update_assignees(repo_name, token, prnum, assignees)
if resp.status_code != 201:
print(resp.json())
else:
print("{repo_name} ok")
def main_list(args):
repos, _ = parse_maintainers()
for (repo_name, _) in repos:
print(repo_name)
parser = argparse.ArgumentParser(prog="sync-maintainers.py")
subparser = parser.add_subparsers(required=True, dest="cmd")
parser_repo = subparser.add_parser("repo", help="perform git repository operations")
parser_repo.add_argument("--repo", help="Repository to operate on; default all")
parser_repo.set_defaults(func=main_repo)
parser_github = subparser.add_parser(
"github", help="perform github pull request operations"
)
parser_github.add_argument("--repo", help="Repository to operate on; default all")
parser_github.set_defaults(func=main_github)
parser_list = subparser.add_parser("list", help="list all repositories with entries")
parser_list.set_defaults(func=main_list)
if __name__ == "__main__":
args = parser.parse_args()
args.func(args)