linux 802.1x trên mạng có dây windows


11

Tôi đang tìm cách sử dụng máy trạm linux của mình trên mạng công ty của chúng tôi, nhưng tôi đã gặp phải một số vấn đề, cụ thể là tin tưởng vào 802.1xi.

Tôi đã root trên máy của mình và quản trị viên tên miền windows vì vậy tôi có thể truy cập bất cứ thứ gì tôi cần để làm việc này. Hiện tại máy linux của tôi đã bị hạn chế kết nối khiến tôi tin rằng nó đã được đưa vào một vlan mặc định cho các máy khách không phải là 802.1x.

Tôi đoán câu hỏi chung của tôi là: Làm cách nào để máy linux của tôi sử dụng 802.1x trên mạng windows có dây? Mạng là một miền windows điển hình và sử dụng tài khoản máy cũng như tài khoản người dùng.

Đây là những gì tôi biết và đã cố gắng cho đến nay:

Tôi tin rằng tôi sẽ cần phải có chứng chỉ máy khách hợp lệ cho máy, chứng chỉ CA cho miền và khóa riêng cho máy khách

Ý tưởng 1, lấy một khóa hợp lệ khỏi máy windows / domain ca Tôi đã chạy một máy ảo windows trên máy linux và tham gia vào miền đó, nghĩ rằng điều này sẽ tạo ra một chứng chỉ ứng dụng khách hợp lệ mà tôi có thể kiếm được cho máy linux. - đến lúc đó tôi đã xuất chứng chỉ ứng dụng khách và chứng chỉ ca của máy chủ windows ca, sau đó chuyển đổi chúng sang định dạng PEM, sẵn sàng cho trình quản lý mạng trên linux (giả sử rằng PEM không phải DER). - Sau đó, tôi đã cố xuất khóa riêng trên Windows VM bằng certmgr, nhưng nó được đánh dấu là không thể xuất được :-(

Ý tưởng 2 là powerbroker ... - Tôi đã sử dụng powerbroker mở (chính thức tương tự) để tham gia máy linux vào miền, giờ đây passwd hiển thị tất cả người dùng tên miền. - Suy nghĩ của tôi là điều này sẽ đặt chứng chỉ ứng dụng khách và khóa riêng trên hệ thống ở đâu đó (/ etc / ssl / certs?) Nhưng tôi không thể tìm thấy gì

Ý tưởng 3, hỏi ai đó biết họ thực sự đang làm gì.

Tôi nên chỉ ra rằng ban đầu máy linux này có các cửa sổ trên đó (mà tôi đã cài đặt linux) để tôi biết bộ chuyển đổi mạng được thiết lập đúng và MAC vv được chấp nhận trên mạng; Tôi khá chắc chắn rằng nó chỉ là một vấn đề 802.1x

Chỉnh sửa: hoàn toàn quên đề cập đến spin fedora 21 xfce của nó, 64 bit.


Bạn đang sử dụng cái gì? Xsupplicant, wpa_supplicant hay tự lăn?
Brian

fedora 21 của nó ra khỏi hộp, có vẻ như chỉ có wpa_supplicant được cài đặt. Tôi đang sử dụng trình quản lý mạng để thử và kết nối (với máy tính để bàn xfce).
Sirex


vâng, ít nhiều tổng kết được bao xa tôi đã có. Nhìn vào các máy windows họ dường như sử dụng PEAP với MSCHAP v2, vì vậy đó là những gì tôi đã thử trên các máy linux. Chủ yếu là tôi nghĩ rằng tôi đang vật lộn để biết nơi / làm thế nào để có được chứng chỉ hợp lệ và tên người dùng của tôi sẽ trông như thế nào ('bob' 'bob@domain.com' 'domain \ bob'? Tôi đã thử khá nhiều cách làm cho nó hoạt động nhưng không thành công cho đến nay, nó chỉ nhắc lại mật khẩu của tôi một lần nữa
Sirex

Tôi đã thử xuất chứng chỉ CA (trong 'ý tưởng 1') nhưng tôi vẫn bị lặp lại mật khẩu và tôi không chắc chắn mình thậm chí đang đi đúng tuyến với định dạng PEM. Ngoài ra còn có hộp kiểm 'không cần chứng chỉ CA', nhưng tôi không biết liệu AD có thích điều đó không (tôi cho rằng đó chỉ là quyết định của phía khách hàng để từ chối kiểm tra CA dù thế nào, phải không?)
Sirex

Câu trả lời:


10

Tin xấu, mọi người! Dường như có một lỗi không thể sửa được trong Fedora 21: Kết nối có dây với 802.1x PEAP / MSCHAPv2 không hoạt động . Vì vậy, trong khi câu trả lời dưới đây có thể hoạt động cho các bản phát hành khác, người dùng Fedora 21 hiện không gặp may.


Bản thân tôi chưa bao giờ thử, nhưng bài đăng này dường như chứa một hướng dẫn khá chi tiết để thiết lập 802.1x giữa máy khách Linux và miền Windows. Lưu ý phần yêu cầu chứng chỉ: nó sẽ giải quyết vấn đề của bạn về chứng chỉ không thể xuất khẩu. Các phiên bản phần mềm khá cũ ( Ubuntu là 8.04 và Nhà môi giới quyền lực của Beyond Trust vẫn tương tự ), nhưng ý tưởng cơ bản có vẻ chắc chắn với tôi.

Tôi đã định dạng bài đăng nêu trên để dễ đọc hơn. Trích dẫn làm cho các hộp mã có màu xám trên xám, vì vậy tôi đã bỏ nó đi, xin lỗi:


Tuyên bố miễn trừ trách nhiệm: Hướng dẫn này được viết từ góc độ phân phối Linux Ubuntu 8.04. Để làm cho điều này hoạt động với các bản phân phối Linux hoặc Unix khác, một số thay đổi có thể cần phải được thực hiện.

Hai điều chính cần thiết cho máy Linux của bạn để xác thực trên 802.1x là chứng chỉ ứng dụng khách và tài khoản trong miền Windows. Trong quá trình xác thực, máy khách Linux xuất trình chứng chỉ máy tính của nó cho bộ chuyển mạch, lần lượt trình bày nó cho máy chủ RADIUS để xác minh chứng chỉ và xác minh tài khoản máy tính mà chứng chỉ được gán cho Active Directory. Nếu chứng chỉ và tài khoản máy tính hợp lệ, thì máy chủ RADIUS sẽ phê duyệt yêu cầu xác thực gửi lại cho bộ chuyển mạch, từ đó xác thực cổng mà hộp Linux được kết nối.

Điều đầu tiên cần làm là tham gia máy tính Linux của bạn vào miền Windows. Vì Linux thực sự không thể tham gia một miền Windows, chúng tôi phải tải xuống phần mềm cần thiết để cho phép chúng tôi làm điều này. Tương tự như vậy làm cho phần mềm cho phép chúng tôi làm điều này. Để cài đặt cái này trên Ubuntu rất đơn giản, chỉ cần làm theo các bước sau:

  1. sudo apt-get cập nhật
  2. sudo apt-get cài đặt tương tự mở
  3. sudo domainjoin-cli tham gia enter the FQDN of your domain here enter your admin account here, bạn có thể sử dụng định dạng user@domain.com. Bạn cũng có thể sử dụng phiên bản GUI bằng cách đi đếnSystem → Administration → Likewise.
  4. sudo update-rc.d mặc định mở tương tự
  5. sudo /etc/init.d/likewise-open bắt đầu

Nếu bạn không chạy Ubuntu, bạn có thể tải xuống phần mềm tại đây http://www.likewisesoftware.com/products/likewise_open . Bây giờ bạn có thể đăng xuất và đăng nhập lại bằng tài khoản miền của mình. Tôi tin rằng cả định dạng user@domain.comvà tên miền \ người dùng đều hoạt động. Tôi sẽ kiểm tra điều này sau.

Có ba tệp nằm trên máy Linux phải được cấu hình đúng để xác thực này diễn ra. Ba tệp này là:

  1. /etc/wpa_supplicant.conf
  2. / etc / mạng / giao diện
  3. /etc/openssl/openssl.cnf

Trước tiên, chúng tôi sẽ định cấu hình phần mềm để cho phép máy Linux của chúng tôi sử dụng chứng chỉ ứng dụng khách để xác thực với mạng hỗ trợ 802.1x; wpa_supplicantsẽ được sử dụng cho việc này.

Thực hiện theo các bước sau để định cấu hình tệp wpa_supplicant.conf của bạn:

  1. sudo gedit /etc/wpa_supplicant.conf
  2. Dán đoạn sau vào tệp và lưu nó:

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

Bây giờ chúng tôi phải chỉnh sửa tập tin giao diện của bạn. Thực hiện theo các bước sau để định cấu hình tệp giao diện của bạn:

  1. sudo gedit / etc / mạng / giao diện
  2. Dán đoạn sau vào tệp dưới eth0giao diện và lưu nó:

    # 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
    

Bước tiếp theo là tạo và cài đặt chứng chỉ của bạn. Chúng tôi sẽ phải tạo chứng chỉ tự ký, sau đó tạo yêu cầu chứng chỉ dựa trên chứng chỉ tự ký mà chúng tôi đã tạo, sau đó cài đặt chứng chỉ.

Lưu ý: Khi tạo chứng chỉ của bạn, bất cứ khi nào nó yêu cầu tên của bạn, bạn phải cung cấp tên của máy tính sẽ được xác thực. Để an toàn, tôi khuyên bạn nên đặt tên khớp với cách gán tên cho máy tính, bao gồm cả phân biệt chữ hoa chữ thường. Nếu bạn không chắc chắn cách nó được gán cho máy tính của bạn, hãy mở một thiết bị đầu cuối và nhập tên máy chủ.

Thực hiện theo các bước sau:

  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

    Ví dụ: sudo openssl req -x509 -nodes -day 365 -newkey rsa: 1024 -keyout privatecert.pem -out privatecert.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

    Ví dụ: sudo openssl req -new -newkey rsa: 1024 -nodes -keyout privatekey.pem -out certreq.pem

Tất cả các chứng chỉ được tạo được đặt trong thư mục chính của bạn ( /home/<username>). Phần tiếp theo là yêu cầu chứng chỉ từ CA của bạn bằng cách sử dụng yêu cầu chứng chỉ đã được tạo ở bước trước. Điều này sẽ cần phải được thực hiện trên máy Windows, vì một số lý do, Linux và Windows không hòa hợp với nhau khi yêu cầu và tải xuống chứng chỉ; Tôi chỉ thấy dễ dàng hơn khi gửi email yêu cầu chứng chỉ cho chính mình và thực hiện nó trên máy Windows.

Thực hiện theo các bước sau để hoàn thành yêu cầu chứng chỉ:

  1. Chuyển đến thư mục nhà của bạn trên máy Linux và tìm tệp yêu cầu chứng chỉ của bạn
  2. Hoặc gửi email tệp cho chính bạn hoặc mở tệp bằng trình soạn thảo văn bản (chẳng hạn như gedit) và sao chép và dán yêu cầu vào email và gửi cho chính bạn.
  3. Trên máy khách Windows, hãy mở một trang web bằng IE đến trang web CA của bạn (chẳng hạn như http://caname/certsrv).
  4. Chọn Yêu cầu Chứng chỉ
  5. Yêu cầu chứng chỉ nâng cao
  6. Bây giờ hãy mở email của bạn và nhận yêu cầu chứng chỉ mà bạn đã tự gửi email.
  7. Nếu bạn gửi email cho mình tệp, hãy mở nó bằng notepad và sao chép và dán nội dung vào hộp yêu cầu chứng chỉ được mã hóa Base-64. Nếu bạn gửi email cho mình nội dung của tệp yêu cầu chứng chỉ thay vì chính tệp đó, thì chỉ cần sao chép và dán yêu cầu từ đó vào hộp yêu cầu chứng chỉ được mã hóa Base-64.
  8. Nhấp vào Gửi và tải xuống chứng chỉ ở dạng Base-64, không phải DER.
  9. Lưu chứng chỉ vào máy tính để bàn của bạn và đặt tên cho nó your Linux machine name.pem. Hệ thống sẽ tự động nối thêm .cervào cuối của nó, vì vậy chỉ cần xóa nó đi. Linux sử dụng .pem để mở rộng chứng chỉ.
  10. Lấy tập tin này và gửi lại email cho chính bạn.
  11. Bây giờ, trên máy Linux của bạn, hãy lấy chứng chỉ của bạn và lưu nó ở đâu đó (tốt nhất là thư mục nhà của bạn để giữ mọi thứ ngăn nắp và cùng nhau).
  12. Bây giờ, chúng tôi cần sao chép chứng chỉ mà bạn vừa nhận được vào /etc/ssl/certsthư mục của mình và chúng tôi cần sao chép khóa riêng / chứng chỉ và khóa riêng được tạo trước đó trong /etc/ssl/privatethư mục của bạn . Bây giờ, chỉ root mới có quyền làm điều này, vì vậy bạn có thể làm điều này bằng dòng lệnh bằng cách gõ sudo cp /home/<username>/<certificate>.pem /etc/ssl/privatehoặc /etc/ssl/certs. Điều này cũng có thể được thực hiện từ GUI bằng cách sao chép và dán bằng cách sử dụng lệnh gksudo và gõ bằng nautilus. Nautilus là trình duyệt tệp GUI mà Ubuntu sử dụng và nó sẽ chạy nó dưới dạng root cho phép bạn sao chép và dán vào các thư mục mà chỉ root mới có quyền truy cập.

Bây giờ chứng chỉ của chúng tôi đã sẵn sàng, chúng tôi cần nói với openssl cách chúng tôi muốn sử dụng chứng chỉ. Để thực hiện việc này, chúng tôi phải chỉnh sửa tệp openssl.cnf và yêu cầu nó xác thực máy Linux của chúng tôi với tư cách là khách hàng chứ không phải người dùng.

Để làm điều này, hãy làm theo các bước sau:

  1. sudo gedit /etc/ssl/openssl.cnf
  2. Cuộn xuống khoảng một nửa và bạn sẽ thấy một phần được gọi là [usr_cert]. Trong phần này, chúng ta cần nơi nsCertTypeđược định nghĩa là "Đối với khách hàng bình thường, điều này là điển hình" , và nó nên có nsCertType = client, emailvà nó sẽ được nhận xét. Bỏ ghi chú dòng này và xóa email để nó hiển thị nsCertType = client. Bây giờ lưu tập tin.

Bây giờ bạn nên có mọi thứ bạn cần được cấu hình đúng cách để máy Linux chạy trong môi trường miền Windows và xác thực bằng cách sử dụng 802.1x.

Tất cả những gì còn lại bây giờ là khởi động lại dịch vụ mạng của bạn để Linux sẽ sử dụng wpa_supplicant.conftệp hiện được gắn với eth0giao diện của bạn và xác thực. Vì vậy, chỉ cần chạy sudo service networking restart. Nếu bạn không nhận được địa chỉ IP sau khi giao diện của bạn sao lưu, bạn có thể yêu cầu IP thủ công từ máy chủ DHCP của mình bằng cách nhập sudo dhclient.



Tôi vừa mới thử nó, và tôi đã thử nó khi lần đầu tiên tôi tìm thấy bài báo đó. Tôi sẽ thử lại lần nữa mặc dù từng chữ, chỉ trong trường hợp.
Sirex

Không, không thể làm việc này. Tôi đã nghĩ rằng yêu cầu ký được tiến hành sẽ là loại 'máy trạm' nhưng tôi chỉ có sẵn 'người dùng' và 'máy chủ web'.
Sirex

Ok, vì vậy có lẽ chúng ta có thể đi bằng một con đường khác. Có một cách, alebit hacky, để xuất các certs được đánh dấu là không thể xuất khẩu: github.com/iSECPartners/jailbreak hoặc blog.gentilkiwi.com/mimikatz ( stackoverflow.com/questions/3914882/ tựa ). Bạn có thể thử lấy một chứng chỉ từ Windows p2v'd của mình và sử dụng nó để xác thực không?
beatcracker 16/215

ứng dụng bẻ khóa cho phép tôi giữ khóa riêng. Nó không hoạt động với tôi trong chế độ TLS. Chế độ PEAP chỉ muốn chứng chỉ CA - mà tôi có thể thoát khỏi máy chủ ca / ​​certsrv / url, nhưng công việc đó cũng không hiệu quả. Có lẽ nó không thích 'danh tính ẩn danh', loại tên người dùng và mật khẩu của tôi, tôi cho rằng đó là 'tên người dùng' hoặc 'username@domain.com', nhưng không hoạt động với tôi. Tôi sẽ ghi nhật ký tin nhắn.
Sirex

1
Tin xấu, mọi người! Có vẻ như đó là một lỗi trong Fedora 21: Kết nối có dây với 802.1x PEAP / MSCHAPv2 không hoạt động .
beatcracker 17/2/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.