Cách đăng nhập vào Windows bằng tài khoản FreeIPA

Tác giả sysadmin, T.M.Hai 24, 2022, 01:39:27 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách đăng nhập vào Windows bằng tài khoản FreeIPA


Trong hầu hết các trường hợp, máy chủ hoặc máy tính để bàn Windows thường sẽ được kết nối với bộ điều khiển miền Windows đang chạy Active Directory của Microsoft, tuy nhiên đây không phải là tùy chọn duy nhất.

Có thể kết nối Windows với một lĩnh vực FreeIPA và sau đó đăng nhập vào máy tính Windows bằng tài khoản từ FreeIPA vì nó sử dụng Kerberos để đăng nhập một lần (SSO). FreeIPA là một dự án mã nguồn mở do Red Hat tài trợ, cố gắng cung cấp chức năng tương tự như Active Directory cho các hệ thống Linux và Unix.

Đây có thể là một lựa chọn tốt nếu bạn đã chạy một môi trường Linux hoặc Unix lớn, nhưng cần có một lượng nhỏ máy chủ Windows có khả năng sử dụng cùng một tài khoản người dùng được quản lý tập trung.

Chúng tôi giả định rằng bạn đã thiết lập FreeIPA và sẵn sàng sử dụng. Chúng tôi sẽ chỉ trình bày chi tiết cách định cấu hình hệ điều hành Windows để tham gia vào một lĩnh vực Kerberos hiện có. Trong ví dụ này, FreeIPA được thiết lập trên miền   Đăng nhập để xem liên kết.

FreeIPA sẽ chỉ cung cấp dịch vụ xác thực cho máy chủ Windows của chúng tôi tại đây với Kerberos. FreeIPA không thể duy trì cơ sở dữ liệu tài khoản cho máy tính Windows giống như cách Active Directory thực hiện, do đó, chúng tôi vẫn cần tạo tài khoản Windows cục bộ cho mỗi người dùng trên máy tính Windows, mặc dù họ sẽ không đặt mật khẩu trong Windows.

1. Định cấu hình FreeIPA

Đăng nhập vào FreeIPA và bên dưới Danh tính, chọn Máy chủ. Nhấp vào nút +Thêm để tạo máy chủ mới.


Trong trường hợp này, tên máy chủ của máy tính Windows của chúng tôi là 'windows', chúng tôi cũng chỉ định miền DNS sau đó. Vì FreeIPA đang quản lý DNS cho tôi nên nó đã được điền trước. nếu bạn không sử dụng FreeIPA để quản lý DNS thì bạn có thể phải nhập tên miền theo cách thủ công.


Tiếp theo trên máy chủ FreeIPA, chúng ta cần chạy lệnh ipa-getkeytab để tạo tệp keytab cho máy tính Windows. Để thực hiện các tác vụ quản trị trên máy chủ IPA, trước tiên chúng ta phải xác thực, chúng ta thực hiện việc này bằng lệnh kinit và chỉ định người dùng quản trị IPA, như hình bên dưới.

Mã nguồn [Chọn]
[root@ipa ~]# kinit admin
Password for [email protected]:

Bạn có thể chạy lệnh 'klist' sau đó để kiểm tra xem bạn có vé hợp lệ hay không.

Bây giờ chúng ta có thể chạy lệnh ipa-getkeytab như hình bên dưới. Tùy chọn -s được sử dụng để chỉ định máy chủ IPA, trong ví dụ này là   Đăng nhập để xem liên kết – máy chủ chúng tôi đang chạy lệnh này. Tùy chọn -p được sử dụng để chỉ định tên chính của máy chủ, trong trường hợp này là 'host/' theo sau là tên miền đủ điều kiện (FQDN) của máy tính Windows mà chúng tôi đã thêm thông qua giao diện web FreeIPA trước đó. Tùy chọn -e được sử dụng để chỉ định loại mã hóa được sử dụng để tạo khóa, ở đây chúng tôi đang sử dụng arcfour-hmac. Tùy chọn -k được sử dụng để chỉ định tệp keytab mà chúng tôi muốn tạo, trong trường hợp này, tệp   Đăng nhập để xem liên kết sẽ được tạo trong thư mục làm việc hiện tại. Cuối cùng, tùy chọn -P được sử dụng để chỉ định mật khẩu cho khóa, bạn sẽ cần ghi nhớ điều này vì chúng ta sẽ nhập nó trên máy tính Windows sau này.

Mã nguồn [Chọn]
[root@ipa ~]# ipa-getkeytab -s ipa.example.com -p host/windows.example.com -e arcfour-hmac -k krb5.keytab.windows -P
New Principal Password:
Verify Principal Password:
Keytab successfully retrieved and stored in: krb5.keytab.windows

Nếu bạn nhận được thông báo lỗi "Không tìm thấy hiệu trưởng người dùng Kerberos. Bạn có Bộ nhớ đệm thông tin xác thực hợp lệ không?" đảm bảo rằng bạn đã chạy thành công lệnh 'kinit'.

2. Cấu hình Windows

Máy tính Windows sẽ cần có khả năng phân giải tên của máy chủ IPA bằng DNS, vì vậy hãy đảm bảo rằng Windows có cấu hình DNS thích hợp cho việc này. Vì máy chủ FreeIPA của tôi đang quản lý DNS, nên tôi chỉ cần đặt máy Windows sử dụng FreeIPA cho DNS.

Trên máy tính Windows, hãy mở dấu nhắc lệnh với tư cách quản trị viên và chạy các lệnh bên dưới. Lưu ý rằng Vương quốc phải được chỉ định bằng chữ in hoa, vì đây là tùy chỉnh cho tên vương quốc trong Linux/Unix. Trong ví dụ của tôi, vương quốc là   Đăng nhập để xem liên kết và trung tâm phân phối khóa (KDC) là máy chủ FreeIPA, đối với tôi là   Đăng nhập để xem liên kết

Mã nguồn [Chọn]
ksetup /setdomain [REALM]
ksetup /addkdc [REALM] [KDC]
ksetup /addkpasswd [REALM] [KDC]
ksetup /setcomputerpassword [PASSWORD]
ksetup /mapuser * *

Lưu ý rằng Mật khẩu ở trên là mật khẩu mà chúng tôi đã đặt trong giao diện web FreeIPA cho máy chủ chính trước đó. Lệnh /mapuser sẽ ánh xạ tất cả các tài khoản trong vương quốc   Đăng nhập để xem liên kết Kerberos với bất kỳ tài khoản nào hiện có cùng tên trên máy tính Windows này.

Những thay đổi này sẽ yêu cầu khởi động lại, như bạn sẽ được thông báo, hãy tạm dừng việc này ngay bây giờ.


Tiếp theo nhấn tổ hợp phím Windows + R để mở cửa sổ Run, gõ gpedit.msc và chọn OK. Thao tác này sẽ mở Trình chỉnh sửa chính sách nhóm cục bộ cho máy.


Từ các tùy chọn Cấu hình Máy tính, chọn Cài đặt Windows > Cài đặt Bảo mật > Chính sách Cục bộ > Tùy chọn Bảo mật > Bảo mật Mạng: Định cấu hình các loại mã hóa được phép cho Kerberos.


Trong trường hợp này, chúng tôi sẽ chọn mọi thứ ngoại trừ hai tùy chọn DES đầu tiên. Tài liệu chính thức của FreeIPA tuyên bố chỉ yêu cầu chọn RC4_HMAC_MD5, nhưng tôi đã nhận được lỗi liên quan đến các loại mã hóa được hỗ trợ khi chỉ bật mã hóa này. Chọn Áp dụng hoặc OK để lưu các thay đổi.


Khi quá trình này hoàn tất, hãy khởi động lại máy Windows để áp dụng các thay đổi ksetup từ trước đó.

Khi máy Windows được sao lưu, hãy tạo tài khoản người dùng cục bộ ánh xạ tới người dùng tồn tại trong FreeIPA. Trong ví dụ của tôi, tôi có một người dùng tên là 'kiểm tra' đã được tạo trong giao diện web FreeIPA, vì vậy tôi sẽ tạo một người dùng có tên người dùng kiểm tra trong Windows. Bạn KHÔNG cần đặt mật khẩu cho tài khoản người dùng này trong Windows, vì việc xác thực sẽ do FreeIPA xử lý.

Bạn có thể tạo tài khoản người dùng cục bộ bằng cách nhấn phím Windows + R để mở cửa sổ Run và nhập 'mmc' rồi chọn OK.


Khi cửa sổ MMC mở ra, hãy chọn Tệp > Thêm/Xóa phần đính kèm...


Từ cửa sổ tiếp theo, chọn Nhóm và người dùng cục bộ, sau đó nhấp vào nút "Thêm >", tiếp theo là Kết thúc, sau đó nhấp vào OK. Từ đây, bạn có thể tạo tài khoản người dùng cục bộ của mình trong Windows. Hãy nhớ rằng, chúng tôi KHÔNG muốn thêm bất kỳ mật khẩu nào vào những mật khẩu này. Tên người dùng cũng cần khớp với tên người dùng tồn tại trong FreeIPA.


3. Cấu hình máy tính từ xa

Theo mặc định, tài khoản người dùng mới sẽ không thể kết nối qua máy tính từ xa trừ khi được cấp quyền làm như vậy. Trong khi bạn vẫn mở bảng điều khiển Nhóm và Người dùng Cục bộ thông qua MMC, hãy đi tới Nhóm và chọn nhóm Người dùng Máy tính Từ xa và thêm tài khoản người dùng của bạn vừa được tạo vào nhóm này.


Trước khi thực hiện lần đăng nhập đầu tiên, bạn sẽ muốn tạm thời vô hiệu hóa Xác thực Cấp độ Mạng (NLA) của máy tính để bàn từ xa trên máy chủ Windows, nếu không, bạn sẽ nhận được thông báo lỗi về việc NLA không thể liên hệ với bộ điều khiển miền Windows trong lần đăng nhập đầu tiên. Điều này dường như chỉ xảy ra khi đăng nhập vào tài khoản lần đầu tiên bằng mật khẩu đã hết hạn yêu cầu thay đổi. Khi mật khẩu đã được đặt và không còn ở trạng thái hết hạn, đăng nhập bằng NLA sẽ hoạt động tốt.

Vậy là xong, bây giờ bạn có thể đăng nhập vào Windows bằng tài khoản này. Bạn sẽ cần chỉ định tên người dùng@REALM để đăng nhập, vì vậy nếu bạn đã làm theo ví dụ này thì tôi sẽ sử dụng [email protected]. Đừng quên rằng tên vương quốc phải được viết hoa. Ngoài ra, theo mặc định khi bạn tạo tài khoản người dùng mới trong FreeIPA, mật khẩu sẽ ở trạng thái hết hạn và sẽ cần được thay đổi trong lần đăng nhập đầu tiên, như minh họa bên dưới.


Bằng cách này, chúng tôi không còn cần phải truy cập máy chủ Windows đơn lẻ này bằng tài khoản người dùng cục bộ nữa, giờ đây chúng tôi có thể truy cập nó bằng tài khoản của mình trong lĩnh vực FreeIPA Kerberos. Đúng là ban đầu chúng ta vẫn phải tạo một tài khoản cục bộ trên máy tính Windows, tuy nhiên, việc xác thực được xử lý tập trung trên máy chủ FreeIPA bằng Kerberos, không có mật khẩu nào được lưu trữ trên máy Windows, điều này có thể giúp việc quản lý thông tin xác thực dễ dàng hơn.

4. Xử lý sự cố

Tôi đã gặp đủ loại vấn đề khác nhau trong quá trình thiết lập ban đầu, vì vậy tôi đã ghi lại tất cả chúng ở đây cùng với các giải pháp liên quan. Trong hầu hết các trường hợp, các bước trên sẽ "chỉ hoạt động". Hy vọng rằng các giải pháp này hữu ích, vì hầu hết các lỗi này đến từ máy chủ Windows và tất nhiên khi bạn thực hiện tìm kiếm trên Google cho các lỗi đó, bạn sẽ nhận được các giải pháp khắc phục sự cố trong Windows, thay vì các câu trả lời liên quan đến FreeIPA.

4.1. Hiện tại không có máy chủ đăng nhập nào để phục vụ yêu cầu đăng nhập.

Đối với tôi, điều này là do thiếu DNS trên máy chủ Windows. Máy chủ Windows không trỏ đến máy chủ DNS có các bản ghi cần thiết cho FreeIPA. Vì tôi đã đặt chính máy chủ FreeIPA của mình để cung cấp DNS, cách khắc phục ở đây là chỉ cần sử dụng máy chủ FreeIPA cho DNS.

Nếu phiên bản FreeIPA của bạn không được định cấu hình để quản lý DNS, bạn có thể thêm phiên bản này bằng cách cài đặt gói ipa-server-dns. Để thiết lập, hãy chạy lệnh 'ipa-dns-install' và làm theo lời nhắc. Khi tôi thiết lập tính năng này để quản lý DNS cho miền   Đăng nhập để xem liên kết, tôi nhận được thông báo lỗi bên dưới.

Mã nguồn [Chọn]
2016-12-29T04:27:00Z DEBUG The ipa-dns-install command failed, exception: ValueError: DNS zone example.com.
Điều này đơn giản là vì DNS cho miền   Đăng nhập để xem liên kết đã tồn tại sẵn trên Internet. Tôi đã tạm thời thay đổi tệp /etc/resolv.conf để trỏ tới chính máy chủ FreeIPA thay vì máy chủ DNS bên ngoài rồi chạy lại ipa-dns-install. Trong quá trình này, bạn có thể chỉ định một công ty chuyển tiếp bên ngoài để sử dụng. Nếu bạn đã có một số máy chủ DNS khác xử lý các bản ghi cho vùng Kerberos của mình, thì có thể bạn sẽ muốn sử dụng máy chủ này thay vì định cấu hình FreeIPA để quản lý DNS.

4.2. Loại mã hóa được yêu cầu không được KDC hỗ trợ.

Khi tôi cố gắng kết nối Windows qua máy tính để bàn từ xa, tôi được yêu cầu thay đổi mật khẩu đã hết hạn của mình. Điều này được mong đợi, vì nó được yêu cầu đối với tất cả các tài khoản mới được tạo trong FreeIPA theo mặc định. Sau khi nhập mật khẩu mới, tôi nhận được thông báo lỗi "Loại mã hóa được yêu cầu không được KDC hỗ trợ." Điều này là do ban đầu trong Windows, tôi không bật đủ loại mã hóa, với tất cả các loại được chọn ngoại trừ hai tùy chọn DES đầu tiên như đã đề cập trước đó, tôi có thể đăng nhập mà không gặp thêm sự cố nào. Cuộn lên một chút và xem qua phần mà chúng tôi đã định cấu hình phần này.

4.3. preauth (encrypted_timestamp) xác minh thất bại: Kiểm tra tính toàn vẹn giải mã không thành công.

Khi cố gắng đăng nhập qua máy tính từ xa, tôi nhận được một số thông báo chung chung về việc đăng nhập không thành công. Chỉ khi tôi kiểm tra tệp /var/log/krb5kdc.log trên máy chủ FreeIPA thì điều này mới có ý nghĩa.

Mã nguồn [Chọn]
Dec 28 20:44:14 ipa.example.com krb5kdc[44951](info): AS_REQ (7 etypes {18 17 23 3 1 24 -135}) 192.168.1.12: NEEDED_PREAUTH: [email protected] for kadmin/[email protected], Additional pre-authentication required
Dec 28 20:44:14 ipa.example.com krb5kdc[44950](info): preauth (encrypted_timestamp) verify failure: Decrypt integrity check failed
Dec 28 20:44:14 ipa.example.com krb5kdc[44950](info): AS_REQ (7 etypes {18 17 23 3 1 24 -135}) 192.168.1.12: PREAUTH_FAILED: [email protected] for kadmin/[email protected], Decrypt integrity check failed

Nếu bạn biết bất cứ điều gì về Kerberos, bạn sẽ biết rằng điều quan trọng là tất cả các máy chủ phải duy trì cùng thời gian. Trong trường hợp này, máy chủ Windows của tôi nằm trong múi giờ địa phương của AEDT, nhưng máy chủ FreeIPA nằm trong PST. Tôi đã có thể giải quyết vấn đề này bằng cách đặt múi giờ trên máy chủ FreeIPA bằng lệnh bên dưới sao cho khớp với thời gian của máy chủ Windows.

Mã nguồn [Chọn]
[root@ipa log]# date
Wed Dec 28 20:45:04 PST 2016
[root@ipa log]# timedatectl set-timezone Australia/Sydney
[root@ipa log]# date
Thu Dec 29 15:46:29 AEDT 2016

Tôi đề xuất hướng dẫn của chúng tôi về cách định cấu hình NTP trong Linux nếu bạn cần hỗ trợ thêm về vấn đề này.

4.4. Tài khoản của bạn đã bị vô hiệu hóa. Vui lòng xem quản trị viên hệ thống của bạn.

Điều này khá đơn giản, sau nhiều lần thử đăng nhập trong khi thực hiện khắc phục sự cố, tôi đã khóa tài khoản trong FreeIPA. Tệp /var/log/krb5kdc.log trên máy chủ FreeIPA cho thấy:

Mã nguồn [Chọn]
Dec 29 15:46:39 ipa.example.com krb5kdc[44950](info): AS_REQ (7 etypes {18 17 23 3 1 24 -135}) 192.168.1.12: CLIENT KEY EXPIRED: [email protected] for krbtgt/[email protected], Password has expired
Dec 29 15:46:49 ipa.example.com krb5kdc[44951](info): AS_REQ (7 etypes {18 17 23 3 1 24 -135}) 192.168.1.12: LOCKED_OUT: [email protected] for kadmin/[email protected], Clients credentials have been revoked

4.5. Đừng quên yêu cầu mật khẩu FreeIPA.

Trong khi cố gắng đặt mật khẩu mới trong lần đăng nhập đầu tiên bằng tài khoản mới, tôi đã không chọn được mật khẩu đủ mạnh theo chính sách mật khẩu FreeIPA của mình. Điều này dẫn đến thông báo lỗi bên dưới trong tệp /var/log/kaadmind.log trên máy chủ FreeIPA. Tất nhiên, giải pháp là sử dụng một mật khẩu mạnh hơn.

Mã nguồn [Chọn]
Dec 29 15:54:58 ipa.example.com kadmind[44955](Error): password quality module empty rejected password for [email protected]: Empty passwords are not allowed
Dec 29 15:54:58 ipa.example.com kadmind[44955](Notice): chpw request from 192.168.1.12 for [email protected]: Password is too short

4.6. Cơ sở dữ liệu bảo mật trên máy chủ không có tài khoản máy tính cho mối quan hệ tin cậy máy trạm này.

Tôi không chắc chính xác mình đã sửa lỗi này như thế nào, về cơ bản, phần bên dưới là nội dung hiển thị trong tệp /var/log/krb5kdc.log trên máy chủ FreeIPA khi máy chủ Windows thông báo lỗi này.

Mã nguồn [Chọn]
Dec 29 15:55:16 ipa.example.com krb5kdc[44951](info): AS_REQ (7 etypes {18 17 23 3 1 24 -135}) 192.168.1.12: NEEDED_PREAUTH: [email protected] for krbtgt/[email protected], Additional pre-authentication required
Dec 29 15:55:16 ipa.example.com krb5kdc[44951](info): AS_REQ (7 etypes {18 17 23 3 1 24 -135}) 192.168.1.12: ISSUE: authtime 1482987316, etypes {rep=18 tkt=18 ses=18}, [email protected] for krbtgt/[email protected]
Dec 29 15:55:16 ipa.example.com krb5kdc[44951](info): TGS_REQ (7 etypes {18 17 23 3 1 24 -135}) 192.168.1.12: UNKNOWN_SERVER: authtime 0,  [email protected] for krbtgt/[email protected], Server not found in Kerberos database

Về cơ bản, tôi đã chạy lại các lệnh ksetup được đề cập ở trên, thực hiện khởi động lại lần nữa và mọi thứ đều ổn, vì vậy có thể tôi đã mắc một số lỗi đánh máy trong lần đầu tiên hoặc DNS của tôi không được định cấu hình đúng trong lần đầu tiên tôi chạy qua các lệnh ksetup. Những thứ khác cần kiểm tra là máy chủ chính trong FreeIPA khớp chính xác với tên máy chủ của máy chủ Windows và giá trị được chỉ định trong tùy chọn -p khi chạy ipa-getkeytab.

4.7. Máy tính từ xa mà bạn đang cố kết nối yêu cầu Xác thực cấp độ mạng (NLA), nhưng không thể liên hệ với bộ điều khiển miền Windows của bạn để thực hiện NLA. Nếu bạn là quản trị viên trên máy tính từ xa, bạn có thể tắt NLA bằng cách sử dụng các tùy chọn trên tab Từ xa của hộp thoại Thuộc tính hệ thống.

Như đã khuyên, giải pháp là tắt NLA trên máy tính Windows. Điều này sẽ không thành công vì không có bộ điều khiển miền Windows nào để liên hệ khi chúng tôi đang sử dụng FreeIPA. Tôi nhận thấy rằng đây chỉ là sự cố khi kết nối với máy tính từ xa bằng tài khoản mới lần đầu tiên. Sau lần đăng nhập đầu tiên và mật khẩu đã hết hạn cho tài khoản đã được đặt lại, việc bật lại NLA dường như hoạt động mà không gặp sự cố. Lưu ý rằng việc bật NLA có thể gặp sự cố trong tương lai khi mật khẩu tài khoản hết hạn. Miễn là bạn thay đổi mật khẩu trên một số máy chủ Linux khác hoặc trực tiếp trong chính FreeIPA thì đây không phải là vấn đề và bạn có thể bật NLA.

4.8. Các sự cố khác

Đối với bất kỳ sự cố kết nối nào khác, tôi khuyên bạn nên xác nhận rằng tường lửa trên máy chủ FreeIPA của bạn đang cho phép các cổng cần thiết đi qua từ máy chủ Windows. Có khá nhiều cổng cần thiết để mọi thứ hoạt động tốt, nếu nghi ngờ, bạn có thể thử tạm thời vô hiệu hóa tường lửa của mình và kiểm tra lại vì điều này sẽ xác nhận hoặc từ chối liệu tường lửa có phải là vấn đề hay không. Nếu đúng như vậy, chỉ cần kiểm tra nhật ký tường lửa và xem lưu lượng truy cập đang bị giảm hoặc tốt hơn là chỉ làm điều này thay vì tạm thời giảm bảo mật của bạn bằng cách vô hiệu hóa tường lửa.

Để có được đầy đủ các tính năng mà Microsoft Windows cung cấp, bạn nên kết nối máy Windows với một miền Active Directory. Tuy nhiên, nếu điều này không thực tế do có một số lượng nhỏ máy Windows trong môi trường của bạn, bạn có thể thực hiện các bước trên để đăng nhập vào Windows bằng thông tin đăng nhập của người dùng từ FreeIPA bằng cách sử dụng Kerberos, cung cấp cho chúng tôi đăng nhập một lần.

Mặc dù về mặt lý thuyết, điều đó nghe có vẻ tốt nhưng giải pháp này thường có thể khó hoạt động chính xác, như bạn đã thấy trong phần khắc phục sự cố ở trên, tôi đã gặp khá nhiều lỗi ngẫu nhiên trong quá trình thiết lập.