Небольшая шпаргалка по настройкам nginx для повышения безопасности веб сервера.
📌 Отключите server_tokens, чтобы nginx не показывал свою версию.server_tokens off;
📌 Отключите старые версии tls и ssl. Сейчас нормально поддерживать только tls 1.2 и 1.3. ssl_protocols TLSv1.2 TLSv1.3;
Также уделите внимание настройке ciphers, убрав те, что содержат уязвимости. Помочь в этом может сервис SSL Configuration Generator.
📌 Если есть возможность, ограничьте HTTP методы, убрав те, что вам точно не нужны.location / {
limit_except GET HEAD POST { deny all; }
}
📌 Установите модуль ModSecurity.
https://github.com/SpiderLabs/ModSecurity
Хорошее видео по установке и настройке этого модуля:
https://www.youtube.com/watch?v=XzeO2EL4sLU
📌 Используйте заголовок X-Frame-Options. Это позволит защититься от click-jacking атак, явно указав, что страница может загружаться в том же frame, что и сам сайт. add_header X-Frame-Options "SAMEORIGIN";
📌 Используйте заголовок Content-Security-Policy. Это позволит защититься от XSS атак. add_header Content-Security-Policy "default-src 'self';" always;
Это только пример! Подобрать настройки политики стоит самостоятельно в каждом конкретном случае. Если нет желания разбираться, не настраивайте вообще. Еще информация по этой политике и nginx тут.
И не забывайте, что есть отличный сервис по генерации конфигов nginx на все случаи жизни. Я тестировал его, работает нормально, можно пользоваться.
Свой итоговый конфиг можно проверить на ошибки с помощью утилиты gixy, о которой я тоже уже писал ранее.