IPA 서버를 설치하고, 복제 계약을 생성하고, AD 포리스트에 단방향 신뢰를 설정했습니다. IPA 서버는 DNS가 통합되어 있으며 자체 DNS 영역에 있습니다. 이는 예상대로 작동하며 내 AD 계정을 사용하여 IPA 서버에 로그인할 수 있습니다.
내 문제는 클라이언트를 설정할 때 IPA 사용자(예: 관리자)를 사용할 수 있지만 내 AD 계정을 사용하여 인증/로그인할 수 없다는 것입니다.
IPA 서버에서 HBAC 테스트를 실행하여 내 AD 사용자가 클라이언트에 액세스할 수 있음을 확인했습니다. 또한 IPA 클라이언트에서 AD 사용자에 대한 Kerberos 티켓을 성공적으로 얻을 수 있습니다.
IPA 클라이언트에서 AD 계정에 대한 ID 작업을 수행하면
알 수 없는 사용자 오류
SSH를 시도하면 보안 로그에 기본 인증 모듈에 불법/알 수 없는 사용자가 있다고 표시됩니다.
환경 세부 사항은 다음과 같습니다.
- 국제 음성 알파벳 버전 4.4.0
- IPA 서버: ipaserver01.ipa.us.example.com CentOS 7.3
- IPA 사본: ipaserver02.ipa.us.example.com CentOS 7.3
- IPA 클라이언트: ipaclient.us.example.com CentOS 7.3
- IPA 도메인: IPA.US.EXAMPLE.COM
- AD 포리스트: win.example.com
- 사용자:[이메일 보호됨]
/etc/sssd/sssd.conf:
[domain/ipa.us.example.com]
cache_credentials = True
krb5_store_password_if_offline = True
ipa_domain = ipa.us.example.com
id_provider = ipa
auth_provider = ipa
access_provider = ipa
ldap_tls_cacert = /etc/ipa/ca.crt
ipa_hostname = ipaclient.us.example.com
chpass_provider = ipa
ipa_server = _srv_, ipaserver02.ipa.us.example.com
dns_discovery_domain = ipa.us.example.com
subdomain_inherit = ignore_group_members
ignore_group_members = True
debug_level = 6
[sssd]
domains = ipa.us.example.com
config_file_version = 2
services = nss, sudo, pam, ssh, pac
subdomain_enumerate = all
debug_level = 6
[nss]
debug_level = 6
homedir_substring = /home
/etc/krb5.conf
#File modified by ipa-client-install
includedir /etc/krb5.conf.d/
includedir /var/lib/sss/pubconf/krb5.include.d/
[libdefaults]
default_realm = IPA.US.EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
rdns = false
ticket_lifetime = 24h
forwardable = true
udp_preference_limit = 0
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
IPA.US.EXAMPLE.COM = {
pkinit_anchors = FILE:/etc/ipa/ca.crt
}
[domain_realm]
.ipa.us.example.com = IPA.US.EXAMPLE.COM
ipa.us.example.com = IPA.US.EXAMPLE.COM
ipaclient.us.example.com = IPA.US.EXAMPLE.COM
.us.example.com = IPA.US.EXAMPLE.COM
us.example.com = IPA.US.EXAMPLE.COM
/var/로그/보안
May 17 10:23:23 lxmatazan100s sshd[8256]: reverse mapping checking getaddrinfo for dhcp-ngkusernetworkuzo-1921690252.revonly.kn [192.169.0.252] failed - POSSIBLE BREAK-IN ATTEMPT!
May 17 10:23:47 lxmatazan100s sshd[8256]: Invalid user [email protected] from 192.169.0.252
May 17 10:23:47 lxmatazan100s sshd[8256]: input_userauth_request: invalid user [email protected] [preauth]
May 17 10:23:50 lxmatazan100s sshd[8256]: Failed password for invalid user [email protected] from 192.169.0.252 port 51819 ssh2
May 17 10:23:53 lxmatazan100s sshd[8256]: Failed password for invalid user [email protected] from 192.169.0.252 port 51819 ssh2
May 17 10:23:56 lxmatazan100s sshd[8256]: Failed password for invalid user [email protected] from 192.169.0.252 port 51819 ssh2
May 17 10:23:56 lxmatazan100s sshd[8256]: error: PAM: User not known to the underlying authentication module for illegal user [email protected] from 192.169.0.252
May 17 10:23:56 lxmatazan100s sshd[8256]: Failed keyboard-interactive/pam for invalid user [email protected] from 192.169.0.252 port 51819 ssh2
May 17 10:23:56 lxmatazan100s sshd[8256]: Connection closed by 192.169.0.252 [preauth]
/var/log/sssd/sssd_ipa.us.example.com(이 항목은 AD 포리스트의 각 도메인에 대해 여러 번 존재합니다!)
(Wed May 17 08:25:50 2017) [sssd[be[ipa.us.example.com]]] [_dp_req_recv] (0x0400): DP Request [Account #134]: Receiving request data.
(Wed May 17 08:25:50 2017) [sssd[be[ipa.us.example.com]]] [dp_req_reply_gen_error] (0x0080): DP Request [Account #134]: Finished. Backend is currently offline.
(Wed May 17 08:25:50 2017) [sssd[be[ipa.us.example.com]]] [dp_table_value_destructor] (0x0400): Removing [0:1:0x0001:1:1:U:usa.win.example.com:[email protected]] from reply table
(Wed May 17 08:25:50 2017) [sssd[be[ipa.us.example.com]]] [dp_req_destructor] (0x0400): DP Request [Account #134]: Request removed.
(Wed May 17 08:25:50 2017) [sssd[be[ipa.us.example.com]]] [dp_req_destructor] (0x0400): Number of active DP request: 0
/var/log/sssd/sssd_nss.log
(다시 말하지만, 이는 AD 포리스트의 모든 도메인에 존재합니다)
(Wed May 17 08:25:50 2017) [sssd[nss]] [nss_cmd_getpwnam_search] (0x0100): Requesting info for [[email protected]]
(Wed May 17 08:25:50 2017) [sssd[nss]] [sysdb_search_user_by_upn] (0x0400): No entry with upn [[email protected]] found.
(Wed May 17 08:25:50 2017) [sssd[nss]] [get_dp_name_and_id] (0x0400): Not a LOCAL view, continuing with provided values.
(Wed May 17 08:25:50 2017) [sssd[nss]] [sss_dp_issue_request] (0x0400): Issuing request for [0x7f99f622c880:1:[email protected]:[email protected]]
(Wed May 17 08:25:50 2017) [sssd[nss]] [sss_dp_get_account_msg] (0x0400): Creating request for [usa.win.example.com][0x1][BE_REQ_USER][1][[email protected]:U]
(Wed May 17 08:25:50 2017) [sssd[nss]] [sss_dp_internal_get_send] (0x0400): Entering request [0x7f99f622c880:1:[email protected]:[email protected]]
(Wed May 17 08:25:50 2017) [sssd[nss]] [sss_dp_req_destructor] (0x0400): Deleting request: [0x7f99f622c880:1:[email protected]:[email protected]]
(Wed May 17 08:25:50 2017) [sssd[nss]] [sss_dp_get_reply] (0x0010): The Data Provider returned an error [org.freedesktop.sssd.Error.DataProvider.Offline]
(Wed May 17 08:25:50 2017) [sssd[nss]] [nss_cmd_getby_dp_callback] (0x0040): Unable to get information from Data Provider
Error: 3, 5, Failed to get reply from Data Provider
Will try to return what we have in cache
이제 시도해야 할 한 가지 작업은 클라이언트를 ipa.us.example.com DNS 도메인으로 이동하는 것입니다. 문서에서는 클라이언트가 서버와 동일한 DNS 도메인에 있을 필요가 없다고 구체적으로 언급하고 있습니다.
편집** - 이전에 /etc/pam.d/password-auth에서 ipa(신뢰할 수 없는) 사용자 인증을 수정했다고 생각하는 한 줄을 주석 처리했습니다. 이제 HBAC 규칙에서 사용자를 제거해도 여전히 인증할 수 있기 때문에 모든 사용자가 인증할 수 있다고 생각합니다. 해당 줄의 주석 처리를 제거했는데 이제 IPA 사용자가 인증할 수 없습니다. 이러한 사용자는 계속해서 조회할 수 있습니다(AD 사용자는 조회할 수 없음).
/etc/pam.d/비밀번호 확인
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth [default=1 success=ok] pam_localuser.so
auth [success=done ignore=ignore default=die] pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth sufficient pam_sss.so forward_pass
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
#The following line is what I had commented out
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session optional pam_oddjob_mkhomedir.so umask=0077
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
편집 #2**
이제 ipa 사용자가 내 클라이언트와 작업하고 있으며 sssd.conf의 [domain/ipa.us.example.com] 섹션에 "selinux_provider=none"을 포함해야 합니다. AD Trust 사용자는 여전히 동일한 오류로 인해 실패하고 있습니다.