Скрипт аудита параметров безопасности ОС Linux / Linux OS Security Settings Audit Script
Bash-скрипт протестирован на дистрибутивах: Red Hat-based (Centos 8+, Rocky 8+, AlmaLinux 8+)
v 1.0 beta - Первая публичная версия
В ходе проведения аудита, возможны следующие оценки проверки:
- ALERT - параметр не соотвествует эталону. Несоотвествие приводит к снижению уровня защищенности системы.
- WARNING - параметр не соотвествует эталону. Требуется экспертный анализ итогов проверки.
- OK - параметр соответствует эталону.
(!!) - при трактовке логов аудита необходимо учитывать особенности конфигурации и целевом назначении проверяемой системы.
Выделяются три уровня критичности (Verification ratings) в случае несоответствия параметру эталону:
- CRITICAL - несоотвествие данного параметра эталону может значительно сказаться на уровне безопасности системы. Как правило не нуждается в переоценке урвоня значимости.
- HIGH - несоотвествие данного параметра эталону может значительно сказаться на уровне безопасности системы. Возможна переоценка уровня критичности экспертом с учетом назначения проверяемой системы.
- MIDDLE - несоотвествие данного параметра эталону может сказаться на уровне безопасности системы. Необходима оценка уровня критичности экспертом с учетом назначения проверяемой системы.
Ниже приведена таблица в которой попунктно расписаны параметры которые проверяет скрипт.
Каждому параметру присвоен уровень критичности в случае несоответствию эталонному значению. В таблице дано краткое описание каждому параметру. Проверяемые параметры объединены в группы по назначению и/или логике.
| № п/п | Проверяемый параметр | Уровень критичности | Краткое описание |
|---|---|---|---|
| 1 | Параметры ядра | Файл /etc/sysctl.conf содержит параметры направленные на безопасность и оптимизацию системы | |
| 1.1 | kernel.randomize_va_space = 2 | HIGH | Параметр в ядре Linux контролирует рандомизацию адресного пространства (ASLR), которая помогает защитить систему от определённых типов атак на переполнение буфера. |
| 1.2 | fs.protected_symlinks = 1 | HIGH | Параметр в Linux предназначен для ограничения небезопасных опций для передачи символических ссылок. |
| 1.3 | fs.protected_fifos = 2 | HIGH | Параметр в ядре Linux предназначен для защиты от непреднамеренной записи в FIFO-объект, который контролируется злоумышленником. Конечная защиты — сделать атаки по подделке данных сложнее. |
| 1.4 | fs.protected_regular = 2 | HIGH | Параметр в ядре Linux предназначен для защиты от атак, связанных с подделкой данных. Доступен, начиная с версии 4.19 ядра Linux. |
| 1.5 | fs.suid_dumpable = 0 | HIGH | Параметр позволяет запрашивать и устанавливать режим дампа ядра для программ с битом setuid или других защищённых бинарников. При значении параметра 0 дамп ядра не создаётся для процесса, который изменил уровни привилегий или работает только в режиме выполнения. |
| 1.6 | kernel.dmesg_restrict = 1 | HIGH | Параметр контролирует ограничения доступа к буферу сообщений ядра с помощью команды dmesg. Значение параметра "1" используют, чтобы не допускать просмотра обычными пользователями конфиденциальных данных, которые хранятся в dmesg, например, деталей сбоя приложений. |
| 1.7 | net.ipv6.conf.all.disable_ipv6 = 1 | MIDDLE | Отключение протокола IPv6. Рекомендуется отключить если не используется. |
| 1.8 | net.ipv4.conf.default.rp_filter = 1 | HIGH | Параметр .устанавливает значение по умолчанию для Reverse Path Filtering на всех интерфейсах. Значение "1" выставляет строгий режим, определённый в RFC3704. Каждый входящий пакет проверяется против базы информации о пересылке (FIB), и если интерфейс не является лучшим обратным путём, проверка пакета завершается с ошибкой. По умолчанию неудачные пакеты отбрасываются |
| 1.9 | kernel.yama.ptrace_scope = 3 | HIGH | Параметр отвечает за блокировку ptrace и позволяет контролировать, какие процессы могут использовать ptrace для работы с другими процессами. Рекомендуемое значение означает, что никакие процессы не могут выполнять операции PTRACE_MODE_ATTACH или трассировать потомков, выполнивших PTRACE_TRACEME. После записи такого значения в файл, чтобы его изменить, требуется перезагрузка |
| 1.10 | net.ipv4.icmp_echo_ignore_broadcasts = 1 | MIDDLE | Параметр предназначен для управления поведением системы относительно ICMP-запросов типа ECHO REQUEST (ping), направленных на широковещательные MAC/IP-адреса. При значении параметра "1" система игнорирует ping-запросы, отправленные на широковещательные адреса (broadcast-пакеты). Таким образом, компьютер не будет отвечать на запросы вида ping <широковещательный_адрес> |
| 2 | Права на файлы/каталоги | Правильно высталенные права на файлы/каталоги в Linux - основа безопасности | |
| 2.1 | /etc/passwd - 644 | CRITICAL | Права доступа к файлу с параметрами пользователей |
| 2.2 | /etc/group - 644 | CRITICAL | Права доступа к файлу с параметрами пользователей |
| 2.3 | /etc/shadow - 000 | CRITICAL | Права доступа к файлу с хешами паролей |
| 2.4 | /var/log/messages - 600 | MIDDLE | Права доступа к файлу с логами |
| 2.5 | /home/* - 740 | HIGH | Права доступа на каталоги пользователей |
| 2.6 | /etc/cron* - 700 | MIDDLE | Права доступа на файлы cron |
| 2.7 | /lib - 755 | HIGH | Права доступа к системным каталогам |
| 2.8 | /lib64 - 755 | HIGH | Права доступа к системным каталогам |
| 2.9 | /usr/lib - 755 | HIGH | Права доступа к системным каталогам |
| 2.10 | /usr/lib64 - 755 | HIGH | Права доступа к системным каталогам |
| 3 | Конфигурация SSH | Обеспечение безопасности SSH-подключений является необходмым минимумом в безопасной настройке Linux | |
| 3.1 | "etc/ssh/sshd_config" -> PermitEmptyPasswords no | CRITICAL | Параметр запрещает доступ по ssh пользователем с пустым паролем |
| 4 | Конфигурация ОС и сервисов | Проверка конфигурации отдельных параметров ОС и сервисов | |
| 4.1 | SELinux | CRITICAL | SELinux - механизм безопасности, разработанный для повышения уровня защиты ОС Linux, - должен быть включен. |
| 4.2 | disable ctrl-alt-del | MIDDLE | Должна быть выключена перезагрузка системы при нажатии клавиш Ctrl-Alt-Delete |
| 4.3 | Отсутствие в ОС файлов с хранением секретов для беспарольного подключения посредством host-based authentication | HIGH | |
| 4.4 | Установка пакет ftp | MIDDLE | Отсутствие пакета ftp на машинах на которых не предусмотрена работа с FTP и VPN |
| 4.5 | "/etc/pam.d/su" -> auth required pam_wheel.so use_uid | HIGH | Использование команды su разрешено только членам группы wheel |