Freeradius에서 사용자 비밀번호를 암호화하는 방법

Freeradius에서 사용자 비밀번호를 암호화하는 방법

최근에 freeradius 서버를 설정했는데 현재 일반 텍스트로 되어 있는 사용자 비밀번호를 /etc/freeradius/3.0/users 파일에서 암호화되도록 변경하고 싶습니다.

서버에서 보이는 모습입니다.

여기에 이미지 설명을 입력하세요

서버에서 인증하면 파일에서 사용자 이름과 비밀번호를 볼 수 있습니다 /var/log/freeradius/radius.log. 어떻게 암호화할 수 있나요? 저는 데비안을 사용하고 있습니다.

여기에 이미지 설명을 입력하세요

답변1

즉,

  1. 대신 비밀번호 해시 형식을 지정해야 합니다 Cleartext-Password.
  2. 비밀번호 로깅을 방지하려면 auth_goodpass및 'no'를 설정해야 합니다 .auth_badpass

해시 형식 지정

에 설명된 대로rlm_pap 매뉴얼 페이지, 대신 사용할 수 있는 비밀번호 해시 설정이 많이 있습니다 Cleartext-Password. 간단한 예를 들어보겠습니다 MD5-Password.

#bob    Cleartext-Password := "hello"
bob     MD5-Password:= "7d793037a0760186574b0282f2f435e7"
        Reply-Message := "Hello, %{User-Name}"

다음과 같이 md5 비밀번호 해시를 쉽게 생성할 수 있습니다.

$ echo -n world | md5sum | awk '{print $1}'
7d793037a0760186574b0282f2f435e7
$

이것을 서버에 대해 테스트하면 다음과 같이 인증되는 것을 볼 수 있습니다.

$ radtest bob world localhost 1 testing123
Sent Access-Request Id 214 from 0.0.0.0:34920 to 127.0.0.1:1812 length 73
        User-Name = "bob"
        User-Password = "world"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 1
        Message-Authenticator = 0x00
        Cleartext-Password = "world"
Received Access-Accept Id 214 from 127.0.0.1:1812 to 127.0.0.1:34920 length 32
        Reply-Message = "Hello, bob"

일반 옵션을 사용하여 해시를 지정할 수도 있습니다 Password-With-Header.

#bob    Cleartext-Password := "hello"
bob     Password-With-Header := "{md5}7d793037a0760186574b0282f2f435e7"
        Reply-Message := "Hello, %{User-Name}"

이는 버전과 동일한 효과를 갖습니다 MD5-Password. 허용되는 헤더 목록은 다음과 같습니다.rlm_pap맨 페이지.

사용 가능한 가장 흥미로운 헤더 중 하나는 Crypt-Passwordlibcrypt를 통해 비밀번호 해시를 실행하므로 /etc/shadow. 예를 들어 Debian 시스템에서 yescrypt 해시는 다음과 같습니다.

bob     Crypt-Password := "$y$j9T$2fOq6bdva3zoX6OfH.JvY0$PbUGbp1U.UXFAnGrkDrYnLZEDK.PXO/HXDsBn4mCsM8"
        Reply-Message := "Hello, %{User-Name}"

(이 경우 비밀번호는 a38sgena)

비밀번호 로깅 비활성화

비밀번호 로깅을 비활성화하려면 파일 내에서 auth_goodpass및 선택 항목을 찾으세요 .auth_badpassradiusd.conf

#  Log passwords with the authentication requests.
#  auth_badpass  - logs password if it's rejected
#  auth_goodpass - logs password if it's correct
#
#  allowed values: {no, yes}
#
auth_badpass = no
auth_goodpass = no

해당 항목이 '아니요'로 설정되어 있는지 확인하면 로깅에 비밀번호가 포함되지 않습니다.

답변2

해싱 방법에 해당하는 속성 목록은 다음과 같습니다.https://freeradius.org/radiusd/man/rlm_pap.txt

Header          Attribute           Description
------          ---------           -----------
{clear}         Cleartext-Password  Clear-text passwords
{cleartext}     Cleartext-Password  Clear-text passwords
{crypt}         Crypt-Password      Unix-style "crypt"ed passwords
{md5}           MD5-Password        MD5 hashed passwords
{base64_md5}    MD5-Password        MD5 hashed passwords
{smd5}          SMD5-Password       MD5 hashed passwords, with a salt
{sha}           SHA-Password        SHA1 hashed passwords
                SHA1-Password       SHA1 hashed passwords
{ssha}          SSHA-Password       SHA1 hashed passwords, with a salt
{sha2}          SHA2-Password       SHA2 hashed passwords
{sha224}        SHA2-Password       SHA2 hashed passwords
{sha256}        SHA2-Password       SHA2 hashed passwords
{sha384}        SHA2-Password       SHA2 hashed passwords
{sha512}        SHA2-Password       SHA2 hashed passwords
{ssha224}       SSHA2-224-Password  SHA2 hashed passwords, with a salt
{ssha256}       SSHA2-256-Password  SHA2 hashed passwords, with a salt
{ssha384}       SSHA2-384-Password  SHA2 hashed passwords, with a salt
{ssha512}       SSHA2-512-Password  SHA2 hashed passwords, with a salt
{nt}            NT-Password         Windows NT hashed passwords
{nthash}        NT-Password         Windows NT hashed passwords
{md4}           NT-Password         Windows NT hashed passwords
{x-nthash}      NT-Password         Windows NT hashed passwords
{ns-mta-md5}    NS-MTA-MD5-Password Netscape MTA MD5 hashed passwords
{x- orcllmv}    LM-Password         Windows LANMAN hashed passwords
{X- orclntv}    NT-Password         Windows NT hashed passwords

클라이언트를 인증하는 데 사용하는 프로토콜과 방법이 사용할 수 있는 해싱 방법에 영향을 미친다는 점을 잊지 마세요.

프로토콜 및 비밀번호 호환성을 위해 Freeradius 서버를 구성하는 데 사용한 표를 찾을 수 있습니다.http://deployingradius.com/documents/protocols/compatibility.html

프로토콜 및 비밀번호 호환성

sha256 솔트된 비밀번호를 생성하기 위해 github에서 다음 스크립트를 사용했습니다(비밀번호와 솔트를 변경하려면 마지막 2줄을 편집해야 합니다).https://gist.github.com/bestrocker221/f506eee8ccadc60cab71d5f633b7cc07

관련 정보