Freeradius + LDAP + Google-аутентификатор - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу реализовать вход в мой сервис vpn с паролем + google_otp.freeradius в качестве сервера авторизации и ldap в качестве backend_database.

Я выполнил следующую работу:

  1. включил модуль аутентификации pam в / etc / raddb / sites-enabled / default
  2. добавьте строку "DEFAULT Auth-Type: = PAM" в / etc / raddb / users
  3. включите модуль ldap и добавьте сайт ldap в freeradis, я подтверждаю, что raidus использует базу данных ldap, работает правильно.
  4. Перезаписать содержимое /etc/pam.d/radiusd
auth requisite pam_google_authenticator.so secret=/tmp/.google_authenticator user=root forward_pass
auth required pam_unix.so use_first_pass  

выполнить test cmd: (testpa - это мой пароль, 271082 - это otp)

radtest perlingzhao testpa271082 localhost 1812 testing123

радиус журнала:

(0)     [pap] = noop
(0)   } # authorize = updated
(0) Found Auth-Type = pam
(0) # Executing group from file /etc/raddb/sites-enabled/default
(0)   authenticate {
(0) pam: Using pamauth string "radiusd" for pam.conf lookup
(0) pam: ERROR: pam_authenticate failed: User not known to the underlying authentication module
(0)     [pam] = reject
(0)   } # authenticate = reject
(0) Failed to authenticate the user
(0) Using Post-Auth-Type Reject

войти в систему / var / log / secure:

radiusd(pam_google_authenticator)[11728]: Accepted google_authenticator for perlingzhao
pam_unix(radiusd:auth): check pass; user unknown
pam_unix(radiusd:auth): authentication failure; logname=root uid=0 euid=0 tty= ruser= rhost=

Я знаю, что это потому, что нет локального пользователя, информация о пользователе находится в ldap.

Кто-нибудь может мне помочь, подскажите, как можно решить эту проблему, спасибо.

1 Ответ

0 голосов
/ 28 декабря 2018

Я могу предложить использовать PHP-скрипт для проверки OTP вместо модулей PAM, он не создает реальных локальных пользователей, а только проверяет сам TOTP.PHP также имеет функции LDAP.

authorize{
    update control { 
        Auth-Type := `/usr/bin/php -f /etc/raddb/yourscript.php '%{User-Name}' '%{User-Password}' '%{Client-IP-Address}'`
    }

Существует коммерческий продукт , который полностью соответствует вашим требованиям.

PS Я связан с # 1

...