Hardening Rocky Linux: SELinux, firewalld и проверка OpenSCAP по CIS

0
14
Обложка статьи: Hardening Rocky Linux: SELinux, firewalld и проверка OpenSCAP по CIS

У Rocky Linux и других RHEL-совместимых систем лучшие встроенные средства проверки: профили безопасности SCAP Security Guide, которые запускаются одной командой и дают отчёт по пунктам CIS и DISA STIG. Общие принципы и сопоставление с ФСТЭК и NIST: hardening Linux. Шаги подходят также для AlmaLinux и RHEL. О выборе замены CentOS: миграция с CentOS 8.

Эталон

Шаг 1. Обновления и автоматизация

dnf upgrade -y
dnf install -y dnf-automatic needs-restarting
sed -i 's/^apply_updates.*/apply_updates = yes/' /etc/dnf/automatic.conf
systemctl enable --now dnf-automatic-install.timer
dnf needs-restarting -r

Автоустановка всех обновлений подходит не для каждого сервера. Для критичных систем оставьте download_updates = yes и apply_updates = no, ставьте вручную после проверки.

Шаг 2. SELinux в режиме enforcing

sestatus
grep ^SELINUX= /etc/selinux/config      # должно быть enforcing
ausearch -m avc -ts recent | head

Если сервис не работает под SELinux, не отключайте его. Найдите причину в журнале AVC и создайте разрешение (audit2allow) или исправьте контекст файлов (restorecon -Rv /path). Отключение SELinux ради «чтобы заработало» — частая и вредная практика.

Шаг 3. firewalld

systemctl enable --now firewalld
firewall-cmd --set-default-zone=public
firewall-cmd --permanent --add-service=ssh --add-service=https
firewall-cmd --reload
firewall-cmd --list-all

Подробнее: nftables и firewalld.

Шаг 4. Политика шифрования

update-crypto-policies --show
update-crypto-policies --set DEFAULT      # или FUTURE, строже

crypto-policies задаёт допустимые алгоритмы сразу для SSH, TLS и других библиотек. Режим FUTURE отключает устаревшие алгоритмы, но может сломать связь со старыми клиентами: проверяйте перед применением.

Шаг 5. SSH и sudo

# /etc/ssh/sshd_config.d/10-hardening.conf
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
X11Forwarding no
sshd -t && systemctl reload sshd

Группа администраторов в RHEL-семействе называется wheel. Правила sudo: sudo и sudoers.

Шаг 6. Аудит и целостность

dnf install -y audit aide
systemctl enable --now auditd
aide --init && mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
aide --check

Правила аудита для системных файлов добавляются в /etc/audit/rules.d/, примеры есть в статье Ubuntu. База AIDE должна храниться вне сервера или на носителе только для чтения.

Автоматическая проверка OpenSCAP

dnf install -y openscap-scanner scap-security-guide
ls /usr/share/xml/scap/ssg/content/ | grep -E 'rl|rhel'
oscap info /usr/share/xml/scap/ssg/content/ssg-rl9-ds.xml | grep -i 'profile'

Имя файла зависит от версии: для Rocky это ssg-rl9-ds.xml (в старых наборах — ssg-rhel9-ds.xml). Запуск проверки по профилю CIS:

oscap xccdf eval \
  --profile xccdf_org.ssgproject.content_profile_cis_server_l1 \
  --results results.xml --report report.html \
  /usr/share/xml/scap/ssg/content/ssg-rl9-ds.xml

Идентификаторы профилей берите из вывода oscap info. Откройте report.html: пункты разделены на пройденные и не пройденные, у каждого есть описание и команда исправления. Генерация скрипта исправления (oscap xccdf generate fix) нужна для изучения, применять его без теста на копии нельзя.

Как проверить

  • getenforce возвращает Enforcing.
  • firewall-cmd --list-all показывает только нужные службы.
  • В отчёте OpenSCAP число непройденных пунктов уменьшилось, а оставшиеся записаны в список исключений с причиной.

Rocky Linux не имеет сертификата ФСТЭК. Для систем с требованием сертифицированной ОС смотрите РЕД ОС и Astra Linux.

Остальные разделы CIS: особенности Rocky Linux

Полный перечень мер по разделам 1–7 дан в общей статье: hardening Linux. Ниже то, что в RHEL-семействе делается иначе.

Раздел 1. Пакеты, загрузчик, MAC

# проверка подписей пакетов
grep -E '^(gpgcheck|localpkg_gpgcheck|repo_gpgcheck)' /etc/dnf/dnf.conf
sudo sed -i '/^gpgcheck/d' /etc/dnf/dnf.conf && echo 'gpgcheck=1' | sudo tee -a /etc/dnf/dnf.conf

# пароль загрузчика
sudo grub2-setpassword
sudo grubby --update-kernel=ALL --args="audit=1 audit_backlog_limit=8192"

# лишнее для сервера (CIS): средства диагностики SELinux и mcstrans
sudo dnf remove -y setroubleshoot mcstrans

Проверка процессов, работающих вне ограничений SELinux:

ps -eZ | grep -E 'unconfined_service_t'
sudo semanage login -l

Процессы в unconfined_service_t — это службы без политики: их нужно либо ограничить, либо знать, почему они работают так.

Раздел 2. Ограничение запуска (fapolicyd)

sudo dnf install -y fapolicyd
sudo systemctl enable --now fapolicyd
sudo fapolicyd-cli --list | head

Fapolicyd разрешает запуск только программ из пакетов и доверенных файлов: это аналог меры ОПС. Включайте на тестовом сервере: нестандартное ПО потребует правил разрешения.

Раздел 5. PAM через authselect

authselect current
sudo authselect select sssd with-faillock --force
sudo authselect enable-feature with-faillock
# /etc/security/faillock.conf: deny = 5, unlock_time = 900
# /etc/security/pwquality.conf: minlen = 14, minclass = 4

В RHEL-семействе файлы /etc/pam.d/system-auth и password-auth управляются через authselect: прямые правки перезаписываются. Для нестандартных настроек создайте свой профиль: authselect create-profile. Параметр ENCRYPT_METHOD в /etc/login.defs для RHEL 9 по умолчанию SHA512 (или YESCRYPT в новых релизах).

Раздел 6. Аудит

sudo dnf install -y audit audit-libs
sudo systemctl enable --now auditd
# правила из общей статьи сохраните в /etc/audit/rules.d/50-cis.rules
sudo augenrules --load
sudo auditctl -s

Для auditd служба в RHEL-семействе управляется через service auditd restart (прямой systemctl restart может быть заблокирован политикой юнита): используйте augenrules --load для применения правил.

Раздел 7. Обновления безопасности

sudo dnf updateinfo list security
sudo dnf upgrade --security -y
sudo needs-restarting -r

Проверка соответствия и список профилей

oscap info /usr/share/xml/scap/ssg/content/ssg-rl9-ds.xml | grep -i 'profile'
# типичные профили:
#   cis_server_l1, cis_server_l2   - CIS Level 1 / Level 2
#   stig                           - DISA STIG
#   ospp                           - OS Protection Profile
sudo oscap xccdf generate fix --profile xccdf_org.ssgproject.content_profile_cis_server_l1 \
  --fix-type bash --output remediate.sh /usr/share/xml/scap/ssg/content/ssg-rl9-ds.xml

Скрипт исправления читайте, но не запускайте на боевом сервере без теста: он перенастраивает разделы, сеть и PAM. Профиль STIG строже CIS и подходит для сравнения. Для ФСТЭК готовых профилей в SCAP Security Guide нет: сопоставляйте результаты по таблицам общей статьи.

Параметры ядра и права на файлы по методическому документу ФСТЭК, готовый sysctl-файл и скрипт проверки: рекомендации ФСТЭК по настройке Linux.

Оставьте свой ответ