Authentication http: Релогин и HTTP Basic Auth / Хабр

Содержание

HTTP — механизмы аутентификации

Как работает HTTP-аутентификация?

Аутентификация — это способ идентифицировать себя на веб-сервере. Вам необходимо предоставить доказательства того, что вы имеете право на доступ к запрошенным ресурсам. Обычно это делается с помощью комбинации имени пользователя и пароля (ключа и секрета), которые сервер проверяет, а затем решает, можете ли вы получить доступ к ресурсу.

HTTP предлагает два протокола аутентификации:

  • Обычная проверка подлинности
  • Дайджест-проверка подлинности

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

Структура аутентификации запроса/ответа

Когда кто-то отправляет запрос, вместо того, чтобы немедленно ответить на него, сервер отправляет запрос клиенту. Он требует от пользователя предоставить подтверждение личности, введя секретную информацию (имя пользователя и пароль).

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

Связанные с аутентификацией заголовки запросов/ответов

Сервер выдает запрос, используя заголовок ответа WWW-Authenticate. Он содержит информацию о протоколе и области безопасности.

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

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

Области безопасности

Области безопасности предоставляют способ связать разные права доступа к разным группам ресурсов на сервере. Они называются защитными пространствами.

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

На сервере может быть несколько областей. Например, один может быть для статистической информации веб-сайта, доступ к которой имеют только администраторы веб-сайта. Другой вариант — изображения веб-сайтов, к которым другие пользователи могут получить доступ и загрузить изображения.

/admin/statistics/financials.txt -> Realm = «Статистика администратора»

/images/img1.jpg -> Realm = «Изображения»

Когда вы пытаетесь получить доступ к financials.txt, сервер запрашивает у вас данные для авторизации, и ответ будет выглядеть следующим образом:

HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic realm="Admin Statistics"

Пример простой HTTP-аутентификации

Теперь давайте объединим точки, рассмотрев простейший пример проверки подлинности по протоколу HTTP (обычная проверка подлинности, описанная ниже):

1. Пользовательский клиент -> Сервер

Пользователь запрашивает доступ к изображению на сервере.

GET /gallery/personal/images/image1. jpg HTTP/1.1
Host: www.somedomain.com
  1. Сервер -> Пользовательский клиент

Сервер отправляет пользователю запрос.

HTTP/1.1 401 Access Denied
WWW-Authenticate: Basic realm="gallery"
  1. Пользовательский клиент -> Сервер

Пользователь идентифицирует себя посредством ввода формы.

GET /gallery/personal/images/image1.jpg HTTP/1.1
Authorization: Basic Zm9vOmJhcg==
  1. Сервер -> Пользовательский клиент

Сервер проверяет учетные данные и отправляет статус 200 OK, код и данные изображения.

HTTP/1.1 200 OK
Content-type: image/jpeg
...<image data>

Не все так сложно, правда?

Теперь давайте перейдем к базовой аутентификации.

Базовая проверка подлинности (Basic)

Самый распространенный и поддерживаемый протокол. Он существует с HTTP/1.0, и каждый крупный клиент его реализует.

В приведенном выше примере показано, как пройти аутентификацию с помощью обычной аутентификации. Его довольно просто реализовать и использовать, но в нем есть некоторые недостатки безопасности.

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

При обычной аутентификации имя пользователя и пароль объединяются в одну строку и разделяются двоеточием (:). После этого он кодирует их, используя кодировку Base64. Несмотря на то, как это выглядит, зашифрованная последовательность символов небезопасна, и вы можете легко ее декодировать.

Целью кодировки Base64 является не шифрование, а обеспечение совместимости имени пользователя и пароля с HTTP. Основная причина этого в том, что вы не можете использовать международные символы в заголовках HTTP.

GET /gallery/personal/images/image1.jpg HTTP/1.1
Authorization: Basic Zm9vOmJhcg==

«Zm9vOmJhcg ==» из этого примера — не что иное, как строка «foo: bar» в кодировке Base64.

Таким образом, любой, кто слушает запросы, может легко декодировать и использовать учетные данные.

Хуже того, кодирование имени пользователя и пароля не поможет. Третья злонамеренная сторона по-прежнему может отправить зашифрованную последовательность для достижения того же эффекта.

Также отсутствует защита от прокси или любого другого типа атак, которые изменяют тело запроса и оставляют заголовки запроса нетронутыми.

Итак, как видите, обычная аутентификация — это далеко не идеальный механизм аутентификации.

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

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

Некоторые утверждают, что безопасность зависит от вашего транспортного механизма.

Дайджест-аутентификация (Digest)

Дайджест-аутентификация — более безопасная и надежная альтернатива простой, но небезопасной базовой аутентификации.

Итак, как это работает?

Дайджест-аутентификация использует криптографическое хеширование MD5 в сочетании с использованием одноразовых номеров. Таким образом, информация о пароле скрывается для предотвращения различных видов злонамеренных атак.

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

Пример Digest Authentication

1. Пользовательский клиент -> Сервер

GET /dir/index.html HTTP/1.0
Host: localhost

Клиент отправляет неаутентифицированный запрос.

2. Сервер -> Пользовательский клиент

HTTP/1.0 401 Unauthorized
WWW-Authenticate: Digest realm="shire@middleearth.com",
                        qop="auth,auth-int",
                        nonce="cmFuZG9tbHlnZW5lcmF0ZWRub25jZQ",
                        opaque="c29tZXJhbmRvbW9wYXF1ZXN0cmluZw"
Content-Type: text/html
Content-Length: 153
<!DOCTYPE html>
  
    <meta charset="UTF-8" />
    <title>Error</title>
  
  
    <h2>401 Unauthorized.
</h2>

Сервер предлагает клиенту пройти аутентификацию с использованием дайджест-аутентификации и отправляет клиенту необходимую информацию.

3. Пользовательский клиент -> Сервер

GET /dir/index.html HTTP/1.0
Host: localhost
Authorization: Digest username="Gandalf",
                     realm="shire@middleearth.com",
                     nonce="cmFuZG9tbHlnZW5lcmF0ZWRub25jZQ",
                     uri="/dir/index.html",
                     qop=auth,
                     nc=00000001,
                     cnonce="0a4f113b",
                     response="5a1c3bb349cf6986abf985257d968d86",
                     opaque="c29tZXJhbmRvbW9wYXF1ZXN0cmluZw"

Клиент вычисляет значение ответа и отправляет его вместе с именем пользователя, областью, URI, nonce, opaque, qop, nc и cnonce. Много всего.

Подробное объяснение

Давайте определим это:

  • nonce и opaque — определенные сервером строки, которые клиент возвращает после их получения.
  • qop (качество защиты) — одно или несколько предопределенных значений («auth» | «auth-int» | токен). Эти значения влияют на вычисление дайджеста.
  • cnonce — одноразовый номер клиента, должен генерироваться, если задано qop. Он используется, чтобы избежать атак на выбранный открытый текст и предоставить сообщению защиту целостности.
  • nc — счетчик одноразовых номеров, должен быть отправлен, если задано qop. Эта директива позволяет серверу обнаруживать повторы запросов, сохраняя свою собственную копию этого счетчика — если одно и то же значение nc появляется дважды, то запрос является повтором.

Атрибут ответа рассчитывается следующим образом:

HA1 = MD5("Gandalf:shire@middleearth.com:Lord Of The Rings")
       = 681028410e804a5b60f69e894701d4b4
HA2 = MD5("GET:/dir/index.html")
       = 39aff3a2bab6126f332b942af96d3366
Response = MD5( "681028410e804a5b60f69e894701d4b4:
                 cmFuZG9tbHlnZW5lcmF0ZWRub25jZQ:
                 00000001:0a4f113b:auth:
                 39aff3a2bab6126f332b942af96d3366" )
         = 5a1c3bb349cf6986abf985257d968d86

Если вам интересно узнать, как вычислить ответ в зависимости от qop, вы можете найти его в RFC 2617.

4. Сервер -> Пользовательский клиент

HTTP/1.0 200 OK
Content-Type: text/html
Content-Length: 2345
... <content data>

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

Краткое резюме

Как видите, дайджест-аутентификацию сложнее понять и реализовать.

Она также более безопасна, чем обычная проверка подлинности, но все же уязвима для атаки «человек посередине». RFC 2617 рекомендует использовать вместо этого дайджест-аутентификацию базовой аутентификации, поскольку она устраняет некоторые ее недостатки. Это также не скрывает того факта, что дайджест-аутентификация по-прежнему является слабой по современным криптографическим стандартам. Ее надежность во многом зависит от реализации.

Итак, вкратце дайджест-аутентификация:

  • Не отправляет пароли в виде обычного текста по сети.
  • Предотвращает повторные атаки
  • Защита от подделки сообщений

Некоторые из слабых мест:

  • Уязвимость к атаке «человек посередине».
  • Многие параметры безопасности не требуются, и поэтому дайджест-проверка подлинности будет менее безопасной, если не задана.
  • Предотвращает использование надежных алгоритмов хеширования паролей при хранении паролей.

В связи с этим дайджест-аутентификация пока не получила широкого распространения. Базовая аутентификация намного проще и в сочетании с SSL еще более безопасна, чем дайджест-аутентификация.

Заключение

Мы рассмотрели различные механизмы аутентификации, которые HTTP предлагает по умолчанию, и обсудили их преимущества и недостатки.

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

Вам также известно, что существуют риски безопасности, которые не устраняются этими механизмами аутентификации.

Настройка HTTP Basic Auth в трех словах

Базовая авторизация HTTP  — один из самых простых методов закрытия доступа к вашему веб-сайту. Все что вам нужно — это возможность внести изменения в .htaccess вашего сайта, либо напрямую в настройки Apache.

Что это такое и как работает?

HTTP авторизация — это механизм защиты данных на вашем сервере. При данном методе авторизации только пользователи имеющие логин и пароль смогут получить доступ к информации, хранящейся на вашем сайте. Доступов можно создать бесконечно множество, а по логам сервера (если такие настроены), можно будет понять кто и когда заходил на ваш сайт (чтобы в случае чего выяснить, кто именно начал барагозить ( https://otvet.mail.ru/question/40434419)).

Базовая аутентификация (basic access authentication) — при использовании данного вида аутентификации имя пользователя и пароль включаются в состав веб-запроса.

Механизм авторизации довольно простой: логин и пароль передаются в заголовке запроса, который отправляет браузер (или который вы формируете руками), либо вы можете его вписать прямо в адресную строку по следующему правилу: http://#ЛОГИН#:#ПАРОЛЬ#@adressayta. ru/. Ниже представлено окно авторизации сайта, закрытого базовой авторизацией . 

Когда может понадобиться Basic Auth?

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

Данные с доступами пользователей хранятся на сайте в специальном файле .htpasswd (файлы начинающиеся с точки — скрытые файлы в большинстве файловых систем Unix), который расположен на сервере и заполняется администратором сайта/сервера или вами самим (при использовании файла . htaccess). 

За технической поддержкой веб-сайта, доработками сайта как в дизайне/юзабилити, так и в технических показателях (скорость загрузки, стабильность работы) вы можете обратиться к нам! Ознакомиться с тарифами на техническую поддержку вы можете по ссылке (https://bewave.ru/services/tekhnicheskaya-podderzhka/)! 

Как настроить базовую авторизацию на сайте?

Как уже говорилось выше, закрыть доступ можно не только к какому-то отдельному сайту, но и к его целому серверу или же наоборот, только к одному каталогу. Рассмотрим варианта настроек для серверов с BitrixENV (данные настройки подойдут для большинства серверов, работающих с Apache, то есть исключением будет в большем случае только Microsoft Windows Server). 

Настройка для сайта

Наиболее простым путем закрытия сайта базовой авторизацией будет использование файла .htaccess (если использование данного файла разрешено настройками самого NGINX). 

Для этого нам необходимо выполнить следующие шаги.

  • Шаг 1.Создать файл .htpasswd с доступами пользователей
    Для этого существует множество онлайн сервисов. Мы будем использовать сервис по ссылке ( https://hostingcanada.org/htpasswd-generator/).
    Введите логин пользователя (для примера admin) и пароль в соответствующие поля и нажмите «Create .htpasswd file»
    Сгенерированная строка появится выше — скопируйте ее.
    Создайте файл .htpasswd в корне вашего сайта и вставьте туда полученную в сервисе строку, чтобы получилось что-то вроде следующего. Каждые новые доступы должны начинаться с новой строки!

    Сохраните файл и запомните полный путь до него (можно узнать из консоли с помощью команды pwd). 

  • Шаг 2. Добавьте в файл .htaccess (создайте его в корне сайте, если его еще нет) специальные директивы

    AuthType Basic
    AuthName «Restricted Content»
    AuthUserFile #ПУТЬ ДО ФАЙЛА . htpasswd#
    Require valid-user

    Сохраните изменения.

  • Шаг 3. Готово! Ваш сайт закрыт от индексации и доступ к нему можно получить только по логину и паролю, который вы создали в первом шаге!

Настройка для адреса/каталога

Если же вы не хотите закрывать доступ ко всему сайта, а только к отдельному его каталогу — вы можете создать и разместить файл .htaccess именно в том каталоге, который вы хотите скрыть от посторонних глаз. Все очень просто! 

Настройка для сервера

Рассмотрим вариант закрытия доступа ко всем сайтам расположенным на сервере с помощью изменения настроек APACHE. 

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

Если вы используете Bitrix (BitrixENV или BitrixVM) и хотите закрыть весь сервер авторизацией (допустим, сервер с тестовыми сайтами), то необходимо учесть, что настройки Apache необходимо производить в специальном файле для кастомизации настроек расположенному по пути /etc/httpd/bx/custom/z_bx_custom. conf (подробнее можете прочитать тут).

Как открыть от авторизации один сайта или каталог?

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

Satisfy Any
Allow from all

Минусы базовой авторизации

Недостаток базовой авторизации — ее простота. Данные запроса передаются на сайт напрямую в заголовке, в открытом виде не проходя шифрование, то есть их можно перехватить. Отсюда вывод — для сохранения действительно важной информации базовой авторизации недостаточно! 

Вывод

С помощью описанных выше, довольно простых манипуляций , вы можете настроить базовую авторизацию, ограничив круг лиц имеющих доступ к вашему сайту или его разделу. Закрыть тестовый сервер базовой авторизацией — 5 минут, решать проблемы с утечкой информации или индексацией сайта — можно бесконечно!

Если же вы не уверены, что сможете внести данные настройки самостоятельно, то пишите нам! Наши технические специалисты вам помогут! 

Более подробно о HTTP авторизации вы можете прочитать по ссылке ( https://developer. mozilla.org/ru/docs/Web/HTTP/Authentication).

photo created by wirestock

Проконсультируйтесь с нами:

Ограничение доступа с помощью HTTP basic authentication

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

На простом примере будет показана настройка доступа для веб-серверов Nginx и Apache.

Создание файла с ключами

Для создания пар пользователь-пароль воспользуемся утилитой htpasswd. Установить её можно следующей командой:

$ apt install apache2-utils

Создадим файл с ключами .htpasswd и добавим первого пользователя. Для этого запустим утилиту htpasswd с флагом -c и путем к файлу, где будут храниться ключи, а также именем первого пользователя.

Рекомендуется разместить этот файл в рабочей директории  вашего веб-сервера /etc/nginx или /etc/apache2.

$ htpasswd -c /etc/nginx/.htpasswd user1

Во время выполнения команды вам будет предложено дважды ввести пароль пользователя user1.

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

$ htpasswd /etc/nginx/.htpasswd user2

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

$ cat /etc/nginx/.htpasswd

На каждой строчке есть имя пользователя и его зашифрованный пароль

user1:$apr1$cuyHIt1g$KBw/cVxx/0AwGg8Xab6yd/ user2:$apr1$FmoTpfYo$VTOJN10R98RRie7r7t46w1

Далее необходимо настроить веб-сервер Nginx или Apache, в зависимости от того, какой из них вы используете.

Настройка Nginx

Добавьте следующие директивы в конфигурационный файл вашего проекта.

  • auth_basic — включение проверки авторизации
  • auth_basic_user_file — путь к файлу с ключами

Их можно использовать в контекстах: http, server, location, limit_except. Это значит, что можно, например, ограничить доступ ко всему серверу (файл /etc/nginx/nginx.conf):

http { ... auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; ... }

к определенному проекту:

server { ... auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; ... }

или к конкретному адресу в проекте:

server { ... location / { auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; ... } }

Настройка Apache

Документация по модулю mod_authn_core доступна на официальном сайте.

  • AuthType — тип авторизации пользователя
  • AuthName — название защищенной области
  • AuthUserFile — путь к файлу с ключами
  • Require — проверка доступа

Можно настроить обязательную проверку авторизации для всего сервера. Для этого в конфигурационном файле /etc/apache2/apache2.conf добавим в соответствующие теги Directory требование.

&lt;Directory /var/www/&gt; Options Indexes FollowSymLinks AllowOverride None # Require all granted AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user &lt;/Directory&gt;

Если необходимо настроить доступ только к определенному хосту, то редактируем его конфигурационный файл

&lt;VirtualHost *:80&gt; DocumentRoot /var/www/html . .. &lt;Directory "/var/www/html"&gt; AuthType Basic AuthName "Restricted Area" AuthUserFile /etc/apache2/.htpasswd Require valid-user &lt;/Directory&gt; &lt;/VirtualHost&gt;

Файл .htaccess

Вместо редактирования настроек хоста можно добавить параметры авторизации в файл .htaccess в самом проекте.

... AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user ...

Чтобы Apache мог применять настройки файлов .htaccess в проектах, необходимо установить для AllowOverride значение «All» в соответствующей директории в настройках сервера.

&lt;Directory /var/www/&gt; Options Indexes FollowSymLinks # AllowOverride None AllowOverride All Require all granted &lt;/Directory&gt;

О том, как работать с файлом . htaccess можно прочитать в этой статье.

Результат

После перезагрузки сервера можно открыть страницу проекта и увидеть окно с просьбой авторизоваться.

Ссылки

Документация по модулю ngx_http_auth_basic_module для Nginx.

Документация по модулю mod_authn_core для Apache.

На моём сайте установлена базовая HTTP-аутентификация

Почему мне установили эту форму

В настоящий момент на ваш сайт проводится Brute-force атака. Brute-force атака — это атака по подбору паролей. В данном случае происходит подбор пароля к административной панели вашего сайта.

Чтобы не допустить взлома вашего сайта и повысить его безопасность, нами была установлена дополнительная защита.

Как я теперь могу получить доступ к админ-панели сайта

Теперь при доступе к административной панели вашего сайта (на Joomla или WordPress) будет появляться дополнительное окно ввода логина и пароля с надписью «please use your control panel password». В качестве логина необходимо ввести логин вашей услуги хостинга, он имеет вид «u1234567». В качестве пароля — текущий пароль к вашей услуге хостинга.

После прохождения базовой HTTP-аутентификации перед вами откроется стандартное поле для авторизация в админ-панели вашего сайта. Теперь уже вам нужно будет ввести логин и пароль администратора сайта.

Как работает базовая HTTP-аутентификация

При вводе логина-пароля в окно базовой аутентификации значение логина и хеша пароля будут сравниваться со значениями в специальном файле ~/etc/users, доступным в панели управления хостингом. Содержимое файла выглядит примерно так: «u1234567:dm48bspxIO3rg». Где «u1234567» — логин, а «dm48bspxIO3rg» — хеш пароля (обратите внимание: только хеш, а не сам пароль!). Хеш пароля — это результат преобразование пароля по определенному алгоритму.

Таким образом, когда вы вводите логин и пароль в окно базовой аутентификации, от введённого пароля берётся хеш и сравнивается со значением хеша в файле ~/etc/users. Если значения совпадают, вы проходите аутентификацию.

У меня не получается пройти базовую аутентификацию

Вероятно, вы вводите неверный пароль. Установите новый пароль для базовой аутентификации:

  1. 1.

    Сгенерируйте связку логина и пароля. Для этого воспользуйтесь онлайн генератором.

    В поле «Имя пользователя» введите ваш логин «u1234567», в поле «Пароль пользователя» — новый пароль для прохождения базовой аутентификации. Заетм нажмите Генерировать:

    Вы получите примерно такую строку: «u1234567:$apr1$e2md94lx$Z5h5bgFzsROqz6vjM85YQ1». Где:

    • «u1234567» — логин;
    • «$apr1$e2md94lx$Z5h5bgFzsROqz6vjM85YQ1» — хеш пароля.

    Скопируйте данную строку.

  2. 2.

    Откройте панель управления хостингом: Как открыть панель управления хостингом

    Перейдите в корневую папку сайта, а затем в директорию etc. Откройте файл users и замените его содержимое строкой, которую вы получили на выходе генератора на первом шаге.

    Обратите внимание, что в файл будет записан хеш пароля. Вводить же в окно HTTP-аутентификации нужно сам пароль.

Если вы прошли базовую аутентификацию но не можете войти непосредственно в админ-панель сайта Joomla или WordPress, воспользуйтесь справкой:
Как восстановить пароль администратора Joomla
Как восстановить пароль администратора WordPress

Как повысить защиту сайта от Brute-force атак

Для повышения защиты вашего сайта мы рекомендуем НЕ использовать стандартные логины администраторов сайта, такие как «admin» или «administrator», а также использовать только сложные пароли.

Для повышения защиты сайта:

  • измените логин суперпользователя на более уникальный. Не используйте короткие имена, лучше если вы будете использовать имя вместе с фамилией. В сети Интернет есть множество ресурсов где собраны наиболее популярные логины. Ознакомьтесь с ними и никогда не используйте их;
  • установите сложный пароль администратора сайта. Сложный пароль должен содержать буквы верхнего и нижнего регистра, цифры и дополнительные символы, такие как «* — _ # :» и т.д. Длина пароля — никак не меньше 6 символов. Желательно от 10 и выше.

Как убрать форму базовой HTTP-аутентификации

Рекомендуем вам не убирать защиту сразу после того, как вы получили сообщение. Brute-force атака может продолжаться длительный промежуток времени.

Чтобы убрать форму базовой HTTP-аутентификации:

Joomla

WordPress

Перейдите в директорию вашего сайта, далее в папку administrator. Откройте файл .htaccess, закомментируйте или удалите следующие строки:

<Files index.php>
AuthType Basic
AuthName "please use your control panel password"
AuthUserFile .../users
Require valid-user
</Files>

Для комментирования строки поставьте символ решётки («#») в начало строки, вот так:

#<Files index. php>
#AuthType Basic
#AuthName "please use your control panel password"
#AuthUserFile .../users
#Require valid-user
#</Files>

Если у вас заказана услуга WordPress hosting, перейдите в директорию сайта, откройте файл .htaccess, закомментируйте или удалите следующие строки:

<Files wp-login.php>
AuthType Basic
AuthName "please use your control panel password"
AuthUserFile .../users
Require valid-user
</Files>

Для комментирования строки поставьте символ решётки («#») в начало строки, вот так:

#<Files wp-login.php>
#AuthType Basic
#AuthName "please use your control panel password"
#AuthUserFile .../users
#Require valid-user
#</Files>

Помогла ли вам статья?

Да

3 раза уже помогла

Что такое HTTP-аутентификация?

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

Здесь вступает в действие аутентификация, и каждый веб-ресурс хочет знать, кто вы, потому что ваши данные являются их активом, а также ответственностью за их безопасность. Эта безопасность поддерживается протоколом HTTP, который представляет собой набор правил, определяющих способ обмена данными между ресурсами. HTTP-аутентификация — это сценарий безопасной связи между пользователями и онлайн-ресурсами. Давайте разберемся, что такое HTTP-аутентификация и другие ноу-хау ее работы для обеспечения безопасности в цифровом мире.

Что такое HTTP-аутентификация?

HTTP-аутентификация — это механизм безопасности для проверки пользователя, имеющего право доступа к веб-ресурсу. Он включает в себя связь между клиентом и сервером с использованием заголовка HTTP, где сервер запрашивает учетные данные пользователя для аутентификации. Клиент в ответ предоставляет информацию в заголовке. Здесь концепция основана на веб-аутентификации по стандартам HTTP для обеспечения безопасности информации пользователей. Более защищенной версией является HTTPS, где S означает Security Socket Layer (SSL) для обеспечения шифрования при обмене данными. Существует множество схем HTTP-аутентификации, основанных на требованиях безопасности и позволяющих сделать учетные данные недостаточными для взлома доступа для хакеров.

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

Схемы аутентификации HTTP: сервер определяет различные схемы аутентификации, из которых клиент может выбирать. Схемы — это методы аутентификации через Интернет. Представьте вам список схем аутентификации, чтобы прояснить концепцию.

Базовая аутентификация: это парадигма типа запрос-ответ, при которой сервер запрашивает учетные данные, а в ответ клиент предоставляет имя пользователя и пароль для аутентификации. Это однофакторная аутентификация, при которой обмен информацией осуществляется в текстовом формате.

Дайджест-аутентификация: это более безопасная версия базовой аутентификации с процедурой запрос-ответ в дополнение к значению nonce и алгоритму MD5 для шифрования данных. Значение одноразового номера включает дополнительную информацию в учетные данные для повышения уровня безопасности.

Аутентификация носителя: широко известная как аутентификация на основе токенов с многофакторным механизмом безопасности. Он добавляет дополнительный уровень к одноуровневой безопасности с помощью токенов для проверки учетных данных, полученных от реальных пользователей. JWT (веб-токен JSON) — это широко используемый носитель для передачи данных.

NTLM: это аббревиатура New Technology LAN Manager, протокола безопасности Windows для выполнения аутентификации личности пользователя без учетных данных и предоставления доступа к ресурсу.

Согласованная проверка подлинности: это обновленная версия NTLM, которая использует протокол Kerberos в качестве поставщика проверки подлинности. Kerberos быстрее и безопаснее, чем NTLM.

Вышеуказанные схемы используются с учетом требований безопасности веб-ресурса. «Базовый» обеспечивает самый низкий уровень безопасности, в то время как другие используются в случае высоких требований к безопасности.

Как работает HTTP-аутентификация?

HTTP имеет общую структуру для управления доступом пользователя к веб-ресурсам. Эта структура зависит от заголовков аутентификации. Заголовки помогают пользователям в том, как предоставить свои учетные данные и какая схема используется в процессе. Существует два типа заголовков: заголовок WWW-Authenticate и заголовок Proxy Authentication.

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

  • WWW-Authenticate: <type> realm=<realm>
  • Proxy-Authenticate: <type> realm=<realm>

Здесь <тип> указывает схему, используемую в процессе аутентификации. <область> описывает область безопасности для клиента. Теперь, вот процесс аутентификации HTTP с обоими заголовками и поддержание парадигмы в этом процессе.

  1. Запрос: клиент делает запрос на доступ к ресурсу в качестве анонимного идентификатора. Сервер не имеет никакой информации о посещении клиентом страницы.
  2. Вызов: после обнаружения посетителя сервер отвечает клиенту со статусом ответа 401 (неавторизованный) в качестве запроса на проверку личности и инструкций о том, как проверить в заголовке (например, WWW-Authenticate).
  3. Ответ: клиент отвечает на запрос сервера, предоставляя обычно требуемые учетные данные, имя пользователя и пароль для аутентификации личности и доступа к ресурсу.
  4. Аутентификация прокси: если вы используете прокси-сервер для проверки в качестве предполагаемого клиента, прокси-сервер вызывает клиента со статусом аутентификации 407 (прокси). Здесь прокси-сервер выполняет аутентификацию от имени клиента для доступа к ресурсу.
  5. Проверка: после получения учетных данных (также через заголовок прокси) сервер проверяет их, и если они недействительны, сервер отправляет статус ответа 403 (запрещено). Если учетные данные окажутся действительными, клиент получит приветственное сообщение.

Вот несколько простых шагов для HTTP-аутентификации. В бэкэнд-системах этот процесс намного сложнее. С появлением всевозможных способов взломать доступ хакеров, безопасность дополняется уровнями существующих механизмов. Начиная с однофакторной аутентификации, двухфакторной аутентификации и того, как многофакторная аутентификация широко используется, требуется час. Банковские услуги и услуги электронной коммерции используют строгие многоуровневые механизмы безопасности для обеспечения социальной защиты данных, включая платежные реквизиты. Следовательно, протокол HTTP обеспечивает безопасную связь между ресурсами через Интернет.

HTTP-аутентификация — frwiki.wiki

HTTP аутентификация или HTTP аутентификация (указанный в RFC  2617) позволяет определить на сервер HTTP , показывая ему , что мы знаем , имя пользователя и пароль для доступа к ресурсам с ограниченным доступом к нему.

Резюме

  • 1 Общие операции
  • 2 метода
    • 2.1 «Базовый» метод
    • 2.2 Метод «дайджеста»
      • 2.2.1 Запрос на идентификацию
      • 2.2.2 Идентификация клиента
      • 2.2.3 Ответ сервера
  • 3 Идентификация прокси ( Proxy )
  • 4 Примечания и ссылки
  • 5 См. Также
    • 5.1 Связанные статьи
    • 5.2 Внешние ссылки

Общая операция

Когда HTTP-клиент запрашивает у сервера защищенный ресурс, последний отвечает по-разному в зависимости от запроса:

  • либо запрос не содержит заголовка HTTP-идентификации, в этом случае сервер отвечает кодом HTTP 401 ( Unauthorized  : unauthorized) и отправляет информационные заголовки о запрошенной идентификации,
  • либо запрос содержит заголовки идентификации HTTP, в этом случае после проверки имени и пароля, если идентификация не удалась, сервер отвечает кодом 401, как в предыдущем случае, в противном случае он отвечает обычным образом (код 200 OK).

Методы

Спецификация RFC  2617 определяет два метода :

  • «Базовый» метод,
  • метод «Дайджест».

«Базовый» метод

Этот метод является наиболее простым, но также наименее безопасным, поскольку он передает пароль, закодированный в базе 64, который легко декодируется. Рекомендуется только при зашифрованном соединении (протокол HTTPS ).

Сервер, не получивший правильного заголовка идентификатора, отправляет такой заголовок HTTP:

WWW-Authenticate: Basic realm="WallyWorld"

Сервер указывает требуемый метод (Basic), а затем параметры. «Базовый» метод требует только параметра «область», определяющего домен защиты.

Затем HTTP-клиент может повторить запрос, указав HTTP-заголовок «Авторизация». Он должен содержать используемый метод (базовый), за которым следует представление в Base64 имени пользователя и пароля, разделенных символом «:» (двоеточие).

Например, для аутентификации пользователя «Aladdin» с паролем «open sesame» клиент отправляет:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

QWxhZGRpbjpvcGVuIHNlc2FtZQ==является представлением текста в формате Base64 Aladdin:open sesame.

«Дайджест» метод

Этот метод не передает пароль в открытом виде, но требует, чтобы он хранился (или его хэш SHA1, который достаточен для идентификации и поэтому может рассматриваться как пароль) в открытом виде. Даже если этот метод более безопасен, чем «Базовый» метод, он все же чувствителен к атакам (перехват сообщений и т. Д.) И даже более чувствителен к определенным атакам (кража файлов паролей).

Метод «Дайджест» более сложен и использует больше параметров.

Запрос на идентификацию

Сервер может отправить запрос идентификации, например:

 WWW-Authenticate: Digest realm="testrealm@host.com",
   qop="auth, auth-int",
   nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
   opaque="5ccc069c403ebaf9f0171e9517f40e41"

Параметры разделены запятой и имеют следующий вид:

realm
Этот параметр отображается для пользователя, чтобы он знал, какое имя и пароль они могут использовать. Строка должна содержать как минимум имя машины и имя требуемой группы пользователей.
domain
(необязательно) Содержит список URI, разделенных пробелами, определяющих домен защиты. Этот параметр дает список URI, для которых действителен запрошенный пользователь.
nonce
Строка, генерируемая сервером для каждого ответа 401. Рекомендуется использовать в этой строке символы Base64 или шестнадцатеричные символы . Этот параметр используется при расчете ответа клиента.
opaque
(необязательно) Сгенерированная сервером строка, которую клиент должен вернуть как есть.
stale
(необязательно) У этого параметра есть 2 возможных значения: истина или ложь . Это верно , если запрос предыдущей идентификации был отклонен только из — за использованием старого значения параметра «Нонс», ложь в противном случае. Значение true указывает, что клиент должен повторить запрос, используя новое значение nonce, предоставленное сервером, без повторного запроса имени и пароля у пользователя.
algorithm
(необязательно) Указывает алгоритм, используемый для функций хеширования. В RFC  2617 определены два значения : MD5 или MD5-sess .
qop
(необязательно) (Качество защиты) Этот параметр указывает поддерживаемые уровни защиты: auth или auth-int .
Идентификация клиента

Клиент, идентифицирующий себя с методом «Дайджест», использует две функции для расчета определенных параметров:

 H(data) = MD5(data)

Функция H возвращает результат хеш- функции MD5 в виде строки символов (шестнадцатеричный формат в нижнем регистре) . Он также может использовать другой алгоритм хеширования ( например, SHA ). Используемый алгоритм указывается в параметре «алгоритм».

 KD(secret, data) = H(secret:data)

Функция KD вызывает функцию H с аргументом конкатенации двух параметров, секрета и данных, разделенных двоеточием.

Поэтому клиент отправляет заголовок «Авторизация», содержащий имя метода «Дайджест», за которым следуют параметры:

username
Имя пользователя.
realm
То же значение, что и ответ от сервера.
nonce
То же значение, что и ответ от сервера.
algorithm
То же значение, что и ответ от сервера.
opaque
То же значение, что и ответ от сервера.
uri
URI запрошенного защищенного ресурса (здесь продублирован, потому что некоторые прокси-серверы могут изменять исходный URI).
response
Этот параметр содержит 32 шестнадцатеричных цифры, представляющие значение, вычисленное клиентом, доказывающим, что он знает пароль.
qop
(необязательно) (Качество защиты) Этот параметр указывает применяемый уровень защиты. Он должен соответствовать одному из значений, возвращаемых сервером.
cnonce
(если присутствует qop) Строка, созданная клиентом.
nc
(если присутствует qop) (Nonce Count) 8 шестнадцатеричных цифр, представляющих, сколько раз значение параметра «nonce», возвращаемое сервером, использовалось клиентом. nc = 00000001 в первый раз.

Расчет значения параметра responseосуществляется следующим образом:

Если qopуказано:

 response = KD( H(A1), nonce:nc:cnonce:qop:H(A2) )

Если не :

 response = KD( H(A1), nonce:H(A2) )

Если algorithmэто MD5 или не указано:

 A1 = username:realm:password

если algorithmэто MD5-сессия  :

 A1 = H(username:realm:password):nonce:cnonce

Если qopэто auth или не указано:

 A2 = http-method:uri

если qopэто auth-int  :

 A2 = http-method:uri:H(entity)
Ответ сервера

Сервер пересчитывает те же значения, что и клиент, для проверки успешности идентификации.

В случае положительного ответа сервера (правильный пользователь и пароль) он отправляет в ответ HTTP-заголовок «Authentication-Info», содержащий информацию об успешной идентификации и следующей идентификации.

Этот заголовок также содержит список параметров, разделенных запятыми:

nextnonce
Значение, которое будет использоваться для будущих идентификаций в этом домене защиты.
qop
( Необязательно ) качество защиты, примененное к этому ответу. Этот параметр должен иметь то же значение, что и в запросе клиента.
rspauth
( Если указано qop ) Этот параметр взаимной идентификации используется для подтверждения того, что сервер также знает пользователя и его пароль. Он вычисляется так же, как параметр ответа, за исключением значения A2, где http-method — пустая строка.
cnonce
( Если указано qop ) То же значение, что и в запросе клиента.
nc
( Если указано qop ) То же значение, что и в запросе клиента.

Идентификация прокси (

Proxy )

Описанная выше идентификация происходит между пользователем и исходным сервером:

Также можно идентифицировать себя на промежуточных серверах:

  • Пользователь на прокси
  • Прокси на прокси
  • Прокси к исходному серверу.

Для этого используются заголовки HTTP Proxy-Authenticate и Proxy-Authorization вместо заголовков WWW-Authenticate и Authorization . Код состояния HTTP 407 используется вместо кода 401.

Заголовок Proxy-Authentication-Info имеет ту же роль, что и заголовок Authentication-Info .

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

Идентификация не может использоваться в случае прозрачного прокси

Примечания и ссылки

  1. а б и с (в) Запрос комментариев п уплотнительных  2617 .

Смотрите также

Статьи по Теме

  • Протокол передачи гипертекста
  • Уязвимость сервисов веб-аутентификации

Внешние ссылки

  • (ru) RFC 2617 — Аутентификация: базовая аутентификация и аутентификация с дайджестом — июнь 1999 г.

<img src=»//fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1×1″ alt=»» title=»»>

HTTP-аутентификация

Как указано в RFC 2617, HTTP поддерживает аутентификация с использованием заголовков запроса WWW-Authenticate и авторизации заголовки ответов (и заголовки Proxy-Authenticate и Proxy-Authorization для прокси-аутентификация).

Поддерживаемые схемы аутентификации

Chrome поддерживает четыре схемы аутентификации: Basic, Digest, NTLM и Вести переговоры. Basic, Digest и NTLM по умолчанию поддерживаются на всех платформах. Negotiate по умолчанию поддерживается на всех платформах, кроме Chrome OS.

Схемы Basic и Digest указаны в RFC 2617. NTLM является собственностью Microsoft. протокол. Схема Negotiate (или SPNEGO) указана в RFC. 4559 и может использоваться для переговоров несколько схем аутентификации, но обычно по умолчанию используется либо Kerberos, либо НТЛМ.

Список поддерживаемых схем аутентификации может быть переопределен с помощью Политика AuthSchemes. Посмотри это страницу для получения подробной информации об использовании административных политик.

Выбор схемы аутентификации

Когда сервер или прокси-сервер принимает несколько схем аутентификации, наша сеть стек выбирает через HttpAuth::ChooseBestChallenge() схему аутентификации с наивысшим баллом:

 * Базовый: 1
* Дайджест: 2
* НТЛМ: 3
* Переговоры: 4
 

Базовая схема имеет самый низкий балл, поскольку она отправляет имя пользователя/пароль в незашифрованном виде на сервер или прокси.

Итак, мы выбираем наиболее безопасную схему и игнорируем сервер или прокси. предпочтение, указанное порядком, в котором схемы перечислены в Заголовки ответов WWW-Authenticate или Proxy-Authenticate. Это может быть источник проблем совместимости, поскольку документы MSDN о том, что «WinInet выбирает первый способ это распознает». Примечание. В IE7 и более поздних версиях WinInet выбирает первые неосновной метод это признает.

Встроенная аутентификация

Благодаря встроенной аутентификации Chrome может аутентифицировать пользователя в Интранет-сервер или прокси-сервер без запроса имени пользователя или пароль. Он делает это, используя кэшированные учетные данные, которые устанавливаются, когда пользователь изначально входит в систему на машине, на которой работает браузер Chrome на. Интегрированная аутентификация поддерживается для задач Negotiate и NTLM. Только.

Из-за потенциальных атак встроенная аутентификация включается только при Chrome получает запрос аутентификации от прокси-сервера или когда он получает вызов с сервера, который находится в разрешенном списке.

Этот список передается в Chrome с помощью списка URL-адресов, разделенных запятыми, для Хром через Белый список AuthServer установка политики. Например, если параметр политики AuthServerWhitelist был равен:

.

*example.com,*foobar.com,*баз

… тогда Chrome будет считать, что любой URL-адрес, оканчивающийся на «example.com», foobar.com или baz находятся в списке разрешенных. Без префикса «*» URL-адрес должен точно совпадать.

В ==только для Windows== , если параметр AuthServerWhitelist не указан, разрешенный список состоит из тех серверов, которые разрешены зонами Windows Диспетчер безопасности (запрошен URLACTION_CREDENTIALS_USE). По умолчанию это включает серверы в зонах безопасности «Локальный компьютер» или «Локальная интрасеть». За например, когда хост в URL-адресе включает «.» символ, по умолчанию это вне зоны безопасности локальной интрасети). Это поведение соответствует Интернету Проводник и другие компоненты Windows.

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

Начиная с Chrome 81 встроенная аутентификация отключена по умолчанию для не для записи (инкогнито/гость) профили, и пользователю нужно будет ввести имя пользователя и пароль.

Генерация имени участника-службы Kerberos

Когда сервер или прокси-сервер предъявляет Chrome запрос на согласование, Chrome пытается создать Kerberos SPN (имя субъекта-службы) на основе хоста и порт исходного URI. К сожалению, сервер не указывает, что имя участника-службы должно быть частью проверки подлинности, поэтому Chrome (и другие браузеры) должны догадаться, что это должно быть на основе стандартных соглашений.

Имя участника-службы по умолчанию: HTTP/<имя хоста>, где <имя хоста> — это каноническое DNS-имя сервера. Это отражает логику генерации SPN в IE. и Фаерфокс.

Создание SPN можно настроить с помощью параметров политики:

  • DisableAuthNegotiateCnameLookup определяет, используется ли исходное имя хоста в URL, а не чем каноническое имя. Если оставить неустановленным или заданным значение false, Chrome использует каноническое имя.
  • Енаблеауснеготиатепорт определяет, добавляется ли порт к SPN, если это нестандартный (не 80 или 443) порт. Если установлено значение true, порт добавлено. В противном случае (или если он не установлен) порт не используется.

Например, предположим, что интрасеть имеет такую ​​конфигурацию DNS, как

.

auth-a.example.com В CNAME auth-server.example.com

auth-server.example.com IN A 10.0.5.3

URL-адрес Имя участника-службы по умолчанию С DisableAuthNegotiateCnameLookup С EnableAuthNegotiatePort
http://auth-a HTTP/auth-server. example.com HTTP/авторизация- HTTP/auth-server.example.com
https://auth-a HTTP/auth-server.example.com HTTP/авторизация- HTTP/auth-server.example.com
http://auth-a:80 HTTP/auth-server.example.com HTTP/авторизация- HTTP/auth-server.example.com
https://auth-a:443 HTTP/auth-server.example.com HTTP/авторизация- HTTP/auth-server.example.com
http://auth-a:4678 HTTP/auth-server.example.com HTTP/авторизация- HTTP/auth-server.example.com:4678
http://auth-a.example.com HTTP/auth-server.example.com HTTP/auth-a.example.com HTTP/auth-server.example.com
http://auth-сервер HTTP/auth-server.example.com HTTP/сервер аутентификации HTTP/auth-server. example.com
http://auth-server.example.com HTTP/auth-server.example.com HTTP/auth-server.example.com HTTP/auth-server.example.com

Делегирование учетных данных Kerberos (пересылаемые билеты)

Некоторые службы требуют делегирования удостоверения пользователя (например, IIS сервер, обращающийся к базе данных MSSQL). По умолчанию Chrome этого не позволяет. Вы можете использовать AuthNegotiateDelegateWhitelist политику, чтобы включить ее для серверов.

Делегирование не работает для проверки подлинности прокси.

В Windows Negotiate реализован с использованием библиотек SSPI и зависит от код в secur32.dll.

На Android Negotiate реализуется с помощью внешнего приложения аутентификации. предоставлены третьими лицами. Подробности приведены в разделе «Написание SPNEGO». Аутентификатор для Chrome включен Андроид. Политика AuthAndroidNegotiateAccountType используется, чтобы сообщить Chrome тип учетной записи, предоставленный приложением, что позволяет ему найти приложение.

На других платформах Negotiate реализован с использованием системного GSSAPI библиотеки. При первом появлении задачи «Переговоры» Chrome пытается dlopen одну из нескольких возможных разделяемых библиотек. Если он не может найти соответствующую библиотеку, Chrome запоминает для сессии и всех Negotiate вызовы игнорируются для вызовов с более низким приоритетом.

GSSAPLibraryName политику можно использовать для указания пути к библиотеке GSSAPI, которую Chrome должен использовать.

В противном случае Chrome пытается выполнить dlopen/dlsym для каждого из следующих фиксированных имен в в заказе указано:

 * OSX: libgssapi_krb5.dylib
* Linux: libgssapi_krb5. so.2, libgssapi.so.4, libgssapi.so.2,
            libgssapi.so.1
 

Chrome OS следует поведению Linux, но не имеет системного gssapi библиотеки, поэтому все вызовы Negotiate игнорируются.

Оставшаяся работа

  • Поддержка GSSAPI в Windows [для MIT Kerberos для Windows или Хеймдаль]
  • Предложить политику для отключения обычной проверки подлинности схема по незашифрованным каналам.

Вопросы?

Пожалуйста, отправьте письмо по адресу net-dev@chromium.org

Объясните HTTP-аутентификацию — GeeksforGeeks

Мы стоим на пороге цифровой эры, где комфорт является главным двигателем. Наслаждайтесь всеми удобствами прямо от заказа товаров и оплаты счетов до получения услуг, сидя на диване. Вот как мы разработали Интернет, чтобы он работал на нас.

Здесь вступает в действие аутентификация, и каждый веб-ресурс хочет знать, кто вы, потому что ваши данные являются их активом, а также ответственностью за их безопасность. Эта безопасность поддерживается протоколом HTTP, который представляет собой набор правил, определяющих способ обмена данными между ресурсами. HTTP-аутентификация — это сценарий безопасной связи между пользователями и онлайн-ресурсами. Давайте разберемся, что такое HTTP-аутентификация и другие ноу-хау ее работы для обеспечения безопасности в цифровом мире.

Что такое аутентификация HTTP?

HTTP-аутентификация — это механизм безопасности для проверки пользователя, имеющего право доступа к веб-ресурсу. Он включает в себя связь между клиентом и сервером с использованием HTTP-заголовка, где сервер запрашивает учетные данные пользователя для аутентификации. Клиент в ответ предоставляет информацию в заголовке. Вот концепция, основанная на веб-аутентификации по стандартам HTTP для обеспечения безопасности информации пользователей. Более защищенной версией является HTTPS, где S означает Security Socket Layer (SSL) для обеспечения шифрования при обмене данными. Существует множество схем HTTP-аутентификации, основанных на требованиях безопасности и позволяющих сделать учетные данные недостаточными для взлома доступа для хакеров.

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

Схемы аутентификации HTTP: Сервер определяет различные схемы аутентификации для выбора клиентом. Схемы — это методы аутентификации через Интернет. Представьте вам список схем аутентификации, чтобы прояснить концепцию.

Базовая аутентификация:   Это парадигма типа запрос-ответ, при которой сервер запрашивает учетные данные, а в ответ клиент предоставляет имя пользователя и пароль для аутентификации. Это однофакторная аутентификация, при которой обмен информацией осуществляется в текстовом формате.

Дайджест-аутентификация: Это более безопасная версия базовой аутентификации с процедурой запрос-ответ в дополнение к значению nonce и алгоритму MD5 для шифрования данных. Значение одноразового номера включает дополнительную информацию в учетные данные для повышения уровня безопасности.

Аутентификация носителя: Широко известна как аутентификация на основе токенов с многофакторным механизмом безопасности. Он добавляет дополнительный уровень к одноуровневой безопасности с помощью токенов для проверки учетных данных, полученных от реальных пользователей. JWT (веб-токен JSON) — это широко используемый носитель для передачи данных.

NTLM: Это аббревиатура от New Technology LAN Manager, протокола безопасности Windows для выполнения аутентификации личности пользователя без учетных данных и предоставления доступа к ресурсу.

Проверка подлинности согласованием: Это обновленная версия NTLM, использующая протокол Kerberos в качестве поставщика проверки подлинности. Kerberos быстрее и безопаснее, чем NTLM.

Вышеуказанные схемы используются со шкалой требований безопасности веб-ресурса. «Базовый» обеспечивает самый низкий уровень безопасности, в то время как другие используются в случае высоких требований к безопасности.

Как работает аутентификация HTTP?

HTTP имеет общую структуру для управления доступом пользователя к веб-ресурсам. Эта структура зависит от заголовков аутентификации. Заголовки помогают пользователям в том, как предоставить свои учетные данные и какая схема используется в процессе. Существует два типа заголовков: заголовок WWW-Authenticate и заголовок Proxy Authentication.

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

  • WWW-Authenticate: realm=
  • Proxy-Authenticate: realm=

Здесь указывает схему, используемую в процессе аутентификации. <область> описывает область безопасности для клиента. Теперь, вот процесс аутентификации HTTP с обоими заголовками и поддержание парадигмы в этом процессе.

  1. Запрос: Клиент делает запрос на доступ к ресурсу в качестве анонимного идентификатора. Сервер не имеет никакой информации о посещении клиентом страницы.
  2. Вызов : после обнаружения посетителя сервер отвечает клиенту со статусом ответа 401 (Неавторизованный) в качестве вызова для проверки личности и инструкций о том, как проверить в заголовке (например, WWW-Authenticate).
  3. Ответ : Клиент отвечает на запрос сервера, предоставляя обычно необходимые учетные данные, имя пользователя и пароль для аутентификации личности и доступа к ресурсу.
  4. Аутентификация прокси-сервера: Если вы используете прокси-сервер для подтверждения в качестве предполагаемого клиента, прокси-сервер вызывает клиента со статусом аутентификации 407  (прокси). Здесь прокси-сервер выполняет аутентификацию от имени клиента для доступа к ресурсу.
  5. Проверка: После получения учетных данных (также через заголовок прокси) сервер проверяет их и, если они недействительны, сервер отправляет статус ответа 403 (запрещено). Если учетные данные окажутся действительными, клиент получит приветственное сообщение.

Вот несколько простых шагов для HTTP-аутентификации. В бэкэнд-системах этот процесс намного сложнее. С появлением всевозможных способов взломать доступ хакеров, безопасность дополняется уровнями существующих механизмов. Начиная с однофакторной аутентификации, двухфакторной аутентификации и того, как многофакторная аутентификация широко используется, требуется час. Банковские услуги и услуги электронной коммерции используют строгие многоуровневые механизмы безопасности для обеспечения социальной защиты данных, включая платежные реквизиты. Следовательно, протокол HTTP обеспечивает безопасную связь между ресурсами через Интернет.

Общие сведения о HTTP-аутентификации — WCF

Редактировать

Твиттер LinkedIn Фейсбук Эл. адрес

  • Статья
  • 3 минуты на чтение

Аутентификация — это процесс определения того, имеет ли клиент право доступа к ресурсу. Протокол HTTP поддерживает аутентификацию как средство согласования доступа к защищенному ресурсу.

Первоначальный запрос от клиента обычно является анонимным запросом, не содержащим никакой аутентификационной информации. Приложения HTTP-сервера могут отклонить анонимный запрос, указав при этом, что требуется аутентификация. Серверное приложение отправляет заголовки WWW-Authentication для указания поддерживаемых схем аутентификации. В этом документе описывается несколько схем проверки подлинности для HTTP и обсуждается их поддержка в Windows Communication Foundation (WCF).

Схемы аутентификации HTTP

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

Аутентификация
Схема аутентификации Описание
Анонимный Анонимный запрос не содержит информации для проверки подлинности. Это эквивалентно предоставлению всем доступа к ресурсу.
Базовый Обычная проверка подлинности отправляет строку в кодировке Base64, содержащую имя пользователя и пароль для клиента. Base64 не является формой шифрования и должен рассматриваться как отправка имени пользователя и пароля в виде открытого текста. Если ресурс необходимо защитить, настоятельно рекомендуется использовать схему проверки подлинности, отличную от базовой проверки подлинности.
Дайджест Дайджест-аутентификация — это схема запроса-ответа, предназначенная для замены обычной аутентификации. Сервер отправляет строку случайных данных, называемую nonce клиенту в качестве вызова. Клиент отвечает хэшем, который включает имя пользователя, пароль и одноразовый номер среди дополнительной информации. Сложность, которую представляет этот обмен, и хеширование данных затрудняют кражу и повторное использование учетных данных пользователя с этой схемой аутентификации.

Дайджест-аутентификация требует использования учетных записей домена Windows. Область дайджеста — это доменное имя Windows. Поэтому вы не можете использовать сервер, работающий в операционной системе, которая не поддерживает домены Windows, например Windows XP Home Edition, с дайджест-аутентификацией. И наоборот, если клиент работает в операционной системе, которая не поддерживает домены Windows, учетная запись домена должна быть явно указана во время аутентификации.

НТЛМ NT LAN Manager (NTLM) — это схема запроса-ответа, представляющая собой более безопасную разновидность дайджест-аутентификации. NTLM использует учетные данные Windows для преобразования данных запроса вместо незакодированного имени пользователя и пароля. Аутентификация NTLM требует нескольких обменов между клиентом и сервером. Сервер и любые промежуточные прокси-серверы должны поддерживать постоянные соединения для успешного завершения аутентификации.
Договориться Проверка подлинности с согласованием автоматически выбирает между протоколом Kerberos и проверкой подлинности NTLM, в зависимости от доступности. Протокол Kerberos используется, если он доступен; в противном случае пробуется NTLM. Проверка подлинности Kerberos значительно улучшается по сравнению с NTLM. Проверка подлинности Kerberos выполняется быстрее, чем NTLM, и позволяет использовать взаимную проверку подлинности и делегирование учетных данных удаленным компьютерам.
Идентификатор Windows Live ID Базовая служба Windows HTTP включает проверку подлинности с использованием федеративных протоколов. Однако стандартные транспорты HTTP в WCF не поддерживают использование схем федеративной проверки подлинности, таких как Microsoft Windows Live ID. Поддержка этой функции в настоящее время доступна за счет использования безопасности сообщений. Дополнительные сведения см. в разделе Федерация и выпущенные токены.

Выбор схемы проверки подлинности

При выборе возможных схем проверки подлинности для HTTP-сервера необходимо учитывать следующие моменты:

  • Подумайте, нужно ли защищать ресурс. Использование проверки подлинности HTTP требует передачи большего количества данных и может ограничить взаимодействие с клиентами. Разрешить анонимный доступ к ресурсам, которые не нуждаются в защите.

  • Если ресурс необходимо защитить, подумайте, какие схемы аутентификации обеспечивают требуемый уровень безопасности. Самая слабая стандартная схема проверки подлинности, обсуждаемая здесь, — это обычная проверка подлинности. Обычная проверка подлинности не защищает учетные данные пользователя. Самой надежной стандартной схемой проверки подлинности является проверка подлинности Negotiate, в результате чего используется протокол Kerberos.

  • Сервер не должен представлять (в заголовках WWW-Authentication) какую-либо схему, которую он не готов принять или которая не обеспечивает адекватной защиты защищенного ресурса. Клиенты могут свободно выбирать любую из схем аутентификации, представленных сервером. Некоторые клиенты по умолчанию используют слабую схему аутентификации или первую схему аутентификации в списке сервера.

См. также

  • Обзор безопасности транспорта
  • Использование олицетворения с транспортной безопасностью
  • Делегирование и олицетворение

Ограничение доступа с помощью базовой аутентификации HTTP

Управление доступом с использованием базовой HTTP-аутентификации и, при необходимости, в сочетании с контролем доступа на основе IP-адреса.

Введение

Вы можете ограничить доступ к своему веб-сайту или некоторым его частям, внедрив аутентификацию по имени пользователя/паролю. Имена пользователей и пароли берутся из файла, созданного и заполняемого инструментом для создания файлов паролей, например, apache2-utils .

Базовая аутентификация HTTP также может сочетаться с другими методами ограничения доступа, например, ограничением доступа по IP-адресу или географическому местоположению.

Предпосылки

  • NGINX Plus или NGINX с открытым исходным кодом
  • Утилита для создания файла паролей, например apache2-utils (Debian, Ubuntu) или httpd-tools (RHEL/CentOS/Oracle Linux).

Создание файла паролей

Для создания пар логин-пароль используйте утилиту для создания файла паролей, например, apache2-utils или httpd-tools

  1. Убедитесь, что установлены apache2-utils (Debian, Ubuntu) или httpd-tools (RHEL/CentOS/Oracle Linux).

  2. Создайте файл паролей и первого пользователя. Запустите утилиту htpasswd с флагом -c (для создания нового файла), путем к файлу в качестве первого аргумента и именем пользователя в качестве второго аргумента:

     $ sudo htpasswd -c /etc/apache2/.htpasswd пользователь1
     

    Нажмите Enter и введите пароль для user1 в подсказках.

  3. Создайте дополнительные пары «пользователь-пароль». Опустите флаг -c , поскольку файл уже существует:

     $ sudo htpasswd /etc/apache2/.htpasswd пользователь2
     
  4. Вы можете подтвердить, что файл содержит парные имена пользователей и хешированные пароли:

     $ кот /etc/apache2/.htpasswd
    пользователь1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
    пользователь2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
    пользователь3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/
     

Настройка NGINX и NGINX Plus для базовой HTTP-аутентификации

  1. Внутри области, которую вы собираетесь защитить, укажите директиву auth_basic и дайте имя области, защищенной паролем. Имя области будет отображаться в диалоговом окне имени пользователя/пароля при запросе учетных данных:

     местоположение /API {
        auth_basic "Кабинет администратора";
        #...
    }
     
  2. Укажите директиву auth_basic_user_file с путем к . htpasswd файл, содержащий пары «пользователь/пароль»:

     местоположение /API {
        auth_basic "Кабинет администратора";
        auth_basic_user_file /etc/apache2/.htpasswd;
    }
     

В качестве альтернативы вы можете ограничить доступ ко всему веб-сайту с помощью базовой аутентификации, но при этом сделать некоторые области веб-сайта общедоступными. В этом случае укажите параметр off директивы auth_basic, который отменяет наследование от верхних уровней конфигурации:

 сервер {
    ...
    auth_basic "Кабинет администратора";
    auth_basic_user_file conf/htpasswd;
    расположение /общественное/ {
        auth_basic выключен;
    }
}
 

Сочетание базовой проверки подлинности с ограничением доступа по IP-адресу

Базовая аутентификация HTTP может эффективно сочетаться с ограничением доступа по IP-адресу. Можно реализовать как минимум два сценария:

  • пользователь должен пройти аутентификацию и иметь действительный IP-адрес
  • пользователь должен быть либо аутентифицирован, либо иметь действительный IP-адрес
  1. Разрешить или запретить доступ с определенных IP-адресов с помощью разрешающих и запрещающих директив:

     местоположение /API {
        #. ..
        запретить 192.168.1.2;
        разрешить 192.168.1.1/24;
        разрешить 127.0.0.1;
        отрицать все;
    }
     

    Доступ предоставляется только для сети 192.168.1.1/24 , за исключением адреса 192.168.1.2 . Обратите внимание, что директивы allow и deny будут применяться в том порядке, в котором они определены.

  2. Объедините ограничение по IP- и HTTP-аутентификации с директивой удовлетворения. Если вы установите директиву на all , доступ предоставляется, если клиент удовлетворяет обоим условиям. Если вы установите директиву any , доступ предоставляется, если клиент удовлетворяет хотя бы одному условию:

     местоположение /API {
        #...
        удовлетворить всех;
        запретить 192.168.1.2;
        разрешить 192.168.1.1/24;
        разрешить 127.0.0.1;
        отрицать все;
        auth_basic "Кабинет администратора";
        auth_basic_user_file conf/htpasswd;
    }
     

Полный пример

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

 http {
    сервер {
        слушать 192. 168.1.23:8080;
        корень /usr/share/nginx/html;
        расположение /API {
            API;
            удовлетворить всех;
            запретить 192.168.1.2;
            разрешить 192.168.1.1/24;
            разрешить 127.0.0.1;
            отрицать все;
            auth_basic "Кабинет администратора";
            auth_basic_user_file /etc/apache2/.htpasswd;
        }
    }
}
 

При доступе к странице состояния вам будет предложено войти в систему:

Если предоставленное имя и пароль не соответствуют файлу паролей, вы получите ошибку 401 (требуется авторизация) .


Как работает HTTP-аутентификация

15 июня 2020 г.