web-dev-qa-db-ja.com

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

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

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

私の全体的な質問は次のとおりだと思います:Linuxマシンに有線Windowsネットワークで802.1xを使用させるにはどうすればよいですか?ネットワークは典型的なWindowsドメインであり、ユーザーアカウントだけでなくマシンアカウントも使用します。

これは私が知っていることであり、これまでに試しました:

I believeマシンの有効なクライアントマシン証明書、ドメインのCA証明書、およびクライアントの秘密鍵を取得する必要があります

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

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

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

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

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

11
Sirex

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


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

上記の投稿を読みやすくするためにフォーマットしました。引用すると、コードボックスが灰色の上に灰色になるため、削除しました。申し訳ありません:


免責事項:このガイドは、観点から書かれています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 install likelike-open
  3. Sudo domainjoin-cli join enter the FQDN of your domain hereenter your admin account here[email protected]の形式を使用できます。 System → Administration → Likewise.に移動してGUIバージョンを使用することもできます。
  4. Sudo update-rc.d likewise-open defaults
  5. Sudo /etc/init.d/likewise-open start

Ubuntuを実行していない場合は、ここからソフトウェアをダウンロードできます http://www.likewisesoftware.com/products/likewise_open 。これで、ログアウトして、ドメインアカウントを使用して再度ログインできます。 [email protected]と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" 
    }
    

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

  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クライアントで、CAのWebサイト(http://caname/certsrvなど)にIE)を使用して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ファイルブラウザーであり、これをルートとして実行し、ルートのみがアクセスできるディレクトリにコピーアンドペーストできるようにします。

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

これを行うには、次の手順に従います。

  1. Sudo gedit /etc/ssl/openssl.cnf
  2. 半分ほど下にスクロールすると、[usr_cert]というセクションが表示されます。このセクションでは、nsCertTypeとして定義されている場所が必要です。 "通常のクライアントの使用では、これが一般的です"。ま​​た、nsCertType = client, emailが必要ですコメントアウトされます。この行のコメントを外して、nsCertType = clientが表示されるようにメールを削除します。ファイルを保存します。

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

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


10
beatcracker