Рейтинг:3

Как зашифровать пароль пользователя в Freeradius

флаг eg

Недавно я установил сервер freeradius и хотел бы изменить пароль пользователя, который сейчас находится в открытом виде, на зашифрованный в файле /etc/freeradius/3.0/users.

Вот так это выглядит на сервере.

введите описание изображения здесь

Когда я аутентифицируюсь на сервере, я вижу имя пользователя и пароль в /var/log/freeradius/radius.log файл. Как я могу получить его зашифрованным? Я использую Дебиан.

введите описание изображения здесь

flashbang avatar
флаг cn
Для всех, у кого есть такой же вопрос, я набросал [этот Perl-скрипт] (https://gist.github.com/rc4/305a7f9cf945127fd045546cad4b13e5), который дает вам точную строку конфигурации, необходимую для соленого пароля SHA256. Это немного проще, чем Python, приведенный ниже, IMO, поскольку он запрашивает пароль и автоматически генерирует для вас соль ;-)
Рейтинг:2
флаг ro

Вкратце,

  1. Вам нужно указать формат хэша пароля вместо Открытый текст-пароль, и
  2. Вам нужно установить auth_goodpass и auth_badpass на «нет», чтобы предотвратить регистрацию паролей.

Указание формата хэша

Как описано в справочная страница rlm_pap, существует ряд настроек хэша пароля, которые можно использовать вместо Открытый текст-пароль. Возьмем простой пример, MD5-пароль:

#bob Пароль открытого текста := "hello"
Боб MD5-Пароль: = "7d793037a0760186574b0282f2f435e7"
        Ответное сообщение: = "Здравствуйте, %{Имя пользователя}"

Вы можете легко сгенерировать хэш пароля md5, например:

$ эхо -n мир | md5sum | awk '{напечатать $1}'
7d793037a0760186574b0282f2f435e7
$

Когда мы тестируем это на нашем сервере, мы видим, что он аутентифицируется:

$ radtest bob world localhost 1 тестирование123
Отправлено идентификатор запроса доступа 214 от 0.0.0.0:34920 до 127.0.0.1:1812 длина 73
        Имя пользователя = "боб"
        Пароль пользователя = "мир"
        NAS-IP-адрес = 127.0.1.1
        NAS-порт = 1
        Аутентификатор сообщения = 0x00
        Открытый текст-пароль = "мир"
Полученный идентификатор доступа 214 от 127.0.0.1:1812 до 127.0.0.1:34920 длина 32
        Ответное сообщение = "Привет, Боб"

Вы также можете указать свой хэш с помощью универсального Пароль-с-заголовком вариант:

#bob Пароль открытого текста := "hello"
Боб Пароль-с-заголовком := "{md5}7d793037a0760186574b0282f2f435e7"
        Ответное сообщение: = "Здравствуйте, %{Имя пользователя}"

Это имеет тот же эффект, что и MD5-пароль версия сделала. Список принятых заголовков находится на этом rlm_pap справочная страница.

Один из самых интересных доступных заголовков Склеп-Пароль потому что он будет запускать хэши паролей через libcrypt и, следовательно, будет работать с любыми хэшами, которые вы найдете в /и т.д./тень. Например, в системе Debian хэши yescrypt:

bob Crypt-Password := "$y$j9T$2fOq6bdva3zoX6OfH.JvY0$PbUGbp1U.UXFAnGrkDrYnLZEDK.PXO/HXDsBn4mCsM8"
        Ответное сообщение: = "Здравствуйте, %{Имя пользователя}"

(пароль в данном случае а38сгена)

Отключение регистрации паролей

Чтобы отключить регистрацию паролей, найдите auth_goodpass и auth_badpass отбор в рамках radiusd.conf файл:

# Регистрировать пароли с запросами аутентификации.
# auth_badpass - регистрирует пароль, если он отклонен
# auth_goodpass - регистрирует пароль, если он правильный
#
# допустимые значения: {нет, да}
#
auth_badpass = нет
auth_goodpass = нет

Убедитесь, что для них установлено значение «нет», и ваш журнал перестанет включать пароли.

флаг eg
Спасибо за решение. Я изменил значения, как указано, но я мог войти через ssh с другого компьютера с именем пользователя и паролем в открытом виде, теперь я не могу с хешированным паролем MD5. Как мне этого добиться?
флаг my
Если вы вызываете модуль PAP после модуля файлов, он должен просто работать. Вам также необходимо убедиться, что пакеты RADIUS содержат пароль пользователя, так как аутентификация RADIUS CHAP не будет работать с хешированными паролями, только аутентификация RADIUS PAP.
gowenfawr avatar
флаг ro
Как вы генерируете хэш MD5? Распространенной ошибкой является пропуск аргумента `-n` для `echo`, чтобы хешированный пароль включал новую строку. `echo -n пароль | md5sum` создаст рабочий хэш для пароля.
Рейтинг:2
флаг cn

Вот список атрибутов, соответствующих методу хеширования: https://freeradius.org/radiusd/man/rlm_pap.txt

Атрибут заголовка Описание
------ --------- -----------
{clear} Cleartext-Password Открытый текст паролей
{открытый текст} Открытый текст-пароль Открытый текст паролей
{crypt} Crypt-Password Зашифрованные пароли в стиле Unix
{md5} MD5-Password Хэшированные пароли MD5
{base64_md5} MD5-Password Хэшированные пароли MD5
{smd5} SMD5-Password Хешированные пароли MD5 с солью
{sha} SHA-Password SHA1-хешированные пароли
                SHA1-Password Хешированные пароли SHA1
{ssha} SSHA-Password SHA1-хешированные пароли с солью
{sha2} SHA2-Password SHA2-хешированные пароли
{sha224} SHA2-Password SHA2-хешированные пароли
{sha256} SHA2-Password SHA2-хешированные пароли
{sha384} SHA2-Password SHA2-хешированные пароли
{sha512} SHA2-Password SHA2-хешированные пароли
{ssha224} SSHA2-224-Password SHA2-хешированные пароли с солью
{ssha256} SSHA2-256-Password SHA2-хешированные пароли с солью
{ssha384} SSHA2-384-Password SHA2-хешированные пароли с солью
{ssha512} SSHA2-512-Password SHA2-хешированные пароли с солью
{nt} NT-Password Хешированные пароли Windows NT
{nthash} NT-Password Хешированные пароли Windows NT
{md4} NT-Password Хешированные пароли Windows NT
{x-nthash} NT-Password Хешированные пароли Windows NT
{ns-mta-md5} NS-MTA-MD5-Password Хешированные пароли Netscape MTA MD5
{x-orcllmv} LM-Password Хешированные пароли Windows LANMAN
{X-orclntv} NT-Password Хешированные пароли Windows NT

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

Вы можете найти таблицу, которую я использовал для настройки своего сервера Freeradius для совместимости протокола и пароля: http://deployingradius.com/documents/protocols/compatibility.html

совместимость протокола и пароля

Чтобы сгенерировать пароль с солью sha256, я использовал следующий скрипт на github (вам нужно отредактировать последние 2 строки, чтобы изменить пароль и соль): https://gist.github.com/bestrocker221/f506eee8ccadc60cab71d5f633b7cc07

флаг eg
Спасибо . Как я могу использовать хеш-значение для аутентификации через ssh, используя имя пользователя bob и хэш-значение «6afedb7a8348eb4ebdbe0c77ef92db4c»
флаг cn
Аутентификация по ssh работает? (с открытым текстом для примера). Я никогда не пробовал этого, лично я использую wpa_supplicant для отправки логина и пароля на коммутатор, подключенный к моему серверу freeradius.
флаг eg
Да, это так . Я настроил /etc/pam.d/ на клиентском сервере и AAA на коммутаторе Catalyst. я могу ssh, используя пользователя и пароль в открытом виде, которые я создал на сервере радиуса. Я сделал то же самое с MD5, это не сработало.
флаг cn
Возможно, аутентификация с использованием протокола ssh не обрабатывает никакого шифрования пароля: c
флаг eg
Еще раз спасибо за продолжение. поможет ли настроить SSL/TLS на сервере RADIUS? будет ли он шифровать пароль в файле radius.log?
флаг cn
Когда я настроил протокол SSL/TLS на сервере радиуса, я сгенерировал сертификаты. Попробуйте PEAP-GTC, так как PEAP привносит TLS в обмен учетными данными. Это то, что я использую для аутентификации с помощью соленого пароля sha256.

Ответить или комментировать

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