Authentication with ppp

Інтернет-маркетинг на 100%

Authentication with ppp
Перша вітчизняна робота, яка розкриває всі основні аспекти присутності компанії в Інтернеті. З неї ви дізнаєтеся, як:

- створити сайт, найкращим чином підтримує роботу з клієнтами;

- підвищити рейтинг сайту в пошукових системах;

- використовувати Інтернет для персонального маркетингу;

- сформувати віртуальний офіс, що забезпечує фахівця з маркетингу всім необхідним інструментарієм.

Книга підготовлена ​​провідними експертами Рунета, кожен з яких спеціалізується на своїй предметної області і може розповісти про неї максимально компетентно. Видання орієнтоване на директорів і менеджерів з маркетингу, фахівців, що відповідають за підтримку веб-проектів компанії.

З PPP кожна система може вимагати, щоб інший кінець лінії впізнав себе, використовуючи один з двох розпізнавальних протоколів. Це Password Authentication Protocol (PAP) і Challenge Handshake Authentication Protocol (CHAP). Коли зв'язок встановлено, кожен може запросити інший кінець лінії, щоб пізнати себе, незалежно від того, чи є він викликає або викликається. Нижче я буду говорити про "клієнта" і "сервері", коли захочу зробити відмінність між системою впізнання і аутенфікатором. PPP daemon може запитувати про справжність, посилаючи LCP-запит конфігурації, опознающий бажаний протокол.

PAP в основному працює як нормальна процедура входу в систему. Клієнт пізнає себе, посилаючи ім'я користувача і пароль сервера, який порівнює їх з базою даних. Цей метод легко вразливий для сторонніх спостерігачів, які можуть спробувати отримати пароль, слухаючи послідовну лінію.

CHAP не має цих недоліків. З CHAP аутенфікатор (сервер) посилає безладно сгенерированную "challenge" -строку клієнту, поряд з ім'ям хоста. Клієнт використовує ім'я хоста (hostname) для того, щоб шукати відповідний шифр, об'єднує його з challenge і шифрує рядок, використовуючи односпрямовану hash-функцію. Результат буде повернутий на сервер поряд з hostname клієнта. Сервер тепер виконує ті ж самі обчислення і пізнає клієнта.

Пакет pppd зберігає секретні ключі для CHAP і PAP в двох окремих файлах, які називаються відповідно / etc / ppp / pap-secrets і / etc / ppp / chap-secrets. Записуючи віддалений хост в один або інший файл, Ви маєте хороший контроль над CHAP або PAP.

За замовчуванням pppd не вимагає встановлення автентичності віддаленої машини, але погоджується впізнавати себе, коли вона запросить впізнання. Так як CHAP набагато більш досконалий, ніж PAP, pppd пробує використовувати його всякий раз, коли це можливо. Якщо віддалена машина цього не підтримує, або якщо pppd не може знайти CHAP-шифр для віддаленої системи в файлі chap-secrets. він повертається до PAP. Якщо він не має також і PAP-шифру, то зв'язок закриється.

Це поведінка може бути змінено. Наприклад, коли дається ключове слово auth. pppd вимагає, щоб інший кінець лінії впізнав сам себе. pppd погодиться використовувати CHAP або PAP для цього, як тільки буде має відповідний шифр в базі даних CHAP або PAP відповідно. Є інші опції, щоб включити або вимкнути приватний розпізнавальний протокол, але я не буду описувати їх тут.

Якщо все системи, з якими Ви працюєте по PPP погоджуються впізнавати самих себе, Ви повинні помістити опцію auth в глобальний файл / etc / ppp / options і визначити паролі для кожної системи в файлі chap-secrets. Якщо система не підтримує CHAP, додайте запис до файлу pap-secrets. Таким чином, Ви можете переконатися в тому, що ніяка Невизначена система не з'єднується з Вашим хостом.

Коли треба пізнати себе з деяким сервером, використовуючи CHAP, pppd шукає в файлі chap-secrets запис з ім'ям клієнта, рівним локальному hostname, і ім'ям сервера, рівного віддаленого hostname, посланого в CHAP Challenge. При вимозі впізнання себе ролі просто помінялися: pppd буде шукати запис з ім'ям клієнта, прирівняним до віддаленого hostname (він послові в CHAP-відповіді клієнту) і ім'я сервера, прирівняна локальному хосту.

Типовий файл chap-secrets для vlager:

При встановленні PPP-зв'язку з c3po. c3po просить vlager впізнати себе, використовуючи CHAP і посилаючи CHAP challenge. Потім pppd переглядає файл chap-secrets для запису з клієнтської областю, прирівняних до vlager.vbrew.com і областю сервера, прирівняної до c3po.lucas.com. і знаходить перший рядок, показану вище. Потім проводиться CHAP-відповідь з challenge string і шифру (Use The Source Luke) на машину c3po.

У той же самий час pppd становить CHAP challenge для c3po. містить унікальну challenge string, і повністю кваліфіковане доменне ім'я vlager.vbrew.com. У відповідь c3po створює CHAP-відповідь способом, який ми щойно обговорили, і повертає його vlager. Тепер pppd витягує клієнтський hostname (c3po.vbrew.com) з відповіді і шукає в файлі chap-secrets рядок, відповідну c3po як клієнтові і vlager як сервера. Другий рядок задає pppd об'єднати CHAP challenge з паролем (arttoo! Arttoo!), Зашифрувати результат і порівняти CHAР-відповіддю c3po.

Потрібно згадати спосіб, яким pppd знаходить імена машин: він шукає їх у файлі шифрів. Як було пояснено вище, віддалене ім'я завжди передається в CHAP Challenge або в Response packet. Локальний hostname буде отримано, якщо викликати функцію gethostname (2). Якщо Ви встановили ім'я системи в Ваше некваліфіковане hostname, то повинні поставити для pppd опцію domain.

Файл шифрів PAP дуже схожий на той, який використовується CHAP. Перші два поля завжди містять імена користувача і сервера, третє поле зберігає шифр PAP. Коли віддалена машина посилає запит впізнання, pppd використовує запис, яка має поле сервера рівне локальному hostname, і поле користувача, рівне імені користувача, посланого в запиті. Коли впізнання відбудеться, pppd вибере шифр, який буде посланий з полем користувача, прирівняним до локального імені користувача, і полем сервера, прирівняним до віддаленого hostname.

Зразок файлу шифрів для PAP:

Перший рядок використовується для того, щоб пізнати нас, коли ми єднаємося з c3po. Друга описує, як користувач c3po повинен впізнавати себе при з'єднанні з нами.

Ім'я vlager-pap в стовпці імені користувача ми посилаємо на c3po. За замовчуванням pppd вибере локальний hostname як ім'я користувача, але Ви можете також визначити різні імена, даючи опцію user. супроводжувану ці ім'ям.

Зауважте, що PAP досить слабкий розпізнавальний метод, і краще використовувати CHAP, якщо це можливо. Я не буду тут описувати PAP в деталях: якщо Ви зацікавлені в використанні PAP, то знайдете більше відомостей на pppd (8) man-сторінці.