Compare commits

...

25 Commits

Author SHA1 Message Date
0272945ca2 fix: "--only" option in "hardening.sh"
"--only" was broken, it did not match correctly a script passed in only

Previously we were checking the numerotation number, we now are using the full script name.

Ex: 1.1.1.1_disable_freevxfs.sh

Previously: (broken) look up for 1\.1\.1\.1, which could also match 1.1.1.1.1.1.1.1_foo.sh
Now: look up for 1.1.1.1_disable_freevxfs.sh

Usage example:
previously:
```
bin/hardening.sh --audit --only 1.1.10_var_tmp_noexec.sh --only 1.1.11.1_var_log_noexec.sh
      Total Available Checks : 0
         Total Runned Checks : 0
         Total Passed Checks : [     0/0 ]
         Total Failed Checks : [     0/0 ]
   Enabled Checks Percentage : 0 %
       Conformity Percentage : N.A %
```

now:
```
bin/hardening.sh --audit --only 1.1.10_var_tmp_noexec.sh --only 1.1.11.1_var_log_noexec.sh
hardening                 [INFO] Treating /opt/debian-cis/versions/default/1.1.10_var_tmp_noexec.sh
1.1.10_var_tmp_noexec     [INFO] Working on 1.1.10_var_tmp_noexec
1.1.10_var_tmp_noexec     [INFO] [DESCRIPTION] /var/tmp partition with noexec option.
1.1.10_var_tmp_noexec     [INFO] Checking Configuration
1.1.10_var_tmp_noexec     [INFO] Performing audit
1.1.10_var_tmp_noexec     [INFO] Verifying that /var/tmp is a partition
1.1.10_var_tmp_noexec     [ OK ] /var/tmp is a partition
1.1.10_var_tmp_noexec     [ OK ] /var/tmp has noexec in fstab
1.1.10_var_tmp_noexec     [ OK ] /var/tmp mounted with noexec
1.1.10_var_tmp_noexec     [ OK ] Check Passed
hardening                 [INFO] Treating /opt/debian-cis/versions/default/1.1.11.1_var_log_noexec.sh
1.1.11.1_var_log_noexec   [INFO] Working on 1.1.11.1_var_log_noexec
1.1.11.1_var_log_noexec   [INFO] [DESCRIPTION] /var/log partition with noexec option.
1.1.11.1_var_log_noexec   [INFO] Checking Configuration
1.1.11.1_var_log_noexec   [INFO] Performing audit
1.1.11.1_var_log_noexec   [INFO] Verifying that /var/log is a partition
1.1.11.1_var_log_noexec   [ OK ] /var/log is a partition
1.1.11.1_var_log_noexec   [ KO ] /var/log has no option noexec in fstab!
1.1.11.1_var_log_noexec   [ KO ] Check Failed
      Total Available Checks : 2
         Total Runned Checks : 2
         Total Passed Checks : [     1/2 ]
         Total Failed Checks : [     1/2 ]
   Enabled Checks Percentage : 100.00 %
       Conformity Percentage : 50.00 %
```
2025-07-02 10:55:11 +02:00
231db2bf93 fix: debian package does not include "versions" (#260)
Related to #259: https://github.com/ovh/debian-cis/issues/259

Co-authored-by: Damien Cavagnini <damien.cavagnini@corp.ovh.com>
2025-07-01 13:55:26 +02:00
be33848d81 Damcava35/set version (#257)
* feat: add "--set-version" option

This feature will allow to chose a specific cis version to run, like debian 11 or debian 12

* chore: configure current repository as a version

And use it as default version.

To this end, the scripts in bin/hardening have been made generic by removing the associated recommendation number.
Only impact is if you are used to execute scripts directly from bin/hardening.
In this case, please use the "bin/hardening.sh" wrapper as intended.

I had to rename 2.3.1_disable_nis.sh to uninstall_nis.sh, as it was conflicting with 2.3.1_disable_nis.sh

Also, there was a doublon between 1.1.1.8_disable_cramfs.sh and 99.1.1.1_disable_cramfs.sh ; the former was kept

* chore: remove CIS recommendation numbers from bin/hardening scripts

* fix: some tests are failing

find_ungrouped_files.sh and find_unowned_files.sh tests can not be executed multiple times:
- test repository is not cleaned
- configuration is updated multiple times

Those tests are also failing, because:
- the sed to change the status in the configuration was also changing the test folder path.
- missing /proc in EXCLUDED paths
- the EXCLUDED configuration doesn't have the correct format for egrep

---------

Co-authored-by: Damien Cavagnini <damien.cavagnini@corp.ovh.com>
2025-07-01 08:41:55 +02:00
99bc575714 Damcava35/test pre commit (#256)
* chore: make linter happy for existing code

* fix: add missing test 2.1.2_disable_bsd_intetd.sh

* feat: add basic pre commit

Ensure a check has a corresponding test

---------

Co-authored-by: Damien Cavagnini <damien.cavagnini@corp.ovh.com>
2025-06-23 10:23:43 +02:00
9a225c6157 build(deps): bump dev-drprasad/delete-tag-and-release from 1.0.1 to 1.1 (#238)
Bumps [dev-drprasad/delete-tag-and-release](https://github.com/dev-drprasad/delete-tag-and-release) from 1.0.1 to 1.1.
- [Release notes](https://github.com/dev-drprasad/delete-tag-and-release/releases)
- [Commits](https://github.com/dev-drprasad/delete-tag-and-release/compare/v1.0.1...v1.1)

---
updated-dependencies:
- dependency-name: dev-drprasad/delete-tag-and-release
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-10 17:47:36 +02:00
6079b16611 fix: invalid behavior on sid/alternative in 5.3.4/99.5.4.5.1 (#237) 2024-04-09 17:12:31 +02:00
f7cdf438d4 build(deps): bump metcalfc/changelog-generator from 4.2.0 to 4.3.1 (#234)
Bumps [metcalfc/changelog-generator](https://github.com/metcalfc/changelog-generator) from 4.2.0 to 4.3.1.
- [Release notes](https://github.com/metcalfc/changelog-generator/releases)
- [Changelog](https://github.com/metcalfc/changelog-generator/blob/main/release-notes.png)
- [Commits](https://github.com/metcalfc/changelog-generator/compare/v4.2.0...v4.3.1)

---
updated-dependencies:
- dependency-name: metcalfc/changelog-generator
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: GoldenKiwi <thibault.dewailly@corp.ovh.com>
2024-03-05 09:33:10 +01:00
43fc23ee40 fix: catch cidr network in ssh keys (#236)
Co-authored-by: Ismaël Tanguy <ismael.tanguy@ovhcloud.com>
2024-02-22 17:55:03 +01:00
3bd4078e70 fix: allow set-hardening-level option usage (#232)
Was broken since 2020, fixes #230
2024-02-01 17:09:35 +01:00
a45aa40ce4 bump to 4.1.4 2024-01-18 09:16:00 +00:00
730ab47437 allow multiple users in 5.2.18 (#228)
* allow multiple exception users for 99.5.2.4

* move clean up part of previous commit

* split clean up part of previous commit

* add tests for multiple allowed and denied ssh users

* fix script to correctly set multiple allowed and denied ssh users

* add cleanup resolved check to 5.2.18

* apply shellfmt to 5.2.18

---------

Co-authored-by: GoldenKiwi <thibault.dewailly@corp.ovh.com>
2024-01-10 17:07:02 +01:00
5313799193 Allow multiple exception users to be defined for 99.5.2.4_ssh_keys_from (#221)
* allow multiple exception users for 99.5.2.4
2023-12-27 13:42:10 +01:00
73616af4eb Syslog-ng fixes and enhancements (#226)
* syslog-ng : fix remote host test and enhance Regex

fixes #124

* enh: add test for 4.2.1.6
2023-12-27 10:27:06 +01:00
c391723fe5 fix: Allow --only option to be called multiple times (#225)
--only option was affected with a grep bug since 2017.
the regex was not able to parse more than the first passed argument.

fixes #224
2023-12-26 17:08:53 +01:00
71019a5512 fix: update Readme to clarify project usage (#223)
fixes: #219
2023-12-26 09:57:15 +01:00
fb4df82fc4 fix: typo in README. Update example of --audit usage (#222)
fixes #220
fixes #217
2023-12-26 09:19:55 +01:00
c75244e3b2 bump to 4.1.3 2023-11-28 10:34:12 +00:00
de295b3a77 Adapt all scripts to yescrypt (#216)
* Revert "fix: clean obsolete check 99.5.4.5.1, now handled by 5.3.4 (#215)"

This reverts commit 670c8c62f5.

We still want to verify the preexisting hashes in /etc/shadow,
even if the PAM configuration is correct for new passwords (5.3.4).

* Adapt 5.3.4, 99.5.4.5.1 and 99.5.4.5.2 to yescrypt
2023-11-21 17:43:31 +01:00
693487c3a5 build(deps): bump metcalfc/changelog-generator from 4.1.0 to 4.2.0 (#214)
Bumps [metcalfc/changelog-generator](https://github.com/metcalfc/changelog-generator) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/metcalfc/changelog-generator/releases)
- [Changelog](https://github.com/metcalfc/changelog-generator/blob/main/release-notes.png)
- [Commits](https://github.com/metcalfc/changelog-generator/compare/v4.1.0...v4.2.0)

---
updated-dependencies:
- dependency-name: metcalfc/changelog-generator
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: GoldenKiwi <thibault.dewailly@corp.ovh.com>
2023-11-14 15:44:50 +01:00
670c8c62f5 fix: clean obsolete check 99.5.4.5.1, now handled by 5.3.4 (#215)
Fixes #209
2023-11-14 12:03:58 +01:00
0eb2e2ffde enh: remove ssh system sandbox check (#213)
UsePrivilegeSeparation option is deprecated.
Since the oldest supported Debian distribution is Buster (10), we can safely remove this check

Fixes #212
2023-11-13 08:53:12 +01:00
d6c334182e build(deps): bump luizm/action-sh-checker from 0.7.0 to 0.8.0 (#210)
Bumps [luizm/action-sh-checker](https://github.com/luizm/action-sh-checker) from 0.7.0 to 0.8.0.
- [Release notes](https://github.com/luizm/action-sh-checker/releases)
- [Commits](https://github.com/luizm/action-sh-checker/compare/v0.7.0...v0.8.0)

---
updated-dependencies:
- dependency-name: luizm/action-sh-checker
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-10 15:05:25 +01:00
2188577fc9 feat: advertise Debian 12 compatibility in readme 2023-10-02 13:34:09 +00:00
0f59f73297 bump to 4.1.2 2023-10-02 13:17:31 +00:00
f888ce0d39 fix: root_dir is still /opt/cis-hardening for the moment (#208) 2023-10-02 14:50:52 +02:00
751 changed files with 1057 additions and 595 deletions

View File

@ -21,7 +21,7 @@ jobs:
find ../ -name "*.deb" -exec mv {} cis-hardening.deb \;
# DELETE THE TAG NAMED LATEST AND THE CORRESPONDING RELEASE
- name: Delete the tag latest and the release latest
uses: dev-drprasad/delete-tag-and-release@v1.0.1
uses: dev-drprasad/delete-tag-and-release@v1.1
with:
delete_release: true
tag_name: latest
@ -34,7 +34,7 @@ jobs:
# GENERATE CHANGELOG CORRESPONDING TO COMMIT BETWEEN HEAD AND COMPUTED LAST TAG
- name: Generate changelog
id: changelog
uses: metcalfc/changelog-generator@v4.1.0
uses: metcalfc/changelog-generator@v4.3.1
with:
myToken: ${{ secrets.GITHUB_TOKEN }}
head-ref: ${{ github.sha }}

View File

@ -10,7 +10,7 @@ jobs:
- name: Checkout repo
uses: actions/checkout@v4
- name: Run the sh-checker
uses: luizm/action-sh-checker@v0.7.0
uses: luizm/action-sh-checker@v0.8.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Optional if sh_checker_comment is false.
SHFMT_OPTS: -l -i 4 -w # Optional: pass arguments to shfmt.

View File

@ -33,7 +33,7 @@ jobs:
find ../ -name "*.deb" -exec mv {} cis-hardening.deb \;
# DELETE THE TAG NAMED LATEST AND THE CORRESPONDING RELEASE
- name: Delete the tag latest and the release latest
uses: dev-drprasad/delete-tag-and-release@v1.0.1
uses: dev-drprasad/delete-tag-and-release@v1.1
with:
delete_release: true
tag_name: latest

10
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,10 @@
repos:
- repo: local
hooks:
- id: check_has_test
name: check_has_test.sh
description: Ensure a check has a corresponding test
entry: hooks/check_has_test.sh
language: script
pass_filenames: true
files: "^bin/hardening/"

View File

@ -1,4 +1,4 @@
# :lock: CIS Debian 10/11 Hardening
# :lock: CIS Debian 10/11/12 Hardening
<p align="center">
@ -16,6 +16,9 @@
Modular Debian 10/11/12 security hardening scripts based on [cisecurity.org](https://www.cisecurity.org)
recommendations. We use it at [OVHcloud](https://www.ovhcloud.com) to harden our PCI-DSS infrastructure.
NB : Although Debian 12 CIS Hardening guide is still in development, we do use this set of scripts
in production at OVHcloud on Debian 12 Operating Systems.
```console
$ bin/hardening.sh --audit-all
[...]
@ -40,12 +43,11 @@ hardening [INFO] Treating /opt/cis-hardening/bin/hardening/6.2.19_check_duplicat
```console
$ git clone https://github.com/ovh/debian-cis.git && cd debian-cis
$ cp debian/default /etc/default/cis-hardening
$ sed -i "s#CIS_LIB_DIR=.*#CIS_LIB_DIR='$(pwd)'/lib#" etc/default/cis-hardening
$ sed -i "s#CIS_CHECKS_DIR=.*#CIS_CHECKS_DIR='$(pwd)'/bin/hardening#" etc/default/cis-hardening
$ sed -i "s#CIS_CONF_DIR=.*#CIS_CONF_DIR='$(pwd)'/etc#" etc/default/cis-hardening
$ sed -i "s#CIS_TMP_DIR=.*#CIS_TMP_DIR='$(pwd)'/tmp#" etc/default/cis-hardening
$ bin/hardening/1.1.1.1_disable_freevxfs.sh --audit-all
hardening [INFO] Treating /opt/cis-hardening/bin/hardening/1.1.1.1_disable_freevxfs.sh
$ sed -i "s#CIS_LIB_DIR=.*#CIS_LIB_DIR='$(pwd)'/lib#" /etc/default/cis-hardening
$ sed -i "s#CIS_CHECKS_DIR=.*#CIS_CHECKS_DIR='$(pwd)'/bin/hardening#" /etc/default/cis-hardening
$ sed -i "s#CIS_CONF_DIR=.*#CIS_CONF_DIR='$(pwd)'/etc#" /etc/default/cis-hardening
$ sed -i "s#CIS_TMP_DIR=.*#CIS_TMP_DIR='$(pwd)'/tmp#" /etc/default/cis-hardening
$ ./bin/hardening/1.1.1.1_disable_freevxfs.sh --audit
1.1.1.1_disable_freevxfs [INFO] Working on 1.1.1.1_disable_freevxfs
1.1.1.1_disable_freevxfs [INFO] [DESCRIPTION] Disable mounting of freevxfs filesystems.
1.1.1.1_disable_freevxfs [INFO] Checking Configuration
@ -244,6 +246,20 @@ built a secure environment. While we use it at OVHcloud to harden our PCI-DSS co
infrastructure, we can not guarantee that it will work for you. It will not
magically secure any random host.
A word about numbering, implementation and sustainability over time of this repository:
This project is born with the Debian 7 distribution in 2016. Over time, CIS Benchmark PDF
has evolved, changing it's numbering, deleting obsolete checks.
In order to keep retro-compatiblity with the last maintained Debian, the numbering
has not been changed along with the PDF, because the configuration scripts are named after it.
Changing the numbering might break automation for admins using it for years, and handling
this issue without breaking anything would require a huge refactoring.
As a consequence, please do not worry about numbering, the checks are there,
but the numbering accross PDFs might differ.
Please also note that all the check inside CIS Benchmark PDF might not be implemented
in this set of scripts.
We did choose the most relevant to us at OVHcloud, do not hesitate to make a
Pull Request in order to add the missing script you might find relevant for you.
Additionally, quoting the License:
> THIS SOFTWARE IS PROVIDED BY OVH SAS AND CONTRIBUTORS ``AS IS'' AND ANY
@ -257,6 +273,7 @@ Additionally, quoting the License:
> (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
> SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
## :satellite: Reference
- **Center for Internet Security**: https://www.cisecurity.org/

View File

@ -29,6 +29,7 @@ BATCH_MODE=''
SUMMARY_JSON=''
ASK_LOGLEVEL=''
ALLOW_UNSUPPORTED_DISTRIBUTION=0
USED_VERSION="default"
usage() {
cat <<EOF
@ -105,6 +106,13 @@ OPTIONS:
This option sets LOGLEVEL, you can choose : info, warning, error, ok, debug or silent.
Default value is : info
--set-version <version>
This option allows to run the scripts as defined for a specific CIS debian version.
Supported version are the folders listed in the "versions" folder.
examples:
--set-version debian_11
--set-version ovh_legacy
--summary-json
While performing system audit, this option sets LOGLEVEL to silent and
only output a json summary at the end
@ -163,6 +171,10 @@ while [[ $# -gt 0 ]]; do
ASK_LOGLEVEL=$2
shift
;;
--set-version)
USED_VERSION=$2
shift
;;
--only)
TEST_LIST[${#TEST_LIST[@]}]="$2"
shift
@ -192,7 +204,7 @@ while [[ $# -gt 0 ]]; do
done
# if no RUN_MODE was passed, usage and quit
if [ "$AUDIT" -eq 0 ] && [ "$AUDIT_ALL" -eq 0 ] && [ "$AUDIT_ALL_ENABLE_PASSED" -eq 0 ] && [ "$APPLY" -eq 0 ] && [ "$CREATE_CONFIG" -eq 0 ]; then
if [ "$AUDIT" -eq 0 ] && [ "$AUDIT_ALL" -eq 0 ] && [ "$AUDIT_ALL_ENABLE_PASSED" -eq 0 ] && [ "$APPLY" -eq 0 ] && [ "$CREATE_CONFIG" -eq 0 ] && [ "$SET_HARDENING_LEVEL" -eq 0 ]; then
usage
fi
@ -217,9 +229,20 @@ if [ "$ASK_LOGLEVEL" ]; then LOGLEVEL=$ASK_LOGLEVEL; fi
# shellcheck source=../lib/constants.sh
[ -r "${CIS_LIB_DIR}"/constants.sh ] && . "${CIS_LIB_DIR}"/constants.sh
# ensure the CIS version exists
does_file_exist "$CIS_VERSIONS_DIR/$USED_VERSION"
if [ "$FNRET" -ne 0 ]; then
echo "$USED_VERSION is not a valid version"
echo "Please use '--set-version' with one of $(ls "$CIS_VERSIONS_DIR" --hide=default -m)"
exit 1
fi
# If we're on a unsupported platform and there is no flag --allow-unsupported-distribution
# print warning, otherwise quit
# update path for the remaining of the script
CIS_CHECKS_DIR="$CIS_VERSIONS_DIR/$USED_VERSION"
if [ "$DISTRIBUTION" != "debian" ]; then
echo "Your distribution has been identified as $DISTRIBUTION which is not debian"
if [ "$ALLOW_UNSUPPORTED_DISTRIBUTION" -eq 0 ]; then
@ -296,10 +319,7 @@ fi
for SCRIPT in $(find "${CIS_CHECKS_DIR}"/ -name "*.sh" | sort -V); do
if [ "${#TEST_LIST[@]}" -gt 0 ]; then
# --only X has been specified at least once, is this script in my list ?
SCRIPT_PREFIX=$(grep -Eo '^[0-9.]+' <<<"$(basename "$SCRIPT")")
# shellcheck disable=SC2001
SCRIPT_PREFIX_RE=$(sed -e 's/\./\\./g' <<<"$SCRIPT_PREFIX")
if ! grep -qwE "(^| )$SCRIPT_PREFIX_RE" <<<"${TEST_LIST[@]}"; then
if ! grep -qE "$(basename "$SCRIPT")" <<<"${TEST_LIST[@]}"; then
# not in the list
continue
fi

View File

@ -1,68 +0,0 @@
#!/bin/bash
# run-shellcheck
#
# CIS Debian Hardening Bonus Check
#
#
# 99.1.1.1 Ensure mounting of cramfs filesystems is disabled (Not Scored)
#
set -e # One error, it's over
set -u # One variable unset, it's over
# shellcheck disable=2034
HARDENING_LEVEL=2
# shellcheck disable=2034
DESCRIPTION="Disable mounting of cramfs filesystems."
KERNEL_OPTION="CONFIG_CRAMFS"
MODULE_NAME="cramfs"
# This function will be called if the script status is on enabled / audit mode
audit() {
is_kernel_option_enabled "$KERNEL_OPTION" "$MODULE_NAME"
if [ "$FNRET" = 0 ]; then # 0 means true in bash, so it IS activated
crit "$KERNEL_OPTION is enabled!"
else
ok "$KERNEL_OPTION is disabled"
fi
:
}
# This function will be called if the script status is on enabled mode
apply() {
is_kernel_option_enabled "$KERNEL_OPTION"
if [ "$FNRET" = 0 ]; then # 0 means true in bash, so it IS activated
warn "I cannot fix $KERNEL_OPTION enabled, recompile your kernel please"
else
ok "$KERNEL_OPTION is disabled, nothing to do"
fi
:
}
# This function will check config parameters required
check_config() {
:
}
# Source Root Dir Parameter
if [ -r /etc/default/cis-hardening ]; then
# shellcheck source=../../debian/default
. /etc/default/cis-hardening
fi
if [ -z "$CIS_LIB_DIR" ]; then
echo "There is no /etc/default/cis-hardening file nor cis-hardening directory in current environment."
echo "Cannot source CIS_LIB_DIR variable, aborting."
exit 128
fi
# Main function, will call the proper functions given the configuration (audit, enabled, disabled)
if [ -r "${CIS_LIB_DIR}"/main.sh ]; then
# shellcheck source=../../lib/main.sh
. "${CIS_LIB_DIR}"/main.sh
else
echo "Cannot find main.sh, have you correctly defined your root directory? Current value is $CIS_LIB_DIR in /etc/default/cis-hardening"
exit 128
fi

View File

@ -1,98 +0,0 @@
#!/bin/bash
# run-shellcheck
#
# Legacy CIS Debian Hardening
#
#
# 99.5.2.8 Check UsePrivilegeSeparation set to sandbox.
#
set -e # One error, it's over
set -u # One variable unset, it's over
# shellcheck disable=2034
HARDENING_LEVEL=2
# shellcheck disable=2034
DESCRIPTION="Check UsePrivilegeSeparation set to sandbox."
PACKAGE='openssh-server'
OPTIONS='UsePrivilegeSeparation=sandbox'
FILE='/etc/ssh/sshd_config'
# This function will be called if the script status is on enabled / audit mode
audit() {
is_pkg_installed "$PACKAGE"
if [ "$FNRET" != 0 ]; then
ok "$PACKAGE is not installed!"
else
ok "$PACKAGE is installed"
for SSH_OPTION in $OPTIONS; do
SSH_PARAM=$(echo "$SSH_OPTION" | cut -d= -f 1)
SSH_VALUE=$(echo "$SSH_OPTION" | cut -d= -f 2)
PATTERN="^${SSH_PARAM}[[:space:]]*$SSH_VALUE"
does_pattern_exist_in_file_nocase "$FILE" "$PATTERN"
if [ "$FNRET" = 0 ]; then
ok "$PATTERN is present in $FILE"
else
crit "$PATTERN is not present in $FILE"
fi
done
fi
}
# This function will be called if the script status is on enabled mode
apply() {
is_pkg_installed "$PACKAGE"
if [ "$FNRET" = 0 ]; then
ok "$PACKAGE is installed"
else
crit "$PACKAGE is absent, installing it"
apt_install "$PACKAGE"
fi
for SSH_OPTION in $OPTIONS; do
SSH_PARAM=$(echo "$SSH_OPTION" | cut -d= -f 1)
SSH_VALUE=$(echo "$SSH_OPTION" | cut -d= -f 2)
PATTERN="^${SSH_PARAM}[[:space:]]*$SSH_VALUE"
does_pattern_exist_in_file_nocase "$FILE" "$PATTERN"
if [ "$FNRET" = 0 ]; then
ok "$PATTERN is present in $FILE"
else
warn "$PATTERN is not present in $FILE, adding it"
does_pattern_exist_in_file_nocase "$FILE" "^${SSH_PARAM}"
if [ "$FNRET" != 0 ]; then
add_end_of_file "$FILE" "$SSH_PARAM $SSH_VALUE"
else
info "Parameter $SSH_PARAM is present but with the wrong value -- Fixing"
replace_in_file "$FILE" "^${SSH_PARAM}[[:space:]]*.*" "$SSH_PARAM $SSH_VALUE"
fi
/etc/init.d/ssh reload >/dev/null 2>&1
fi
done
}
# This function will check config parameters required
check_config() {
:
}
# Source Root Dir Parameter
if [ -r /etc/default/cis-hardening ]; then
# shellcheck source=../../debian/default
. /etc/default/cis-hardening
fi
if [ -z "$CIS_LIB_DIR" ]; then
echo "There is no /etc/default/cis-hardening file nor cis-hardening directory in current environment."
echo "Cannot source CIS_LIB_DIR variable, aborting."
exit 128
fi
# Main function, will call the proper functions given the configuration (audit, enabled, disabled)
if [ -r "${CIS_LIB_DIR}"/main.sh ]; then
# shellcheck source=../../lib/main.sh
. "${CIS_LIB_DIR}"/main.sh
else
echo "Cannot find main.sh, have you correctly defined your root directory? Current value is $CIS_LIB_DIR in /etc/default/cis-hardening"
exit 128
fi

View File

@ -6,7 +6,7 @@
#
#
# 99.5.4.5.1 Check that any password that will be created will be SHA512 hashed and salted
# Check that any password that will be created will use sha512crypt (or yescrypt for Debian 11+)
#
set -e # One error, it's over
@ -15,38 +15,40 @@ set -u # One variable unset, it's over
# shellcheck disable=2034
HARDENING_LEVEL=2
# shellcheck disable=2034
DESCRIPTION="Check that any password that will be created will be SHA512 hashed and salted"
DESCRIPTION="Check that any password that will be created will use sha512crypt (or yescrypt for Debian 11+)"
CONF_FILE="/etc/login.defs"
CONF_LINE="ENCRYPT_METHOD SHA512"
# CONF_LINE and CONF_LINE_REGEX are defined in _set_vars_jit below
# This function will be called if the script status is on enabled / audit mode
audit() {
_set_vars_jit
# Check conf file for default SHA512 hash
if $SUDO_CMD [ ! -r "$CONF_FILE" ]; then
crit "$CONF_FILE is not readable"
else
does_pattern_exist_in_file "$CONF_FILE" "^ *${CONF_LINE/ /[[:space:]]+}"
does_pattern_exist_in_file "$CONF_FILE" "^ *${CONF_LINE_REGEX/ /[[:space:]]+}"
if [ "$FNRET" = 0 ]; then
ok "$CONF_LINE is present in $CONF_FILE"
ok "$CONF_LINE_REGEX is present in $CONF_FILE"
else
crit "$CONF_LINE is not present in $CONF_FILE"
crit "$CONF_LINE_REGEX is not present in $CONF_FILE"
fi
fi
}
# This function will be called if the script status is on enabled mode
apply() {
does_pattern_exist_in_file "$CONF_FILE" "^ *${CONF_LINE/ /[[:space:]]+}"
_set_vars_jit
does_pattern_exist_in_file "$CONF_FILE" "^ *${CONF_LINE_REGEX/ /[[:space:]]+}"
if [ "$FNRET" = 0 ]; then
ok "$CONF_LINE is present in $CONF_FILE"
ok "$CONF_LINE_REGEX is present in $CONF_FILE"
else
warn "$CONF_LINE is not present in $CONF_FILE, adding it"
does_pattern_exist_in_file "$CONF_FILE" "^$(echo "$CONF_LINE" | cut -d ' ' -f1)"
if [ "$FNRET" != 0 ]; then
add_end_of_file "$CONF_FILE" "$CONF_LINE"
else
info "Parameter $SSH_PARAM is present but with the wrong value -- Fixing"
info "Parameter $CONF_LINE is present but with the wrong value -- Fixing"
replace_in_file "$CONF_FILE" "^$(echo "$CONF_LINE" | cut -d ' ' -f1)[[:space:]]*.*" "$CONF_LINE"
fi
fi
@ -57,6 +59,19 @@ check_config() {
:
}
# As we use DEB_MAJ_VER, which is set by constants.sh, itself sourced by main.sh below,
# We need to call this in the subs called by main.sh when it is sourced, otherwise it would
# either be too soon (DEB_MAJ_VER not defined) or too late (test has already been run)
_set_vars_jit() {
if [ "$DEB_MAJ_VER" = "sid" ] || [ "$DEB_MAJ_VER" -ge "11" ]; then
CONF_LINE_REGEX="ENCRYPT_METHOD (SHA512|yescrypt|YESCRYPT)"
CONF_LINE="ENCRYPT_METHOD YESCRYPT"
else
CONF_LINE_REGEX="ENCRYPT_METHOD SHA512"
CONF_LINE="ENCRYPT_METHOD SHA512"
fi
}
# Source Root Dir Parameter
if [ -r /etc/default/cis-hardening ]; then
# shellcheck source=../../debian/default

View File

@ -6,7 +6,7 @@
#
#
# 5.3.4 Ensure password hashing algorithm is SHA-512 (Scored)
# Ensure password hashing algorithm is SHA-512 (Scored)
#
set -e # One error, it's over
@ -15,20 +15,18 @@ set -u # One variable unset, it's over
# shellcheck disable=2034
HARDENING_LEVEL=2
# shellcheck disable=2034
DESCRIPTION="Check that any password that may exist in /etc/shadow is yescrypt (or SHA512 for debian 10) hashed and salted"
DESCRIPTION="Check that the algorithm declared in PAM for password changes is sha512 (or yescrypt for Debian 11+)"
CONF_FILE="/etc/pam.d/common-password"
CONF_LINE="^\s*password\s.+\s+pam_unix\.so\s+.*sha512"
# CONF_LINE is defined in _set_vars_jit below
# This function will be called if the script status is on enabled / audit mode
audit() {
_set_vars_jit
# Check conf file for default SHA512 hash
if $SUDO_CMD [ ! -r "$CONF_FILE" ]; then
crit "$CONF_FILE is not readable"
else
if [ "$DEB_MAJ_VER" -ge "11" ]; then
CONF_LINE="^\s*password\s.+\s+pam_unix\.so\s+.*yescrypt" # https://github.com/ovh/debian-cis/issues/158
fi
# shellcheck disable=SC2001
does_pattern_exist_in_file "$CONF_FILE" "$(sed 's/ /[[:space:]]+/g' <<<"$CONF_LINE")"
if [ "$FNRET" = 0 ]; then
@ -41,6 +39,7 @@ audit() {
# This function will be called if the script status is on enabled mode
apply() {
_set_vars_jit
if $SUDO_CMD [ ! -r "$CONF_FILE" ]; then
crit "$CONF_FILE is not readable"
else
@ -50,7 +49,7 @@ apply() {
ok "$CONF_LINE is present in $CONF_FILE"
else
warn "$CONF_LINE is not present in $CONF_FILE"
if [ "$DEB_MAJ_VER" -ge "11" ]; then
if [ "$DEB_MAJ_VER" = "sid" ] || [ "$DEB_MAJ_VER" -ge "11" ]; then
add_line_file_before_pattern "$CONF_FILE" "password [success=1 default=ignore] pam_unix.so yescrypt" "# pam-auth-update(8) for details."
else
add_line_file_before_pattern "$CONF_FILE" "password [success=1 default=ignore] pam_unix.so sha512" "# pam-auth-update(8) for details."
@ -64,6 +63,17 @@ check_config() {
:
}
# As we use DEB_MAJ_VER, which is set by constants.sh, itself sourced by main.sh below,
# We need to call this in the subs called by main.sh when it is sourced, otherwise it would
# either be too soon (DEB_MAJ_VER not defined) or too late (test has already been run)
_set_vars_jit() {
if [ "$DEB_MAJ_VER" = "sid" ] || [ "$DEB_MAJ_VER" -ge "11" ]; then
CONF_LINE="^\s*password\s.+\s+pam_unix\.so\s+.*(sha512|yescrypt)" # https://github.com/ovh/debian-cis/issues/158
else
CONF_LINE="^\s*password\s.+\s+pam_unix\.so\s+.*sha512"
fi
}
# Source Root Dir Parameter
if [ -r /etc/default/cis-hardening ]; then
# shellcheck source=../../debian/default

View File

@ -6,7 +6,7 @@
#
#
# 99.5.4.5.2 Check that any password that may exist in /etc/shadow is SHA512 hashed and salted
# Check that passwords in /etc/shadow are sha512crypt (or yescrypt for Debian 11+) hashed and salted
#
set -e # One error, it's over
@ -15,7 +15,7 @@ set -u # One variable unset, it's over
# shellcheck disable=2034
HARDENING_LEVEL=2
# shellcheck disable=2034
DESCRIPTION="Check that any password that may exist in /etc/shadow is SHA512 hashed and salted"
DESCRIPTION="Check that passwords in /etc/shadow are sha512crypt (or yescrypt for Debian 11+) hashed and salted"
FILE="/etc/shadow"
# This function will be called if the script status is on enabled / audit mode
@ -36,13 +36,21 @@ audit() {
elif [[ $passwd =~ ^!.*$ ]]; then
pw_found+="$user "
ok "User $user has a disabled password."
# Check password against $6$<salt>$<encrypted>, see `man 3 crypt`
# yescrypt: Check password against $y$<salt>$<base64>
elif [ "$DEB_MAJ_VER" -ge "11" ] && [[ $passwd =~ ^\$y\$[./A-Za-z0-9]+\$[./A-Za-z0-9]{,86}\$[./A-Za-z0-9]{43} ]]; then
pw_found+="$user "
ok "User $user has suitable yescrypt hashed password."
# sha512: Check password against $6$<salt>$<base64>, see `man 3 crypt`
elif [[ $passwd =~ ^\$6(\$rounds=[0-9]+)?\$[a-zA-Z0-9./]{2,16}\$[a-zA-Z0-9./]{86}$ ]]; then
pw_found+="$user "
ok "User $user has suitable SHA512 hashed password."
ok "User $user has suitable sha512crypt hashed password."
else
pw_found+="$user "
crit "User $user has a password that is not SHA512 hashed."
if [ "$DEB_MAJ_VER" -ge "11" ]; then
crit "User $user has a password that is not sha512crypt nor yescrypt hashed."
else
crit "User $user has a password that is not sha512crypt hashed."
fi
fi
done
if [[ -z "$users_reviewed" ]]; then

View File

@ -6,7 +6,7 @@
#
#
# 99.1.3 Check there are no carte-blanche authorization in sudoers file(s).
# Check there are no carte-blanche authorization in sudoers file(s).
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 4.1.1.4 Ensure audit_backlog_limit is sufficient (Scored)
# Ensure audit_backlog_limit is sufficient (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 4.1.1.3 Ensure auditing for processes that start prior to auditd is enabled (Scored)
# Ensure auditing for processes that start prior to auditd is enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 4.1.2.1 Ensure audit log storage size is configured (Scored)
# Ensure audit log storage size is configured (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.5.1 Ensure permissions on bootloader config are configured (Scored)
# Ensure permissions on bootloader config are configured (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.5.2 Ensure bootloader password is set (Scored)
# Ensure bootloader password is set (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 99.99 Ensure that the distribution version is debian and that the version is 9 or 10
# Ensure that the distribution version is debian and that the version is 9 or 10
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 6.2.17 Ensure no duplicate GIDs exist (Scored)
# Ensure no duplicate GIDs exist (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 6.2.19 Ensure no duplicate group names exist (Scored)
# Ensure no duplicate group names exist (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 6.2.16 Ensure no duplicate UIDs exist (Scored)
# Ensure no duplicate UIDs exist (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 6.2.18 Ensure no duplicate user names exist (Scored)
# Ensure no duplicate user names exist (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 6.2.8 Ensure users' home directories permissions are 750 or more restrictive (Scored
# Ensure users' home directories permissions are 750 or more restrictive (Scored
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 6.2.10 Ensure users' dot files are not group or world writable (Scored)
# Ensure users' dot files are not group or world writable (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.1.3 Ensure chrony is configured (Scored)
# Ensure chrony is configured (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 4.3 Ensure logrotate is configured (Not Scored)
# Ensure logrotate is configured (Not Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.1.2 Ensure ntp is configured (Scored)
# Ensure ntp is configured (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.2.22 Ensure SSH MaxStartups is configured (Scored)
# Ensure SSH MaxStartups is configured (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 4.2.1.3 Configure /etc/syslog-ng/syslog-ng.conf (Not Scored)
# Configure /etc/syslog-ng/syslog-ng.conf (Not Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.1.2 Ensure systemd-timesyncd is configured (Not Scored)
# Ensure systemd-timesyncd is configured (Not Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.1.7 Ensure permissions on /etc/cron.d are configured (Scored)
# Ensure permissions on /etc/cron.d are configured (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.1.4 Ensure permissions on /etc/cron.daily are configured (Scored)
# Ensure permissions on /etc/cron.daily are configured (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.1.3 Ensure permissions on /etc/cron.hourly are configured (Scored)
# Ensure permissions on /etc/cron.hourly are configured (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.1.6 Ensure permissions on /etc/cron.monthly are configured (Scored)
# Ensure permissions on /etc/cron.monthly are configured (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.1.8 Ensure at/cron is restricted to authorized users (Scored)
# Ensure at/cron is restricted to authorized users (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.1.5 Ensure permissions on /etc/cron.weekly are configured (Scored)
# Ensure permissions on /etc/cron.weekly are configured (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.1.2 Ensure permissions on /etc/crontab are configured (Scored)
# Ensure permissions on /etc/crontab are configured (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.4.3 Ensure default group for the root account is GID 0 (Scored)
# Ensure default group for the root account is GID 0 (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.4.4 Ensure default usershell timeout is 900 seconds or less
# Ensure default usershell timeout is 900 seconds or less
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.4.4 Ensure default user umask is 027 or more restrictive (Scored)
# Ensure default user umask is 027 or more restrictive (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.6.3.1 Ensure apport is disabled (Scored)
# Ensure apport is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.1.22 Disable Automounting (Scored)
# Disable Automounting (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.3 Ensure Avahi Server is not enabled (Scored)
# Ensure Avahi Server is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.1.2 Ensure bsd-inetd is not enabled (Scored)
# Ensure bsd-inetd is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.1.1.1 Ensure Mounting of cramfs filesystems is disabled (Scored)
# Ensure Mounting of cramfs filesystems is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.4.1 Ensure DCCP is disabled (Not Scored)
# Ensure DCCP is disabled (Not Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.5 Ensure DHCP Server is not enabled (Scored)
# Ensure DHCP Server is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.8 Ensure DNS Server is not enabled (Scored)
# Ensure DNS Server is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.1.1.1 Ensure Mounting of freevxfs filesystems is disabled (Scored)
# Ensure Mounting of freevxfs filesystems is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.9 Ensure FTP Server is not enabled (Scored)
# Ensure FTP Server is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.1.1.3 Ensure mounting of hfs filesystems is disabled (Scored)
# Ensure mounting of hfs filesystems is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.1.1.4 Ensure mounting of hfsplus filesystems is disabled (Scored)
# Ensure mounting of hfsplus filesystems is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.13 Ensure HTTP Proxy Server is not enabled (Scored)
# Ensure HTTP Proxy Server is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.10 Ensure HTTP Server is not enabled (Scored)
# Ensure HTTP Server is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.3.2 Ensure ICMP redirects are not accepted (Scored)
# Ensure ICMP redirects are not accepted (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.11 Ensure IMAP and POP server is not installed (Scored)
# Ensure IMAP and POP server is not installed (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.2.2 Ensure IP forwarding is disabled (Scored)
# Ensure IP forwarding is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.1.1 Disable IPv6 (Not Scored)
# Disable IPv6 (Not Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.3.9 Ensure IPv6 router advertisements are not accepted (Scored)
# Ensure IPv6 router advertisements are not accepted (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.1.1.2 Esnure mounting of jffs2 filesystems is disabled (Scored)
# Esnure mounting of jffs2 filesystems is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.6 Ensure LDAP server is not enabled (Scored)
# Ensure LDAP server is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.3.5 Ensure LDAP client is not installed (Scored)
# Ensure LDAP client is not installed (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.7 Ensure NFS and RPC are not enabled (Scored)
# Ensure NFS and RPC are not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.17 Ensure NIS Server is not enabled (Scored)
# Ensure NIS Server is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.6.3 Ensure prelink is disabled (Scored)
# Ensure prelink is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.4 Ensure CUPS is not enabled (Scored)
# Ensure CUPS is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.4.3 Ensure SCTP is disabled (Not Scored)
# Ensure SCTP is disabled (Not Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.2.10 Ensure SSH root login is disabled (Scored)
# Ensure SSH root login is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.3.2 Ensure rsh client is not installed (Scored)
# Ensure rsh client is not installed (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.16 Ensure rsync service is not enabled (Scored)
# Ensure rsync service is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.12 Ensure Samba is not enabled (Scored)
# Ensure Samba is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.4.2 Ensure SCTP is disabled (Not Scored)
# Ensure SCTP is disabled (Not Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.3.3 Ensure secure ICMP redirects are not accepted (Scored)
# Ensure secure ICMP redirects are not accepted (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.2.1 Ensure packet redirect sending is disabled (Scored)
# Ensure packet redirect sending is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.14 Ensure SNMP Server is not enabled (Scored)
# Ensure SNMP Server is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.3.1 Ensure source routed packets are not accepted (Scored)
# Ensure source routed packets are not accepted (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.1.1.5 Ensure mounting of squashfs filesystems is disabled (Scored)
# Ensure mounting of squashfs filesystems is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.2.21 Ensure SSH AllowTCPForwarding is disabled (Scored)
# Ensure SSH AllowTCPForwarding is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.2.9 Ensure SSH HostbasedAuthentication is disabled (Scored)
# Ensure SSH HostbasedAuthentication is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.2.11 Ensure SSH PermitEmptyPasswords is disabled (Scored)
# Ensure SSH PermitEmptyPasswords is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.2.12 Ensure SSH PermitUserEnvironment is disabled (Scored)
# Ensure SSH PermitUserEnvironment is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.4.2 Ensure system accounts are non-login (Scored)
# Ensure system accounts are non-login (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.3.3 Ensure talk client is not installed (Scored)
# Ensure talk client is not installed (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.3.4 Ensure telnet client is not installed (Scored)
# Ensure telnet client is not installed (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 99.2.2 Ensure telnet server is not enabled (Scored)
# Ensure telnet server is not enabled (Scored)
#
# Note: this check is not anymore in CIS hardening but we decided to keep it anyway

View File

@ -6,7 +6,7 @@
#
#
# 3.4.4 Ensure TIPC is disabled (Not Scored)
# Ensure TIPC is disabled (Not Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.1.1.6 Ensure mounting of udf filesystems is disabled (Scored)
# Ensure mounting of udf filesystems is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 99.1.1.23 Disable USB Devices
# Disable USB Devices
#
set -e # One error, it's over
@ -26,6 +26,8 @@ FILE='/etc/udev/rules.d/10-CIS_99.2_usb_devices.sh'
# This function will be called if the script status is on enabled / audit mode
audit() {
SEARCH_RES=0
# if SC2086 is fixed (double quotes) instead of skipped, then shellcheck will complain that double quotes will prevent the loop (SC2066)
# shellcheck disable=SC2086
for FILE_SEARCHED in $FILES_TO_SEARCH; do
if [ "$SEARCH_RES" = 1 ]; then break; fi
if $SUDO_CMD test -d "$FILE_SEARCHED"; then

View File

@ -6,7 +6,7 @@
#
#
# 1.1.23 Disable USB storage (Scored)
# Disable USB storage (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.1.2 Ensure wireless interfaces are disabled (Not Scored)
# Ensure wireless interfaces are disabled (Not Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.2.6 Ensure SSH X11 forwarding is disabled (Scored)
# Ensure SSH X11 forwarding is disabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.1.1 Ensure xinetd is not enabled (Scored)
# Ensure xinetd is not enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 2.2.2 Ensure the X Window system is not installed (Scored)
# Ensure the X Window system is not installed (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 1.7.2.2 Ensure AppArmor is enabled in the bootloader configuration (Scored)
# Ensure AppArmor is enabled in the bootloader configuration (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 4.1.1.2 Ensure auditd service is enabled (Scored)
# Ensure auditd service is enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 99.4.0 Ensure CONFIG_AUDIT is enabled in your running kernel
# Ensure CONFIG_AUDIT is enabled in your running kernel
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.3.6 Ensure bogus ICMP responses are ignored (Scored)
# Ensure bogus ICMP responses are ignored (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.1.1 Ensure cron daemon is enabled (Scored)
# Ensure cron daemon is enabled (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 3.5.1.1 Ensure Firewall is active (Scored)
# Ensure Firewall is active (Scored)
#
set -e # One error, it's over

View File

@ -6,7 +6,7 @@
#
#
# 5.3.2 Ensure lockout for failed password attempts is configured (Scored)
# Ensure lockout for failed password attempts is configured (Scored)
#
set -e # One error, it's over

Some files were not shown because too many files have changed in this diff Show More