Что такое hardening сервера и зачем он нужен
Hardening буквально означает «закаливание» — процесс делать сервер устойчивым к атакам. Дистрибутивы Linux по умолчанию включают много сервисов: FTP, Telnet, RPC, Samba и другие. Всё это расширяет attack surface — поверхность атаки. Hardening ставит цель максимально её уменьшить.
В практике Sayt.uz каждый новый сервер настраивается автоматическим скриптом hardening на основе CIS Benchmark и рекомендаций NIST с более чем 200 правилами. Такой подход исключает ручные ошибки и даёт стандартный результат при аудите.
Linux-аудит и начальная проверка
Первый шаг — понять текущее состояние. Инструменты Lynis, OpenSCAP или tiger сканируют сервер и выдают отчёт по безопасности. В отчёте проверяются открытые порты, запущенные сервисы, права на файлы, учётные записи и настройки. По каждой проблеме указывается severity и рекомендация по исправлению.
Аудит — не разовая задача, а постоянный процесс. На Sayt.uz Lynis запускается еженедельно, результат уходит в Slack. Если score падает ниже 90, автоматически создаётся ticket ответственному инженеру, и проблема должна быть устранена в течение 48 часов.
Отключение лишних сервисов
Правило «неиспользуемый сервис — вектор атаки» работает всегда. Команда systemctl list-unit-files показывает все включённые сервисы. Веб-серверу не нужны FTP, Telnet, Avahi, CUPS или Bluetooth. Их полностью отключают командами systemctl disable и systemctl mask.
Рекомендация Sayt.uz: минимальный набор для production — sshd, ваше приложение, monitoring agent и log forwarder. Всё остальное отключено. Для удобства готовится base image (Docker или AMI), и все серверы запускаются в одинаковом состоянии.
Firewall и сегментация сети
Firewall — основа hardening. Откажитесь от схемы «разрешено по умолчанию» в пользу default deny. Открывайте только нужные порты и только нужным источникам. Правила пишутся через iptables, nftables или ufw — просто и понятно.
Сетевая схема Sayt.uz: внешний firewall (Cloudflare WAF) открывает только 80 и 443, внутренний разрешает SSH только с IP bastion, а порт базы данных — только с IP app-серверов. Такая сегментация не даёт злоумышленнику пройти дальше, даже если один сервер будет скомпрометирован.
SELinux и обязательные права
SELinux — дополнительный слой безопасности ядра Linux, который вводит систему обязательных прав для каждого процесса и файла. Даже root не может нарушить правило SELinux. AppArmor — аналогичный механизм для Ubuntu и Debian.
Многие администраторы отключают SELinux со словами «не работает», но это большая ошибка. В практике Sayt.uz SELinux работает в режиме enforcing, и для каждого кастомного приложения пишется отдельная policy. Сначала стоит работать в permissive, анализировать audit log и только потом переходить в enforcing.
Практика Sayt.uz
Hardening на Sayt.uz: все серверы настраиваются через Ansible-плейбук (CIS Benchmark Level 2), SELinux enforcing, fail2ban для SSH и веба, auditd на все critical-файлы, включён unattended-upgrades, root login полностью запрещён, каждая команда sudo логируется. Lynis-аудит раз в месяц, penetration test раз в квартал, результаты идут руководству.