Pap или chap что лучше
Перейти к содержимому

Pap или chap что лучше

  • автор:

Pap или chap что лучше

До сих пор наш скрипт сам выполнял аутентификацию, то есть, вводил имя и пароль в ответ на запросы удалённой стороны. Но PPP предусматривает и свои способы аутентификации — PAP (Password Authentication Protocol) и CHAP (Challenge Handshake Authentication Protocol) и мы можем ими воспользоваться, если удалённая сторона достаточна сообразительна, чтобы не только выдать «login:«, но и провести PAP или CHAP аутентификацию.

Нужно заметить, что комбинация FreeBSD + getty до недавнего времени не была таким сообразительным прибором, но, начиная с getty распознает начальные LCP-кадры PPP-соединения и может вызывать, скажем, pppd, который и решает, что делать дальше. До этого getty умел только выдать этот самый «login:» и приходилось использовать mgetty .

Так как наш скрипт дозвонки больше не будет заниматься аутентификацией, нужно убрать из него имя пользователя «igor«, его пароль «1234567» и ошибку аутентификации

ABORT "ERROR" \ ABORT "NO DIALTONE" \ TIMEOUT 5 \ "" "AT" \ "OK" "ATZ" \ "OK" "ATS7=120" \ ABORT "BUSY" \ ABORT "NO ANSWER" \ ABORT "NO CARRIER" \ "OK" "ATDP$1" \ TIMEOUT 125 \ "CONNECT" "\\с" \ TIMEOUT 30 \ "login:" "\\с" if [ "$?" = "0" ]; then exit 0 fi

Теперь скрипт заканчивает работу сразу же, как получит строку «login:«. Отметим, что приглашение «login:» не имеет никакого отношения к PAP и CHAP, и pppd воспринимает его не более, как шум в линии, поэтому вместо этой строки может быть любое другое приглашение провайдера, в крайнем случае, «>«.

PAP аутентификация происходит следующим образом — при установлении PPP-соединения удалённая сторона предлагает нам аутентификацию PAP. Мы соглашаемся и затем передаём наше имя и пароль открытом текстом. Если удалённую сторону имя и пароль устраивает, то аутентификация считается успешной. Имена и пароли для PAP хранятся в файле /etc/ppp/pap-secrets . У него должны быть такие права доступа Для нашего случая мы запишем в этот файл:

igor cool 1234567

Формат этой строки таков — наше имя, имя удалённой стороны и пароль. В PAP используется только наше имя и пароль, а имя удалённой стороны «cool» может быть произвольным. В принципе, оно нужно только для того, чтобы pppd мог определить, какой пароль нужно использовать в случае, когда Вы используете одно и то же имя у разных провайдеров, например:

igor cool 1234567 igor citynet 7654321

Теперь мы можем звонить провайдеру:

pppd cuaa0 57600 lock connect '/etc/ppp/dial' \ user igor remotename cool \ defaultroute noipdefault debug

Параметры user igor и remotename cool позволяют однозначно определить, какой пароль использовать при аутентификации, в данном случае это 1234567. Как уже говорилось, параметр remotename необходим только, если мы не можем однозначно выбрать пароль из файла /etc/ppp/pap-secrets . Имя нашей стороны можно также задать с помощью параметра name igor, но параметр user имеет больший приоритет. Заметим, что хотя пароль передаётся в открытом виде, удалённая сторона может хранить пароль в виде результата какой-либо хэш-функции, например, MD5, в качестве параметра которой выступает пароль.

CHAP аутентификация происходит следующим образом — при установлении PPP-соединения удалённая сторона предлагает нам аутентификацию CHAP. Мы соглашаемся, и удалённая сторона высылает нам ключ (challenge), состоящий из случайной последовательности символов, и своё имя. Мы берём наш пароль и присланный ключ и прогоняем их через алгоритм MD5. Получившийся результат высылаем вместе со своим именем. Удалённая сторона, зная наш пароль и высланный её ключ, в свою очередь, проделывает то же самое у себя, и если её результат совпадает с присланным нами, то аутентификация считается успешной. Таким образом, пароль не передаётся в открытом виде, но удалённая сторона должна хранить наш пароль в открытом виде.

Имена и пароли для CHAP хранятся в файле /etc/ppp/chap-secrets , права доступа у него должны быть такие же, как для PAP: и формат строк тоже совпадает:

igor cool 1234567

Теперь наша строка для звонка провайдеру выглядит так:

pppd cuaa0 57600 lock connect '/etc/ppp/dial' \ user igor \ defaultroute npipdefault debug

Обратите внимание, что она отличается от PAP только отсутствием параметра remotename. Это объясняется тем, что удалённая сторона сама говорит своё имя, поэтому её имя, записанное в файле /etc/ppp/chap-secrets , не может быть произвольным, как это было в случае с PAP. Даже если Вы зададите параметр remotename, имя, сообщённое удалённой стороной, имеет больший приоритет. Что касается имени нашей стороны, то оно может быть также задано с помощью параметра

Может ли pppd аутентифицировать себя в одних случаях через PAP, а в других — через CHAP ? Ответ — да. При запуске pppd проверяет, как он может аутентифицировать себя, исходя из локального имени и имени удалённой стороны, то есть, есть ли в файлах /etc/ppp/pap-secrets или /etc/ppp/chap-secrets строки с такими именами. И если, скажем, удалённая сторона предлагает CHAP, а pppd не находит пароль в файле /etc/ppp/chap-secrets , то он запросит PAP и если это устраивает удалённую сторону, то аутентификация пройдёт по PAP.

Кроме того, можно указать pppd, чтобы он не соглашался проводить аутентификацию тем или иным способом или же требовал какого-то одного способа с помощью различных комбинаций параметров refuse-pap, refuse-chap, require-pap и require-chap. Раньше эти параметры назывались соответственно -pap, -chap, +pap и +chap.

В чём разница между PAP и CHAP

PAP и CHAP – протоколы аутентификации, использующиеся в протоколе PPP. PAP расшифровывается банально – Password Authentication Protocol. Возможно такая простая расшифровка связана с тем, что протокол был одним из первых. CHAP расшифровывается как Challenge Handshake Authentication Protocol. В курсе CCNA затрагиваются оба этих протокола.

Как работает PAP?

Клиент хочет подключиться к серверу, он отправляет серверу пароль, сервер отвечает либо «Да», либо «Нет». Казалось бы, всё просто – зачем добавлять что-то ещё? Однако, всё становится сложнее, в случае если мы в силу каких-то обстоятельств обратились не к серверу, к, которому собирались, а к устройству злоумышленника. В этом случае получается, что спрашивая его, нравится ли ему наш пароль, мы по сути просто передаём ему пароль, с которым он в дальнейшем может делать всё что угодно. Чтобы избежать такой ситуации был придуман CHAP.

Как работает CHAP?

Клиент хочет обратиться к серверу, сервер передаёт клиенту случайную строку, клиент берёт пароль и эту строку и вычисляет от неё MD5 хеш, который возвращает серверу. Сервер проделывает те же операции (если он сам, конечно, знает правильный пароль). Если хеши слвпадают – клиент авторизован. Что мы получаем? Если клиент не знает пароль – хеши не совпадут, если вместо сервера злоумышленник – он получит только хеш, из которого ничего не выудить.

Таким образом, в реальных ситуациях лучше использовать протокол CHAP.

Чем отличается тип аутентификации chap от pap. И почему chap быстрее? Платно ли пользоваться типом chap?

CHAP (Challenge-Handshake Authentication Protocol) отличается от PAP (Password Authentication Protocol) в том, что он предоставляет дополнительную защиту для пароля пользователя. В отличие от PAP, который просто проверяет правильность пароля, CHAP использует диалог для подтверждения того, что клиент действительно является авторизованным пользователем. Процесс CHAP быстрее обрабатывается, поскольку процесс проверки безопасности происходит за один раз. Использование CHAP не является платным.

Похожие вопросы

PAP — старый, но не бесполезный!?

Как давно интернет провайдеры похоронили PAP? 5, 10, 15 лет назад?

Однако Password Authentication Protocol живее всех живых. Описания и схему выполнения подключения можно найти здесь. Если заглянуть в только вышедшую Windows 10 и попробовать создать там PPPoE подключение, по умолчанию увидим мы там следующую картину:

image

Аналогичная ситуация и с PPTP:

image

А ведь выбор протокола аутентификации зависит не от клиента, вам лишь предлагают, соглашаться или нет — решать вам.

Редко в каких инструкциях от провайдера кроме всего прочего идет графа «Безопасность», это если касаться Windows подключений, про всеми любимые Wi-Fi роутеры можно и вовсе забыть.

А между тем на дворе 2015 год. В магазинах продаются девайсы, ценник которых, не превышая 30$, позволяет даже непосвященному стать небольшим городским провайдером.

Шла суббота

Тихий субботний вечер, на экране любимый сериал. Закончилась одна серия и я сидел с предвкушением ожидая последующей, после 5 минут изучения темного экрана своего телевизора я сообразил что — «Кина небудет, интернет закончился».

Rb750 сообщил что PPTP соединение disconnected. Посмотрев количество mac-адресов (47 против обычных 200+) в бридже на котором висит wan интерфейс справедливо сделал вердикт что на трассе до меня у провайдера проблемы с L1, а значит скорой помощи можно не ждать.

У моего городского провайдера весьма интересный способ раздачи логинов: транслит от улицадом-квартира, так например абонент проживающий на улице 40 лет Октября 14 кв 17 получил бы логин 40let14-17. Возникло желание узнать кто страдает вместе со мной?
Поднимаем PPTP сервер на rb750, вешаем на wan IP-адрес шлюза провайдера. Включаем debug,pptp и соседи с надеждой начинают подключатся к нам.

Ох, да сколько же вас! Сначала дружными рядами отстучались разномастные Wi-Fi (TP-LINK, D-Link, Asus и ко) чуть позже в логах я увидел и host-name=HOME-PC.

Однако никому из них подключиться не удалось, что естественно ведь в secrets их имен быть не могло, а уж тем более и паролей.
А что если убрать в настройках PPTP сервера аутентификацию с использованием chap/mschap/mschap2 и оставить только PAP?

  • из 47 хостов авторизации запросили 43.
  • из 43 предложений авторизоватся по PAP отказом ответили — 2.
  • 41 хост или 87,2% добровольно отдали мне свой логин-пароль.
Раньше было лучше?

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

Конкуренция вынуждает провайдеров накручивать плюшки в личном кабинете. Мой не исключение.

  • лицевой счет;
  • паспортные данные;
  • номер моб. телефона;
  • баланс;
  • кредит;
  • блокировка;
  • перевод;
  • отчет по трафику;
  • изменение тарифного плана.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *