Hardening Debian: безопасная настройка сервера по CIS Benchmark

0
12
Обложка статьи: Hardening Debian: безопасная настройка сервера по CIS Benchmark

Debian минималистичен: после установки на сервере мало лишнего, но почти нет и защитных настроек. Ниже порядок действий и проверка по CIS Debian Linux Benchmark. Общие принципы и сопоставление с ФСТЭК и NIST: hardening Linux.

Эталон

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

apt update && apt full-upgrade -y
apt install -y unattended-upgrades apt-listchanges needrestart
dpkg-reconfigure -plow unattended-upgrades
cat /etc/apt/sources.list.d/*.sources 2>/dev/null | grep -i security

В списке источников должен быть debian-security. Узнать об известных уязвимостях установленных пакетов поможет debsecan:

apt install -y debsecan
debsecan --suite bookworm --only-fixed --format detail | head

Укажите кодовое имя вашего релиза вместо bookworm.

Шаг 2. sudo и SSH

Минимальная установка Debian может не содержать sudo: apt install -y sudo, затем добавьте администратора в группу (usermod -aG). Настройка прав: sudo и sudoers. SSH:

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

Шаг 3. Firewall на nftables

В Debian по умолчанию используется nftables, а iptables работает как совместимость. Пример набора правил и порядок применения без потери доступа: nftables и firewalld. Включите службу и сохраните правила:

systemctl enable --now nftables
nft list ruleset

Шаг 4. AppArmor

В Debian AppArmor есть, но может быть выключен. Проверьте и включите:

apt install -y apparmor apparmor-utils apparmor-profiles
aa-status

Если в выводе apparmor module is loaded нет, добавьте в параметры ядра apparmor=1 security=apparmor (в GRUB_CMDLINE_LINUX файла /etc/default/grub), выполните update-grub и перезагрузите сервер.

Шаг 5. Контроль целостности пакетов и файлов

apt install -y debsums aide
debsums -s                    # изменённые файлы пакетов (тихий режим)
aideinit                      # создать базу AIDE, затем:
aide --check

Расхождения в debsums — повод разобраться: файл мог быть изменён вручную или чужим. Базу AIDE копируйте на отдельный носитель, иначе взломавший её перепишет.

Шаг 6. Аудит

apt install -y auditd audispd-plugins
cat > /etc/audit/rules.d/90-identity.rules <<'EOF'
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k sudo
EOF
augenrules --load

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

apt install -y lynis
lynis audit system --quick

Lynis выставляет индекс защищённости и список предложений. Сопоставляйте их с пунктами CIS Benchmark, а не принимайте на веру каждое. OpenSCAP-профили для Debian распространяются не так широко, как для RHEL-семейства, поэтому основная сверка идёт по документу CIS.

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

sshd -T | grep -E 'permitrootlogin|passwordauthentication'
nft list ruleset | head
aa-status | head -3
debsums -s; echo "debsums rc=$?"
ss -tulpn

Ожидаемо: root и пароли отключены, действует политика drop для входящих, AppArmor загружен, debsums без вывода, на портах только нужные службы. Для систем, где требуется сертифицированная ОС, Debian не подходит: смотрите Astra Linux.

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

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

Раздел 1. /tmp, загрузчик, ядро

sudo cp /usr/share/systemd/tmp.mount /etc/systemd/system/tmp.mount
sudo mkdir -p /etc/systemd/system/tmp.mount.d
printf '[Mount]\nOptions=mode=1777,strictatime,noexec,nodev,nosuid\n' | sudo tee /etc/systemd/system/tmp.mount.d/override.conf
sudo systemctl daemon-reload && sudo systemctl enable --now tmp.mount

Пароль загрузчика задаётся так же, как в Ubuntu: хеш grub-mkpasswd-pbkdf2 в /etc/grub.d/40_custom, затем update-grub. Дополнительные параметры ядра по рекомендациям KSPP (если нет конфликтов с вашим ПО):

kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.unprivileged_bpf_disabled = 1
net.core.bpf_jit_harden = 2
kernel.kexec_load_disabled = 1

Раздел 2. Почтовый агент

В Debian по умолчанию ставится exim4, слушающий localhost. CIS требует, чтобы MTA принимал почту только локально. Проверьте и настройте:

ss -lntp | grep ':25'
sudo dpkg-reconfigure exim4-config    # выберите: local delivery only
# если почта не нужна совсем: sudo apt purge exim4-base exim4-daemon-light

Раздел 5. PAM

sudo apt install -y libpam-pwquality
sudo pam-auth-update       # включить профили pwquality и faillock
# /etc/security/faillock.conf
deny = 5
unlock_time = 900
# история паролей — в /etc/pam.d/common-password
password required pam_pwhistory.so remember=24 enforce_for_root use_authtok

Модуль pam_faillock доступен в Debian 12 и новее. В более старых релизах используйте pam_tally2 по документации вашей версии.

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

sudo apt install -y auditd audispd-plugins apparmor-profiles apparmor-profiles-extra
sudo grep -n GRUB_CMDLINE_LINUX= /etc/default/grub    # audit=1 audit_backlog_limit=8192 apparmor=1 security=apparmor
sudo update-grub

Раздел 7. Контроль пакетов и состояния

debsums -s                          # изменённые файлы пакетов
debsecan --suite bookworm --only-fixed   # известные уязвимости с доступным исправлением
dpkg -l | awk '/^rc/ {print $2}'    # удалённые пакеты с остатками конфигурации

Остатки конфигурации удалённых пакетов очистите: sudo apt purge $(dpkg -l | awk '/^rc/ {print $2}') (проверьте список перед запуском).

Проверка соответствия

Для Debian нет такого же распространённого набора профилей OpenSCAP, как для RHEL, поэтому основа проверки: CIS Debian Linux Benchmark как чек-лист, lynis audit system для автоматического обзора и ваш список отклонений с причинами. Соответствие мерам ФСТЭК и разделам NIST дано в таблицах общей статьи.

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

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