Я использую Freeradius для аутентификации пользователя с моего сервера с помощью кода php

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

Он возвращает CHAP-Password = 0xa2a421bf267fbffabe5696cf1c6d54f479

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

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

Итак, мой вопрос: есть ли способ расшифровать пароль CHAP, или, если это невозможно, указать CHAP не хешировать пароль в конфигурации

0
Ahmed Al Bermawy 19 Апр 2016 в 19:07

2 ответа

Лучший ответ

После многих и многих часов поисков я наконец проверил парня в моей базе данных:

Во-первых: я работаю над свободным радиусом 3, потому что есть много изменений для радиуса 2 и радиуса 3.

Второе: конфигурация базы данных

Я использую mysql с двумя базами данных, например:

  1. члены

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

    • radcheck
      • идентификатор
      • имя пользователя
      • атрибут
      • op
      • значение
    • 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 , поэтому нам нужно написать запрос для выбора имени пользователя из таблицы user .

Этот запрос будет в этом файле query.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"

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

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

И попробуйте проверить аутентификацию

radtest -t chap ahmed test localhost 1812 testing123 

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

Полученный идентификатор доступа-принятия 105 от 127.0.0.1:1812 до 127.0.0.1:38259 длиной 20

Итак, вы сделали,

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

0
Ahmed Al Bermawy 18 Май 2016 в 14:05

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

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

При использовании CHAP вам понадобится пароль в виде открытого текста на сервере, чтобы проверить правильность ответа на запрос.

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

1
Matthew Newton 19 Апр 2016 в 16:57