▪️ Nginx
▪️ MySQL 5.7
▪️ Apache 2.4
▪️ Debian 11
▪️ Docker
▪️ Ubuntu 22.04 LTS
▪️ PostgreSQL 16
Софт с тех пор уже обновился, вышли новые рекомендации на основе старых, но я не прорабатывал обновления. Базовые настройки чаще всего остаются те же самые с минимальными изменениями.
Отдельно отмечу проект Docker Bench for Security, который автоматически проверяет образы Docker на соответствие рекомендациям CIS.
Сегодня хочу развить эту тему и познакомить вас с проектом CIS Debian 10/11/12 Hardening от известного международного хостера OVH, который когда-то сильно горел. Этот проект состоит из bash скриптов для проверки вашей системы на базе Debian на соответствие рекомендациям по безопасности.
Проект сделан для автоматизации и гибкой, выборочной проверки. Тесты настраиваются, есть возможность исключать какие-то проверки. Можно проводить только аудит, а можно сразу применять изменения для приведения системы в заданные соответствия.
Покажу кратко, как пользоваться этими скриптами. Клонируем репозиторий:
# git clone https://github.com/ovh/debian-cis.git && cd debian-cisСоздаём файл
/etc/default/cis-hardening и добавляем туда информацию о директории, из которой мы будем запускать скрипты:# 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. На каждый тест – отдельный bash скрипт с осмысленным названием. Например, 1.1.11_var_log_partition.sh. Запускаем:# ./1.1.11_var_log_partition.sh1.1.11_var_log_partition [INFO] Working on 1.1.11_var_log_partition1.1.11_var_log_partition [INFO] [DESCRIPTION] /var/log on separate partition.1.1.11_var_log_partition [INFO] Checking Configuration1.1.11_var_log_partition [INFO] Performing audit1.1.11_var_log_partition [INFO] Verifying that /var/log is a partition1.1.11_var_log_partition [ KO ] /var/log is not a partition1.1.11_var_log_partition [ KO ] Check FailedЯ проверку провалил. У меня
/var/log находится на корневом разделе. С точки зрения безопасности и стабильности работы системы это не очень хорошо. Во-первых, логи могут заполнить весь корневой раздел. Во-вторых, отдельный раздел под логи можно смонтировать для большей безопасности с некоторыми дополнительными настройками, типа noexec, nosuid, noatime и т.д. Я всё это понимаю, но мне чаще всего удобнее с одним общим разделом для всего.Для того, чтобы запустить все тесты разом, можно использовать отдельный скрипт в папке
bin:# ./hardening.sh --auditБудут выполнены все проверки, результат вывалится в консоль. Это неудобно, так как он может быть огромным. Лучше сразу направить вывод в текстовый файл:
# ./hardening.sh --audit > ~/cis.txtПотом файл можно спокойно посмотреть, осмыслить. Смотреть удобно в less с подсветкой:
# less -R ~/cis.txtВ конце увидите итоговый результат:
Total Passed Checks : [ 102/243 ]Total Failed Checks : [ 141/243 ]Enabled Checks Percentage : 100.00 %Conformity Percentage : 41.97 %Его можно получить в json:
# ./hardening.sh --audit --summary-jsonДля каждой проверки есть свой конфиг в
etc/conf.d, где её можно настроить или отключить. По проверкам можно делать либо аудит, либо вносить изменения в систему.❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#cis #security
