Linux

windows有線網路上的linux 802.1x

  • February 17, 2015

我正在尋找在我們公司網路上使用我的 linux 工作站,但我遇到了一些問題,特別是 802.1xi 相信。

我是我的機器上的 root 和 Windows 域管理員,所以我應該能夠訪問我需要的任何東西來讓它工作。目前,我的 linux 機器連接受限,這讓我相信它已被放入非 802.1x 客戶端的預設 vlan 中。

我想我的總體問題是:如何讓我的 linux 機器在有線 windows 網路上使用 802.1x?該網路是典型的 Windows 域,使用機器帳戶和使用者帳戶。

到目前為止,這是我所知道和嘗試過的:

相信我需要為機器獲取有效的客戶端機器證書、域的 CA 證書以及客戶端的私鑰

想法 1,從 windows 機器/域 ca 機器上獲取有效密鑰我在 linux 機器上執行 windows VM,並將其加入域,認為這會產生一個有效的客戶端證書,我可以為 linux 機器獲取。- 為此,我從 Windows ca 伺服器導出了客戶端證書和 ca 證書,然後將它們轉換為 PEM 格式,為 linux 上的網路管理器做好準備(假設需要 PEM 而不是 DER)。- 然後我嘗試使用 certmgr 在 Windows VM 本身上導出私鑰,但它被標記為不可導出:-(

想法 2 是 powerbroker… - 我使用 powerbroker open(以前同樣)將 linux 機器加入域,getent passwd 現在顯示所有域使用者。- 我的想法是這會將客戶端證書和私鑰放在系統上的某個地方(/etc/ssl/certs?)但我什麼也找不到

想法3,問一個知道他們實際在做什麼的人。

我應該指出,最初這台 linux 機器上有 Windows(我在 linux 安裝時 p2v’d)所以我知道網路交換機設置正確,並且 MAC 等在網路上被接受;我很確定它只是一個 802.1x 問題

編輯:完全忘了提到它的fedora 21 xfce spin,64bit。

壞消息,大家!Fedora 21 中似乎有一個未修復的錯誤:Wired connection with 802.1x PEAP/MSCHAPv2 not working。因此,雖然下面的答案可能適用於其他發行版,但 Fedora 21 使用者目前不走運。


我自己從來沒有嘗試過,但這篇文章似乎包含一個非常詳細的演練,用於在 Linux 客戶端和 Windows 域之間設置 802.1x。請注意證書請求部分:它應該可以解決您無法導出證書的問題。軟體版本很舊(Ubuntu是 8.04,Beyond Trust 的 Power Broker**仍然是),但基本的想法對我來說似乎很可靠。

我已經對上述文章進行了格式化,以使其更易於閱讀。引用使程式碼框變為灰色,因此我將其刪除,對不起:


***免責聲明:*本指南是從 Linux Ubuntu 8.04 發行版的角度編寫的。要使其與其他 Linux 或 Unix 發行版一起使用,可能需要進行一些更改。

Linux 機器通過 802.1x 進行身份驗證所需的兩個主要內容是客戶端證書和 Windows 域中的帳戶。在身份驗證過程中,Linux 客戶端將其電腦證書提供給交換機,然後交換機將其提供給驗證證書的 RADIUS 伺服器,並驗證證書在 Active Directory 中分配給的電腦帳戶。如果證書和電腦帳戶有效,則 RADIUS 伺服器批准身份驗證請求,將其發送回交換機,然後交換機對 Linux 機器所連接的埠進行身份驗證。

需要做的第一件事是將您的 Linux 電腦加入 Windows 域。由於 Linux 本身無法加入 Windows 域,因此我們必須下載必要的軟體才能執行此操作。同樣製作軟體讓我們能夠做到這一點。要在 Ubuntu 上安裝它非常簡單,只需按照以下步驟操作:

  1. sudo apt-get 更新
  2. sudo apt-get install 同樣打開
  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和域\使用者都可以工作。我稍後會對此進行測試。

位於 Linux 機器上的三個文件必須正確配置才能進行此身份驗證。這三個文件是:

  1. /etc/wpa_supplicant.conf
  2. /etc/網路/介面
  3. /etc/openssl/openssl.cnf

首先,我們將配置軟體以允許我們的 Linux 機器使用客戶端證書對啟用 802.1x 的網路進行身份驗證;wpa_supplicant將用於此。

按照以下步驟配置您的 wpa_supplicant.conf 文件:

  1. 須藤 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 客戶端上,使用 IE 打開一個網頁到您的 CA 的網站(例如http://caname/certsrv)。
  4. 選擇申請證書
  5. 高級證書申請
  6. 現在打開您的電子郵件並獲取您自己通過電子郵件發送的證書請求。
  7. 如果您通過電子郵件向自己發送了該文件,請使用記事本打開它,然後將內容複製並粘貼到 Base-64 編碼的證書請求框中。如果您通過電子郵件向自己發送了證書請求文件的內容而不是文件本身,那麼只需將請求從那裡複製並粘貼到 Base-64 編碼的證書請求框中。
  8. 點擊送出並下載 Base-64 格式的證書,而不是 DER。
  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. 須藤 gedit /etc/ssl/openssl.cnf
  2. 向下滾動大約一半,您應該會看到一個名為[usr_cert]. 在本節中,我們需要將 wherensCertType定義為**“對於普通客戶使用,這是典型的”**,它應該有nsCertType = client, email並且會被註釋掉。取消註釋此行並刪除電子郵件,使其顯示nsCertType = client。現在保存文件。

現在您應該已經正確配置了所有需要的東西,以使 Linux 機器在 Windows 域環境中執行並使用 802.1x 進行身份驗證。

現在剩下的就是重新啟動您的網路服務,以便 Linux 將使用wpa_supplicant.conf現在綁定到您的eth0介面的文件並進行身份驗證。所以就跑吧sudo service networking restart。如果您在界面恢復後沒有獲得 IP 地址,您可以通過鍵入 手動從 DHCP 伺服器請求 IP sudo dhclient


引用自:https://serverfault.com/questions/667234