Windows有线网络上的Linux 802.1x


11

我希望在公司网络上使用我的Linux工作站,但是我遇到了一些问题,特别是802.1xi认为。

我在我的计算机和Windows域管理员上都是root用户,因此我应该能够访问我需要的所有内容才能使它工作。目前,我的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安装时p2vd),所以我知道网络交换机已正确设置,并且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

我确实尝试导出CA证书(在“想法1”中),但是我仍然被提示输入密码,而且我不确定我什至没有走正确的PEM格式。还有一个“不需要CA证书”复选框,但我不知道广告是否会这样做(我假设那只是客户端决定以任何方式放弃CA检查的权利,对吗?)
Sirex

Answers:


10

坏消息,大家!似乎Fedora 21中存在一个未修复的错误:与802.1x PEAP / MSCHAPv2的有线连接不起作用。因此,尽管以下答案可能适用于其他发行版,但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连接enter the FQDN of your domain here enter your admin account here,您可以使用format user@domain.com。您还应该能够通过以下方式使用GUI版本:System → Administration → Likewise.
  4. sudo update-rc.d同样打开默认值
  5. sudo /etc/init.d/likewise-open开始

如果您没有运行Ubuntu,则可以在http://www.likewisesoftware.com/products/likewise_open下载该软件。您现在可以注销并使用您的域帐户重新登录。我相信user@domain.com和域\用户都可以使用。我稍后会测试。

Linux机器上有三个文件,必须正确配置它们才能进行身份验证。这三个文件是:

  1. /etc/wpa_supplicant.conf
  2. / etc / network / interfaces
  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。也可以从GUI通过使用命令gksudo复制并粘贴并键入nautilus来完成此操作。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



我刚刚尝试过,当我自己第一次发现该文章时就尝试过。为了以防万一,我会逐字逐句地再试一次。
Sirex

不,无法正常工作。我曾以为,预先签署的签名请求将是“工作站”类型,但我只有“用户”和“网络服务器”可用。
Sirex

好的,所以也许我们可以走另一条路线。有一个办法,alebit哈克,对标记为不可导出的证书导出:github.com/iSECPartners/jailbreakblog.gentilkiwi.com/mimikatzstackoverflow.com/questions/3914882/...)。您能否尝试从p2v'd Windows上获取证书并将其用于身份验证?
Beatcracker

越狱应用程序让我掌握了私钥。在TLS模式下,它对我不起作用。PEAP模式只需要CA证书-我可以从CA服务器/ certsrv /网址下车,但是该工具也可以工作。也许它不喜欢我的“匿名身份”,用户名类型和密码,我假设它是“用户名”或“ username@domain.com”,但都不适合我。我将粘贴消息日志。
Sirex

1
坏消息,大家!看来这是Fedora 21中的一个错误:与802.1x PEAP / MSCHAPv2的有线连接不起作用
Beatcracker
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.