Повысьте уровень своего веб-сайта, повысив показатель безопасности

Все знают, что очень важно иметь хороший показатель безопасности на нескольких веб-сайтах. В этом руководстве я объясню, как я использовал traefik для его получения.

Важно:Я переместил веб-сайт на скриншотах с https://www.f1nalboss.de на https://ftp.f1nalboss.de после того, как написал эту статью.

предварительное условие

Если вы хотите применить содержимое из этого руководства, вам необходимо иметь среду Docker в режиме Docker Swarm. Если вы хотите узнать, как настроить его для себя, попробуйте следовать этому руководству, которое я написал.

Кроме того, вам необходимо установить traefik в качестве балансировщика нагрузки, поскольку он используется для добавления заголовков безопасности к запросам вашего веб-сайта. Я написал еще одно руководство, в котором показано, как интегрировать traefik в вашу среду Docker Swarm.

Если у вас не было Docker Swarm и вы не хотите его настраивать, вы можете попробовать установить traefik в качестве балансировщика нагрузки на одном компьютере. В этом руководстве я объясню, как это делается. . Но имейте в виду, что для сред, отличных от Docker Swarm, вам необходимо настроить файлы docker-compose. Если у вас есть вопросы по этому поводу, задавайте их в комментариях, и я отвечу на них, если это возможно.

Как я добавил заголовки безопасности

Существует очень важный веб-сайт, опубликованный Mozilla: Обсерватория Mozilla.

Mozilla Observatory помогла более чем 240 000 веб-сайтов, обучая разработчиков, системных администраторов и специалистов по безопасности тому, как безопасно настраивать свои сайты.

Я проверил свой сайт и получил следующий результат:

После быстрого изучения документации traefik я нашел следующие важные заголовки, которые я хочу реализовать в своей среде:

Чтобы добавить эти заголовки в мою установку traefik, я добавил новое промежуточное ПО в мой traefik docker-compose.yml:

После добавления этого промежуточного программного обеспечения я обновил свой сервис traefik, который работает в Docker Swarm (см. Эта статья)

Это дополнение позволило использовать промежуточное ПО в каждом сервисе, развернутом в моем рое и управляемом traefik. Для этого мне пришлось добавить следующую строку в раздел labels в файле docker-compose.yml:

После перезапуска службы simpleweb я провел еще один тест и получил оценку B из-за этой ошибки:

Я исследовал и нашел правильный заголовок traefik для CSP. Кроме того, я создал очень строгую директиву CSP и добавил ее в значение заголовка:

Я разрешаю доступ исключительно к https://i.postimg.cc для img-src, потому что единственное изображение, которое я использую на https://ftp.f1nalboss.de, размещено там.

Поскольку этот заголовок очень строгий, я не создавал для него глобальное промежуточное ПО. Я обновил службу, в которой хочу использовать эту директиву CSP, добавив эту строку в службу simpleweb и настроив промежуточное ПО:

Я перезапустил службу и провел еще одну проверку, чтобы, наконец, получить пятерку!

Как я укрепляю свой сайт

Поскольку я также хочу защитить свой сервер, я проверил на hardenize.com и получил неудовлетворительные результаты для TLS и HSTS.

Из-за того, что заголовки traefik уже были настроены заранее для HSTS, единственное, что осталось сделать, это отправить свое доменное имя в hstspreload, чтобы решить проблему с HSTS.

ЭТА ЧАСТЬ ОЧЕНЬ ВАЖНА: Если вы хотите отправить свой веб-сайт на hstspreload.org, подумайте об этом очень тщательно. Могут быть проблемы, если вы не можете выполнить все: читайте здесь для информации

Решение проблемы TLS было более сложным. Мне пришлось настроить конфигурацию traefik так, чтобы минимальная версия TLS была 1.2, а НЕ 1.0, как по умолчанию. Чтобы установить минимальную версию TLS, я добавил файловый провайдер в свою установку traefik в разделе команд моего traefik docker-compose.yml:

Затем я создал новый файл конфигурации (названный tls.toml), который содержит запись [tls-options] и должен использоваться для установки минимальной версии TLS 1.2. Кроме того, я добавил отличные наборы шифров (прочитайте это, чтобы узнать о наборах шифров).

Эта конфигурация гарантирует, что traefik будет использовать как минимум TLS 1.2 с предоставленными наборами шифров. Я выбрал эти шесть наборов шифров, потому что хочу иметь три для TLS 1.2 и три для TLS 1.3, которые объявлены безопасными!

Я сохранил файл в папке ./configuration/ и обновил раздел громкости в файле traefik docker-compose.yml:

После этого я перезапустил экземпляр traefik.

Последним шагом была активация минимальной версии TLS в сервисе simpleweb путем добавления новой метки:

После перезапуска службы simpleweb я повторил тест на Hardenize и Mozilla и получил желаемые результаты:

Также в ssl-labs есть познавательный тест, который проверяет сертификаты. С новой конфигурацией я также получил A+

Заключительные примечания

Чтобы упростить все, вы можете использовать этот docker-compose.yml и запустить его в любом Docker Swarm как сервис www-stack:

Я надеюсь, что вы найдете это руководство полезным и теперь сможете защитить свой веб-сайт и повысить доверие, добавив заголовки безопасности и оптимизировав использование SSL.

Я хотел бы услышать ваши идеи и мысли. Если вы уже запустили установку traefik и используете другие заголовки/промежуточное ПО или у вас есть другие наборы шифров, пожалуйста, прокомментируйте здесь и объясните. Кроме того, если у вас есть какие-либо вопросы, пожалуйста, запишите их ниже. По возможности стараюсь на них отвечать.

✍️ Автор

Пол Кнулст
Муж, отец двоих детей, гик, постоянно учится, любит технологии и инженер-программист

Скажи привет🙌 на: Twitter, LinkedIn, GitHub