Freeradiusでユーザーパスワードを暗号化する方法

Freeradiusでユーザーパスワードを暗号化する方法

最近、freeradius サーバーをセットアップしたのですが、現在平文になっているユーザー パスワードを /etc/freeradius/3.0/users ファイルで暗号化されたものに変更したいと考えています。

サーバー上ではこのように見えます。

ここに画像の説明を入力してください

サーバーで認証すると、/var/log/freeradius/radius.logファイル内のユーザー名とパスワードが表示されます。これを暗号化するにはどうすればいいでしょうか? Debian を使用しています。

ここに画像の説明を入力してください

答え1

要するに、

  1. の代わりにパスワードハッシュ形式を指定する必要がありますCleartext-Password
  2. auth_goodpassパスワードのログ記録を防止するには、とauth_badpassを「no」に設定する必要があります。

ハッシュ形式の指定

で説明したように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マニュアルページ。

利用可能な最も興味深いヘッダーの 1 つは、Crypt-Passwordパスワード ハッシュを libcrypt 経由で実行し、 で見つかったハッシュで動作するという点です/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

関連情報