最大150人のユーザー用にワイヤレスネットワークをセットアップしています。要するに、私はLDAPに対してWPA2を認証するためにRADIUSサーバーを設定するためのガイドを探しています。Ubuntuで。
そして悪いニュース:
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
-とユーザーは後で拒否されます...
ここでLDAPの質問に答えてみます。
短い答えは次のとおりです。ldap
モジュールがauthenticate
セクションから削除されていることを確認し、mschap
モジュールがauthorize
セクションとauthenticate
セクションの両方に存在していることを確認してください。また、「既知の適切な」パスワードは無視してください。
そして今ここに(非常に)長い答えがあります。
LDAPモジュールはどのように機能しますか?
ldap
セクションでauthorize
モジュールをアクティブにすると、RADIUSパケットがFreeRADIUSで受信されたときに、次のようになります。
ldap.conf
で構成されている場合は指定されたIDを使用して)ldap.conf
で構成)の下のフィルターを使用して、ユーザーのDNエントリを検索します。ldap.attrmap
で構成された属性の中から取得できるすべてのLDAP属性をフェッチし、RADIUS属性に変換します。ldap
セクションでauthenticate
モジュールをアクティブ化すると、FreeRADIUSは次のようになります。
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などの認証方法。
ここで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の両方がこの「バグ」を共有しているのを見るのは残念です。特定の証明書の代わりに認証局を信頼しています。痛い...
バグレポートによると、FreeRADIUSを単純に再構築すると、OpenSSHサポートの問題が修正されるはずです。一度だけ実行する必要があります。
管理の容易さがセットアップとどのように関係しているのかわかりません。多くの場合、セットアップはより複雑で詳細な設定であるほど、セットアップがより簡単になります。これは、セットアップがすべての基本をカバーしているためです。他のサーバーでも設定を簡単に削除する必要があるということですか?無線LANをいくつセットアップしていますか?
構成後は、管理はLDAPユーザーの追加、削除、変更に限定する必要があります。これらは、ldapmodify(その他)でスクリプトを作成するか、まともなLDAPグラフィカルフロントエンドを見つけて、スクリーンショットでプロセスを文書化するのに十分簡単なはずです。
同じ問題に遭遇しました。 RADIUSソースをダウンロードして自分でコンパイルする必要がありました。