AD에 대해 Linux 서버를 인증하는 것이 얼마나 실용적입니까?


18

우리는 소프트웨어 개발 회사에서 Windows와 Linux 서버를 모두 사용합니다.

이 설정의 단점 중 하나는 싱글 사인온 솔루션이 없다는 것입니다. 우리는 AD에 대해 인증하려는 Linux보다 Microsoft 상점보다 더 많습니다.

온라인에서 몇 가지 기사를 읽었으며 이것이 가능하다는 것을 이해합니다.

현재 Linux에서 인증이 필요한 다음 서비스를 사용하고 있습니다.
-git 서버 (SSH를 통해)
-Sendmail-
현재 .htaccess 파일을 사용하는 Apache 웹 서버.
-SAMBA 파일 공유

내가 알고 싶은 것은 이런 종류의 설정이 얼마나 실용적입니까? 실제로 작동합니까, 아니면 오류가 발생하기 쉬운가요?


모두에게 큰 답변을 주셔서 감사합니다. 이것은 실제 환경 에서이 설정의 경험이 무엇인지 더 잘 느끼게합니다. 정말 도움이됩니다. 그들 모두가 질문에 대답하기 때문에 여기서 정답을 선택하는 것은 어렵습니다.
Philip Fourie

FreeIPA 확인 :) freeipa.org
GioMac

답변:


11

어렵지 않고 완벽하게 실용적입니다.

AD 인증을 사용하는 수백 개의 듀얼 부팅 데스크탑 시스템과 AD 인증을 사용하여 Windows 클라이언트가 사용자의 명시적인 인증없이 Samba 공유를 사용할 수 있도록하는 많은 서버가 있습니다.

SF에 관한 또 다른 기사가 있습니다.

기본적으로 kerberos, winbind, nss 및 pam을 구성해야합니다.

그런 다음 당신은 a kinit와 당신의 일을 net ads join합니다.

원하는 경우 인증에 여러 가지 방법을 사용하도록 pam을 구성 할 수 있으므로 하나가 작동하지 않으면 다음으로 넘어갑니다.

일반적으로 파일 공유를 Windows 서버에 제공하는 서버에는 파일, winbindd 및 ldap을 사용합니다.

가능하면 계정 정보에는 LDAP를 사용하고 인증에는 windbind를 엄격하게 사용하지만 필요한 경우 /etc/ldap.conf에 속성을 매핑 할 수 있다고 생각합니다. 계정 정보에 winbindd를 사용하면 RID (해싱 방법)를 사용하여 uid / gid를 생성 할 수 있지만 다른 방법을 사용할 수도 있습니다. 우리는 하나의 큰 파일 서버에서 RID를 사용했으며 실제로 고통 스럽기 때문에 가능한 경우 다른 옵션 중 하나를 탐색하려고 시도합니다. 이 경우 모든 AD 사용자 및 그룹은 업스트림 IDM 시스템에 의해 LDAP에 반영되므로 새 서버의 계정 정보에는 LDAP를 사용하고 인증에는 순수하게 winbind를 사용합니다.


6

Likewise Open을 사용하면 인증이 매우 간단합니다. http://www.likewise.com/products/likewise_open/index.php

거의 모든 Linux 인프라에는 Likewise Open 덕분에 중앙 집중식 인증 및 사용자 관리 기능이 있습니다. 설치 및 구현이 놀랍도록 간단합니다. 나는 그것에 대해 충분히 좋은 말을 할 수 없습니다.

참고로 UID 및 GID는 해시 기능에 따라 할당되므로 전체 인프라에서 동일하므로 NFS 마운트가 완벽하게 작동합니다.


1
여러 서버에서 마찬가지로 열어서 잘 작동한다는 것을 알았습니다. Apache / Sendmail이 외부 머신 인 경우 대기 시간 /로드가 추가되었는지 확인할 수 있습니다.
Kyle Brandt

3
링크가 깨졌습니다
gogaz

(웹 사이트 내용에 의해) 회사가이 제품을 더 이상 사용하지 않는 것 같습니다.
Alexei Martianov

4

Unix 용 Windows 서비스를 설치하고 AD에 "Unix Authenticator"라는 사용자를 추가 한 다음 Linux 시스템에서 다음 구성 파일을 변경했습니다.

/etc/ldap.conf :
host ldap.<foo>.com
base cn=Users,dc=<foo>,dc=com
binddn cn=Unix Authenticator,cn=Users,dc=<foo>,dc=com
bindpw <password>
nss_base_passwd cn=Users,dc=<foo>,dc=com?sub
nss_base_shadow cn=Users,dc=<foo>,dc=com?sub
nss_base_group cn=Users,dc=<foo>,dc=com?sub
nss_map_objectclass posixAccount User
nss_map_objectclass shadowAccount User
nss_map_objectclass posixGroup Group
nss_map_attribute cn msSFUName
nss_map_attribute uid msSFUName
nss_map_attribute gid gidNumber
nss_map_attribute gecos sAMAccountName
nss_map_attribute homeDirectory msSFUHomeDirectory
nss_map_attribute uniqueMember Member
pam_login_attribute msSFUName
pam_filter objectclass=user
pam_password ad
/etc/ldap.secret :
<password>
/etc/nsswitch.conf :
passwd: compat ldap
shadow: compat ldap
group: compat ldap
/etc/nsswitch.ldap :
host files dns
/etc/pam.d/system-auth :
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth sufficient /lib/security/pam_ldap.so use_first_pass
auth required /lib/security/pam_deny.so

account sufficient /lib/security/pam_ldap.so
account required /lib/security/pam_unix.so

password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok md5 shadow use_authtok
password sufficient /lib/security/pam_ldap.so use_first_pass use_authtok
password required /lib/security/pam_deny.so

session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so

도움이 되었기를 바랍니다.


이것은 흥미로운 접근 방법입니다.이 길을 탐색 할 것입니다.
Philip Fourie

1
auth (/etc/pam.d/system-auth)에 pam_ldap을 그대로 사용하지 마십시오. 일반 텍스트로 비밀번호를 보냅니다. LDAP를 통해 인증하려면 LDAPS 또는 GSSAPI를 사용해야합니다. 안전하게하려면 NSS에 LDAP를 사용하고 인증에 Kerberos를 사용할 수 있습니다 (아래 참조)
TheFiddlerWins

2

AD에 대해 인증하는 Windows 사용자가 있지만 대부분의 서버 (공용 드라이브 등)는 Linux이며 도메인의 일부입니다. Windows PoV에서 아무도 통지하지 않습니다. 내 측면에서, 그것은 내 Windows 사용자 이름으로 약간 과일 맛이 나는 느낌이지만 그 크기 정도입니다.

그냥 평범한 삼바를 사용하십시오.


2

Samba를 사용할 필요가 없으며 AD는 Kerberos 및 LDAP를 직접 지원합니다. 대부분의 배포에서 외부 소프트웨어를 사용할 이유가 없습니다.

데비안 / 우분투의 경우 libnss-ldap 및 libpam-krb5로 수행 할 수 있습니다. 100 % 달성하기위한 몇 가지 요령이 있습니다. 이것은 Linux 사용자를 위해 "unixHomeDirectory"가 채워져 있고 Linux 상자가 Windows 시스템에서 공통으로 NTP를 사용하고 (Kerberos에 필요함) 일반 텍스트 NSS 조회 (비밀번호가 아닌 그룹 멤버쉽 정보 등)로도 괜찮다고 가정합니다. TLS를 사용하지만 설정하기가 더 복잡합니다). TLS를 사용하도록 설정되어 있지 않으면 PAM에서 암호 또는 인증 소스로 pam_ldap이 없어야합니다.

/etc/ldap.conf

# LDAP Configuration for libnss-ldap and libpam-ldap.
# Permit host to continue boot process with out contacting LDAP server
bind_policy soft
# Define LDAP servers to use for queries, these must be Global Catalog servers
uri ldap://ldap.site.company.local
# Define root search location for queries
base dc=company,dc=local
#debug 1
# LDAP version, almost always going to be v3, it is quite mature
ldap_version 3
# Username used to proxy authentication. You can have this in a separate file owned by root for security OR use TLS/SSL (see man page)
# Do NOT use LDAP for authentication if you are using plain text binds, use Kerberos instead (and LDAP for authorization only). See libpam-krb5.
binddn cn=ldap-auth-svc,ou=ldap,ou=services,dc=site,dc=company,dc=local
# Password for proxy acct
bindpw SooperSekeretPazzwerd
#  TCP port to perform queries on, 3268 is a Global Catalog port which will reply for all users in *.company.local
port 3268
# Search range scope (sub = all)
scope sub
# Tell the client to close TCP connctions after 30 seconds, Windows will do this on the server side anyways, this will prevent errors from showing up in the logs.
 idle_timelimit 30
# Expect queries for group membership to return DN for group members instead of usernames (lets you use MSAD group membership seamlessly)
nss_schema rfc2307bis
# Filters - User accounts must have a UID >= 2000 to be recognized in this configuration and must have a unixHomeDirectory defined.
nss_base_group dc=company,dc=local?sub?&(objectClass=group)(gidNumber=*)
nss_base_user dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
nss_base_shadow dc=company,dc=local?sub?&(objectClass=user)(!(objectClass=localputer))(uidNumber>=2000)(unixHomeDirectory=*)
# Object Class mappings.  You may want to have the posixAccount to map to "mail" and have users login with their email addresses, i.e.  "nss_map_objectclass posixAccount mail".
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_objectclass posixGroup group
# Attribute mappings.
nss_map_attribute uniqueMember member
nss_map_attribute uid sAMAccountName
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute shadowLastChange pwdLastSet
# Attribute in LDAP to query to match the username used by PAM for authentication
pam_login_attribute sAMAccountName
# Filter for objects which are allowed to login via PAM
pam_filter objectclass=User

Linux 상자에서 AD에 대해 알고있는 DNS 서버를 사용한다고 가정하고 /etc/krb5.conf를 편집 할 필요는 없습니다 (적절한 SRV 레코드가있는 _msdcs 영역을 확인할 수 있음)

/etc/nsswitch.conf에는 사용자, 그룹, 섀도에 대한 "파일 ldap"이 있어야합니다.

SSSD를 사용하는 Red Hat의 경우 :

/etc/sssd/sssd.conf

[domain/AD]
id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = ldap

ldap_uri = ldap://ldap.company.local:3268/
ldap_search_base = dc=company,dc=com
ldap_default_bind_dn = cn=ldap-auth-svc,ou=ldap,ou=services,dc=site,dc=company,dc=local
ldap_default_authtok = SooperSekeretPazzwerd
ldap_schema = rfc2307bis
ldap_user_object_class = user
ldap_group_object_class = group
ldap_user_name = sAMAccountName
ldap_user_home_directory = unixHomeDirectory
enumerate = true
ldap_tls_reqcert = never
ldap_tls_cacertdir = /etc/openldap/cacerts

ldap_id_use_start_tls = False
cache_credentials = True
krb5_realm = SITE.COMPANY.COM
case_sensitive = false
[sssd]
services = nss, pam
config_file_version = 2

domains = AD
[nss]
filter_users = root,named,avahi,nscd

이 시나리오에서 AD 측에서 변경해야합니까? SAMBA를 사용할 때 "Windows 용 Unix 도구"를 설치해야한다는 것을 기억하십니까?
Martin Nielsen

이 솔루션은 SAMBA에 의존하지 않으며 기본 LDAP / Kerberos를 사용합니다. 유닉스 도구를 사용하는 유일한 이유는 POSIX 사용자 / 그룹 속성을 편집하기 위해 GUI를 얻는 것입니다. SSSD를 사용하는 경우에도 필요하지 않습니다. SAMBA (Winbind)를 사용하면 시스템이 Windows 클라이언트를 에뮬레이트하도록하는 소프트웨어를 설치할 수 있습니다. 위의 설정은 표준 LDAP / Kerberos 만 사용합니다.
TheFiddlerWins 2016 년

젠장, 난 "ldap / kerberos"를 쓰고 싶었다. 나는 무슨 일이 있었는지 모른다. 내 잘못. 그러나 실제로 LDAP / Kerberos에는 AD 용 Unix 도구가 필요하지 않습니까?
Martin Nielsen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.