Сетевой systemd-unit нужен не для постоянного фонового процесса, а для
однократного повторного применения /etc/sysctl.d/62-securelinux-ng-network.conf
после network-online.target.
Состояние active (exited) означает успешное завершение oneshot-команды.
Постоянно работающий процесс в памяти не требуется.
Без этого unit допустим только эквивалентный механизм сетевого менеджера, который повторно применяет те же параметры после создания и поднятия интерфейсов.
| Модуль | Файл/объект | Метод restore |
|---|---|---|
| 2.1.2 SSH root | /etc/ssh/sshd_config.d/60-securelinux-ng-root-login.conf |
backup |
| 2.1.2 SSH hardening | /etc/ssh/sshd_config.d/61-securelinux-ng-ssh-hardening.conf |
backup |
| Corporate faillock | /etc/security/faillock.conf |
backup; применяется только при включённой корпоративной политике и strict+ |
| Corporate password policy | /etc/security/pwquality.conf, /etc/login.defs, /etc/pam.d/common-password |
исходное состояние фиксируется до установки зависимостей; backup либо удаление созданного файла; применяется только по флагу |
| Corporate password aging | password_aging_snapshots в manifest |
восстановление исходных параметров через chage |
| Password policy packages | installed_packages в manifest |
purge только пакетов и зависимостей, отсутствовавших до apply |
| 2.2.1 PAM wheel | /etc/pam.d/su |
backup; PAM-блок активируется только после добавления проверенного администратора |
| 2.2.1 членства wheel | added_group_memberships в manifest |
удаляются только членства, добавленные текущим apply |
| 2.2.1 группа wheel | группа wheel |
groupdel, только если группа создана скриптом и осталась пустой |
| 2.2.2 sudoers | /etc/sudoers.d/60-securelinux-ng-policy |
backup |
| 2.3.1 | /etc/passwd, /etc/group, /etc/shadow |
metadata snapshot |
| 2.3.5 | targets в /etc/systemd/system |
metadata snapshot |
| 2.3.6 | системные cron targets | metadata snapshot |
| 2.4.1/2/8 | /etc/sysctl.d/60-securelinux-ng-kernel.conf |
backup файла + runtime snapshot + адресный restore через sysctl -w |
| 2.5.x | /etc/sysctl.d/61-securelinux-ng-attack-surface.conf |
backup файла + runtime snapshot; kernel.kexec_load_disabled и kernel.unprivileged_bpf_disabled требуют reboot для полного runtime-отката |
| 2.6.x | /etc/sysctl.d/99-securelinux-ng-userspace-protection.conf |
backup файла + runtime snapshot; kernel.yama.ptrace_scope=3 требует reboot для полного runtime-отката |
| firewall (UFW) | — | ufw disable (если был включён скриптом); восстанавливает nftables (active/enabled) если был замаскирован скриптом; для заранее активного UFW restore остаётся partial и не откатывает исходные правила автоматически |
| /tmp tmpfs | /etc/fstab |
backup + перезагрузка |
| mount hardening | /etc/fstab |
backup + перезагрузка; /dev/shm и /var/tmp монтируются как отдельные tmpfs |
| kernel module blacklist | /etc/modprobe.d/60-securelinux-ng-blacklist.conf |
backup |
| fail2ban | /etc/fail2ban/jail.local |
backup |
| AIDE | — | ручное удаление /var/lib/aide/aide.db |
| AppArmor | — | aa-complain /etc/apparmor.d/* вручную |
| 2.1.1 empty_passwords | список имён пользователей с пустым паролем (empty-password-users-*.txt) |
пустые поля пароля не восстанавливаются автоматически по соображениям безопасности; backup сохраняется только как журнал затронутых УЗ |
| 2.3.2 runtime_paths | файлы запущенных процессов | metadata snapshot |
| 2.3.3 cron_command_paths | файлы из cron | metadata snapshot |
| 2.3.4 sudo_command_paths | файлы из sudoers | metadata snapshot |
| 2.3.8 standard_system_paths | системные бинари/библиотеки | metadata snapshot |
| 2.3.9 suid_sgid | SUID/SGID файлы | metadata snapshot |
| 2.3.10/11 home_permissions | home dirs и sensitive files | metadata snapshot |
| 2.3.7 user_cron | user cron files | metadata snapshot |
| 2.4.3–2.4.7 GRUB | /etc/default/grub |
backup + update-grub (reboot); generated grub.cfg может не совпасть побайтово |
| account audit | /var/log/securelinux-ng/account_audit.txt |
backup и восстановление, если файл существовал; удаление, только если файл создан скриптом |
| auditd | /etc/audit/rules.d/60-securelinux-ng.rules |
backup |
| auditd extended | /etc/audit/rules.d/61-securelinux-ng-extended.rules |
backup |
| network sysctl | /etc/sysctl.d/62-securelinux-ng-network.conf |
backup файла + runtime snapshot + адресный restore через sysctl -w |
| network sysctl unit | /etc/systemd/system/securelinux-ng-sysctl.service |
backup содержимого и состояния enabled/disabled/masked; удаление только если unit создан скриптом |
| coredump | /etc/security/limits.d/99-securelinux-ng-coredump.conf, /etc/systemd/coredump.conf.d/99-securelinux-ng.conf, /etc/sysctl.d/98-securelinux-ng-coredump.conf |
backup файлов + восстановление прежнего runtime kernel.core_pattern через sysctl -w |
| rkhunter | — | пакет не удаляется автоматически |
| 4.3 pam_pwhistory | /etc/pam.d/common-password |
входит в backup Corporate password policy |
| п.15.1 kernel.modules_disabled | — | временно не применяется; dropin не создаётся |
--manifest FILE— явный путь- иначе — последний
manifest-*.jsonвSTATE_DIR(маска) - иначе —
manifest.jsonвSTATE_DIR(прямое имя)
backups:[{original, backup}, ...]created_files: файлы, созданные скриптом (удаляются при restore)created_groups: группы, созданные скриптомmodified_files,apply_report,warnings,irreversible_changesadditional_measures_enabled: фактическое состояние дополнительного блока —trueпри--enable-additional-measuresили config-значении1,falseпри обычном applyinstalled_packages: новые пакеты password policyadded_group_memberships: членства, добавленные в wheelpassword_aging_snapshots: исходные значения aging- пути к
sysctl-runtime-<module>-<timestamp>.jsonдля восстановления live sysctl-значений
При apply сохраняется: TARGET=, MODE=, UID=, GID=.
При restore: chown uid:gid + chmod mode.
Fallback на старый текстовый формат stat сохранён для совместимости.
- sysctl restore: перед apply сохраняются live-значения каждого managed sysctl-модуля. После восстановления файла значения возвращаются адресно через
sysctl -w; глобальныйsysctl --systemне используется. kernel.kexec_load_disabled=1иkernel.unprivileged_bpf_disabled=1нельзя вернуть в0до перезагрузки;kernel.yama.ptrace_scope=3нельзя изменить до перезагрузки. Managed-файлы восстанавливаются, но runtime-откат завершается после reboot.- GRUB: вступает в силу только после перезагрузки.
- auditd: правила перезагружаются через
augenrules --loadилиsystemctl restart auditd. - 2.3.2/3/4/8/9: restore возвращает прежние права, но не гарантирует безопасность если файлы изменились.
- Пакеты дополнительных модулей автоматически не удаляются. Исключение — зависимости password policy, впервые установленные текущим apply и записанные в
installed_packages. - rkhunter: пакет не удаляется при restore автоматически; при необходимости удалите вручную:
apt-get remove rkhunter. kernel.modules_disabled=1: временно не применяется автоматически — dropin не создаётся.
Модуль 2.1.1 empty_passwords записывает /etc/shadow атомарно: через временный файл + fsync + os.replace. Это гарантирует что аварийное завершение не повредит файл аутентификации.
- Перед изменением активной локальной учётной записи через
chageисходные поляlast_change,min_days,max_days,warn_days,inactive_daysиexpire_dateсохраняются вpassword_aging_snapshotsmanifest. Restore восстанавливает их черезchage. - Manifest старых запусков без
password_aging_snapshotsне содержит данных для обратного восстановления aging; в этом случае модуль сообщает о пропуске. - Явный
WHEEL_USERSимеет приоритет. При пустом значении обычный запуск черезsudoавтоматически использует проверенногоSUDO_USER; ошибка регистрируется только при невозможности безопасного определения администратора. - Для
wheelmanifest хранит только членства, добавленные текущим apply. Restore сначала возвращает/etc/pam.d/su, затем удаляет эти членства и удаляет группуwheelтолько если она была создана скриптом и осталась пустой.
Обычный --apply выполняет основной набор hardening при
ENABLE_ADDITIONAL_MEASURES=0.
CLI-флаг --enable-additional-measures допустим только вместе с
--apply, имеет приоритет над config-файлом и включает 17 модулей:
- расширенное укрепление SSH;
- аудит учётных записей;
- AppArmor;
- AIDE;
- fail2ban;
- rkhunter;
- отключение опасных модулей ядра;
- укрепление параметров монтирования;
- защищённый
/tmpкакtmpfs; - UFW;
- auditd и правила аудита;
- rsyslog;
- chrony;
- unattended-upgrades;
- отключение apport;
- ограничение core dump;
- дополнительные сетевые sysctl.
Без CLI-флага дополнительный блок можно включить config-параметром
ENABLE_ADDITIONAL_MEASURES=1.
Manifest хранит фактическое состояние в поле
additional_measures_enabled: при включённом блоке — true, при
обычном apply — false.
Флаг не передаётся команде --restore. Restore определяет необходимый
объём отката только по manifest. Если поле равно false, дополнительные
модули, которые не применялись, пропускаются.
Для старых manifest без этого поля сохраняется совместимое прежнее поведение полного restore дополнительных модулей.
Перед установкой сохраняется полный список установленных пакетов.
После установки разница записывается в installed_packages.
Restore выполняет purge только этой разницы.
На Ubuntu Server были удалены шесть новых пакетов, на Debian — пять,
поскольку wamerican уже присутствовал, а на Ubuntu Minimal —
девять пакетов, включая зависимости file и libmagic.
Существование /etc/security/pwquality.conf определяется до запуска
apt-get. Если файл отсутствовал и был создан libpwquality-common,
он записывается как созданный и после purge остаётся отсутствующим.
Если файл существовал, сохраняется его исходная копия.
kernel.kexec_load_disabled и kernel.yama.ptrace_scope могут
не вернуться к исходному live-значению в текущей загрузке.
После удаления managed drop-in полный возврат завершается reboot.
Restore возвращает /etc/default/grub и запускает генератор
конфигурации. Параметры SecureLinux удаляются из grub.cfg
и из /proc/cmdline после reboot.
/boot/grub/grub.cfg не сохраняется как content-backup, поэтому
побайтовое совпадение с исходным generated-файлом не гарантируется.
Функциональный restore и идемпотентная повторная генерация подтверждены.