Подробный гайд: Файл /etc/nsswitch.conf (Name Service Switch) в Linux, включая Astra Linux

Подробный гайд по nsswitch.conf в Astra Linux: синтаксис, источники данных, интеграция с AD и тонкости настройки в защищённой среде ОС.

2026.07.23                  


Подробный гайд: Файл /etc/nsswitch.conf (Name Service Switch) в Linux, включая Astra LinuxПодробный гайд: Файл /etc/nsswitch.conf (Name Service Switch) в Linux, включая Astra Linux Файл /etc/nsswitch.conf (Name Service Switch) — это один из ключевых конфигурационных файлов в Linux, включая Astra Linux. Он определяет порядок и источники, которые система использует для разрешения различных баз данных (имен пользователей, групп, сетевых узлов и т.д.).

В корпоративной среде, где чаще всего применяется Astra Linux, этот файл критически важен для интеграции с централизованными каталогами (Active Directory, LDAP) и обеспечения корректной работы сетевых сервисов.

Ниже представлен подробный гайд по настройке, синтаксису и специфике nsswitch.conf в Astra Linux.


1. Базовый синтаксис

Файл состоит из строк, каждая из которых описывает одну базу данных. Формат строки:

база_данных : источник1 [действие] источник2 [действие] источник3

База данных (database):

Что именно мы ищем (например, passwd, hosts).

Источники (sources):

Где мы ищем (например, files, dns, sss).

Действия (actions):

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


2. Основные базы данных (Разделы)

В Astra Linux вы чаще всего будете работать со следующими разделами:

  • passwd, group, shadow: Базы данных пользователей, групп и теневых паролей. Используются командами id, su, login, sudo.
  • hosts: Разрешение сетевых имен (IP-адресов в имена и наоборот). Работает в связке с /etc/resolv.conf.
  • networks: Разрешение сетевых адресов.
  • services: Преобразование имен сетевых служб (например, http -> 80/tcp). Использует /etc/services.
  • protocols: Преобразование сетевых протоколов. Использует /etc/protocols.
  • sudoers: Определяет, откуда брать правила для sudo (актуально, если используется sudo с LDAP/AD).

3. Источники данных (Sources)

  • files: Локальные файлы в /etc/ (например, /etc/passwd, /etc/hosts).
  • dns: Система доменных имен (только для hosts).
  • sss: SSSD (System Security Services Daemon). Используется для интеграции с LDAP, Active Directory, FreeIPA. Это самый частый источник в корпоративных сетях Astra Linux.
  • winbind: Альтернативный способ интеграции с AD (через Samba/Winbind).
  • nis: Network Information Service (устаревший протокол, в современных системах Astra почти не используется).
  • compat: Режим совместимости с NIS (обычно не используется).

4. Управление потоком (Actions)

По умолчанию, если источник не нашел запись, NSS переходит к следующему.

Но вы можете изменить это поведение с помощью скобок:

  • [SUCCESS=return] — Если запись найдена, немедленно вернуть результат (не опрашивать следующие источники). Это поведение по умолчанию.
  • [NOTFOUND=continue] — Если запись не найдена, перейти к следующему источнику. Это поведение по умолчанию.
  • [UNAVAIL=continue] — Если источник недоступен (например, сервер LDAP отвалился), перейти к следующему.
  • [TRYAGAIN=continue] — Если источник временно занят, перейти к следующему.

Пример тонкой настройки:

hosts: files [SUCCESS=return] dns

Здесь мы говорим:

Сначала ищи в /etc/hosts. Если нашел — сразу возвращай и не лезь в DNS. Если не нашел — иди в DNS.* (Для hosts это и так поведение по умолчанию, но явное указание иногда помогает при отладке).


5. Специфика Astra Linux

При работе с nsswitch.conf в Astra Linux (особенно в защищенном исполнении) нужно учитывать следующие нюансы:

А. Mandatory Access Control (MAC / Parsec)

В Astra Linux SE включена мандатная система контроля доступа.

Важно:

Простой переход в root через su может не дать вам прав на редактирование /etc/nsswitch.conf, если ваш текущий мандатный контекст (уровень целостности/секретности) ниже, чем у файла.

Решение:

Используйте sudo или повышайте свой мандатный уровень до уровня файла (обычно 0 или выше, в зависимости от настроек замкнутой среды), либо редактируйте файл через штатные средства администрирования, если они предусмотрены вашей политикой безопасности.


Б. Интеграция с Active Directory / LDAP (SSSD)

В 90% случаев в корпоративном сегменте Astra Linux вводится в домен AD или LDAP. В этом случае nsswitch.conf должен указывать на SSSD.

Типичный вид для доменной Astra Linux:

passwd:     sss files
group:      sss files
shadow:     sss files

hosts:      files dns
networks:   files

services:   files
protocols:  files
rpc:        files

Обратите внимание:

sss стоит перед files. Это значит, что система сначала спросит у домена (AD/LDAP), и только если пользователь не доменный, посмотрит в локальный /etc/passwd. В некоторых сценариях (например, для ускорения или если локальные пользователи имеют приоритет) ставят files sss.


В. Кэширование и SSSD

Если вы используете sss, помните, что SSSD кэширует данные. Если вы изменили nsswitch.conf и добавили туда sss, но службы AD недоступны, SSSD отдаст данные из кэша (если включено).

Убедитесь, что служба sssd запущена:

sudo systemctl status sssd

6. Практические примеры конфигураций

Пример 1: Стандартный локальный сервер (без домена)

passwd:         files
group:          files
shadow:         files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

Пример 2: Сервер в домене Active Directory (через SSSD)

passwd:         sss files
group:          sss files
shadow:         sss files

hosts:          files dns myhostname
networks:       files

services:       files
protocols:      files

Примечание:

myhostname — это специальный модуль nss, который гарантирует, что имя самого хоста всегда разрешается корректно, даже если DNS "отвалился". Очень полезно для серверов).


Пример 3: Использование sudo с LDAP

Если вы храните правила sudo в LDAP/AD:

sudoers:        files sss

7. Проверка и отладка (Troubleshooting)

После изменения /etc/nsswitch.conf не нужно перезагружать саму ОС или демон nscd (в Astra Linux он обычно не используется, вместо него кэшированием занимается SSSD). Изменения вступают в силу мгновенно для новых процессов.

Как проверить, что всё работает:

1. Проверка пользователей и групп:

    getent passwd <имя_пользователя>
    getent group <имя_группы>
    id <имя_пользователя>

Если команда id зависает на несколько секунд, а потом выдает ошибку — проблема в источнике (например, SSSD не может достучаться до AD, а таймауты велики).


2. Проверка сетевых имен:

    getent hosts <имя_хоста>
    getent hosts <ip_адрес>

3. Проверка работы sudo (если меняли sudoers):

    sudo -l

8. Золотые правила и предостережения (Best Practices)

  1. Никогда не закрывайте сессию root, пока не проверите изменения. Если вы ошибетесь в разделе passwd или sudoers, вы можете потерять возможность войти по SSH или выполнить sudo. Держите открытым терминал с правами root для отката.

2. Делайте бэкапы. Перед редактированием всегда выполняйте:

    sudo cp /etc/nsswitch.conf /etc/nsswitch.conf.bak.$(date +%F)

3. Приоритет источников.

В разделе hosts всегда ставьте files перед dns, если у вас есть важные записи в /etc/hosts (например, для локальных баз данных или специфических маршрутов), чтобы избежать лишних DNS-запросов и задержек.


4. Синтаксис.

Не ставьте пробелы внутри скобок с действиями. Правильно: [SUCCESS=return]. Неправильно: [ SUCCESS = return ].


Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Денис Аверко @Nymexis г. Омск

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта