Рекомендации по безопасности Nginx.


Nginx – самый быстрорастущий веб-сервер в отрасли, и в настоящее время он занимает второе место по доле рынка.

Первоначально он был выпущен в 2004 году, и с тех пор он заработал отличную репутацию и используется в топ-миллион самых загруженных сайтов.

Есть причина для этого – Nginx молниеносно.

В этой статье я расскажу о некоторых важных руководствах по обеспечению безопасности Nginx для производственной среды. Итак, начнем.

SSL / TLS

Внедрить SSL-сертификат

Первым шагом в веб-безопасности является внедрение SSL, чтобы вы могли получить доступ к веб-приложениям по протоколу https и добавить уровень шифрования при общении..

  • Используйте OpenSSL для генерации CSR с 2048 битами и sha-2

openssl req -nodes -new -sha256 -newkey rsa: 2048 -keyout bestflare.key -out bestflare.csr

  • Приведенная выше команда сгенерирует файлы CSR и файлы ключей при текущей работе напрямую. Не забудьте изменить имя файла .csr и .key.

Получите CSR, подписанный центром сертификации, и как только у вас будет подписанный сертификат, вы можете реализовать их в Nginx, как показано ниже.

  • Войти на сервер Nginx
  • Перейдите в папку conf, где у вас есть файл ssl.conf.

Примечание. При установке по умолчанию в Linux этот файл будет /etc/nginx/conf.d.

  • Отредактируйте файл и добавьте следующее, что позволит Nginx прослушивать порт 443

сервер {
слушай 443 песни;
имя_сервера bestflare.com;
ssl on;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
}

Примечание. Не забудьте изменить путь к сертификату и файлу ключа..

  • Сохраните конфигурацию и перезапустите Nginx. Сертификат SSL успешно внедрен.

bestflare-SSL-сертификат

Оптимизация SSL / TLS

Наличие SSL не означает, что он полностью защищен, и для эксперта по веб-безопасности вам необходимо применить конфигурацию для защиты веб-сервера..

Для начала я бы порекомендовал запустить Сканирование SSL против веб-сайта, чтобы найти счет и существенную уязвимость.

SSL-лаб-рейтинг-с

Таким образом, текущий рейтинг лабораторий SSL «C» и цель состоит в том, чтобы сделать это «А.»

Отключить слабые протоколы SSL / TLS

SSL 3, TLS 1.0 и TLS 1.1 уязвимы, и мы допустим только сильный протокол TLS 1.2.

  • Отредактируйте файл ssl.conf и добавьте ниже в блоке сервера

ssl_protocols TLSv1.2;

  • Сохраните файл ssl.conf и перезапустите Nginx

Отключить слабые шифры

Слабые комплекты шифров могут привести к уязвимости, например, из-за перебоев в работе, и поэтому нам нужно разрешить только надежный шифр.

  • Добавьте следующее в блок сервера в файле ssl.conf

ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + ARSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + ARSA + SHA384 EECDH + ARSA + SHA256 EECDH + АРСА + RC4 ELLD! ! MD5! EXP! PSK! SRP! DSS";

  • Сохраните файл и перезапустите Nginx

Установить цепной сертификат

Отсутствие цепного сертификата также влияет на общий рейтинг, и это может привести к ошибке при просмотре в современном браузере, таком как Chrome. Вам необходимо получить цепной сертификат у власти. В основном вы найдете на их сайте или просто Google это.

  • Добавьте содержимое сертификата цепочки в сертификат сайта, как показано ниже. В моем примере это будет /opt/cert/bestflare.pem

CERT-цепь

  • Сохраните файл и перезапустите Nginx

Безопасный Диффи-Хеллман для TLS

Диффи-Хеллман менее защищен, чем предполагалось. Одной из лучших практик, недавно добавленных в список, является защита Диффи-Хеллмана. Генерация уникальной DH GROUP и добавление ssl_dhparam в файл ssl.conf делает это.

  • Генерация уникальной группы DH с использованием OpenSSL

openssl dhparam -out dhparams.pem 4096

  • Это займет несколько минут и сгенерирует файл dhparams.pem в текущей рабочей директории.
  • Скопируйте dhparams.pem в папку cert
  • Измените ssl.conf и добавьте следующее в блок сервера

ssl_dhparam /opt/cert/dhparams.pem;

  • Сохраните файл и перезапустите Nginx

Этого должно быть достаточно для оптимизации SSL / TLS и давайте еще раз протестируем URL, чтобы увидеть рейтинг.

ssllabs-а-рейтинг

Woo ho! Итак, теперь вы можете видеть, что это «А» рейтинг по SSLLabs. Отлично сработано!

Вот полный ssl.conf

# Конфигурация сервера HTTPS
сервер {
слушай 443 песни;
имя_сервера bestflare.com;
ssl on;
ssl_certificate /opt/cert/bestflare.pem;
ssl_certificate_key /opt/cert/bestflare.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH + ECDSA + AESGCM EECDH + ARSA + AESGCM EECDH + ECDSA + SHA384 EECDH + ECDSA + SHA256 EECDH + ARSA + SHA384 EECDH + ARSA + SHA256 EECDH + АРСА + RC4 ELLD! ! MD5! EXP! PSK! SRP! DSS";
ssl_dhparam /opt/cert/dhparams.pem;
}

Утечка информации

При установке Nginx по умолчанию у вас будет много секретной информации, которая поможет хакерам подготовиться к атаке..

Если вы работаете в среде соответствия PCI, это считается уязвимостью утечки информации, и ее необходимо исправить..

Вы должны использовать server_tokens off, чтобы отключить утечку информации. Я объяснил это в моей предыдущей статье. Удалить версию из заголовка сервера в Nginx

Безопасность веб-приложений

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

Отключить нежелательные методы HTTP

Большую часть времени вам нужно просто ПОЛУЧИТЬ, ГОЛОВУ & HTTP-запрос POST в вашем веб-приложении. Разрешение TRACE или DELETE сопряжено с риском, так как может разрешить атаку по межсайтовому отслеживанию и потенциально позволит хакеру украсть информацию о cookie-файлах..

  • Измените nginx.conf и добавьте следующее под блоком сервера

if ($ request_method! ~ ^ (GET | HEAD | POST) $)
{
возврат 405;
}

Сохраните файл и перезапустите Nginx. Теперь будет отображаться 405 Not Allowed, если кто-то пытается использовать TRACE, DELETE, PUT, OPTIONS.

Чанданс-iMac: ~ чандан $ telnet bestflare.com 80
Попытка 128.199.100.162…
Подключено к bestflare.com.
Escape-символ ‘^]’.
TRACE / HTTP / 1.1
Ведущий: тестирование
HTTP / 1.1 405 не разрешено
Сервер: nginx
Дата: сб, 11 июля 2015 06:04:34 GMT
Тип контента: текст / HTML
Длина контента: 166
Подключение: закрыть

Clickjacking Attack

Вы можете ввести X-FRAME-OPTIONS в заголовок HTTP, чтобы предотвратить атаку с помощью клик-джеккинга..

Это достигается путем добавления ниже в файл nginx.conf

add_header X-Frame-Options "SAMEORIGIN";

Выше заголовка будет указывать браузеру загружать ресурсы ТОЛЬКО из того же источника.

X-XSS Защита

Внедрить HTTP-заголовок с защитой X-XSS для предотвращения атаки межсайтовых скриптов.

  • Измените файл nginx.conf, добавив следующее

add_header X-XSS-Protection "1; Режим = Блок";

  • Сохраните файл конфигурации и перезапустите Nginx. Вы можете использовать Тест заголовков инструмент для проверки после реализации.

Вы также можете быть заинтересованы в реализации рекомендованных OWASP безопасных заголовков, которые описаны здесь..

Реализовать мод безопасности WAF

Добавьте дополнительный уровень безопасности, внедрив брандмауэр веб-приложений ModSecurity с набором основных правил OWASP.

Кроме того, если вы можете рассмотреть возможность использования облачной безопасности, как SUCURI перед сервером Nginx.

Держите Nginx в актуальном состоянии

И последнее, но не менее важное: вам необходимо поддерживать Nginx в актуальном состоянии, поскольку существует множество улучшений производительности, исправлений безопасности и добавляются новые функции..

Я надеюсь, что это поможет вам сохранить безопасность Nginx.

Далее, вы можете быть заинтересованы в обучении собрать Nginx для высокой производительности с нуля.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me