Петр Сидельников

Системный администратор Linux (Fedora, CentOS, Ubuntu)

Основы безопасности веб-сервера на 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) и регулярного обновления системы.

← Вернуться к списку статей