Настройка авторизации в операционных системах Linux Ограничение механизмов получения привилегий Настройка прав доступа к объектам файловой системы Настройка механизмов защиты ядра Linux Уменьшение периметра атаки ядра Linux Настройка средств защиты пользовательского пространства ядра Linux
Окружение
Во всех случаях настройка системы с целью соблюдения Рекомендаций может быть выполнена администратором локально.
Для оценки текущего состояния опций в системе, описанных в разделах 2.4 - 2.6, имеется специально разработанный скрипт (check-fstek). Для получения полной информации потребуются права администратора.
Нумерация разделов Инструкции соответствует нумерации разделов Рекомендаций.
Установщиком ОС anaconda предусмотрен запрет на создание пустых паролей пользователей. При создании нового пользователя командой useradd учетная запись создается без пароля. Пока вновь созданному пользователю не будет назначен пароль, его учетная запись будет заблокирована, а вход в систему – невозможен. Для дополнительной защиты от входа в систему под беспарольной учетной записью используется исключение такой учетной записи из меню выбора пользователя для входа в окне авторизации при запуске системы.
useradd
После назначения пользователю пароля его учетная запись полностью разблокируется.
В случае если какие-либо учетные записи в файле /etc/shadow не имеют пароля, выполните следующую команду для блокировки учетной записи до тех пор, пока не будет определено, почему для нее не назначен пароль:
passwd -l
По умолчанию вход по протоколу SSH суперпользователем root заблокирован. Данная настройка определена в конфигурационном файле /etc/ssh/sshd_config.d/01-permitrootlogin.conf, в котором используется параметр PermitRootLogin со значением no.
PermitRootLogin
no
Шаблон настройки и обеспечения доступа к команде su предустановлен в файле /etc/pam.d/su, однако по умолчанию строки данной настройки закомментированы. Для выполнения требования необходимо раскомментировать строку:
su
auth required pam_wheel.so use_uid
В файле присутствуют комментарии на английском языке к закомментированным строкам.
По умолчанию команда sudo доступна для пользователей, включенных в группу wheel, либо для пользователей, указанных в файле /etc/sudoers или /etc/sudoers.d/.
По умолчанию в РЕД ОС для /etc/passwd и /etc/group выставлены права 644. При этом права доступа к /etc/shadow выставлены в 000, что обеспечивает более строгий контроль, чем 644.
644
000
Значение 644 означает, что пользователи имеют право на чтение файла, но не могут его изменять или осуществлять запуск из командной строки. Атрибут 644 обычно используется для файлов, которые могут быть изменены только администратором системы или другими пользователями с повышенными правами. Значение 000 означает полный запрет на чтение, изменение и запуск файла из командной строки.
Чтобы установить корректные права доступа к файлам запущенных процессов, необходимо выполнить команды для всех исполняемых файлов, запущенных в настоящий момент, и соответствующих библиотек:
chmod go-w <путь_к_файлу>
Чтобы установить корректные права доступа к файлам, выполняющимся с помощью планировщика задач cron неавторизованными пользователями, необходимо выполнить команды для каждого файла, который вызывается из заданий cron:
Если не установить корректные права доступа к файлам, выполняющимся с помощью планировщика задач cron неавторизованными пользователями, это может привести к выполнению произвольного кода от имени владельца задания cron (в том числе root), что приведет к полной компрометации операционной системы.
Изменение владельца для каждого исполняемого файла, который можно запускать с привилегиями суперпользователя root, но владельцем которого является обычный пользователь, выполняется командой:
chown root <путь_к_файлу>
Также необходимо выполнить команду для каждого исполняемого файла, который можно запускать с привилегиями суперпользователя root и к которому имеют доступ на запись все пользователи:
Чтобы установить корректные права доступа к стартовым скриптам системы, необходимо к каждому файлу в директориях /etc/rc#.d, а также к файлам с расширением .service, присутствующим в системе, применить команды вида:
chmod o-w <имя_файла>
Чтобы установить корректные права доступа к системным файлам заданий (конфигурационным файлам) cron, необходимо выполнить команды вида:
chmod go-wx <путь_к_файлу_или_директории>
К системным файлам-описаниям очередей cron относятся следующие файлы:
/etc/crontab (файл);
/etc/crontab
/etc/cron.d (директория и файлы внутри нее);
/etc/cron.d
/etc/cron.hourly (директория и файлы внутри нее);
/etc/cron.hourly
/etc/cron.daily (директория и файлы внутри нее);
/etc/cron.daily
/etc/cron.weekly (директория и файлы внутри нее);
/etc/cron.weekly
/etc/cron.monthly (директория и файлы внутри нее).
/etc/cron.monthly
Чтобы установить корректные права доступа к пользовательским файлам заданий cron, необходимо выполнить команды вида:
chmod go-w <путь_к_файлу_заданий>
Чтобы установить корректные права доступа к исполняемым файлам и библиотекам операционной системы, необходимо провести анализ корректности прав доступа к утилитам и системным библиотекам, расположенным по стандартным путям (/bin, /usr/bin, /lib, /lib64 и другим путям), а также к модулям ядра (/lib/modules/<версия_текущего_ядра>/).
Местоположение большинства стандартных исполняемых файлов указано в переменной $PATH пользователя root.
Чтобы установить корректные права доступа к SUID/SGID-приложениям, необходимо провести аудит системы на предмет поиска всех SUID/SGID-приложений – права доступа к каждому из них не должны позволять остальным пользователям изменять его содержимое (в особенности, если это SUID-приложение и его владельцем является суперпользователь root). В противном случае следует выполнить команду вида:
chmod go-w <путь_к_приложению>
Команды поиска подобных файлов:
find / -perm /4000 find / -perm /2000
Для выполнения требования необходимо установить на каждый из указанных файлов корректные права доступа с помощью команды вида:
chmod go-rwx <путь_к_файлу>
Чтобы установить корректные права доступа к домашним директориям пользователей, необходимо выполнить команду вида:
chmod 700 <домашняя_директория>
Чтобы ограничить доступ к dmesg для пользователей, в файле /etc/sysctl.conf необходимо выполнить команду вида:
kernel.dmesg_restrict=1
По умолчанию установлено значение 1, дополнительных действий не требуется.
1
Чтобы заменить ядерные адреса в /proc на 0, в файле /etc/sysctl.conf необходимо указать параметр вида:
0
kernel.kptr_restrict=2
Команда может повлиять на некоторые приложения.
Если установить значение 1, будут отображены истинные значения для пользователей с capability CAP_SYSLOG. Если установить значение 2, будут отображены «0» в любом случае.
2
Если используются утилиты отладки или профилирования, например Perf, то рекомендуется вернуть настройку в значение 1.
Чтобы инициализировать память 0 при выделении, необходимо добавить в файл /etc/grub2.cfg следующую опцию:
init_on_alloc=1
Запуск опции влияет на производительность в худшую сторону от 1% до 7%.
Чтобы запретить слияние кэшей ядерного аллокатора, необходимо добавить в файл /etc/grub2.cfg следующую опцию:
slab_nomerge
При отключении увеличит фрагментацию памяти.
Чтобы инициализировать механизм IOMMU, необходимо установить в файле /etc/grub2.cfg следующие параметры при запуске:
iommu=force iommu.strict=1 iommu.passthrough=0
Установка может повлиять на работу драйверов некоторых устройств.
Чтобы рандомизировать расположение ядерного стека, необходимо в файле /etc/grub2.cfg установить следующий параметр (при загрузке):
randomize_kstack_offset=1
Установка имеет минорное влияние на производительность (1% и менее).
Чтобы включить защиту от аппаратных уязвимостей CPU, необходимо в файле /etc/grub2.cfg установить следующий параметр (при загрузке для x86-архитектур):
mitigations=auto,nosmt
Данный параметр отключает набор инструкций Intel в ядре, подверженных уязвимости spectre meltdown. Дополнительных действий не требуется.
Чтобы включить защиту подсистемы eBPF, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w net.core.bpf_jit_harden=2
При установке параметра будут наблюдаться ухудшения производительности в BPF JIT.
Чтобы отключить устаревший интерфейс vsyscall, необходимо в файле /etc/grub2.cfg установить следующий параметр (при загрузке):
vsyscall=none
По умолчанию vsyscall находится в режиме emulate. При отключении возникнут проблемы с виртуальными машинами/docker на основе старых образов (например, Centos 6).
vsyscall
emulate
Чтобы ограничить доступ к событиям производительности, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w kernel.perf_event_paranoid=3
Дополнительных действий не требуется, так как значения рассматриваются как:
>=2 Disallow kernel profiling by users without CAP_PERFMON
Чтобы отключить монтирование виртуальной файловой системы debugfs, необходимо в файле /etc/grub2.cfg установить следующий параметр (рекомендуется off при загрузке):
off
debugfs=no-mount
Отключение монтирования и файловой системы нарушит работу отладочных утилит, использующих ее.
Чтобы отключить системный вызов kexec_load, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w kernel.kexec_load_disabled=1
При установленном значении «1» kdump работать не будет.
Чтобы ограничить использование user namespaces, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w user.max_user_namespaces=0
При установленном значении «0» docker, браузеры и все, что связано с sandbox, работать не будет либо будет работать некорректно.
Чтобы запретить системный вызов bpf для непривилегированных пользователей, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w kernel.unprivileged_bpf_disabled=2
По умолчанию установлено значение 2, дополнительных действий не требуется.
Чтобы запретить системный вызов userfaultfd для непривилегированных пользователей, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w vm.unprivileged_userfaultfd=0
По умолчанию установлено значение 0, дополнительных действий не требуется.
Чтобы запретить автоматическую загрузку модулей ядра, связанных с TTY Line Discipline, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w dev.tty.ldisc_autoload=0
Требуется оценить, используется ли автоматическая загрузка соответствующих модулей.
Чтобы отключить технологию TSX, необходимо в файле /etc/grub2.cfg установить следующий параметр (при загрузке):
tsx=off
Параметр tsx=off отключает набор инструкций Intel TSX. По умолчанию отключено на уровне ядра.
Чтобы настроить минимальный виртуальный адрес, который разрешено использовать для mmap, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w vm.mmap_min_addr = 4096
Системный вызов mmap позволяет выполнить отображение файла/устройства на память. Данное ограничение не позволит использовать нижнюю часть памяти. В РЕД ОС установлено ограничение в 64 КБ, что превышает запрашиваемое. Дополнительных действий не требуется.
Чтобы включить рандомизацию адресного пространства, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w kernel.randomize_va_space = 2
После установки параметра в значение «2» дополнительно включится рандомизация кучи. Установка данного параметра может нарушить работу некоторых старых приложений.
Чтобы запретить подключение к другим процессам с помощью ptrace, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w kernel.yama.ptrace_scope=3
Этот параметр отключит ptrace, что приведет к остановке работы всех утилит, связанных с ним (разнообразные анализаторы).
После установки параметра «3» нельзя переключить обратно.
Чтобы ограничить небезопасные варианты прохода по символическим ссылкам необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w fs.protected_symlinks=1
Чтобы ограничить небезопасные варианты работы с жесткими ссылками необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w fs.protected_hardlinks=1
Для включения защиту от непреднамеренной записи в FIFO-объект, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w fs.protected_fifos=2
По умолчанию параметр установлен в значение 1, при установке параметра 2 защита от непреднамеренной записи в FIFO-объект работает аналогично, действие распространяется на группу директорий.
Чтобы включить защиту от непреднамеренной записи в файл, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w fs.protected_regular=2
По умолчанию параметр установлен в значение 1 при установке параметра 2 защита от непреднамеренной записи в файл работает аналогично, действие распространяется на группу директорий.
Чтобы запретить создание core dump для исполняемых файлов с флагом suid, необходимо в файле /etc/sysctl.conf установить следующий параметр:
sysctl -w fs.suid_dumpable=0
По умолчанию параметр установлен в значение 2. При установке параметра в значение 0 отключается передача дампов systemd-coredump. Значение 0 можно использовать, если исследование дампов памяти не производится.
В качестве промежуточного значения можно выставить параметр в значение 1, чтобы процессы с другими привилегиями не сбрасывались в дамп.
Дата последнего изменения: 15.05.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.