{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Копытов Иван: заметки с тегом HTTP Strict Transport Security",
    "_rss_description": "Блог ленивого сисадмина",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/kini24.ru\/tags\/http-strict-transport-security\/",
    "feed_url": "https:\/\/kini24.ru\/tags\/http-strict-transport-security\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Копытов Иван",
            "url": "https:\/\/kini24.ru\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "8",
            "url": "https:\/\/kini24.ru\/all\/povyshenie-bezopasnosti-servera-pri-pomoschi-zagolovkov\/",
            "title": "Повышение безопасности сервера при помощи заголовков",
            "content_html": "<p>Для увеличения степени безопасности сервера понадобится добавить или удалить несколько заголовков, которые он отдает при запросе страниц. Я не буду подробно расписывать какой из них за что отвечает, ограничусь лишь кратким описанием.<\/p>\n<ol start=\"1\">\n<li><a href=\"https:\/\/kini24.ru\/all\/vnedrenie-http-strict-transport-security-hsts-na-svoy-sayt\/\">HTTP Strict Transport Security (HSTS) <\/a>— позволяет форсировать HTTPS подключение.<\/li>\n<li><a href=\"https:\/\/kini24.ru\/all\/zaschita-sayta-pri-pomoschi-http-public-key-pinning-hpkp\/\">HTTP Public Key Pinning (HPKP) <\/a> — позволяет создать своеобразную «электронную подпись» для вашего сайта.<\/li>\n<li>X-Download-Options со значением «noopen» позволяет запретить открытие любых файлов с вашего сайта (например, документов в формате PDF), становится возможно только скачать их.<\/li>\n<li>X-Content-Type-Options со значением «nosniff» инструктирует Internet Explorer версии 8 не определять автоматически content-type, а использовать уже полученный.<\/li>\n<li>Еще один заголовок X-XSS-Protection со значением «1; mode=block» активирует встроенную защиту от XSS (Cross-Site Scripting, «межсайтовый скриптинг»).<\/li>\n<li>X-Frame-Options со значением «SAMEORIGIN» запрещает открывать страницы вашего сайта во фрейме на чужом сайте.<\/li>\n<li>Заголовок Set-Cookie должен указываться с параметрами HttpOnly и Secure. Это предотвратит XSS-атаки и защитит cookie от кражи при помощи скрипта javascript.<\/li>\n<li>В заголовке Server также должна быть указана минимальная информация о сервере. Например, просто Apache. Это не даст злоумышленнику получить дополнительную информацию о программном обеспечении, установленном на вашем сервере.<\/li>\n<li>По аналогичным причинам рекомендуется убрать заголовок X-Powered-By, если таковой присутствует.<\/li>\n<\/ol>\n<p>И, как обычно, есть ресурсы, с помощью которых можно проверить насколько корректно вы указали эти заголовки. Первый из них — <a href=\"https:\/\/securityheaders.io\">securityheaders.io<\/a>, работает очень быстро, корректно указанные по его мнению заголовки выделяются зеленым цветом. Некоторые он не выделяет, но, думаю, что на них он просто не обращает внимание.<\/p>\n<p>Второй ресурс — <a href=\"https:\/\/redbot.org\">Redbot<\/a>. В левой части страницы он показывает заголовки, которые он смог получить. В правой вкратце описывается действие заголовка, также значками выделяется корректность их указания. Стадия их получения почему-то немного затянута, на мой взгляд — около 1 минуты, будем надеяться, что это будет исправлено. Также есть возможность включить в запрос дополнительные параметры.<\/p>\n<p>Если вы думаете, что я что-то пропустил, то пишите в комментариях.<\/p>\n",
            "date_published": "2016-08-31T11:39:41+07:00",
            "date_modified": "2016-09-03T14:05:51+07:00",
            "tags": [
                "hsts",
                "HTTP Public Key Pinning",
                "HTTP Strict Transport Security",
                "HttpOnly",
                "HTTPS",
                "noopen",
                "nosniff",
                "SAMEORIGIN",
                "Secure",
                "security",
                "Server",
                "Set-Cookie",
                "X-Content-Type-Options",
                "X-Download-Options",
                "X-Frame-Options",
                "X-Powered-By",
                "X-XSS-Protection",
                "XSS",
                "безопасность",
                "сервер"
            ],
            "_date_published_rfc2822": "Wed, 31 Aug 2016 11:39:41 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "8",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "6",
            "url": "https:\/\/kini24.ru\/all\/dobavlenie-v-spisok-hsts-preloading\/",
            "title": "Добавление в список HSTS Preloading",
            "content_html": "<p>Как это ни странно, но время ожидания добавления в список HSTS Preloading после подачи заявки составило всего около 2-х недель. Возможно, что в Chrome добавление произошло и раньше, но я только вчера утром обновил Firefox на своем компьютере и чуть позже, в ходе внесения изменений в файл .htaccess, можно сказать случайно, запустил проверку на сайте ssllabs. Итогом стало то, что я заметил загоревшийся зеленым цветом Chrome в пункте HSTS Preloading. Порадовался этому факту и немного огорчился, что только один браузер включил меня в этот список. Психологически приготовился ждать еще какое-то время пока остальные тоже обновят его, но этот процесс особо не затянулся. Буквально через несколько часов я наблюдал картину, где все браузеры, кроме Tor, светились зеленым. Ну Tor меня особо никогда не интересовал — ну не верю я в его «неотслеживаемость» и прочие фишки, поэтому было некритично. Сегодня утром картина немного изменилась — информация по Tor стала недоступной. На текущий момент ситуация выглядит следующим образом:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/hsts-preload.png\" width=\"839\" height=\"75\" alt=\"\" \/>\n<\/div>\n<p>Также наконец-то создал более-менее правильную политику Content Security Policy (CSP), которая позволила моему блогу нормально функционировать. Ранее проблема в ее включении заключалась в том, что картинки из сообщений просто исчезали, при этом я не получал никаких сообщений в Firebug. Также иногда сбивалась тема и переставали работать скрипты. Но, вроде как, разобрался и сейчас все функционирует нормально. Прогнал тестами через один из сервисов и был приятно удивлен, когда он выставил мне высшую оценку по безопасности, найдя все те технологии, которые я внедрил на свой сервер. Кстати, интерфейс у этого сервиса сильно напоминает ssllabs. Про него расскажу чуть позже.<\/p>\n",
            "date_published": "2016-08-28T12:28:25+07:00",
            "date_modified": "2016-09-03T14:05:03+07:00",
            "tags": [
                "chrome",
                "Content Security Policy",
                "CSP",
                "edge",
                "firebug",
                "firefox",
                "hsts",
                "HTTP Strict Transport Security",
                "ie",
                "preload",
                "ssllabs",
                "tor",
                "список"
            ],
            "image": "https:\/\/kini24.ru\/pictures\/hsts-preload.png",
            "_date_published_rfc2822": "Sun, 28 Aug 2016 12:28:25 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/kini24.ru\/pictures\/hsts-preload.png"
                ]
            }
        },
        {
            "id": "4",
            "url": "https:\/\/kini24.ru\/all\/vnedrenie-http-strict-transport-security-hsts-na-svoy-sayt\/",
            "title": "Внедрение HTTP Strict Transport Security (HSTS) на свой сайт",
            "content_html": "<p>Сначала небольшая <a href=\"https:\/\/ru.wikipedia.org\/wiki\/HSTS\">выдержка из википедии<\/a>:<\/p>\n<blockquote>\n<p><i>«HSTS (сокр. от англ. HTTP Strict Transport Security) — механизм, активирующий форсированное защищённое соединение через протокол HTTPS. Данная политика безопасности позволяет сразу же устанавливать безопасное соединение, вместо использования HTTP-протокола. Механизм использует особый заголовок Strict-Transport-Security для принудительного использования браузером протокола HTTPS даже в случае перехода по ссылкам с явным указанием протокола HTTP. Механизм специфицирован в RFC6797 в ноябре 2012 года.<\/i><\/p>\n<p><i>HSTS помогает предотвратить часть атак, направленных на перехват соединения между пользователем и веб-сайтом, в частности атаку с понижением степени защиты и воровство кук.<\/i><\/p>\n<p><i>Дополнительную защиту https-соединений предоставляют методы Certificate pinning (хранение списка разрешенных для домена сертификатов или CA в исходных текстах браузера) и HTTP Public Key Pinning (англ.). Они предотвращают множество возможностей подмены tls-сертификатов https-сервера.»<\/i><\/p>\n<\/blockquote>\n<p>Для внедрения этой технологии нам понадобится несколько вещей:<\/p>\n<ol start=\"1\">\n<li>Наличие валидного сертификата (можно бесплатно получить на сайте <a href=\"https:\/\/letsencrypt.org\/\">Let’s Encrypt<\/a>)<\/li>\n<li>Уверенность в том, что будет использоваться только https протокол, включая все ваши субдомены.<\/li>\n<li>Полное перенаправление с http-версий сайтов на https.<\/li>\n<\/ol>\n<p>Если что-то из этого по каким-то причинам вам не подходит, то эта технология вам не нужна.<\/p>\n<p>Так как у меня используется «старенький» Apache версии 2.2, то и настраивать, соответственно, мы будет его.\nДля включения HSTS нам нужно добавить в файл \/<i>etc\/httpd2\/conf\/sites-available\/default_https.conf<\/i> следующие строки:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&lt;IfModule ssl_module&gt;\n    &lt;VirtualHost *:443&gt;\n        Header set Strict-Transport-Security &quot;max-age=31536000; includeSubDomains; preload&quot;\n   &lt;\/VirtualHost&gt;\n&lt;\/IfModule&gt;<\/code><\/pre><p>Первые и последние две строки — стандартные для данного файла, если они имеются, то добавлять их не нужно. Нас больше всего интересует третья строчка.<\/p>\n<p>Инструкция Header set позволяет вставить заголовок в ответ сервера. В данном случае заголовок «Strict-Transport-Security». В скобках за ним расположены параметры этого заголовка:<\/p>\n<ul>\n<li><i>max-age<\/i> — время в секундах, которое будет действовать этот заголовок. Если быть точнее, то это время, в течение которого сайт будет доступен по протоколу HTTPS. Не рекомендуется устанавливать его менее 18 недель;<\/li>\n<\/ul>\n<ul>\n<li><i>includeSubDomains<\/i> — указывается, если действие заголовка распространяется также на поддомены. Не является обязательным;<\/li>\n<\/ul>\n<ul>\n<li><i>preload<\/i> — параметр, позволяющий указывать, что ваш сайт никогда не будет доступен по незащищенному протоколу. Не является обязательным. Про него будет чуть ниже.<\/li>\n<\/ul>\n<p>Итак, данные мы добавили, теперь нужно перезагрузить файлы конфигурации:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># service httpd2 condreload<\/code><\/pre><p>Наличие заголовка в ответе сервера можно проверить, например, на <a href=\"http:\/\/mainspy.ru\/otvet_servera\">этом сайте<\/a>. Среди прочих вы должны увидеть такую строчку:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">Strict-Transport-Security: max-age=31536000; includeSubDomains; preload<\/code><\/pre><p>Идем на сайт <a href=\"https:\/\/www.ssllabs.com\/ssltest\/\">ssllabs<\/a>, вводим адрес своего сайта с указанием https и тестируем, что у нас получилось. Тест занимает некоторое время, его вполне хватит на то, чтобы, например, налить себе чашечку кофе.<\/p>\n<p>По итогу мы должны увидеть такие строчки:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/hsts-01.jpg\" width=\"957\" height=\"41\" alt=\"Эту вы увидите в шапке отчета\" \/>\n<div class=\"e2-text-caption\">Эту строчку вы увидите в шапке отчета<\/div>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/hsts-02.jpg\" width=\"854\" height=\"47\" alt=\"Эта будет находиться ближе к концу отчета\" \/>\n<div class=\"e2-text-caption\">Эта будет находиться ближе к концу отчета<\/div>\n<\/div>\n<p>Если вы их видите, значит все в порядке. В противном случае ищите ошибку.<\/p>\n<p>И, наконец, про параметр <i>preload<\/i>. Существует так называемый «preload list», в котором перечислены все домены, использующие технологию HSTS. Своего рода список «избранных» :-) При желании вы можете <a href=\"https:\/\/hstspreload.appspot.com\/\">подать заявку<\/a> на включение вашего домена в этот список, но на скорый ответ не рассчитывайте. Список обновляется с выпуском каждой версии браузера Chrome, поэтому может пройти несколько месяцев, прежде, чем вы увидите, что ваш домен добавлен в него. Для подачи заявки нужно выполнить несколько требований, указанных на главной странице сайта, поэтому рекомендую прочитать ее внимательно. Значение имеет даже регистр параметров заголовка. В случае критической ошибки после нажатия на кнопку «Check status and eligibility» фон страницы станет красным, в случае некритической — желтым, если же все верно — зеленым. На этой же странице указано, что нужно делать, чтобы удалить свой домен из этого списка.<\/p>\n<p>В принципе, это все, что вам нужно знать об этой технологии защиты вашего сайта. Надеюсь, что этот текст вам помог.<\/p>\n",
            "date_published": "2016-08-16T11:56:05+07:00",
            "date_modified": "2016-10-01T13:20:19+07:00",
            "tags": [
                "apache",
                "Header",
                "hsts",
                "HTTP Strict Transport Security",
                "HTTPS",
                "includeSubDomains",
                "preload",
                "set",
                "Strict-Transport-Security",
                "внедрение",
                "домен",
                "защита",
                "использование",
                "настройка",
                "сайт",
                "установка"
            ],
            "image": "https:\/\/kini24.ru\/pictures\/hsts-01.jpg",
            "_date_published_rfc2822": "Tue, 16 Aug 2016 11:56:05 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "4",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/kini24.ru\/pictures\/hsts-01.jpg",
                    "https:\/\/kini24.ru\/pictures\/hsts-02.jpg"
                ]
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}