FreeRadius에서 2단계 인증 설정 문제를 해결하는 데 도움을 주세요.
FreeRADIUS 버전 3.0.20
일반적으로 연결된 모든 사용자에 대해 두 번째 요소를 구성합니다.
하지만 특정 사용자만 사용하도록 구성할 수는 없습니다.
두 번째 요소를 테스트해야 합니다.
이제 작업 흐름은 다음과 같습니다.
연결 시 모든 사용자의 LDAP 및 두 번째 요소가 확인됩니다.
어떻게:
모든 사용자는 LDAP 서버에서 인증되며,
별도의 파일에 정의된 사용자(LDAP 로그인만 해당)도 두 번째 요소에 대해 테스트되었습니다.
다음은 모든 사용자에게 적용되는 구성의 예입니다.
cat /etc/raddb/sites-enabled/default
authorize {
filter_username
filter_google_otp
preprocess
if ((ok || updated) && Google-Password && !control:Auth-Type) {
update control {
Auth-Type := `/path_to_script/auth_2fa.py %{User-Name} %{Google-Password}`
}
}
}
내 생각은 사용자의 사용자 이름이 파일의 사용자와 일치하는지 확인하기 위해 filter_username 뒤에 검사를 추가하는 것입니다. 일치하는 항목이 발견되면 요소 2에 대한 테스트가 수행됩니다.
그렇지 않다면 계속하세요.
인터넷에서 비슷한 것을 찾을 수 없습니다.
filter_username
if (&User-Name) {
update control {
2FA_USERS := check-item {
filename = "/etc/raddb/users_2fa",
item-name = "%{User-Name}",
flags = case-sensitive
}
}
if (2FA_USERS) {
filter_google_otp
내 구현 아이디어가 적합하지 않을 수도 있습니다.
그런 문제가 발생한 사람이 있습니까?
답변1
문제 해결됨:
authorize {
filter_username
if (`/path_to_script/check_user_2fa.sh %{User-Name}`) {
filter_google_otp
ldap
if ((ok || updated) && Google-Password && !control:Auth-Type) {
update control {
Auth-Type := `/path_to_script/google_2fa.py %{User-Name} %{Google-Password}`
}
}
} else {
update {
control:Auth-Type := ldap
}
}
preprocess
}
성공하면 check_user_2fa.sh 스크립트에 ok가 표시됩니다.