Немножко HSTS, CSP, TTFB, OSCP и тому подобного.

В качестве «развлечения выходного дня» захотелось допилить свой карманнный сайтик до наиполнейшего соответствия современным механизмам защиты и оптимизации. Сертификат Lets’encrypt есть, angie свеженький есть, всякие вспомогательные приблуды в наличии.

Далее по списку:

  • brotli: с этим всё просто, включил и работает.
  • brotli_static: аналогично, скриптиком прогнал изменившиеся за сутки файлики и всё работает.
  • fastcgi_cache: после некоторых шаманских действий локальный TTFB скукожился со 175 до 15-18мс.
  • memcached: сессии, кэш объектов — это настолько классика что уже даже почти анахронизм.
  • minify: с одной стороны, легко и просто, так же как с brotli_static, а с другой — гарантированные грабли с CSP при выдаче свежеминифицированных стилей и скриптов — хэш-суммы надо пересчитывать для всего.
  • HSTS: директива доставила веселья на поддоменах, архивные сайты тоже пришлось на https переводить. А они стааарые…
  • SSL: С одной стороны всё получилось чудненько, A+ и всё такое. А с другой стороны — Андроиды 5 и 6, и все старые версии Сафари в пролёте.
  • OCSP stapling: С бесплатным сертификатом пока получилось только довести до offered, not revoked. OCSP must staple на постоянку даже пытаться включать не буду, это для больших дядек с надёжными хостингами, а не для домашнего сервера. Ради эксперимента, разве что, и ненадолго.
  • CSP: Вот тут пришлось попотеть. Полноценно настроить эту политику без допиливания бэкенда хлопотно и не очень правильно, наверное. Но возможно. Наверное. Может быть. Но это не точно. Поиск всех внедряемых и загружаемых элементов, генерация скриптом простыни для sub_filter, изготовление хэшей для всего что доблестные программисты напихали прямо в html отдаваемый бэком… Очень зависит от культуры производства бэкенда, а с этим сейчас … разнообразно… В итоге внешними и внутренними средствами получилось добиться состояния «всё зелёненькое» на тестах.
  • Прочие Security Headers: без особых хлопот, ачивка получена.
  • DNS CAA: нет технической возможности включить такую запись у вебнеймса. Странно, но факт.
  • DNSSEC: аналогично, фомально включить можно, а по факту нет.
  • HTTP/2: штатно работает
  • HTTP/3: работает.
  • IPv6: Ростелеком ещё не совсем его освоил. Исходящие соединения пожалуйста, входящие — ой, а что это у нас адрес совсем прям динамический внешний.
  • TLS 1.3 без затей из коробки
  • Pagespeed: тут тоже были некоторые странные эпизоды при внедрении minify+CSP, но всё удачно разрешилось.

В целом, урожаем зелёненьких галочек, плюсиков и циферок удовлетворён. Ещё есть ГОСТ-шифрование, которое тоже стоит поковырять. Пока не знаю, получится ГОСТ совместить с QUIC или нет.

2024-03-09: С HTTP/3 дело было, похоже, в роутере: стоило прошить его на openwrt, как всё наладилось.

Добавить комментарий Отменить ответ