HestiaCP настройка заголовков безопасности

Главная Форумы SOFTWARE Tuning Systems HestiaCP настройка заголовков безопасности

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #1990
    E-tec
    Хранитель

      После миграции с VestaCP на HestiaCP возникли проблемы по защите заголовков сервера, т.к. работа web сервера отличается между этим двумя панелями управления. Как вы поняли в wordpress в меню “Здоровье сайта” появилась следующее уведомление от плагина:

      Для решения этой проблемы нужно сделать резервные копии конфигурационных файлов web сервера apache2 и nginx:

      # cp /etc/apache2/apache2.conf /etc/apache2/apache2.example
      # cp /etc/nginx/nginx.conf /etc/nginx/nginx.example

      Для начала отредактируем конфигурационный файл nginx, откроем любым удобным для вас редактором, я пользуюсь nano:
      # nano /etc/nginx/nginx.conf

      В конфигурации ищем раздел SSL PCI compliance, стираем из нее все и вставляем новые конфигурации. Все актуальные на текущий момент настройки заголовков можно посмотреть ЗДЕСЬ! Я изменил конфиг следующим образом:

      При копировании конфигурации с сайта будьте внимательны, возможно нужно будет добавить, удалить или изменить кавычки, или подобные мелки ошибки, которые не дадут загрузиться nginx`у. Чтоб проверить конфигурацию на ошибки используйте команду:
      # nginx -c /etc/nginx/nginx.conf -t

      P.S. На скриншоте предупреждение связанное с ssl stapling параметр используется для коммерческого центра сертификации. Если у Вас как и у меня само подписанный сертификат, просто удалите эту строчку.

      Моя конфигурация nginx.conf выглядит следующим образом:

          # SSL PCI compliance
          ssl_protocols TLSv1.2 TLSv1.3;
          ssl_prefer_server_ciphers on;
          ssl_dhparam /etc/ssl/dhparam.pem;
          ssl_ciphers "EECDH+AESGCM:EDH+AESGCM";
          ssl_ecdh_curve secp384r1;
          ssl_session_timeout  10m;
          ssl_buffer_size     1400;
          ssl_session_cache shared:SSL:10m;
          ssl_session_tickets off;
          ssl_stapling_verify on;
          resolver 192.168.1.1 8.8.8.8 8.8.4.4 valid=300s ipv6=off;
          resolver_timeout    5s;
          add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
          add_header X-Frame-Options SAMEORIGIN;
          add_header X-Content-Type-Options nosniff;
          add_header X-XSS-Protection "1; mode=block";
          add_header Expect-CT "max-age=7776000, enforce";
          add_header Referrer-Policy "no-referrer-when-downgrade";
          add_header Content-Security-Policy "upgrade-insecure-requests";

      ВНИМАНИЕ! НЕ КОПИРУЙТЕ мою конфигурацию, т.к. под ВАШ сервер она может НЕ подойти!!!

      С настройками nginx закончили, при вводе команды # curl -I ВАШ_ДОМЕН в консоль, Вы должны увидеть следующий ответ:

      Далее идем редактировать конфигурацию apache2. Открываем файл /etc/apache2/apache2.conf.
      # nano /etc/apache2/apache2.conf

      В секцию # Global configuration дописываем строчку: Include conf-enabled/security.conf. Должно получиться примерно так:

      Это нужно для того, чтоб при обновлении пакета apache2 постоянно не переписывать конфигурацию безопасности, т.к. файл apache2.conf может перезаписываться. Далее нужно включить headers_mod в apache2, чтоб сервер не упал в ошибки. вводи в консоль команду:
      # a2enmod headers

      Должны получить ответ:

      После этого открываем конфигурационный файл security.conf и в самый низ опять же дописываем нужные строки.
      # nano /etc/apache2/conf-enabled/security.conf

      У меня после редактирование конфиг security выглядит следующим образом:

      Моя конфигурация получилась следующая:

      SSLCipherSuite EECDH+AESGCM:EDH+AESGCM
      # Requires Apache 2.4.36 & OpenSSL 1.1.1
      SSLProtocol -all +TLSv1.3 +TLSv1.2
      SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
      # Older versions
      # SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
      SSLHonorCipherOrder On
      Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
      Header always set X-Frame-Options: "SAMEORIGIN"
      Header always set X-Content-Type-Options: "nosniff"
      Header always set X-XSS-Protection "1; mode=block"
      Header always set Expect-CT "max-age=7776000, enforce"
      Header always set Referrer-Policy: "no-referrer-when-downgrade"
      Header always set Content-Security-Policy "upgrade-insecure-requests"
      # Requires Apache >= 2.4
      SSLCompression off
      SSLUseStapling on
      SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
      # Requires Apache >= 2.4.11
      SSLSessionTickets Off

      ВНИМАНИЕ! НЕ КОПИРУЙТЕ мою конфигурацию, т.к. под ВАШ сервер она может НЕ подойти!!!

      Сохраняем файл перезапускаем apache2. Т.к. апач частично глядит в настройки файла .htaccess, открываем его ищем параметры касающиеся headers:
      <IfModule mod_headers.c></IfModule>
      Если ее нет создаем в конце файла и дописываем те же параметры как и в файл security.conf. Этот шаг в принципе не обязателен, т.к. настройки касающиеся заголовком были внесены на уровне сервера! У меня этот конфиг выглядит следующим образом:

      <IfModule mod_headers.c>
          Header set Referrer-Policy "no-referrer-when-downgrade"
          Header set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
          Header set X-Frame-Options "SAMEORIGIN"
          Header set X-Content-Type-Options "nosniff"
          Header set X-XSS-Protection "1; mode=block"
          Header set Expect-CT "max-age=7776000, enforce"
          Header set Content-Security-Policy "upgrade-insecure-requests"
          Header set Permissions-Policy "geolocation=(), midi=(),sync-xhr=(),accelerometer=(), gyroscope=(), magnetometer=(), camera=(), fullscreen=(self)"
      </IfModule>

      После этих настроек перезагружаем еще раз apache2 и nginx, и смотрим “здоровье сайта”

    Просмотр 1 сообщения - с 1 по 1 (всего 1)
    • Для ответа в этой теме необходимо авторизоваться.
    Авторизация
    *
    *
    Регистрация
    *
    *
    *
    Пароль не введен
    *
    Генерация пароля