linux 802.1x pada jaringan kabel windows

11

Saya mencari untuk menggunakan workstation linux saya di jaringan perusahaan kami, tetapi saya telah mengalami beberapa masalah, khususnya 802.1xi percaya.

Saya root pada mesin saya dan admin domain windows jadi saya harus dapat mengakses apa pun yang saya perlukan agar ini bisa berfungsi. Saat ini mesin linux saya memiliki konektivitas terbatas yang membuat saya percaya itu sudah dimasukkan ke dalam vlan default untuk klien non 802.1x.

Saya kira pertanyaan keseluruhan saya adalah: Bagaimana saya bisa membuat mesin linux saya menggunakan 802.1x pada jaringan windows kabel? Jaringan ini adalah domain windows biasa dan menggunakan akun mesin serta akun pengguna.

Inilah yang saya tahu & sudah coba sejauh ini:

Saya percaya saya perlu mendapatkan sertifikat mesin klien yang valid untuk mesin, CA cert untuk domain, dan kunci pribadi untuk klien

Ide 1, ambil kunci yang valid dari mesin windows / domain mesin ca Saya menjalankan windows VM pada mesin linux, dan bergabung dengan domain, berpikir ini akan menghasilkan sertifikat klien yang valid saya bisa menangkap untuk mesin linux. - untuk itu saya kemudian mengekspor sertifikat klien dan sertifikat dari server windows, kemudian mengubahnya ke format PEM, siap untuk manajer jaringan di linux (dengan asumsi bahwa perlu PEM tidak DER). - Saya kemudian mencoba untuk mengekspor kunci pribadi di windows VM itu sendiri menggunakan certmgr, tetapi ditandai sebagai tidak dapat diekspor :-(

Ide 2 adalah powerbroker ... - Saya menggunakan powerbroker terbuka (secara resmi juga) untuk bergabung dengan mesin linux ke domain, getent passwd sekarang menunjukkan semua pengguna domain. - Pemikiran saya adalah ini akan menempatkan cert klien dan kunci privat pada sistem di suatu tempat (/ etc / ssl / certs?) Tetapi saya tidak dapat menemukan apa-apa

Ide 3, tanyakan pada seseorang yang tahu apa yang sebenarnya mereka lakukan.

Saya harus menunjukkan bahwa awalnya mesin linux ini memiliki windows di atasnya (yang saya p2v'd pada saat menginstal linux) jadi saya tahu switch jaringan sudah diatur dengan benar, dan MAC dll diterima di jaringan; Saya cukup yakin ini hanya masalah 802.1x

Sunting: benar-benar lupa menyebutkan fedora 21 xfce spin, 64bit.

Sirex
sumber
Pemohon apa yang Anda gunakan? Xsupplicant, wpa_supplicant atau bergulir sendiri?
Brian
fedora 21 di luar kotak, sepertinya hanya wpa_supplicant yang diinstal. Saya menggunakan manajer jaringan untuk mencoba dan terhubung (dengan desktop xfce).
Sirex
ya, itu kira-kira meringkaskan sejauh apa yang sudah saya dapatkan. Melihat mesin windows mereka tampaknya menggunakan PEAP dengan MSCHAP v2, jadi itulah yang saya coba pada mesin linux. Sebagian besar saya pikir saya berjuang untuk mengetahui di mana / bagaimana mendapatkan sertifikat yang valid, dan seperti apa nama pengguna saya ('bob' '[email protected]' 'domain \ bob'? Saya sudah mencoba beberapa cara untuk membuatnya berfungsi tetapi tidak berhasil sejauh ini, itu hanya meminta kembali kata sandi saya
Sirex
Saya memang mencoba mengekspor sertifikat CA (dalam 'ide 1') tetapi saya masih mendapatkan reprompted untuk kata sandi, dan saya tidak yakin saya bahkan akan menyusuri rute yang benar dengan format PEM. Ada juga kotak centang 'no CA cert required', tetapi saya tidak tahu apakah AD menginginkannya (saya berasumsi bahwa itu hanya keputusan pihak klien untuk menolak CA, bagaimanapun, kan?)
Sirex

Jawaban:

10

Berita buruk, semuanya! Tampaknya ada bug yang tidak diperbaiki di Fedora 21: Koneksi kabel dengan 802.1x PEAP / MSCHAPv2 tidak berfungsi . Jadi, sementara jawaban di bawah ini mungkin berfungsi untuk distro lain, pengguna Fedora 21 saat ini kurang beruntung.


Belum pernah mencoba itu sendiri, tetapi posting ini tampaknya berisi langkah-langkah yang cukup rinci untuk mengatur 802.1x antara klien Linux dan domain Windows. Perhatikan bagian permintaan sertifikat: itu harus menyelesaikan masalah sertifikat tidak dapat diekspor Anda. Versi perangkat lunak cukup lama ( Ubuntu adalah 8.04 dan luar Trust Daya Broker masih juga ), tetapi ide dasar tampaknya solid untuk saya.

Saya telah memformat pos di atas agar lebih mudah dibaca. Mengutip membuat kotak kode menjadi abu-abu di atas abu-abu, jadi saya menjatuhkannya, maaf:


Penafian: Panduan ini ditulis dari perspektif distribusi Linux Ubuntu 8.04. Untuk membuatnya bekerja dengan distribusi Linux atau Unix lain, beberapa perubahan mungkin perlu dilakukan.

Dua hal utama yang diperlukan untuk mesin Linux Anda untuk mengotentikasi lebih dari 802.1x adalah sertifikat klien dan akun di domain Windows. Selama proses otentikasi, klien Linux menyajikan sertifikat komputernya ke sakelar, yang pada gilirannya menyajikannya ke server RADIUS yang memverifikasi sertifikat, dan memverifikasi akun komputer yang ditetapkan oleh sertifikat tersebut di Active Directory. Jika sertifikat dan akun komputer itu valid, maka server RADIUS menyetujui permintaan otentikasi mengirimnya kembali ke sakelar, yang pada gilirannya mengotentikasi port tempat kotak Linux terhubung.

Hal pertama yang perlu dilakukan adalah bergabung dengan komputer Linux Anda ke domain Windows. Karena Linux tidak dapat bergabung dengan domain Windows, kami harus mengunduh perangkat lunak yang diperlukan untuk memungkinkan kami melakukan ini. Demikian juga membuat perangkat lunak untuk memungkinkan kita melakukan hal ini. Untuk menginstal ini di Ubuntu sangat sederhana, cukup ikuti langkah-langkah ini:

  1. sudo apt-get pembaruan
  2. sudo apt-get instal juga-terbuka
  3. sudo domainjoin-cli gabung enter the FQDN of your domain here enter your admin account here, Anda bisa menggunakan format [email protected]. Anda juga harus dapat menggunakan versi GUI dengan masuk keSystem → Administration → Likewise.
  4. sudo update-rc.d juga-buka default
  5. sudo /etc/init.d/likewise-open start

Jika Anda tidak menjalankan Ubuntu, Anda dapat mengunduh perangkat lunak di sini http://www.likewisesoftware.com/products/likewise_open . Anda sekarang dapat keluar dan masuk kembali menggunakan akun domain Anda. Saya percaya bahwa format [email protected]dan domain \ pengguna keduanya berfungsi. Saya akan menguji ini nanti.

Ada tiga file yang terletak di mesin Linux yang harus dikonfigurasi dengan benar agar otentikasi ini dapat terjadi. Ketiga file tersebut adalah:

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

Pertama-tama kita akan mengkonfigurasi perangkat lunak untuk memungkinkan mesin Linux kita menggunakan sertifikat klien untuk mengautentikasi ke jaringan berkemampuan 802.1x; wpa_supplicantakan digunakan untuk ini.

Ikuti langkah-langkah ini untuk mengonfigurasi file wpa_supplicant.conf Anda:

  1. sudo gedit /etc/wpa_supplicant.conf
  2. Rekatkan yang berikut ke dalam file dan simpan:

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

Sekarang kita harus mengedit file antarmuka Anda. Ikuti langkah-langkah ini untuk mengonfigurasi file antarmuka Anda:

  1. sudo gedit / etc / network / interfaces
  2. Rekatkan yang berikut ke dalam file di bawah eth0antarmuka dan simpan:

    # 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
    

Langkah selanjutnya adalah membuat dan menginstal sertifikat Anda. Kami harus membuat sertifikat yang ditandatangani sendiri, kemudian menghasilkan permintaan sertifikat berdasarkan sertifikat yang ditandatangani sendiri yang kami buat, lalu pasang sertifikat.

Catatan: Saat membuat sertifikat Anda, setiap kali meminta nama Anda, Anda harus memberikan nama komputer yang akan diautentikasi. Agar aman, saya sarankan untuk membuat nama yang cocok dengan cara itu ditugaskan ke komputer, termasuk menjadi case sensitive. Jika Anda tidak yakin bagaimana ini ditugaskan untuk komputer Anda, buka terminal dan ketik nama host.

Ikuti langkah ini:

  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

    Contoh: sudo openssl req -x509 -nodes -days 365 -newkey rsa: 1024 -keyout privcert.pem -out privcert.pem

  2. openssl req -baru -newkey rsa: 1024 -nodes -keyout enter a name for your private key here.pem - out enter a name for your certificate request here.pem

    Contoh: sudo openssl req -baru -newkey rsa: 1024 -nodes -keyout privkey.pem -out certreq.pem

Semua sertifikat yang dibuat ditempatkan di direktori home Anda ( /home/<username>). Bagian selanjutnya adalah meminta sertifikat dari CA Anda menggunakan permintaan sertifikat yang dibuat pada langkah sebelumnya. Ini perlu dilakukan pada mesin Windows, karena untuk beberapa alasan Linux dan Windows tidak rukun ketika meminta dan mengunduh sertifikat; Saya baru saja menemukan lebih mudah untuk mengirim email permintaan sertifikat kepada saya dan melakukannya di mesin Windows.

Ikuti langkah-langkah ini untuk menyelesaikan permintaan sertifikat:

  1. Buka direktori home Anda di mesin Linux dan temukan file permintaan sertifikat Anda
  2. Kirim email ke file untuk Anda sendiri atau buka file dengan editor teks (seperti gedit) dan salin dan tempel permintaan ke email dan kirimkan ke diri Anda sendiri.
  3. Pada klien Windows, buka halaman web menggunakan IE ke situs web CA Anda (seperti http://caname/certsrv).
  4. Pilih Minta Sertifikat
  5. Permintaan Sertifikat Tingkat Lanjut
  6. Sekarang buka email Anda dan dapatkan permintaan sertifikat bahwa Anda mengirim email sendiri.
  7. Jika Anda mengirim sendiri file tersebut melalui email, buka dengan notepad dan salin dan tempel konten ke dalam kotak permintaan sertifikat yang disandikan Base-64. Jika Anda mengirimi diri Anda sendiri konten file permintaan sertifikat daripada file itu sendiri, maka cukup salin dan tempel permintaan dari sana ke dalam kotak permintaan sertifikat yang disandikan Base-64.
  8. Klik Kirim dan unduh sertifikat dalam formulir Base-64, bukan DER.
  9. Simpan sertifikat ke desktop Anda dan your Linux machine nameberi nama .pem. Sistem akan secara otomatis menambahkan .cerke akhir, jadi hapus saja. Linux menggunakan .pem untuk ekstensi sertifikat.
  10. Ambil file ini dan kirimkan kembali ke email Anda.
  11. Sekarang, di mesin Linux Anda, dapatkan sertifikat Anda dan simpan di suatu tempat (lebih disukai folder rumah Anda untuk menjaga hal-hal terorganisir dan bersama-sama).
  12. Sekarang, kami perlu menyalin sertifikat yang baru saja Anda terima ke /etc/ssl/certsfolder Anda , dan kami perlu menyalin kunci pribadi Anda / sertifikat dan kunci pribadi yang dibuat sebelumnya di /etc/ssl/privatefolder Anda . Sekarang, hanya root yang memiliki izin untuk melakukan ini, jadi Anda bisa melakukan ini dengan baris perintah dengan mengetik sudo cp /home/<username>/<certificate>.pem /etc/ssl/privateatau /etc/ssl/certs. Ini juga dapat dilakukan dari GUI dengan menyalin dan menempel dengan menggunakan perintah gksudo dan mengetikkan nautilus. Nautilus adalah peramban file GUI yang digunakan Ubuntu dan akan menjalankannya sebagai root yang memungkinkan Anda untuk menyalin dan menempel ke direktori yang hanya dapat diakses oleh root.

Sekarang setelah sertifikat kami ada, kami perlu memberi tahu openssl bagaimana kami ingin menggunakan sertifikat itu. Untuk melakukan ini, kita harus mengedit file openssl.cnf dan memintanya untuk mengotentikasi mesin Linux kita sebagai klien daripada pengguna.

Untuk melakukan ini ikuti langkah-langkah ini:

  1. sudo gedit /etc/ssl/openssl.cnf
  2. Gulir ke bawah sekitar setengah jalan dan Anda akan melihat bagian yang disebut [usr_cert]. Pada bagian ini kita perlu di mana nsCertTypedidefinisikan sebagai "Untuk penggunaan normal klien ini adalah khas" , dan itu harus nsCertType = client, emaildan akan dikomentari. Batalkan komentar pada baris ini dan hapus email yang muncul nsCertType = client. Sekarang simpan file tersebut.

Sekarang Anda harus memiliki semua yang Anda butuhkan dikonfigurasi dengan benar untuk memiliki mesin Linux yang berjalan di lingkungan domain Windows dan mengautentikasi menggunakan 802.1x.

Yang tersisa sekarang adalah me-restart layanan jaringan Anda sehingga Linux akan menggunakan wpa_supplicant.conffile yang sekarang dikaitkan dengan eth0antarmuka Anda dan mengotentikasi. Jadi lari saja sudo service networking restart. Jika Anda tidak mendapatkan alamat IP setelah antarmuka Anda kembali, Anda dapat secara manual meminta IP dari server DHCP Anda dengan mengetik sudo dhclient.


beatcracker
sumber
Saya baru saja mencoba ini, dan saya mencobanya ketika saya pertama kali menemukan artikel itu sendiri. Saya akan coba lagi kata demi kata, untuk jaga-jaga.
Sirex
tidak, ini tidak bisa berfungsi. Saya akan berpikir bahwa permintaan penandatanganan yang dimajukan akan menjadi tipe 'workstation' tetapi saya hanya memiliki 'pengguna' dan 'server web' yang tersedia.
Sirex
Ok, jadi mungkin kita bisa pergi dengan rute lain. Ada satu cara, alebit hacky, untuk mengekspor sertifikat yang ditandai sebagai tidak dapat diekspor: github.com/iSECPartners/jailbreak atau blog.gentilkiwi.com/mimikatz ( stackoverflow.com/questions/3914882/… ). Bisakah Anda mencoba mengambil sertifikat dari Windows XP Anda dan menggunakannya untuk otentikasi?
beatcracker
aplikasi jailbreak biarkan saya memegang kunci pribadi. Itu tidak bekerja untuk saya dalam mode TLS. Mode PEAP hanya menginginkan CA cert - yang bisa saya dapatkan dari server ca / ​​certsrv / url, tapi itu juga berfungsi. Mungkin itu tidak menyukai 'identitas anonim' saya, jenis nama pengguna dan kata sandi, saya berasumsi itu 'username' atau '[email protected]', tetapi tidak ada yang berhasil untuk saya. Saya akan menempelkan log pesan.
Sirex
1
Berita buruk, semuanya! Tampaknya ini adalah bug di Fedora 21: Koneksi berkabel dengan 802.1x PEAP / MSCHAPv2 tidak berfungsi .
beatcracker