RADIUS-sever: 비밀번호 확인 전 해싱

RADIUS-sever: 비밀번호 확인 전 해싱

pfSense의 종속 포털을 사용하여 인증을 위해 RADIUS 서버를 설정해야 합니다. 불행하게도 RADIUS 데이터베이스의 모든 비밀번호는 특정 알고리즘으로 해시됩니다. 저는 MySQL 데이터베이스를 사용합니다.

사용자가 일반 텍스트로 비밀번호를 RADIUS 서버에 제출하므로 제출된 비밀번호를 RADIUS 서버에서 해시하고 나중에 사용자 이름과 해시된 비밀번호가 있는지 확인할 수 있는지 궁금합니다.

피할 수 있다면 클라이언트 측에서 비밀번호를 해시하고 싶지 않습니다. pfSense의 종속 포털은 현재 RADIUS 서버를 사용하는 유일한 애플리케이션입니다. 하지만 인프라를 확장하려면 모든 클라이언트에 해싱 알고리즘을 구현해야 합니다.

일반적으로 RADIUS 서버를 이런 방식으로 수정할 가능성이 있습니까? 어쩌면 코어를 수정하면 될까요? 불행히도 제출된 데이터가 데이터베이스에서 어떤 파일에서 조회되는지 알 수 없습니다.

내가 어디를 봐야 하는지 알려줄 사람이 있나요?

(저는 Ubuntu Server 12.04 x86, freeradius, freeradius-mysql을 사용합니다)

답변1

또는 외부 PHP 스크립트를 사용하려는 경우 승인에 다음을 배치할 수 있습니다.

authorize {
    update {
        Tmp-String-0 := `/usr/bin/php5 -f /path/to/cpauth.php '%{User-Name}' '%{User-Password}'`
    }

    if (Tmp-String-0 == 'Accept') {
        update control {
            Auth-type := Accept
        }
    }
    else {
        reject
    }
}

그런 다음 '수락' 또는 '거부'를 에코합니다.

답변2

rlm_sql 모듈의 인스턴스를 구성합니다.

authorize {}해시된 비밀번호를 검색하려면 쿼리를 추가하세요 .

update control {
    <password-attribute> := "%{sql:SELECT password FROM foo_table WHERE user=%{User-Name}}"
}

Password-Attribute는 Cleartext-Password MD5-Password SMD5-Password Crypt-Password SHA2-Password SHA-Password SSHA-Password LM-Pasword NT-Password 중 하나일 수 있습니다.

그런 다음 모듈을 호출합니다 pap. pap 모듈은 Auth-Type을 다음으로 설정해야 하며 papUser-Password 값을 해시하여 비밀번호 속성 값에 사용된 체계와 일치시키고 이를 비교합니다.

관련 정보