web-dev-qa-db-ja.com

RADIUS + UbuntuのWPA2用LDAPの設定

最大150人のユーザー用にワイヤレスネットワークをセットアップしています。要するに、私はLDAPに対してWPA2を認証するためにRADIUSサーバーを設定するためのガイドを探しています。Ubuntuで。

  • 動作するLDAPを取得しましたが、本番環境で使用されていないため、このプロジェクトで必要な変更に非常に簡単に適応できます。
  • 私はFreeRADIUSを見てきましたが、RADIUSサーバーはすべての機能を備えています。
  • 私たちはWiFiのためだけに別の物理ネットワークを手に入れましたので、その前面のセキュリティについて心配する必要はあまりありません。
  • 私たちのAPはHPのローエンドエンタープライズのものです-あなたが考えることができるものは何でもサポートしているようです。
  • すべてのUbuntuサーバー、赤ちゃん!

そして悪いニュース:

  • 私は今や私より知識が少ない人が最終的に管理を引き継ぐので、セットアップは可能な限り「取るに足らない」ものでなければなりません。
  • これまでのところ、私たちのセットアップは、LDAP管理Webアプリケーションといくつかの小さな特別なスクリプトを除いて、Ubuntuリポジトリのソフトウェアのみに基づいています。したがって、回避可能な場合は、「パッケージXのフェッチ、tar、。/ configure」などは行いません。

UPDATE 2009-08-18:

いくつかの役立つリソースを見つけましたが、重大な障害が1つあります。

Ignoring EAP-Type/tls because we do not have OpenSSL support.
Ignoring EAP-Type/ttls because we do not have OpenSSL support.
Ignoring EAP-Type/peap because we do not have OpenSSL support.

基本的に、UbuntuバージョンのFreeRADIUSはSSL( bug 18384 )をサポートしていないため、すべての安全なEAPタイプが役に立たなくなります。残念。

しかし、興味のある人のためのいくつかの有用なドキュメント:

UPDATE 2009-08-19:

昨日の夜、自分のFreeRADIUSパッケージをコンパイルしてしまいました-本当に良いレシピがあります http://www.linuxinsight.com/building-debian-freeradius-package-with-eap-tls-ttls-peap-support .html (更新された手順については、投稿へのコメントを参照してください)。

http://CACert.org から証明書を取得しました(可能であれば、「実際の」証明書を取得する必要があります)

次に http://vuksan.com/linux/dot1x/802-1x-LDAP.html の指示に従いました。これは http://tldp.org/HOWTO/html_single/8021X-HOWTO/ にリンクしています。これは、WiFiセキュリティの仕組みを知りたい場合に非常に価値があります。

UPDATE 2009-08-27:

上記のガイドに従った後、FreeRADIUSをLDAPと通信させることができました。

パスワードmr2Yx36Mを使用して、LDAPでテストユーザーを作成しました。これにより、LDAPエントリは次のようになります。

uid: testuser
sambaLMPassword: CF3D6F8A92967E0FE72C57EF50F76A05
sambaNTPassword: DA44187ECA97B7C14A22F29F52BEBD90
userPassword: {SSHA}Z0SwaKO5tuGxgxtceRDjiDGFy6bRL6ja

radtestを使用すると、うまく接続できます。

> radtest testuser "mr2Yx36N" sbhr.dk 0 radius-private-password
Sending Access-Request of id 215 to 130.225.235.6 port 1812
    User-Name = "msiebuhr"
    User-Password = "mr2Yx36N"
    NAS-IP-Address = 127.0.1.1
    NAS-Port = 0
rad_recv: Access-Accept packet from Host 130.225.235.6 port 1812, id=215, length=20
> 

しかし、APを介して試したところ、飛行しません-NTとLMのパスワードを把握していることは確認していますが、

...
rlm_ldap: sambaNTPassword -> NT-Password == 0x4441343431383745434139374237433134413232463239463532424542443930
rlm_ldap: sambaLMPassword -> LM-Password == 0x4346334436463841393239363745304645373243353745463530463736413035
[ldap] looking for reply items in directory...
WARNING: No "known good" password was found in LDAP.  Are you sure that the user is configured correctly?
[ldap] user testuser authorized to use remote access
rlm_ldap: ldap_release_conn: Release Id: 0
++[ldap] returns ok
++[expiration] returns noop
++[logintime] returns noop
[pap] Normalizing NT-Password from hex encoding
[pap] Normalizing LM-Password from hex encoding
...

NTとLMのパスワードが上記と異なることは明らかですが、メッセージ[ldap] user testuser authorized to use remote access-とユーザーは後で拒否されます...

16
Morten Siebuhr

ここでLDAPの質問に答えてみます。

短い答えは次のとおりです。ldapモジュールがauthenticateセクションから削除されていることを確認し、mschapモジュールがauthorizeセクションとauthenticateセクションの両方に存在していることを確認してください。また、「既知の適切な」パスワードは無視してください。

そして今ここに(非常に)長い答えがあります。

LDAPモジュールはどのように機能しますか?

ldapセクションでauthorizeモジュールをアクティブにすると、RADIUSパケットがFreeRADIUSで受信されたときに、次のようになります。

  1. lDAPサーバーにバインドしようとします(ゲストユーザーとして、またはldap.confで構成されている場合は指定されたIDを使用して)
  2. ベースDN(ldap.confで構成)の下のフィルターを使用して、ユーザーのDNエントリを検索します。
  3. ldap.attrmapで構成された属性の中から取得できるすべてのLDAP属性をフェッチし、RADIUS属性に変換します。
  4. これらの属性をRADIUSパケットのチェック項目リストに追加します。

ldapセクションでauthenticateモジュールをアクティブ化すると、FreeRADIUSは次のようになります。

  1. lDAPサーバーにバインドしようとしますユーザーとして
  2. バインドできる場合は認証に成功し、Radius-Acceptパケットがクライアントに返されます。それ以外の場合は失敗で、Radius-Rejectパケットが送信されます。

PEAP/MS-CHAP-v2がLDAPで機能するようにFreeRADIUSを構成するにはどうすればよいですか?

ここで重要な点は、バインディングユーザーとしてが機能するのは、FreeRADIUSサーバーがRADIUS受信したパケットからユーザーのクリアテキストパスワードを取得できる場合のみです。これはPAPまたはTTLS/PAP認証方式が使用されている場合にのみ(場合によってはEAP/GTCも使用できます)、本当に安全なのはTTLS/PAP方式だけであり、Windowsではデフォルトで使用できません。ユーザーがTTLS/PAPでは、ほとんどの場合、オプションであるTTLSサプリカントソフトウェアをインストールする必要があります。ほとんどの場合、WPA Enterprise securiy、PEAP/MS-CHAP-v2唯一の合理的なオプションです。

つまり、PAPまたはTTLS/PAPを使用していない限り、ldapモジュールをauthenticateセクションから安全に削除できます。実際には、ユーザーが機能しないため、バインドする必要があります。

radtestを使用したときにテストが機能する場合は、ldapセクションでauthenticateモジュールがアクティブになっている可能性があります。ユーザーとしてバインドしようとし、radtestがPAP認証を使用するため、成功します。ただし、PEAP/MS-CHAP-v2を使用しているため、アクセスポイント経由で接続しようとすると失敗します。

ldapセクションからauthenticateモジュールを削除し、mschapセクションとauthorizeセクションの両方でauthenticateモジュールをアクティブにしてください。 mschapモジュールは、authorizeフェーズ中にLDAPサーバーから取得されるNT-Password属性を使用して認証を処理します。

sites-enabled/defaultファイルは次のようになります(すべてのコメントなし)。

    ...
    authorize {
        preprocess
        suffix
        eap {
            ok = return
        }
        expiration
        logintime
    }
    authenticate {
        eap
    }
    ...

sites-enabled/inner-tunnelファイルは次のようになります。

    ...
    authorize {
        mschap
        suffix
        update control {
               Proxy-To-Realm := LOCAL
        }
        eap {
            ok = return
        }
        ldap
        expiration
        logintime
    }
    authenticate {
        Auth-Type MS-CHAP {
            mschap
        }
        eap
    }
    ...

「既知の正常な」パスワードがないという警告はどうですか?

まあ、あなたは安全にそれを無視することができます。 ldapフェーズ中にLDAPサーバーからユーザーの詳細をフェッチしたときに、UserPasswordモジュールがauthorize属性を見つけられなかったため、それはそこにあります。あなたの場合、あなたはNT-Password属性を持っています、そしてそれはPEAP/MS-CHAP-v2認証のために完全にうまくいきます。

ldapモジュールが設計されたとき、PEAP/MS-CHAP-v2はまだ存在していなかったため、警告が存在すると思います。そのため、当時使用できるのは、LDAPサーバーからUserPassword属性を取得することだけでした。 PAP、CHAP、EAP/MD5などの認証方法。

12
MiniQuark

ここでOpenSSLの質問に答えてみます。簡単な答えはOpenSSLを含むFreeRADIUS 2.1.8以降を使用するです。 Ubuntu LucidとDebian Lennyのバックポートで利用できます(おそらく、Ubuntu Karmicのバックポートにも含まれます)。

ここに長い答えがあります:

残念ながら、OpenSSLライセンスは、FreeRADIUSライセンスと(ある程度)互換性がありませんでした。したがって、Ubuntuの人々は、OpenSSLにリンクされたFreeRADIUSバイナリを提供することを選択しました not 。 EAP/TLS、PEAP、またはTTLSが必要な場合は、でソースを取得し、--with-opensslオプションを使用してそれらをコンパイルします(使用したレシピで説明しています)。

しかし、最近 ライセンスの問題が修正されました 。 FreeRADIUSバージョン2.1.8以降は、OpenSSLでコンパイルおよび配布できます。悪いニュースは、最新の安定したUbuntuディストリビューション(Karmic Koala)にはOpenRADIUSなしでFreeRADIUS 2.1.0のみが含まれていることです(LennyにはFreeRADIUS 2.0.4しか含まれていないため、Debianでも同じです)。 Karmicバックポートを確認しましたが、FreeRADIUS 2.1.8以降はまだアップロードされていないようです(ただし、すぐに追加される可能性があります こちらで確認してください )。したがって、現時点では、Ubuntu Lucid(FreeRADIUS 2.1.8を含む)に切り替えるか、コンパイルを続ける必要があります。 Debianユーザーにとって、状況は少し明るいです。LennyバックポートにはFreeRADIUS 2.1.8が含まれています。したがって、非常に安定していて、インストールと保守が簡単なものが必要な場合は、Debian Lennyを使用してサーバーを展開し、バックポートされたFreeRADIUSパッケージをインストールすることをお勧めします(pythonすべての実験的モジュールで再コンパイルする必要がない無料のモジュール)。

http://CACert.org から証明書を取得しました(可能であれば、「実際の」証明書を取得する必要があります)

「自己署名証明書」とは対照的に、「実際の」証明書を備えた「ゴッチャ」が1つあります。

Thawteが署名したものを使用しました。これは正常に機能し、ユーザーにはwww.my-web-site.comのような名前の美しい「有効な」証明書が表示されます。 ユーザーが証明書を受け入れると、コンピューターは実際に同じ認証局によって発行された all 証明書を信頼する必要があることを理解します(これをWindows VistaおよびMacOSXでテストしましたユキヒョウ)!したがって、私の場合、ハッカーがwww.some-other-web-site.comの証明書も持っていて、これもThawteによって署名されている場合、ユーザーのコンピューターに警告が表示されることなく、中間者攻撃を簡単に実行できます。 !

これに対する解決策は、「www.my-web-site.com」のみが信頼されるべきであると明確に指定するために、ユーザーのコンピュータのネットワーク構成に深くあります。 1分ほどで完了しますが、ほとんどのユーザーは、明確な手順を提供し、すべてのユーザーが確実にそれを実行するようにしない限り、これをどこに設定するかわかりません。私はまだ「有効な」証明書を使用していますが、率直に言って、WindowsとMacOSXの両方がこの「バグ」を共有しているのを見るのは残念です。特定の証明書の代わりに認証局を信頼しています。痛い...

3
MiniQuark

バグレポートによると、FreeRADIUSを単純に再構築すると、OpenSSHサポートの問題が修正されるはずです。一度だけ実行する必要があります。

管理の容易さがセットアップとどのように関係しているのかわかりません。多くの場合、セットアップはより複雑で詳細な設定であるほど、セットアップがより簡単になります。これは、セットアップがすべての基本をカバーしているためです。他のサーバーでも設定を簡単に削除する必要があるということですか?無線LANをいくつセットアップしていますか?

構成後は、管理はLDAPユーザーの追加、削除、変更に限定する必要があります。これらは、ldapmodify(その他)でスクリプトを作成するか、まともなLDAPグラフィカルフロントエンドを見つけて、スクリーンショットでプロセスを文書化するのに十分簡単なはずです。

1
kmarsh

同じ問題に遭遇しました。 RADIUSソースをダウンロードして自分でコンパイルする必要がありました。

0