Перейти к содержимому
Skip to content
← Все статьи

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

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

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

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

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

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. Права доступа к файлам

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

# Установка правильного владельца и прав
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. Логирование и мониторинг

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

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. Тестировать конфигурацию автоматическими сканерами безопасности

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

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

Проверить →
Другие статьи: Безопасность
Безопасность
Открытые порты сервера: как проверить и почему это важно для безопасности
13.03.2026 · 10 просм.
Безопасность
Безопасность API: лучшие практики защиты
11.03.2026 · 14 просм.
Безопасность
HSTS и список предзагрузки: полное руководство по внедрению
16.03.2026 · 20 просм.
Безопасность
Content Security Policy (CSP) — полное руководство по настройке
12.03.2026 · 13 просм.