OpenLDAP, Samba 및 비밀번호 에이징


13

단일 사용자 암호 쌍을 통해 모든 IT 리소스를 사용할 수있는 시스템을 구성하고 있습니다. 서버의 셸에 대한 액세스, Samba 도메인, WiFi, OpenVPN, Mantis 등에 로깅 (특정 서비스에 대한 액세스 권한 포함) 그룹 멤버쉽 또는 사용자 오브젝트 필드 별). 네트워크에 개인 데이터가 있으므로 EU 데이터 보호 지침 (또는 폴란드 버전)에 따라 암호 에이징을 구현해야합니다.

문제는 LDAP의 Samba 및 POSIX 계정이 다른 비밀번호 해시 및 에이징 정보를 사용한다는 것입니다. 비밀번호 자체를 동기화하는 것은 쉽지만 ( ldap password sync = Yesin smb.conf) 믹스에 비밀번호 에이징을 추가하면 문제가 발생합니다. Samba는 shadowLastChange를 업데이트하지 않습니다. 와 함께 obey pam restrictions = YesWindows 사용자가 오래된 암호를 변경할 수없는 시스템 을 만들지 만 암호를 사용하지 않으면 홈 디렉토리가 자동으로 생성되지 않습니다. 다른 방법은 비밀번호 변경에 LDAP 확장 조작 사용을 사용하는 것이지만 smbk5pwd모듈은 설정하지 않습니다. 더 나쁜 것은 OpenLDAP 관리자는이 필드가 더 이상 사용되지 않는 것으로 간주되므로 패치를 수락하지 않습니다.

그래서 내 질문은, 가장 좋은 해결책은 무엇입니까? 그들의 장점과 단점은 무엇입니까?

  1. LDAP ppolicy및 내부 LDAP 비밀번호 만료를 사용합니까?

    1. NSS, PAM 모듈, 삼바, 다른 시스템과 얼마나 잘 작동합니까?
    2. NSS 및 PAM 모듈을 섀도우가 아닌 ppolicy를 사용하도록 특수하게 구성해야합니까?
    3. GOsa²ppolicy 와 함께 작동 합니까 ?
    4. ppolicy사용 가능 LDAP에서 작동 할 수있는 다른 관리 도구가 있습니까?
  2. LDAP에서 필드를 업데이트하는 비밀번호 변경 스크립트를 함께 해킹하십시오. (사용자가 비밀번호를 변경하지 않고 필드를 업데이트 할 가능성을 남겨 둡니다)


이것은 잘 작성된 질문입니다. 나는 당신을 도울 수 있기를 바랍니다 ...
gWaldo

답변:


1

EXOP 암호 변경이 발생할 때마다 속성 shadowlastchange을 업데이트하기 위해 호출 된 자체 OpenLDAP 오버레이를 작성했습니다 shadowLastChange. 다음에서 활성화됩니다 slapd.conf.

moduleload smbk5pwd
moduleload shadowlastchange
...

database bdb
...
overlay smbk5pwd
overlay shadowlastchange

smb.confEXOP을 통해 비밀번호를 변경 하도록 구성 했습니다.

ldap passwd sync = Only

그런 다음 각 계정에 대해 shadowMax암호가 유효한 일 수로 설정 하십시오. OpenLDAP 모듈은 나머지를 처리합니다!


당신은 ppolicy와 함께 그것을 실행하려고 했습니까?
Hubert Kario

아니요. 시도해보고 어떻게 진행되는지 알려주십시오.
200_success

어느 것 같습니다 ppolicy또는 smbk5pwd데비안 스퀴즈 OpenLDAP를에 오버레이 업데이 트를 shadowLastChange. 예, 데비안!
Hubert Kario

1

스탑 갭 (Stop-gap) shadowLastChange으로 암호 변경을 업데이트하는 Samba 용 스크립트를 만들었습니다 .

#!/bin/sh
# script to update shadowLastChange when samba updates passwords
# it's not needed when using 'passwd', it does update the field,
# even if pam_ldap is using LDAP Extented Operation to change password

LDAP_MODIFY="/usr/bin/ldapmodify"
LDAP_SEARCH="/usr/bin/ldapsearch"
LDAP_USER="uid=shadow-update,ou=Services,dc=example,dc=com"
LDAP_PASSWORD="change-me"
LDAP_HOST="localhost"

# get date
SLC=$((`date '+%s'` / 24 / 3600))

# get user login name
user=$1

# find user's DN
dn=$($LDAP_SEARCH -x -h $LDAP_HOST -LLL -b dc=example,dc=com "(uid=$user)" dn)
dn=${dn#dn:}

# check if DN is not base64 encoded
if [ "${dn:0:1}" = ":" ]; then
        # update password change date
        echo "dn:$dn
changetype: modify
replace: shadowLastChange
shadowLastChange: $SLC" | cat | $LDAP_MODIFY -x -h "$LDAP_HOST" \
 -D "$LDAP_USER" -w "$LDAP_PASSWORD" > /dev/null 2>&1
else
        # update password change date
        echo "dn: $dn
changetype: modify
replace: shadowLastChange
shadowLastChange: $SLC" | cat | $LDAP_MODIFY -x -h "$LDAP_HOST" \
 -D "$LDAP_USER" -w "$LDAP_PASSWORD" > /dev/null 2>&1
fi

err=$?

if [ ! $err -eq 0 ]; then
   echo "error: can't update shadowLastChange: $err"
   echo "`date`: shadow.sh: can't update shadowLastChange: $err"\
       >> /var/log/shadow-update.log
   exit;
fi

echo OK

삼바에서 IT 요구 config (설정) unix password sync으로 설정 yes, passwd chat설정 *OK*passwd program와 위의 스크립트에 "%u"PARAM있다.

에 지정된 계정 LDAP_USER은 LDAP에서 작성해야하며 uid모든 Samba 사용자 가 읽을 수있는 권한과 쓰기 권한이 부여되어야 shadowLastChange합니다.


1

(진행중인 작업, 나중에 세부 사항을 추가하겠습니다)

다들 좋은 소식입니다! 테스트 환경에서 거의 모든 것이 작동합니다 ... :

  1. 암호 정책 (모두 품질 - 시간 - 현명한) OpenLDAP를 레벨에 적용됩니다 (덕분에 ppolicy, not24get그리고 passwdqc)
  2. 암호는 Samba와 POSIX간에 두 가지 방식으로 동기화됩니다 (감사합니다 smbk5pwd). 참고 : Samba 및 ppolicy를 사용한 품질 검사는 명확하지 않습니다. password check script( pwqcheck -1from passwdqc)은 LDAP와 동일한 검사를 수행해야하거나 사용자가 "너무 쉬운 암호로 시도하십시오"대신 권한이 거부됩니다.
  3. PAM과 Samba는 모두 암호가 곧 만료 될 것이라고 경고합니다.
  4. 사용자 디렉토리가 있습니다 사용하여 작성pam_mkhomedir
  5. RFC2307bis (및 관련 스키마)의 GOsa² 구현은 uid그룹 항목에 삽입 되므로 NIS (대부분 "UNIXy"항목) 또는 RFC2307bis 스키마 (대부분 "AD 용"응용 프로그램)를 예상하는 응용 프로그램은 제대로 작동합니다.

유일한 문제는 계정을 비활성화하려면 CLI 도구 (또는 GOsa postmodify 스크립트 작성)를 사용해야하거나 PAM 및 Samba에 대해서만 LDAP 수준에서 계정이 잠기지 않는 것입니다. 암호 만료는 계속 적용되므로 큰 문제는 아닙니다.


0

GOsa 개발자 중 한 사람으로부터 답변을 받았습니다. 현재 GOsa는 어떤 식 으로든 정책 오버레이를 지원하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.