LINUX.ORG.RU

На сайте ФСТЭК России опубликован Методический документ «Рекомендации по обеспечению безопасной настройки операционных систем Linux».

 


2

3

«Документ содержит рекомендации по настройке операционных систем Linux. Рекомендации направлены на повышение защищенности информационных (автоматизированных) систем, построенных с использованием операционных систем Linux.»

( https://fstec.ru/normotvorcheskaya/informatsionnye-i-analiticheskie-materialy/2590-informatsionnoe-soobshchenie-fstek-rossii-ot-30-dekabrya-2022-g-n-240-22-6933 )

Наслаждайтесь …..

Ответ на: комментарий от madcore

Нет:

Настоящие Рекомендации подлежат реализации в государственных
информационных системах и на объектах критической информационной
инфраструктуры Российской Федерации, построенных с использованием
операционных систем Linux, несертифицированных по требованиям безопасности
информации, до их замены на сертифицированные отечественные операционные
системы.
vvn_black ★★★★★
()
Ответ на: комментарий от fuggy

Начать стоит с объяснения госмужам, что Linux - это ядро. GNU/Linux - операционная система на базе ядра Linux, а реализации этого балагана - дистрибутивы. Ну и по тексту там прям балаган как надо. Видимо в цейтноте кипиай чинуший закрывали, выдавили бумажку, отчитались.

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

«Установить корректные права доступа к исполняемым файлам и библиотекам операционной системы путём анализа корректности прав доступа к утилитам и системным библиотекам».

Это же в ДМБ, вроде, было: «Для более эффективного проследования в часть, просьба пройти в автобус и проследовать в часть».

Anoxemian ★★★★★
()

Как по мне - самое забавное открытие из этого документа - AltLinux единственный из Линуксов, имеющихся сейчас под рукой, у которого ядро собрано похоже действительно без CONFIG_INIT_ON_ALLOC_DEFAULT_ON.
Arch, Void, Ubuntu - у всех включено в config.

Прям даже жаль, что я AltLinux не ставил установщиком, надо бы посмотреть пишут ли они init_on_alloc=1 в параметры ядра, когда он устанавливается в обычном режиме.

Toxo2 ★★★★
()
Ответ на: комментарий от Anoxemian

Да вроде обычный казённый язык, тащемта. В духе сводок: «атаковал потерпевшего посредством нанесения колотой раны предметом, конструктивно схожим с ножом» ))

По сути-то, похоже на вполне здравый аудит и выстраивание профилей активности в ОС.

NDfan
()

Пригодится.

По ходу дела, рекомендации, в том или ином виде, распропагандированы для ключевых правительственных сфер. Есть даже ссылки на готовые плейбуки Ansible.

https://ncp.nist.gov/checklist/909

https://security-guidance.service.justice.gov.uk/system-lockdown-and-hardenin...

и т.п.

NDfan
()

На самом деле это довольно интересный документ, и следует вынести его в новости, для обсуждения.

Мои замечания (после бутылки вина, ибо вечер понедельника!):

2.1.1. Не допускать использование учетных записей пользователей с пустыми паролями

Линукс не допускает пустые пароли, даже не допускает сейчас пароли не соотв. определенным правилам безопасности (но обойти можно).

2.1.2. Обеспечить отключение входа суперпользователя в систему по протоколу SSH

Идиотизм, видимо эта рекомендация является следствием того, что для root используют слабые пароли, которые используются для авторизации на всяких сайтах по продаже барахла и соц.сетей… Формально это не дает никаких доп. защит.

2.2.1. Обеспечить ограничение доступа к команде su путём добавления в файл /etc/pam.d/su следующей строки: auth required pam_wheel.so use_uid

разумно, я один раз чуть не поимел с этим проблем при обновлении политик безопасности, в стародавние времена, когда группу wheel только ввели…

2.2.2. Ограничить список пользователей, которым разрешено использовать команду sudo и разрешенных к выполнению через sudo команд путём пересмотра файла /etc/sudoers.

имхо, sudo это очень кривая утилита, добавляющая лишнюю прослойку, ее не стоит использовать в принципе.

2.3

имхо, весь пункт повторяет рекомендации 2.2 но более предметно, по факту надо проверить, а не настраивать, базовые права соотв. рекомендациям.

2.4.1 Ограничить доступ к журналу ядра путём установки значения sysctl- опции kernel.dmesg_restrict=1. Журнал ядра должен быть доступен только пользователям, которые обладают разрешением CAP_SYSLOG (администраторы системы).

Обычно он так и ограничен…

2.4.2 Заменить ядерные адреса в /proc и других интерфейсах на 0 путём установки значения sysctl-опции kernel.kptr_restrict=2.

Зачем?

2.4.3 Инициализировать динамическую ядерную память нулем при ее выделении путём установки значения опции загрузки ядра init_on_alloc=1. Эта настройка позволяет изменить значение опции сборки ядра CONFIG_INIT_ON_ALLOC_DEFAULT_ON при запуске системы (per boot).

Разумно.

2.4.4 Запретить слияние кэшей ядерного аллокатора путём установки опции загрузки ядра slab_nomerge. Эта настройка позволяет изменить значение опции сборки ядра CONFIG_SLAB_MERGE_DEFAULT при запуске системы (per boot).

хмм, не очень понятен возможный вектор атаки

2.4.5 Инициализировать механизм IOMMU путём установки значения для следующих опций загрузки ядра …

зачем? если IOMMU не нужен, то это только ослабляет зашиту…

2.4.6 Рандомизировать расположение ядерного стека путём установки значения опции загрузки ядра randomize_kstack_offset=1. Эта настройка позволяет изменить значение опции сборки ядра CONFIG_RANDOMIZE_KSTACK_OFFSET_ DEFAULT при запуске системы (per boot).

Это имеет смысл только когда много пользователей имеет доступ ядерному пространству, т.е. обычно бессмысленно.

2.4.7 Включить средства защиты от аппаратных уязвимостей центрального процессора (для платформы x86) путём установки значения опции загрузки ядра mitigations=auto,nosmt.

Резкое падение производительности, когда нужна эта защита? Какой вектор атаки?

2.4.8 Включить защиту подсистемы eBPF JIT ядра Linux путём установки

eBPF обычно не нужна, ее можно тупо отключить.

2.5.1. Отключить устаревший интерфейс vsyscall путём установки значения опции загрузки ядра vsyscall=none. Эта настройка позволяет изменить значение опции сборки ядра CONFIG_LEGACY_VSYSCALL_NONE при запуске системы (per boot).

По-хорошему, он должен быть отключен при сборке ядра.

2.5.2. Ограничить доступ к событиям производительности путём установки значения sysctl-опции kernel.perf_event_paranoid=3.

Зачем? Какой вектор атаки?

2.5.3. Отключить монтирование виртуальной файловой системы debugfs путём установки значения опции загрузки ядра debugfs=no-mount (по возможности off).

Дебаг функциональность обычно сильно снижает производительность и ее следует отключать по этим соображениям.

2.5.4. Отключить системный вызов kexec_load путём установки значения sysctl-опции kernel.kexec_load_disabled=1.

Последствия? Сколько нужный сервисов перестанет работать?

2.5.5. Ограничить использование user namespaces путём установки значения sysctl-опции user.max_user_namespaces=0. Если система на базе Linux не использует user namespaces для выполнения своей задачи, то данная настройка никак не повлияет на работу системы. Рекомендуется предварительно проверить реализацию данной рекомендации на тестовой системе.

т.е. отключить, если не нужно. логично!

2.5.6. Запретить системный вызов bpf для непривилегированных пользователей путём установки значения sysctl-опции kernel.unprivileged_bpf_disabled=1. Если непривилегированные процессы в системе на базе Linux не используют BPF для выполнения своей задачи, данная настройка никак не повлияет на работу системы. Рекомендуется предварительно проверить реализацию данной рекомендации на тестовой системе.

BPF не нужен, имхо… Одни дыры от него…

2.5.7. Запретить системный вызов userfaultfd для непривилегированных пользователей путём установки значения sysctl-опции vm.unprivileged_userfaultfd=0.

Правильно, но вроде так по дефолту и есть…

2.5.8. Запретить автоматическую загрузку модулей ядра, отвечающих за поддержку дисциплины линии терминала путём установки значения sysctl-опции dev.tty.ldisc_autoload=0.

Если говорить о рекомендациях по безопасности, то лучше делать монолитное ядро…

2.5.9. Отключить технологию Transactional Synchronization Extensions (TSX) путём установки значения опции загрузки ядра tsx=off.

хмм…

2.5.10. Настроить параметр ядра, который определяет минимальный виртуальный адрес, который процессу разрешено использовать для mmap, путём использования sysctl-опции vm.mmap_min_addr = 4096 или больше.

Ядро позволяет очень хорошо ограничить доступ к mmap и к kmap (лучше вообще отключить)…

2.5.11. Реализовать рандомизацию адресного пространства, которая защищает от атак на переполнение буфера, путём использования команды после тестирования kernel.randomize_va_space = 2. значения sysctl-опции net.core.bpf_jit_harden=2.

Вектор атаки? Для ряда систем это полезно, для других – бессмысленно.

soomrack ★★★★★
()
Ответ на: комментарий от soomrack

2.6.1. Запретить подключение к другим процессам с помощью ptrace путём установки значения sysctl-опции kernel.yama.ptrace_scope=3.

tmux, привет!

2.6.2. Ограничить небезопасные варианты прохода по символическим ссылкам (symlinks) путём установки значения sysctl-опции fs.protected_symlinks=1. Данная настройка не влияет на нормальную функциональность userspace и блокирует только вредоносное поведение.

без пояснений про вектор атаки бессмысленно.

2.6.3. Ограничить небезопасные варианты работы с жесткими ссылками (hardlinks) путём установки значения sysctl-опции fs.protected_hardlinks=1. Данная настройка не влияет на нормальную функциональность userspace и блокирует только вредоносное поведение.

без пояснений про вектор атаки бессмысленно.

2.6.4. Включить защиту от непреднамеренной записи в FIFO-объект путём установки значения sysctl-опции fs.protected_fifos=2. Данная настройка не влияет на нормальную функциональность userspace и блокирует только вредоносное поведение.

без пояснений про вектор атаки бессмысленно.

2.6.5. Включить защиту от непреднамеренной записи в файл путём установки значения sysctl-опции fs.protected_regular=2. Данная настройка не влияет на нормальную функциональность userspace и блокирует только вредоносное поведение.

без пояснений про вектор атаки бессмысленно.

2.6.6. Запретить создание core dump для некоторых исполняемых файлов путём установки значения sysctl-опции fs.suid_dumpable=0. Данная настройка не влияет на нормальную функциональность userspace и блокирует только вредоносное поведение.

без пояснений про вектор атаки бессмысленно.

В целом очень паршивый документ, который, по моему впечатлению, составили ребята, которые немного работали под линуксом и почитали всякие блоги про безопасность… Документ не имеет разумного обоснования, нет четких рекомендаций по сценариям применения, нет указания о векторах атак, от которых предлагаются защиты. Ничего не сказано про бранджмаузер, а сеть это самый массовый вектор атаки сегодня, нет рекомендаций про проверки паролей на наличе в открытых базах данных, нет рекомендаций про аудит безопасности, нет никаких упоминаний про разные модели построения защиты в разных сценариях применения, и пр. ИМХО, документ составлен на «отъ*бись», чтобы был.

soomrack ★★★★★
()
Ответ на: комментарий от soomrack

В целом очень паршивый документ, который, по моему впечатлению, составили ребята, которые немного работали под линуксом и почитали всякие блоги про безопасность…

Очень похоже. Хотя бы потому что защищать рабочую станцию и сервер надо сильно по разному и тд.

praseodim ★★★★★
()
Ответ на: комментарий от soomrack

Линукс не допускает пустые пароли, даже не допускает сейчас пароли не соотв. определенным правилам безопасности (но обойти можно).

Допускает, нужно просто разрешить их (пустые пароли) в конфиге PAM. А если учесть, что кроме PAM возможны и другие варианты...

Вхожу на домашний комп по пустому паролю, если че.

Khnazile ★★★★★
()
Ответ на: комментарий от soomrack

Линукс не допускает пустые пароли, даже не допускает сейчас пароли не соотв. определенным правилам безопасности (но обойти можно).

Что за бред, причём двойной? Во-первых, сам линукс с паролями вообще ничего не делает. Во-вторых, дефолтный passwd из debian 11 позволяет без проблем как удалить пароль (passwd -d) так и поставить пароль 123 (это про правила безопасности).

2.1.2. Обеспечить отключение входа суперпользователя в систему по протоколу SSH

Идиотизм,

Идиотизм - это твоё возражение. Рекомендация хорошая, и не только из-за брутфорсеров.

2.4.1 Ограничить доступ к журналу ядра путём установки значения sysctl- опции kernel.dmesg_restrict=1

Обычно он так и ограничен…

Раньше не был.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Что за бред, причём двойной? Во-первых, сам линукс с паролями вообще ничего не делает. Во-вторых, дефолтный passwd из debian 11 позволяет без проблем как удалить пароль (passwd -d) так и поставить пароль 123 (это про правила безопасности).

Да? Базовая инсталляция генту уже давно не позволяет. Можно вручную задать хеш в shadows, но это вряд ли доступно простым юзерам, и тот, кто делает, тот понимает, что делает.

Рекомендация хорошая, и не только из-за брутфорсеров.

Ну давай, расскажи мне почему эта хорошая рекомендация, и как ее исполнение качественно поднимает уровень защиты.

soomrack ★★★★★
()

Норм методичка, нужно понимать что в госсекторе работает зоопарк различной техники с разбросом как по железу так и по программному обеспечению. Тут формализованы требования к ПО для несертифицированных по требованиям безопасности ОС, до их замены на сертифицированные отечественные операционные системы т.е. описан механизм легитимизации имеющихся ОС - по сути документ прикрывающий задницы админам/безопасникам государственных ИС и на объектах критической информационной инфраструктуры.

sambo ★★
()
Ответ на: комментарий от Toxo2

Судя по практике, такие рекомендации со временем становятся обязательны для всех заинтересованных. Тех, кто, в том числе, обрабатывает «персональные данные». А значит для «интернет магазинов». Так, что и Альт, и Астра, и иные, думаю должны будут включить эти «рекомендации» в свои дистры, с соответсвующим упоминанием об этом. (Сорри за банальность)

paulbych
() автор топика
Ответ на: комментарий от soomrack

2.5.2. Ограничить доступ к событиям производительности путём установки значения sysctl-опции kernel.perf_event_paranoid=3.

Зачем? Какой вектор атаки?

насколько я помню чтобы запретить межпроцессорное взаимодействие через просадку счетчиков производительности, на некоторых системах даже df блокируют для этих же целей.

anonymous2 ★★★★★
()
Ответ на: комментарий от firkax

я вот захожу под root по ключам. вы предлагаете всегда использовать связку user + sudo? ёпрст в sudo и так уже за 3 года 2 дерзкие уязвимости с эксплоитом на поднятие привелегий. дистрибутивы уровня redhat el6 которых еще дофига по сети и уже без поддержки подвержены этой уязвимости 110%.

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 1)
Ответ на: комментарий от anonymous2

Нет, sudo это вредительская программа, использовать её не надо, я её везде снёс давно. Для логина за рута есть su.

Юзер по ключу + su по паролю это явно не хуже, чем рут по ключу. Доступ к su надо ограничить группой wheel.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
26 февраля 2024 г.
Ответ на: комментарий от anonymous2

Всем привет. А у кого-то был опыт применение kernel.perf_event_paranoid=3 На Red Hat/CentOS?

В документациях не нашел информации выше значение 2.

Не понятно применяется ли И в чем отличия от дефолтного, может ссылка есть на описание )

Adra
()
Ответ на: комментарий от Adra

В исходниках настоящего Linux я пока тоже ничего не вижу про perf_event_paranoid > 2.

Но в Ubuntu-то зачем-то стоит по умолчанию 4, только что смотрел. Сижу, пытаюсь скачать исходники Убунтовского ядра - может там патчи какие для > 2, что ли.

Только я не настоящий сварщик, так, любитель любопытствующий.

Toxo2 ★★★★
()
Ответ на: комментарий от soomrack

В целом очень паршивый документ, который, по моему впечатлению, составили ребята, которые немного работали под линуксом и почитали всякие блоги про безопасность…

Ты просто не представляешь, насколько велико это достижение. :) Прикинь, бюрократы допустили к созданию документа тех, кто хотя бы «немного работал» и «почитал блоги».

Ящетаю это совершенно ниэпический прорыв для них. В матрице явно что-то меняется. :)

ЗЫ: Я, кстати, не уверен, что наличие грамотных специалистов на стороне бюрократов - это что-то хорошее для людей.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 2)
Ответ на: комментарий от Toxo2

Похоже что это патч на debian

https://security-tracker.debian.org/tracker/CVE-2022-1729 Я пробовал прописывать в центОСи значение >2 система не ругается но и разницы Я не заметил например выводя от пользователя perf top

И в самой рекомендации в Явном виде НЕ указаны ОС Red Hat/CentOS

Но может кто-то знает больше)

Adra
()
Ответ на: комментарий от fuggy

Необходимый минимум для уровня C2 1983года: https://www.opennet.ru/openforum/vsluhforumID3/129886.html#309

Все эти рекомендации хорошо, но желательно тесты для них написать, например, добавить в: https://cisofy.com/lynis/

anonymous
()
Ответ на: комментарий от Toxo2

сложилась тенденция особенно вовсякихтам дебианах - мантейнеры просто как обезьяны копируют патчи не вдаваясь в детали… и это печально!

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 1)
Ответ на: комментарий от Adra

В общем - я не нашел никакого смысла в ванильном ядре в параметре kernel.perf_event_paranoid=3.

На мой взгляд - это сугубо Debian'овский вариант. При 3 в их ядре работает такой код

if (perf_paranoid_any() && !capable(CAP_SYS_ADMIN))
		return -EACCES;
где внутри perf_paranoid_any() как раз и проверяется > 2 (а там у них или 3 раньше могло быть, или 4 в более свежих ядрах)

Ну.... или просто я тупой и куда-то не туда смотрю.

Toxo2 ★★★★
()
Ответ на: комментарий от soomrack

А есть у кого нибудь ссылка на документацию по ядру на этот ресурс? 2.5.8 sysctl-опции dev.tty.ldisc_autoload=0

В документациях к ядру такого не вижу (

Да и похоже он идёт в версиях начиная с Redhat/Centos 9

Adra
()
30 августа 2024 г.
Ответ на: комментарий от anonymous

Если есть желания и знания bash, то можно написать тесты для проверки соответствия *NIX разным нормативным требованиям РФ и прочим советам по корректности настроек. Существуют тысячи настроек влияющих на корректность работы системы и проверить их всех можно только автоматическими тестами.

Тесты наверно лучше писать для популярного https://cisofy.com/lynis/ Кроме стандартных бесплатных тестов корректности у них есть и платные:

  • Linux compliance GDPR
  • Linux compliance ISO27001
  • Linux compliance ISO27002
  • Linux compliance PCI DSS

Что надо сделать:

  1. Если ваш дистрибутив (менеджер пакетов и проверки на CVE) ещё не поддерживается, добавить его поддержку.
  2. Проверить существующие тесты и добавить отсутствующие по рекомендациям с популярных дистрибутивов:
    1. https://wiki.gentoo.org/wiki/Security_Handbook/Full
    2. https://wiki.gentoo.org/wiki/Security_Handbook
    3. https://wiki.gentoo.org/wiki/Project:Hardened
    4. https://www.debian.org/doc/manuals/securing-debian-manual/index.en.html
    5. https://wiki.debian.org/Hardening
    6. https://fedoraproject.org/wiki/Security_Features_Matrix
    7. https://wiki.archlinux.org/title/Security
    8. https://wiki.alpinelinux.org/wiki/Securing_Alpine_Linux
    9. https://docs.freebsd.org/en/books/handbook/security/
    10. https://grsecurity.net/compare
    11. https://www.kernel.org/doc/html/latest/security/self-protection.html
    12. https://kspp.github.io/Recommended_Settings
  3. Добавить отдельные модули тестов на соответствие определенному стандарту или требованиям, например начать с: https://fstec.ru/normotvorcheskaya/informatsionnye-i-analiticheskie-materialy/2590-informatsionnoe-soobshchenie-fstek-rossii-ot-30-dekabrya-2022-g-n-240-22-6933 или прочие стандарты РФ.
anonymous
()