Основы безопасности веб-сервера на Nginx
Nginx — это невероятно быстрый и надежный веб-сервер, но «из коробки» он настроен скорее на функциональность, чем на максимальную безопасность. Вот несколько базовых шагов, которые я применяю при настройке любого нового сервера.
1. Скрытие версии Nginx
По умолчанию Nginx отдает свою версию в HTTP-заголовках и на страницах ошибок. Это может помочь злоумышленникам найти специфичные уязвимости. Отключается это очень просто.
Откройте файл /etc/nginx/nginx.conf и в блоке http {} раскомментируйте или добавьте строку:
server_tokens off;
2. Настройка HTTP-заголовков безопасности
Правильные заголовки защитят ваших пользователей от атак типа Clickjacking и XSS. Добавьте следующие строки в блок server {}:
add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block";
Эти настройки запрещают загружать ваш сайт во фреймах на других доменах, запрещают браузерам «угадывать» тип контента и включают базовую фильтрацию XSS.
3. Строгая настройка SSL/TLS
Установка сертификата от Let's Encrypt — это только половина дела. Важно отключить старые, уязвимые протоколы (TLSv1 и TLSv1.1) и оставить только современные.
ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
4. Ограничение скорости (Rate Limiting)
Для защиты от брутфорса (перебора паролей) и простых DDoS-атак полезно ограничить количество запросов с одного IP-адреса. В секции http {} задаем зону:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
А затем применяем ее, например, к странице авторизации в блоке location {}:
limit_req zone=mylimit burst=20 nodelay;
Заключение
Эти простые шаги займут у вас 10 минут, но значительно повысят базовую защиту вашего проекта. Конечно, это не отменяет необходимости настройки фаервола (UFW/iptables) и регулярного обновления системы.