Windows 유선 네트워크의 Linux 802.1x


11

회사 네트워크에서 Linux 워크 스테이션을 사용하려고하는데 특히 802.1xi가 믿는 몇 가지 문제가 발생했습니다.

내 컴퓨터와 Windows 도메인 관리자의 루트 이므로이 작업을 수행하는 데 필요한 모든 것에 액세스 할 수 있어야합니다. 현재 내 리눅스 시스템은 연결이 제한되어있어 802.1x가 아닌 클라이언트의 기본 VLAN에 배치되었다고 생각합니다.

내 전반적인 질문은 다음과 같습니다. 내 유선 컴퓨터가 유선 Windows 네트워크에서 802.1x를 사용하도록하려면 어떻게해야합니까? 네트워크는 일반적인 Windows 도메인이며 컴퓨터 계정과 사용자 계정을 사용합니다.

이것은 내가 알고 & 지금까지 시도한 것입니다.

나는 생각 나는 기계에 대한 유효한 클라이언트 시스템 인증서, 도메인에 대한 CA의 인증서 및 클라이언트에 대한 개인 키를 얻기 위해 필요 해요

아이디어 1, Windows 시스템 / 도메인 ca 시스템에서 유효한 키를 가져옵니다. 리눅스 시스템에서 Windows VM을 실행하고 도메인에 합류하여 Linux 시스템에서 사용할 수있는 유효한 클라이언트 인증서를 생성 할 것이라고 생각했습니다. -그런 다음 Windows CA 서버에서 클라이언트 인증서와 ca 인증서를 내 보낸 다음 PEM 형식으로 변환하여 Linux의 네트워크 관리자를 위해 준비했습니다 (PEM이 필요하지 않다고 가정). -그런 다음 certmgr을 사용하여 Windows VM 자체에서 개인 키를 내보내려고 시도했지만 내보낼 수 없음으로 표시되었습니다.

Idea 2는 powerbroker였습니다 ...-powerbroker open (공식적으로 마찬가지로)을 사용하여 리눅스 머신을 도메인에 가입 시켰습니다. getent passwd는 이제 모든 도메인 사용자를 보여줍니다. -내 생각에 이것은 클라이언트 인증서와 개인 키를 시스템 어딘가에 (/ etc / ssl / certs?) 넣을 것이라고 생각했지만 아무것도 찾을 수 없습니다.

아이디어 3, 실제로 무엇을하고 있는지 아는 사람에게 물어보십시오.

원래이 리눅스 머신에는 윈도우가 있고 (리눅스 설치시 p2v'd) 네트워크 스위치가 제대로 설정되어 있고 MAC 등이 네트워크에서 허용된다는 것을 알고 있습니다. 나는 그것의 802.1x 문제를 확신합니다

편집 : 완전히 페도라 21 xfce 스핀, 64 비트를 언급하는 것을 잊었습니다.


어떤 신청자를 사용하고 있습니까? Xsupplicant, wpa_supplicant 또는 롤링?
Brian

그것의 페도라 21은 상자에 wpa_supplicant 만 설치된 것처럼 보입니다. xfce 데스크톱을 사용하여 네트워크 관리자를 사용하여 연결하려고합니다.
Sirex


그래, 그 정도는 내가 이미 얼마나 멀리 있는지를 요약한다. Windows 시스템을 보면 MSCHAP v2와 함께 PEAP를 사용하는 것처럼 보이므로 Linux 시스템에서 시도한 것입니다. 주로 유효한 인증서를 어디서 / 어떻게 얻을 수 있는지, 그리고 내 사용자 이름이 어떻게 보이는지 아는 데 어려움을 겪고 있다고 생각합니다. ( 'bob' 'bob@domain.com' 'domain \ bob'? 작동하지만 지금까지는 성공하지 못했습니다. 다시 암호를 입력하라는 메시지가 다시 나타납니다
Sirex

CA 인증서 ( 'idea 1'로)를 내보내려고 시도했지만 여전히 암호를 묻는 메시지가 표시되며 PEM 형식으로 올바른 경로를 사용하고 있는지 확실하지 않습니다. 'CA 인증서 필요 없음'확인란도 있지만 AD가
원하는지 모르겠습니다 (

답변:


10

나쁜 소식, 여러분! Fedora 21 : 802.1x PEAP / MSCHAPv2와의 유선 연결이 작동하지 않는 버그가 수정 된 것 같습니다 . 따라서 아래 답변 이 다른 배포판에서도 작동 할 수 있지만 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 도메인에 가입 할 수 없으므로 필요한 소프트웨어를 다운로드해야합니다. 마찬가지로 우리가 이것을 할 수 있도록 소프트웨어를 만듭니다. 우분투에 이것을 설치하려면 매우 간단합니다. 다음 단계를 따르십시오.

  1. sudo apt-get 업데이트
  2. sudo apt-get은 마찬가지로 오픈 설치
  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/like-open 시작

Ubuntu를 실행하지 않는 경우 http://www.likewisesoftware.com/products/likewise_open 에서 소프트웨어를 다운로드 할 수 있습니다 . 이제 도메인 계정을 사용하여 로그 아웃했다가 다시 로그인 할 수 있습니다. 형식 user@domain.com과 도메인 \ 사용자 모두 작동 한다고 생각합니다 . 나중에 테스트하겠습니다.

이 인증을 수행하려면 Linux 시스템에 세 개의 파일이 있으며 올바르게 구성해야합니다. 이 세 파일은 다음과 같습니다.

  1. /etc/wpa_supplicant.conf
  2. / etc / network / 인터페이스
  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 / 인터페이스
  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 enter in days how long you want the cert valid for-nodes -days -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에 인증서를 요청하는 것입니다. 어떤 이유로 든 인증서를 요청하고 다운로드 할 때 Linux와 Windows가 제대로 작동하지 않기 때문에 Windows 시스템에서이 작업을 수행해야합니다. 방금 인증서 요청을 자신에게 이메일로 보내고 Windows 시스템에서 수행하는 것이 더 쉽다는 것을 알았습니다.

인증서 요청을 완료하려면 다음 단계를 수행하십시오.

  1. Linux 시스템의 홈 디렉토리로 이동하여 인증서 요청 파일을 찾으십시오.
  2. 파일을 자신에게 이메일로 보내거나 텍스트 편집기 (예 : gedit)를 사용하여 파일을 열고 요청을 이메일에 복사하여 붙여넣고 직접 보내십시오.
  3. Windows 클라이언트에서 IE를 사용하여 CA 웹 사이트 (예 :)에 웹 페이지를 엽니 다 http://caname/certsrv.
  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폴더 에서 이전에 만든 개인 키 / 인증서 및 개인 키를 복사해야 합니다. 이제는 루트 만이 작업을 수행 할 수있는 권한을 가지므로 sudo cp /home/<username>/<certificate>.pem /etc/ssl/private또는 을 입력하여 명령 줄에서이 작업을 수행 할 수 있습니다 /etc/ssl/certs. gksudo 명령을 사용하고 노틸러스를 입력하여 복사하여 붙여 넣기하여 GUI에서 수행 할 수도 있습니다. 노틸러스는 우분투에서 사용하는 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 주소를 얻지 못하면을 입력하여 DHCP 서버에서 IP를 수동으로 요청할 수 있습니다 sudo dhclient.



방금 이것을 시도했으며 처음으로 기사를 찾았을 때 시도했습니다. 만일을 대비하여 단어를 위해 다시 시도하겠습니다.
Sirex

아니,이 일을 할 수 없어. 고급 서명 요청은 'workstation'유형이지만 'user'와 'web server'만 사용할 수 있다고 생각했습니다.
Sirex

좋아, 다른 경로로 갈 수있을거야 alebit hacky는 github.com/iSECPartners/jailbreak 또는 blog.gentilkiwi.com/mimikatz ( stackoverflow.com/questions/3914882/… ) 로 내보낼 수없는 것으로 표시된 인증서를 내보내는 방법이 있습니다 . p2v의 Windows에서 인증서를 가져 와서 인증에 사용할 수 있습니까?
beatcracker

탈옥 응용 프로그램은 개인 키를 잡을 수 있습니다. TLS 모드에서는 작동하지 않았습니다. PEAP 모드는 CA 인증서 만 원합니다.이 인증서는 ca 서버 / certsrv / url에서 벗어날 수 있지만 그 정도의 작업은 작동하지 않습니다. 아마도 '익명', 사용자 이름 유형 및 비밀번호를 좋아하지는 않지만 'username'또는 'username@domain.com'이라고 가정하고 있지만 둘 다 작동하지 않습니다. 메시지 로그를 pastebin하겠습니다.
Sirex

1
나쁜 소식, 여러분! Fedora 21 : 802.1x PEAP / MSCHAPv2와의 유선 연결이 작동하지 않는 버그 인 것 같습니다 .
beatcracker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.