Windows 有线网络上的 linux 802.1x

Sir*_*rex 11 linux windows active-directory 802.1

我想在我们公司的网络上使用我的 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),所以我知道网络交换机设置正确,并且网络上接受了 MAC 等;我很确定它只是一个 802.1x 问题

编辑:完全忘了提及它的 Fedora 21 xfce spin, 64bit。

bea*_*ker 10

坏消息,大家!Fedora 21 中似乎有一个未修复的错误:Wired connection with 802.1x PEAP/MSCHAPv2 not working。因此,虽然下面的答案可能适用于其他发行版,但 Fedora 21 用户目前运气不佳。


我自己从未尝试过,但这篇文章似乎包含了在 Linux 客户端和 Windows 域之间设置 802.1x 的非常详细的演练。请注意证书请求部分:它应该可以解决您的证书不可导出的问题。该软件版本是很老的(Ubuntu的是8.04和超越信托的掮客仍然是同样),但基本的想法似乎固体给我。

我已经格式化了上述帖子,以便于阅读。引用使代码框在灰色上变灰,所以我放弃了,抱歉:


免责声明:本指南是从 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. 须藤 /etc/init.d/likewise-open start

如果您没有运行 Ubuntu,您可以在http://www.likewisesoftware.com/products/likewise_open下载该软件。您现在可以注销并使用您的域帐户重新登录。我相信user@domain.com和 domain\user 的任何一种格式都可以工作。稍后我将对此进行测试。

必须正确配置 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" 
    }
    
    Run Code Online (Sandbox Code Playgroud)

现在我们必须编辑您的接口文件。请按照以下步骤配置您的接口文件:

  1. 须藤 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
    
    Run Code Online (Sandbox Code Playgroud)

下一步是生成并安装您的证书。我们必须生成自签名证书,然后根据我们创建的自签名证书生成证书请求,然后安装证书。

注意:创建证书时,无论何时要求您提供姓名,您都必须提供将进行身份验证的计算机的名称。为安全起见,我建议使名称与其分配给计算机的方式相匹配,包括区分大小写。如果您不确定它是如何分配给您的计算机的,请打开一个终端并输入主机名。

按着这些次序:

  1. 须藤 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]. 在本节中,我们需要将nsCertType定义为“对于普通客户端使用这是典型的”,它应该具有nsCertType = client, email并且将被注释掉。取消注释此行并删除电子邮件,使其显示nsCertType = client。现在保存文件。

现在,您应该已正确配置了所需的一切,以使 Linux 机器在 Windows 域环境中运行并使用 802.1x 进行身份验证。

现在剩下的就是重新启动您的网络服务,以便 Linux 将使用wpa_supplicant.conf现在绑定到您的eth0接口的文件并进行身份验证。所以就跑吧sudo service networking restart。如果在您的接口恢复后没有获得 IP 地址,您可以通过键入手动从您的 DHCP 服务器请求 IP 地址sudo dhclient