2016-04-19 6 views
0

Я использую FreeRadius для аутентификации пользователя с моего сервера с помощью PHP кодаCHAP Пароль расшифровывать - FreeRadius

update control { 
    Reply-Message := `/usr/bin/php -f /etc/raddb/auth.php '%{User-Name}' '%{CHAP-Password}' '%{CHAP-Challenge}' auth` 
} 

это вернуть CHAP-Password = 0xa2a421bf267fbffabe5696cf1c6d54f479

и ОПГД-пароль для хэширования, но я не очистить пароль в базе данных, пароль хешируется.

Он работает отлично с РАР протокола, но мне нужно использовать CHAP для другой конфигурации

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

ответ

0

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

Первого: Я работаю на FreeRADIUS 3, потому что есть много изменений, образует радиус 2 и радиус 3

Во-вторых: База данных конфигурации

Я использую MySQL с 2 баз данных, как это:

  1. члены

    • пользователи
      • ID
      • имя пользователя
      • пароль
      • .......
      • .......
    • ........
  2. радиус

    • radcheck
      • ID
      • имя пользователя
      • атрибут
      • оп
      • значение
    • radpostauth
    • ......

Вам нужно настроить SQL файл в этом корень

sudo nano mods-available/sql 

И изменить значения

driver = "rlm_sql_mysql" 
dialect = "mysql" 
server = "localhost" 
login = "your_database_username" 
password = "your_database_password" 

Затем сохраните и перезапустите радиус:

sudo service radiusd restart 

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

После перезагрузки радиус вы должны скопировать этот файл в модов с поддержкой

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

sudo cp mods-available/sql mods-enabled/sql 

Чтобы проверить если все работает нормально

sudo radiusd -XC 

Эта команда запускает отладку по радиусу и возвращает ошибки.

если конец этой отладки находится появляется

конфигурации не будет хорошо

так все прекрасно до сих пор

Третье: Подключение к базе данных и Аутентифицировать

Теперь нам нужно аутентифицировать имя пользователя через CHAP, поэтому нам нужно написать запрос, чтобы выбрать имя из пользователя таблицы

Этот запрос будет в этом файле запросов.Conf в этом корень

sudo nano mods-config/sql/main/mysql/queries.conf 

И изменить authorize_check_query к

authorize_check_query = "\ 
    SELECT members.user.id as id, \ 
    members.user.username as username, \ 
    'Cleartext-Password' as attribute, \ 
    members.user.password as value, \ 
    ':=' as op \ 
FROM members.user \ 
WHERE members.user.username = '%{SQL-User-Name}' \ 
ORDER BY members.user.id" 

FYI, пароль должен быть в виде простого текста, потому что, как вы видите, атрибут Аут-Password

Теперь добавим в таблицу пользователь строка с именем пользователя = "ahmed" и password = "test"

и попытаться Тест проверки подлинности

radtest -t chap ahmed test localhost 1812 testing123 

если вы получаете

Полученное Access-Accept Id 105 от 127.0.0.1:1812 до 127.0.0.1:38259 длиной 20

Так вы сделаны,

также я хочу поблагодарить @MatthewNewton за его ответ и комментарии по моему вопросу: D

1

CHAP - вызов-ответ. Шестнадцатеричный код, который вы видите, не является зашифрованным паролем, и нет возможности «расшифровать» его, чтобы получить пароль с открытым текстом.

С помощью PAP вы можете иметь зашифрованный пароль на сервере или открытый текст. Вам отправляется пароль открытого текста, который вы можете проверить.

С CHAP вам нужен пароль открытого текста на сервере, чтобы проверить правильность ответа на вызов.

Значит, вы не можете делать то, что хотите сделать в текущей форме.

+0

Спасибо за ответ, Я, если у меня есть текстовый пароль, скажем, «123456», и при использовании CHAP он отправляет '% {CHAP-Password} ''% {CHAP-Challenge} '' Как проверить, если ответ на вызов правильный? –

+1

Вы должны установить Cleartext-Password на «123456» в FreeRADIUS. Затем для chap auth входящий запрос Access будет содержать атрибут CHAP-Password. Затем модуль 'chap' будет использовать Cleartext-Password для проверки правильности атрибута CHAP-Password. Нет необходимости использовать php для обработки атрибутов CHAP, для чего нужен модуль chap. –

+0

но у меня есть база данных с именем пользователя и cleartext-password, поэтому мне нужно сохранить все эти записи в файле пользователей, чтобы сделать FreeRADIUS аутентификацией? правильно? –