Windows有線ネットワーク上のLinux 802.1x


11

私の会社のネットワークでLinuxワークステーションを使用したいと考えていますが、いくつかの問題、特に802.1xiの問題に直面しています。

私は自分のマシンのrootであり、Windowsドメイン管理者なので、これが機能するために必要なものにアクセスできるはずです。現在、私のLinuxマシンの接続は制限されているため、802.1x以外のクライアントのデフォルトVLANに配置されていると思われます。

私の全体的な質問は、どうすれば有線マシンのWindowsネットワークで802.1xを使用するようにLinuxマシンを設定できますか?ネットワークは典型的なWindowsドメインであり、マシンアカウントとユーザーアカウントを使用します。

これは私がこれまでに知っている&試したことです:

私は信じて、私はマシンの有効なクライアントマシン証明書、ドメインのCA証明書、およびクライアントの秘密鍵を取得する必要がありますするつもりです

アイデア1、Windowsマシン/ドメインCAマシンから有効なキーを取得しますLinuxマシンでWindows VMを実行し、それをドメインに参加させて、Linuxマシンで有効なクライアント証明書を生成できると考えました。-そのために、Windows CAサーバーからクライアント証明書とCA証明書をエクスポートし、それらをPEM形式に変換し、Linuxのネットワークマネージャーの準備ができました(DERではなくPEMが必要であると仮定)。-次に、certmgrを使用してWindows VM自体の秘密キーをエクスポートしようとしましたが、エクスポート不可としてマークされました:-(

アイデア2はpowerbrokerでした...-powerbroker open(正式には同様)を使用してLinuxマシンをドメインに参加させました。getentpasswdはすべてのドメインユーザーを表示します。-私の考えでは、これはクライアント証明書と秘密鍵をシステムのどこか(/ etc / ssl / certs?)に配置しますが、何も見つかりません

アイデア3、実際に何をしているかを知っている人に尋ねる。

元々このLinuxマシンにはウィンドウがありました(Linuxのインストール時にp2vされました)ので、ネットワークスイッチが正しく設定されており、MACなどがネットワークで受け入れられていることを知っています。802.1xの問題だと確信しています

編集:そのfedora 21 xfceスピン、64ビットに言及するのを完全に忘れていました。


どのサプリカントを使用していますか?Xsupplicant、wpa_supplicant、または独自のローリング?
ブライアン

そのfedora 21はそのままで、wpa_supplicantのみがインストールされているようです。ネットワークマネージャーを使用して接続を試みています(xfceデスクトップを使用)。
Sirex


ええ、それは多かれ少なかれ、私がどこまで持っているかを要約しています。Windowsマシンを見ると、MSCHAP v2でPEAPを使用しているように見えるので、それをLinuxマシンで試しました。ほとんどの場合、有効な証明書をどこで/どのように取得し、ユーザー名はどのように見えるべきかを知るのに苦労していると思います(「bob」「bob@domain.com」「domain \ bob」?動作するようになりましたが、これまでのところ成功していません。パスワードの再入力が再度求められます
Sirex

( 'idea 1'で)CA証明書をエクスポートしようとしましたが、パスワードの再入力を求められますが、PEM形式で正しいルートをたどり着くかどうかはわかりません。「CA証明書は必要ありません」チェックボックスもありますが、ADがそれを希望するかどうかわかりません(ただし、CAのチェックをやめるというクライアント側の決定だと思いますよね?)
Sirex

回答:


10

皆さん、悪いニュースです!Fedora 21には未修正のバグがあるようです:802.1x PEAP / MSCHAPv2との有線接続が機能していません。したがって、以下の回答は他のディストリビューションで機能する可能性がありますが、Fedora 21ユーザーは現在不運です。


自分で試したことはありませんが、この投稿には、LinuxクライアントとWindowsドメイン間で802.1xをセットアップするためのかなり詳細なチュートリアルが含まれているようです。証明書要求の部分に注意してください。エクスポートできない証明書の問題を解決する必要があります。ソフトウェアのバージョンはかなり古い(Ubuntuは8.04であり、Beyond TrustのPower Broker同様です)が、基本的な考え方は固いようです。

上記の投稿を読みやすくするためにフォーマットしました。引用符を使用すると、コードボックスが灰色で灰色になるため、ドロップアウトしました。


免責事項:このガイドは、Linux Ubuntu 8.04ディストリビューションの観点から書かれています。これを他のLinuxまたはUnixディストリビューションで動作させるには、いくつかの変更が必要になる場合があります。

Linuxマシンが802.1xを介して認証するために必要な2つの主なものは、クライアント証明書とWindowsドメインのアカウントです。認証プロセス中、Linuxクライアントはコンピューター証明書をスイッチに提示し、スイッチは証明書を検証するRADIUSサーバーに提示し、Active Directoryで証明書が割り当てられているコンピューターアカウントを検証します。証明書とコンピューターアカウントが有効な場合、RADIUSサーバーは認証要求を承認してスイッチに送り返し、スイッチはLinuxボックスが接続されているポートを認証します。

最初に行う必要があるのは、LinuxコンピューターをWindowsドメインに参加させることです。LinuxはWindowsドメインにネイティブに参加できないため、これを行うために必要なソフトウェアをダウンロードする必要があります。同様に、これを行うためのソフトウェアを作成します。これをUbuntuにインストールするには、非常に簡単です。次の手順に従ってください。

  1. sudo apt-get update
  2. sudo apt-get同様に開く
  3. sudo domainjoin-cli join enter the FQDN of your domain here enter your admin account hereの形式を使用できますuser@domain.com。また、次のようにして、GUIバージョンを使用することもできます。System → Administration → Likewise.
  4. sudo update-rc.d同様に開くデフォルト
  5. sudo /etc/init.d/likewise-open start

Ubuntuを実行していない場合は、http://www.likewisesoftware.com/products/likewise_openからソフトウェアをダウンロードできます。ドメインアカウントを使用してログアウトしてからログインし直すことができます。user@domain.comとdomain \ userのどちらの形式でも機能すると思います。これは後でテストします。

この認証を実行するには、Linuxマシンに3つのファイルがあり、これらを正しく構成する必要があります。これらの3つのファイルは次のとおりです。

  1. /etc/wpa_supplicant.conf
  2. / etc / network / interfaces
  3. /etc/openssl/openssl.cnf

まず、Linuxマシンがクライアント証明書を使用して802.1x対応ネットワークを認証できるようにソフトウェアを構成します。wpa_supplicantこれに使用されます。

以下の手順に従って、wpa_supplicant.confファイルを構成します。

  1. sudo gedit /etc/wpa_supplicant.conf
  2. 以下をファイルに貼り付けて保存します。

    # Where is the control interface located? This is the default path:
    ctrl_interface=/var/run/wpa_supplicant
    
    # Who can use the WPA frontend? Replace "0" with a group name if you
    # want other users besides root to control it.
    # There should be no need to chance this value for a basic configuration:
    ctrl_interface_group=0
    
    # IEEE 802.1X works with EAPOL version 2, but the version is defaults 
    # to 1 because of compatibility problems with a number of wireless
    # access points. So we explicitly set it to version 2:
    eapol_version=1
    
    # When configuring WPA-Supplicant for use on a wired network, we don't need to
    # scan for wireless access points. See the wpa-supplicant documentation if you
    # are authenticating through 802.1x on a wireless network:
    ap_scan=0
    
    network={ 
        ssid="<enter any name here, it doesn't matter>" 
        key_mgmt=IEEE8021X 
        eap=TLS 
        identity="<FQDN>/computers/<Linux computer name>" 
        client_cert="/etc/ssl/certs/<your authentication certificate name>.pem" 
        private_key="/etc/ssl/private/<your private key name>.pem" 
    }
    

次に、インターフェイスファイルを編集する必要があります。次の手順に従って、interfacesファイルを構成します。

  1. sudo gedit / etc / network / interfaces
  2. eth0インターフェイスの下のファイルに次を貼り付けて保存します。

    # Configure the system to authenticate with WPA-Supplicant on interface eth0
    wpa-iface eth0
    
    # In this case we have a wired network:
    wpa-driver wired
    
    # Tell the system we want to use WPA-Supplicant with our configuration file:
    wpa-conf /etc/wpa_supplicant.conf
    

次のステップは、証明書を生成してインストールすることです。自己署名証明書を生成し、作成した自己署名証明書に基づいて証明書リクエストを生成し、証明書をインストールする必要があります。

注:証明書を作成するとき、名前を要求するたびに、認証するコンピューターの名前を指定する必要があります。安全のため、大文字と小文字を区別するなど、コンピューターに割り当てられている名前と一致させることをお勧めします。コンピュータへの割り当て方法がわからない場合は、ターミナルを開いてホスト名を入力します。

次の手順を実行します:

  1. sudo openssl req -x509 -nodes -days enter in days how long you want the cert valid for-newkey rsa:1024 -keyout enter a name for your private key/certificate here.pem -out enter a name for your private key/certificate here.pem

    例:sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout privcert.pem -out privcert.pem

  2. openssl req -new -newkey rsa:1024 -nodes -keyout enter a name for your private key here.pem-out enter a name for your certificate request here.pem

    例:sudo openssl req -new -newkey rsa:1024 -nodes -keyout privkey.pem -out certreq.pem

作成されたすべての証明書は、ホームディレクトリ(/home/<username>)に配置されます。次の部分は、前の手順で作成された証明書要求を使用して、CAから証明書を要求することです。これはWindowsマシンで実行する必要があります。何らかの理由で、LinuxとWindowsは証明書を要求してダウンロードするときにうまくいかないからです。証明書要求を自分宛にメールで送信し、Windowsマシンで実行する方が簡単だと思いました。

次の手順に従って、証明書リクエストを完了します。

  1. Linuxマシンのホームディレクトリに移動し、証明書要求ファイルを見つけます
  2. ファイルを自分宛にメールで送信するか、テキストエディタ(geditなど)でファイルを開いて、リクエストをコピーしてメールに貼り付けて送信します。
  3. Windowsクライアントで、IEを使用してCAのWebサイト(などhttp://caname/certsrv)にWebページを開きます。
  4. 証明書のリクエストを選択します
  5. 高度な証明書リクエスト
  6. ここで、電子メールを開き、自分で電子メールで送信した証明書要求を取得します。
  7. ファイルを自分宛にメールで送信した場合は、メモ帳でファイルを開き、内容をコピーしてBase-64エンコードの証明書要求ボックスに貼り付けます。ファイル自体ではなく証明書要求ファイルの内容を自分自身にメールで送信した場合は、そこから要求をコピーして、Base-64でエンコードされた証明書要求ボックスに貼り付けてください。
  8. [送信]をクリックし、DERではなくBase-64形式で証明書をダウンロードします。
  9. 証明書をデスクトップに保存し、your Linux machine name.pem という名前を付けます。システムは自動的.cerに末尾に追加するので、削除してください。Linuxは、証明書の拡張子に.pemを使用します。
  10. このファイルを取り、自分宛にメールで返信します。
  11. 次に、Linuxマシンで証明書を取得し、どこかに保存します(できれば、整理してまとめておくためにホームフォルダー)。
  12. ここで、受け取った証明書を/etc/ssl/certsフォルダーにコピーする必要があり/etc/ssl/privateます。また、先ほどフォルダーで作成した秘密キー/証明書と秘密キーをコピーする必要があり ます。現在、これを行う権限を持っているのはrootのみであるため、コマンドラインでsudo cp /home/<username>/<certificate>.pem /etc/ssl/privateまたはを入力してこれを行うことができます/etc/ssl/certs。これは、gksudoコマンドを使用してnautilusを入力してコピーして貼り付けることにより、GUIから実行することもできます。Nautilusは、Ubuntuが使用するGUIファイルブラウザであり、これをrootとして実行して、rootのみがアクセスできるディレクトリにコピーアンドペーストできるようにします。

証明書が準備できたので、証明書の使用方法をopensslに伝える必要があります。これを行うには、openssl.cnfファイルを編集し、Linuxマシンをユーザーではなくクライアントとして認証するように指示する必要があります。

これを行うには、次の手順を実行します。

  1. sudo gedit /etc/ssl/openssl.cnf
  2. 約半分下にスクロールすると、というセクションが表示され[usr_cert]ます。このセクションでは、どこ必要nsCertTypeと定義される「通常のクライアントのために、これは典型的な使用」を、そしてそれが持っている必要がありnsCertType = client, email、それがコメントアウトされます。この行のコメントを外し、表示されるようにメールを削除しますnsCertType = client。ファイルを保存します。

これで、Windowsドメイン環境でLinuxマシンを実行し、802.1xを使用して認証するために必要なすべてのものを適切に構成できます。

Linuxがインターフェイスにwpa_supplicant.conf関連付けられたファイルを使用してeth0認証できるように、ネットワークサービスを再起動するだけです。だから実行してくださいsudo service networking restart。インターフェイスが復旧した後にIPアドレスを取得できない場合は、を入力してDHCPサーバーからIPを手動で要求できますsudo dhclient



私はこれを試しましたが、自分でその記事を初めて見つけたときに試しました。念のため、単語ごとにもう一度試してみます。
Sirex

いいえ、これを機能させることはできません。アドヴェンテッド署名リクエストはタイプ「ワークステーション」になると思っていましたが、「ユーザー」と「ウェブサーバー」しか利用できませんでした。
Sirex

わかりましたので、別のルートで行くこともできます。:非エクスポート可能としてマークされた輸出本命への道、alebitハック、ありgithub.com/iSECPartners/jailbreakまたはblog.gentilkiwi.com/mimikatzstackoverflow.com/questions/3914882/...が)。p2v'd Windowsから証明書を取得し、認証に使用できますか?
ビートクラッカー

ジェイルブレイクアプリを使用すると、秘密キーを取得できます。TLSモードでは機能しませんでした。PEAPモードでは、CA証明書のみが必要です。これは、CAサーバー/ certsrv / urlから取得できますが、どちらでも機能しません。おそらく、「匿名ID」、ユーザー名タイプ、およびパスワードが好きではないでしょう。「username」または「username@domain.com」のいずれかであると想定していますが、どちらも機能しません。メッセージログを貼り付けます。
Sirex

1
皆さん、悪いニュースです!Fedora 21のバグのようです:802.1x PEAP / MSCHAPv2との有線接続が機能していません
beatcracker
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.