“Каждый раз, когда вы настраиваете сервер, вы думаете, что всё делаете правильно. А потом, под нагрузкой, начинают всплывать проблемы, которые можно было бы предотвратить на этапе первичной конфигурации. Стандартные гайды часто упускают детали, критичные для работы в условиях российских регуляторных требований и типичных инфраструктурных решений. Этот чеклист — не перечень очевидных шагов, а свод практик, которые закрывают уязвимости, влияющие на стабильность, безопасность и соответствие 152-ФЗ и требованиям ФСТЭК.”
Базовый аудит и документация
Первое, что часто игнорируют — системный подход к аудиту. Новый сервер, это не просто машина с установленной ОС. Это объект учета, элемент инфраструктуры, который должен быть однозначно идентифицирован.
- Уникальный инвентарный номер (asset tag): Сервер должен иметь уникальный идентификатор в системе управления конфигурациями (CMDB). Этот номер привязывается к серийному номеру оборудования, MAC-адресам и доменному имени.
- Базовая документация: Фиксируйте роль сервера (web, БД, файловое хранилище), ответственного администратора, зону размещения (DMZ, внутренний сегмент), список критичных сервисов и портов. Это основа для любого последующего аудита ФСТЭК.
- Сбор системной информации: Зафиксируйте точные версии ядра, дистрибутива, аппаратной платформы. Используйте для этого скрипты, а не ручной ввод. Результат сохраняйте в защищённое хранилище логов.
Сетевая изоляция и конфигурация
Неправильная сетевая настройка — самая частая причина инцидентов. Речь не только о firewalld или iptables.
Сегментация и правила доступа
Настройка межсетевого экрана должна быть документирована политикой «минимальных привилегий». Для каждого сервиса явно прописываются разрешённые порты, протоколы и исходные IP-адреса или подсети. Все остальные соединения блокируются по умолчанию. Особое внимание — управляющим портам (SSH, RDP, Web-интерфейсы). Их доступ должен быть ограничен jump-хостами или административными подсетями.
Отключение неиспользуемых сетевых функций
В ядре Linux и сетевых стеках часто по умолчанию включены протоколы, которые не нужны в продакшене и могут быть использованы для атак (например, ICMP redirects, source routing). Отключите их на уровне sysctl.
# Пример критичных параметров net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_ra = 0
Управление учётными записями и аутентификацией
Стандартный совет «отключить root-логин» поверхностен. Нужен комплексный подход к управлению доступом.
- Централизованная аутентификация: Интеграция с LDAP, FreeIPA или AD для учёта администраторов обязательна. Локальные учётные записи — только для системных сервисов.
- Настройка PAM-модулей: Жёстко ограничьте количество попыток входа и время блокировки при неудачных попытках. Настройте использование модуля
pam_faillockилиpam_tally2. - Принудительный ротор паролей для локальных аккаунтов: Даже если они редко используются, установите политику истечения срока действия пароля через
chage. - Безпарольный sudo: Для автоматизации разрешите определённым учётным записям выполнять конкретные команды через sudo без запроса пароля, но только с предварительной аутентификацией по SSH-ключу. Это безопаснее, чем хранение паролей в скриптах.
Настройка мониторинга и логирования
Сервер без мониторинга и централизованного сбора логов — «чёрный ящик». Это прямое нарушение требований к контролю безопасности.
Агенты мониторинга
Установите и настройте агенты систем мониторинга (например, Zabbix-agent, Prometheus node_exporter). Собирайте не только загрузку CPU и RAM, но и более тонкие метрики: давление ввода-вывода (IO pressure), потребление inodes, состояние RAID-массивов, заполнение журналов systemd.
Настройка журналирования
Перенастройте rsyslog или systemd-journald для отправки логов на выделенный log-сервер (систему управления событиями безопасности – SIEM). Критично передавать логи аутентификации (auth, authpriv), команд оболочки (through auditd) и системных ошибок. Убедитесь, что время на сервере синхронизировано с единым источником (NTP, Chrony).
# Пример конфигурации rsyslog для отправки логов на центральный сервер *.* @192.0.2.10:514
Обновление и управление пакетами
Автоматическое обновление всех пакетов («yum update -y») в продакшене — путь к нестабильности. Нужна управляемая политика.
- Фиксация репозиториев: Используйте стабильные, версионированные репозитории, а не «latest». Настройте локальное зеркало для контроля и скорости.
- Тестовый стенд: Все обновления, особенно ядра и критичных библиотек (glibc, openssl), должны предварительно тестироваться на идентичной тестовой среде.
- Исключение пакетов: Явно исключите из автоматического обновления пакеты, от которых зависит ваше приложение, если их версия жёстко зафиксирована.
- Автоматизация с проверкой: Используйте не просто cron-задачу, а системы управления конфигурациями (Ansible, SaltStack) для применения обновлений безопасности, которые предварительно утверждены.
Конфигурация служб и демонов
Стандартные конфиги служб из репозиториев редко соответствуют требованиям безопасности.
Принцип минимальных привилегий
Запускайте каждую службу от отдельного непривилегированного пользователя и группы. Изолируйте её файловую систему с помощью chroot, systemd namespace или, в идеале, контейнеризации. Удалите или закройте доступ ко всем ненужным модулям и функциям службы (например, неиспользуемые модули Apache или Nginx).
Защита от переполнения ресурсов
Настройте лимиты через systemd (MemoryLimit, CPUQuota) или PAM (limits.conf) для предотвращения DoS-атак, когда одна служба исчерпывает все ресурсы сервера.
[Service]
MemoryLimit=512M
CPUQuota=75%
Файловая система и точки монтирования
Типичные схемы разметки дисков (/, /home, /var) устарели. Современный подход учитывает отказоустойчивость, производительность и безопасность.
- Выделение /var/log: Монтируйте каталог для логов на отдельный раздел или диск. Это предотвратит ситуацию, когда переполненные логи заполнят корневую файловую систему и «положат» сервер.
- Опции монтирования: Для системных разделов используйте опции
noexec(запрет выполнения бинарников) иnosuid(игнорирование SUID-битов). Для разделов с данными может быть полезнаnodev(игнорирование специальных файлов устройств). - Квотирование дискового пространства: Настройте дисковые квоты для пользовательских каталогов, если сервер используется для хранения файлов. Это простая, но эффективная мера.
Безопасность ядра и контроль процессов
Возможности ядра Linux можно и нужно ограничивать для снижения поверхности атаки.
- Настройка sysctl: Помимо сетевых параметров, установите
kernel.dmesg_restrict=1(ограничение доступа к логам ядра),kernel.kptr_restrict=2(сокрытие адресов ядра). - Использование средств контроля доступа: Рассмотрите настройку SELinux в режиме Enforcing или AppArmor для профилирования критичных служб. Даже базовые предустановленные политики блокируют множество векторов атак.
- Отключение ненужных модулей ядра: Выгрузите модули для неиспользуемого оборудования (например, Bluetooth, неиспользуемые драйверы сетевых карт).
Резервное копирование конфигурации
Конфигурацию сервера нельзя восстанавливать по памяти. Автоматизируйте процесс бэкапа.
- Выделите критичные конфиги: Каталоги
/etc,/root/.ssh/(публичные ключи), списки установленных пакетов, конфигурация сетевых интерфейсов и правила межсетевого экрана. - Версионирование: Используйте Git для хранения конфигурационных файлов. Сервер может «падать», но репозиторий с его конфигами должен быть доступен. Это также даёт историю изменений.
- Проверка восстановления: Периодически проверяйте, что из бэкапа можно развернуть рабочую конфигурацию на чистой системе.
Заключительное тестирование и нагрузка
Перед сдачей в эксплуатацию сервер должен пройти финальную проверку.
- Сканирование уязвимостей: Проведите внутреннее сканирование утилитами вроде OpenVAS или Lynis для выявления очевидных проблем в конфигурации.
- Нагрузочное тестирование: Сымитируйте ожидаемую нагрузку на сервисы. Это выявит проблемы с лимитами процессов, файловыми дескрипторами и сетевыми соединениями, которые не видны в простое.
- Проверка отказоустойчивости: В контролируемом окне попробуйте «уронить» зависимые сервисы (БД, кэш) или переполнить диск с логами. Убедитесь, что основное приложение ведёт себя предсказуемо (например, переходит в режим graceful degradation, а не просто падает).
Интеграция с регуляторными требованиями (152-ФЗ, ФСТЭК)
Многие из перечисленных шагов напрямую соответствуют требованиям регуляторов. Оформите это документально.
- Сопоставление с мерами защиты: Например, настройка аудита (auditd) и централизованного сбора логов покрывает требование о регистрации событий безопасности. Политика паролей и блокировки при неудачных попытках входа — меры по управлению доступом.
- Документация для аудита: Подготовьте краткий отчёт по серверу, где каждый пункт чеклиста подтверждён выводом команды или ссылкой на конфигурационный файл. Это сэкономит время при проверке.
- Учёт в реестре ИСПДн: Если сервер обрабатывает персональные данные, убедитесь, что он внесён в соответствующий реестр информационных систем, и его конфигурация соответствует утверждённой модели угроз.