linux 802.1x em uma rede com fio do windows

11

Estou procurando usar minha estação de trabalho linux na rede de nossa empresa, mas já estou enfrentando alguns problemas, especificamente o 802.1xi.

Eu sou root na minha máquina e um administrador de domínio do Windows, por isso devo poder acessar o que for necessário para que isso funcione. Atualmente, minha máquina Linux tem conectividade restrita, o que me leva a acreditar que foi colocada em uma vlan padrão para clientes que não sejam 802.1x.

Acho que minha pergunta geral é: como posso fazer com que minha máquina Linux use 802.1x na rede com fio do Windows? A rede é um domínio típico do Windows e usa contas de máquina e contas de usuário.

Isto é o que eu sei e tentei até agora:

Eu acredito que eu vou precisar para obter um certificado válido máquina do cliente para a máquina, o certificado CA para o domínio, e a chave privada para o cliente

Ideia 1: pegue uma chave válida de uma máquina Windows / domínio CA Eu executei uma VM do Windows na máquina Linux e associei-a ao domínio, pensando que isso produziria um certificado de cliente válido que eu poderia pegar na máquina Linux. - para esse fim, exportei o certificado do cliente e o certificado ca do servidor windows ca, depois os converti para o formato PEM, pronto para o gerenciador de rede no linux (assumindo que o PEM não seja o DER). - Tentei exportar a chave privada na própria VM do Windows usando certmgr, mas foi marcada como não exportável :-(

A idéia 2 era powerbroker ... - Usei o powerbroker aberto (formalmente da mesma forma) para associar a máquina linux ao domínio, agora o getent passwd mostra todos os usuários do domínio. - Meu pensamento era que isso colocaria um certificado de cliente e uma chave privada no sistema em algum lugar (/ etc / ssl / certs?), Mas não consigo encontrar nada

Ideia 3, pergunte a alguém que sabe o que está realmente fazendo.

Devo salientar que originalmente esta máquina linux tinha janelas (que eu p2v'd na instalação do linux), então eu sei que o comutador de rede está configurado corretamente e o MAC etc é aceito na rede; Tenho certeza de que é apenas um problema 802.1x

Edit: esqueci totalmente de mencionar seu fedora 21 xfce spin, 64bit.

Sirex
fonte
Que suplicante você está usando? Xsupplicant, wpa_supplicant ou rolando o seu próprio?
18715 Brian
seu fedora 21 pronto para uso, parece que apenas o wpa_supplicant está instalado. Estou usando o gerenciador de rede para tentar conectar-me (com o xfce desktop).
Sirex 15/02
sim, isso resume mais ou menos o quão longe eu já cheguei. Olhando para as máquinas Windows, eles parecem usar o PEAP com o MSCHAP v2, e foi o que tentei nas máquinas Linux. Principalmente, acho que estou lutando para saber onde / como obter certificados válidos e como meu nome de usuário deve se parecer ('bob' '[email protected]' 'domain \ bob'? Eu tentei várias maneiras de fazê-lo funcionar, mas sem sucesso até agora, apenas re-prompts para minha senha novamente
Sirex
Tentei exportar o certificado da CA (na 'idéia 1'), mas ainda recebo a solicitação de senha, e não tenho certeza se estou indo pelo caminho certo com o formato PEM. Também há uma caixa de seleção 'no CA cert is required', mas não sei se o AD gostaria disso (suponho que seja apenas uma decisão do lado do cliente de abandonar a verificação da CA de qualquer maneira, certo?)
Sirex

Respostas:

10

Más notícias, pessoal! Parece que há um bug não corrigido no Fedora 21: A conexão com fio com o 802.1x PEAP / MSCHAPv2 não está funcionando . Portanto, embora a resposta abaixo possa funcionar para outras distros, atualmente os usuários do Fedora 21 estão sem sorte.


Nunca tentei isso sozinho, mas este post parece conter uma explicação bastante detalhada para configurar o 802.1x entre o cliente Linux e o domínio do Windows. Observe a parte da solicitação de certificado: deve resolver seu problema de certificado não exportável. As versões do software são bastante antigas (o Ubuntu é 8.04 e o Power Broker da Beyond Trust ainda é o mesmo ), mas a ideia básica parece sólida para mim.

Formatei a postagem acima para facilitar a leitura. A citação faz com que as caixas de código fiquem cinza sobre cinza, então eu o soltei, desculpe:


Isenção de responsabilidade: Este guia foi escrito da perspectiva da distribuição Linux Ubuntu 8.04. Para fazer isso funcionar com outras distribuições Linux ou Unix, algumas mudanças podem precisar ser feitas.

As duas principais coisas necessárias para a sua máquina Linux se autenticar em 802.1x são um certificado de cliente e uma conta no domínio do Windows. Durante o processo de autenticação, o cliente Linux apresenta seu certificado de computador ao comutador, que por sua vez o apresenta ao servidor RADIUS que verifica o certificado e verifica a conta de computador à qual o certificado está atribuído no Active Directory. Se o certificado e a conta do computador forem válidos, o servidor RADIUS aprovará a solicitação de autenticação enviando-a de volta ao switch, que por sua vez autentica a porta à qual a caixa do Linux está conectada.

A primeira coisa que precisa ser feita é associar o computador Linux ao domínio do Windows. Como o Linux não pode ingressar nativamente em um domínio do Windows, precisamos fazer o download do software necessário para permitir isso. Da mesma forma, cria um software que nos permite fazer exatamente isso. Para instalar isso no Ubuntu, é muito simples, basta seguir estas etapas:

  1. sudo apt-get update
  2. O sudo apt-get install também abre
  3. sudo domainjoin-cli juntar-se enter the FQDN of your domain here enter your admin account here, você pode usar o formato [email protected]. Você também deve poder usar a versão da GUI acessandoSystem → Administration → Likewise.
  4. sudo update-rc.d padrões igualmente abertos
  5. sudo /etc/init.d/likewise-open start

Se você não estiver executando o Ubuntu, faça o download do software aqui http://www.likewisesoftware.com/products/likewise_open . Agora você pode sair e fazer login novamente usando sua conta de domínio. Acredito que tanto o formato [email protected]quanto o domínio \ usuário funcionem. Vou testar isso mais tarde.

Existem três arquivos localizados na máquina Linux que devem ser configurados corretamente para que essa autenticação ocorra. Esses três arquivos são:

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

Primeiro, configuraremos o software para permitir que nossa máquina Linux use um certificado de cliente para autenticar em uma rede habilitada para 802.1x; wpa_supplicantserá usado para isso.

Siga estas etapas para configurar seu arquivo wpa_supplicant.conf:

  1. sudo gedit /etc/wpa_supplicant.conf
  2. Cole o seguinte no arquivo e salve-o:

    # 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" 
    }
    

Agora devemos editar seu arquivo de interfaces. Siga estas etapas para configurar seu arquivo de interfaces:

  1. sudo gedit / etc / network / interfaces
  2. Cole o seguinte no arquivo sob a eth0interface e salve-o:

    # 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
    

O próximo passo é gerar e instalar seus certificados. Teremos que gerar um certificado autoassinado, depois gerar uma solicitação de certificado com base no certificado autoassinado que criamos e depois instalar os certificados.

Nota: Ao criar seus certificados, sempre que solicitar seu nome, você deve fornecer o nome do computador que será autenticado. Para garantir a segurança, recomendo que o nome corresponda à maneira como é atribuído ao computador, incluindo a distinção entre maiúsculas e minúsculas. Se você não souber como está atribuído ao seu computador, abra um terminal e digite o nome do host.

Siga esses passos:

  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

    Exemplo: 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 - saída enter a name for your certificate request here.pem

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

Todos os certificados criados são colocados no seu diretório pessoal ( /home/<username>). A próxima parte é solicitar um certificado da sua CA usando a solicitação de certificado criada na etapa anterior. Isso precisará ser feito em uma máquina Windows, pois, por algum motivo, o Linux e o Windows não se dão muito bem ao solicitar e baixar certificados; Achei mais fácil enviar a solicitação de certificado por e-mail para mim mesma e executá-la em uma máquina Windows.

Siga estas etapas para concluir a solicitação de certificado:

  1. Vá para o diretório inicial na máquina Linux e localize seu arquivo de solicitação de certificado
  2. Envie o arquivo por email para si mesmo ou abra-o com um editor de texto (como o gedit), copie e cole a solicitação em um email e envie-a para si mesmo.
  3. Em um cliente Windows, abra uma página da Web usando o IE no site da sua CA (como http://caname/certsrv).
  4. Selecione Solicitar um certificado
  5. Solicitação avançada de certificado
  6. Agora abra seu email e obtenha a solicitação de certificado que você enviou por email.
  7. Se você enviou o arquivo por e-mail, abra-o com o bloco de notas e copie e cole o conteúdo na caixa de solicitação de certificado codificado na Base-64. Se você enviou por e-mail o conteúdo do arquivo de solicitação de certificado em vez do arquivo em si, copie e cole a solicitação de lá na caixa de solicitação de certificado codificado em Base-64.
  8. Clique em Enviar e faça o download do certificado no formulário Base-64, não no DER.
  9. Salve o certificado na área de trabalho e your Linux machine namedenomine .pem. O sistema anexará automaticamente .cerao final dele, então exclua isso. O Linux usa .pem para extensões de certificado.
  10. Pegue esse arquivo e envie-o novamente por e-mail.
  11. Agora, na sua máquina Linux, obtenha seu certificado e salve-o em algum lugar (de preferência na sua pasta pessoal para manter as coisas organizadas e juntas).
  12. Agora, precisamos copiar seu certificado que você acabou de receber para sua /etc/ssl/certspasta e precisamos copiar sua chave / certificado e chave privada criados anteriormente na sua /etc/ssl/privatepasta. Agora, somente o root tem permissão para fazer isso; portanto, você pode fazer isso pela linha de comando, digitando sudo cp /home/<username>/<certificate>.pem /etc/ssl/privateou /etc/ssl/certs. Isso também pode ser feito a partir da GUI, copiando e colando, usando o comando gksudo e digitando nautilus. O Nautilus é o navegador de arquivos da GUI que o Ubuntu usa e o executará como root, permitindo copiar e colar em diretórios aos quais somente o root tem acesso.

Agora que nossos certificados estão em vigor, precisamos informar ao openssl como queremos usar os certificados. Para fazer isso, precisamos editar o arquivo openssl.cnf e solicitar que ele autentique nossa máquina Linux como cliente e não como usuário.

Para fazer isso, siga estas etapas:

  1. sudo gedit /etc/ssl/openssl.cnf
  2. Role até a metade e você verá uma seção chamada [usr_cert]. Nesta seção, precisamos de onde o nsCertTypeé definido como "Para uso normal do cliente, isso é típico" , e deve ter nsCertType = client, emaile será comentado. Remova o comentário desta linha e exclua o email para que ele seja exibido nsCertType = client. Agora salve o arquivo.

Agora você deve ter tudo o que precisa configurado corretamente para ter uma máquina Linux executando em um ambiente de domínio do Windows e autenticando usando 802.1x.

Tudo o que resta agora é reiniciar o serviço de rede para que o Linux use o wpa_supplicant.confarquivo que está vinculado à sua eth0interface e se autentique. Então apenas corra sudo service networking restart. Se você não obtiver um endereço IP após o retorno da interface, poderá solicitar um IP manualmente do servidor DHCP digitando sudo dhclient.


beatcracker
fonte
Eu apenas tentei isso e tentei quando encontrei esse artigo pela primeira vez. Vou tentar novamente, palavra por palavra, apenas por precaução.
Sirex
não, não consigo fazer isso funcionar. Eu teria pensado que a solicitação de assinatura antecipada seria do tipo 'estação de trabalho', mas eu só tinha 'usuário' e 'servidor web' disponíveis.
Sirex
Ok, talvez possamos seguir por outra rota. Existe uma maneira, embora hacky, de exportar certificados marcados como não exportáveis: github.com/iSECPartners/jailbreak ou blog.gentilkiwi.com/mimikatz ( stackoverflow.com/questions/3914882/… ). Você poderia tentar pegar um certificado do Windows p2v'd e usá-lo para autenticação?
Beatcracker
o aplicativo jailbreak, deixe-me apossar da chave privada. Não funcionou para mim no modo TLS. O modo PEAP deseja apenas o certificado CA - que eu posso obter do servidor ca / ​​certsrv / url, mas esse dosent também funciona. Talvez não esteja gostando da minha 'identidade anônima', tipo de nome de usuário e senha, suponho que seja 'nome de usuário' ou 'nome de usuário@domínio.com', mas não funciona para mim. Vou colar os logs de mensagens.
Sirex
1
Más notícias, pessoal! Parece que é um bug no Fedora 21: A conexão com fio com o 802.1x PEAP / MSCHAPv2 não está funcionando .
Beatcracker