Skip to content
← Все статьи

Чек-лист безопасности веб-сервера: Nginx и Apache

Чек-лист безопасности веб-сервера

Защита веб-сервера — одна из самых критичных задач при работе в продакшене. Неправильно настроенный сервер открывает приложение для утечек данных, дефейса, внедрения вредоносного кода и атак типа «отказ в обслуживании». Этот чек-лист охватывает основные шаги по усилению безопасности серверов nginx и Apache.

Почему усиление безопасности важно

Конфигурации серверов по умолчанию отдают приоритет удобству настройки, а не безопасности. Стандартные установки часто раскрывают версию ПО, включают ненужные модули и используют слабые настройки TLS. Злоумышленники активно сканируют такие уязвимости. Хардининг уменьшает поверхность атаки и значительно усложняет эксплуатацию уязвимостей.

  • Уменьшение поверхности атаки: Меньше включенных модулей и сервисов — меньше потенциальных уязвимостей.
  • Глубокая защита: Заголовки безопасности и правильный TLS добавляют уровни защиты помимо безопасности на уровне приложения.
  • Соответствие стандартам: Многие стандарты (PCI-DSS, SOC 2, ISO 27001) требуют документированных процедур хардининга.
  • Предотвращение инцидентов: Правильные права доступа предотвращают повышение привилегий после первичного проникновения.

1. Скрытие версии сервера

Никогда не раскрывайте версию серверного ПО публично. Эта информация помогает злоумышленникам определить известные уязвимости.

Nginx

# nginx.conf
server_tokens off;
# Удалить X-Powered-By, если установлен upstream
proxy_hide_header X-Powered-By;

Apache

# httpd.conf или apache2.conf
ServerTokens Prod
ServerSignature Off
Header unset X-Powered-By

2. Заголовки безопасности

проверку HTTP-заголовков безопасности инструктируют браузеры применять политики защиты. Отсутствие заголовков оставляет пользователей уязвимыми для XSS, кликджекинга и атак внедрения данных.

ЗаголовокЗначениеНазначение
X-Content-Type-OptionsnosniffПредотвращает MIME-снифинг
X-Frame-OptionsDENY или SAMEORIGINПредотвращает кликджекинг
Referrer-Policystrict-origin-when-cross-originКонтролирует утечку реферера
Permissions-Policycamera=(), microphone=()Ограничивает доступ к функциям браузера
Content-Security-Policydefault-src 'self'Контролирует источники загрузки ресурсов
Strict-Transport-Securitymax-age=63072000Принудительное SSL/TLS проверку-соединение

Реализация в Nginx

add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

3. Настройка TLS

Современная конфигурация TLS критически важна. Отключите устаревшие протоколы и слабые шифры.

# Современная конфигурация TLS (nginx)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;

Регулярно проверяйте конфигурацию TLS с помощью SSL Labs (ssllabs.com). Стремитесь к рейтингу A+. Убедитесь, что OCSP-степлинг работает корректно и сертификаты обновляются заблаговременно.

4. Права доступа к файлам

Неправильные права доступа — одна из самых распространенных проблем безопасности. Следуйте принципу минимальных привилегий.

  • Директории веб-корня: 755 (rwxr-xr-x)
  • Статические файлы (HTML, CSS, JS, изображения): 644 (rw-r--r--)
  • PHP/скрипт-файлы: 644 (rw-r--r--)
  • Конфигурационные файлы: 640 (rw-r-----) или 600 (rw-------)
  • Директории загрузок: 755 с опцией монтирования noexec
  • Лог-файлы: 640 (rw-r-----)
# Установка правильного владельца и прав
chown -R www-data:www-data /var/www/html
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
chmod 600 /var/www/html/.env
chmod 600 /var/www/html/config/*.php

5. Контроль доступа

Ограничьте доступ к чувствительным путям и административным интерфейсам.

Nginx

# Блокировка скрытых файлов
location ~ /\. {
    deny all;
    return 404;
}
# Ограничение админки по IP
location /admin/ {
    allow 192.168.1.0/24;
    deny all;
}

6. Ограничение частоты запросов и защита от DDoS

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

# Ограничение частоты запросов в nginx
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
limit_req_zone $binary_remote_addr zone=api:10m rate=30r/m;

location /login {
    limit_req zone=login burst=3 nodelay;
}
location /api/ {
    limit_req zone=api burst=10 nodelay;
}

7. Логирование и мониторинг

Правильное логирование необходимо для обнаружения и расследования инцидентов безопасности.

  • Включите access- и error-логи для каждого виртуального хоста.
  • Отправляйте логи в централизованную систему (syslog, ELK-стек или SIEM).
  • Мониторьте аномальные паттерны: повторяющиеся ошибки 403/404, большие тела запросов, необычные User-Agent.
  • Настройте автоматические оповещения для критических событий.
  • Храните логи минимум 90 дней для форензик-анализа.

8. Отключение ненужных модулей

Каждый загруженный модуль — потенциальный вектор атаки. Отключайте то, что не используете:

# Apache: отключение неиспользуемых модулей
a2dismod autoindex status cgi
# Nginx: компилируйте без ненужных модулей
# Просмотр загруженных модулей:
nginx -V 2>&1 | tr -- '-' '\n' | grep module

Итоговый чек-лист

  1. Скрыть версию и информацию о серверном ПО
  2. Внедрить все рекомендуемые заголовки безопасности
  3. Настроить современный TLS (1.2+) с надежными шифрами
  4. Установить правильные права доступа и владельца файлов
  5. Ограничить доступ к чувствительным директориям
  6. Включить ограничение частоты запросов на аутентификацию и API документацию
  7. Настроить комплексное логирование и мониторинг сайтов
  8. Отключить ненужные серверные модули
  9. Своевременно обновлять серверное ПО
  10. Тестировать конфигурацию автоматическими сканерами безопасности

Хардининг сервера — это не разовая задача. Планируйте регулярные аудиты, подписывайтесь на рассылки безопасности для вашего серверного ПО и перепроверяйте настройки после каждого изменения конфигурации.

Проверьте ваш сайт прямо сейчас

Проверить безопасность сайта →
Другие статьи: Безопасность
Безопасность
Состояние security-заголовков топ-сайтов рунета: исследование 50 сайтов (2026)
25.06.2026 · 62 просм.
Безопасность
Безопасность API: лучшие практики защиты
11.03.2026 · 150 просм.
Безопасность
SPF, DKIM и DMARC: что это, зачем нужны и как настроить для защиты почты
01.04.2026 · 131 просм.
Безопасность
Защита от подделки писем (email spoofing)
23.06.2026 · 28 просм.