리눅스 LDAP 계정 패스워드 변경 날짜 확인 방법
LDAP 패스워드 변경 날짜 확인하기 - Infracody LDAP 서버에서 사용자의 패스워드 변경 날짜를 확인하는 방법을 알아보세요. shadowLastChange 속성을 이용하여 패스워드 변경 시간을 조회하고, 날짜 형식을 변환하는 방법을 소개합니다.
인프라코디
리눅스에서 배시 쉘 스크립트를 사용하여 LDAP 계정들의 패스워드 변경 날짜을 확인하는 방법에 대해 알아보겠습니다.
LDAP 계정의 패스워드 변경 이력을 확인하기 위해 찾아보다가 배시 쉘 스크립트를 사용하여 간편하게 전체 LDAP 계정의 패스워드 변경 날짜을 확인할 수 있는 스크립트를 작성하여 쉽게 사용할 수 있습니다.
환경 정보
- 운영 체제 : Rocky Linux 9.2
- 실행 계정 : root
- SSH 접속 및 외부 인터넷이 가능한 네트워크 구성
LDAP 계정 패스워드 변경 날짜 확인 스크립트
#!/bin/sh
# LDAP 계정 목록을 가져옵니다.
# ldapsearch 명령어를 사용하여 LDAP 서버에서 정보를 검색합니다.
# -x 옵션은 단순 인증을 사용합니다.
# -LLL 옵션은 LDIF 형식의 출력을 생성합니다.
# -b 옵션은 검색 베이스 DN을 지정합니다.
# -D 옵션은 바인딩 DN을 지정합니다.
# -w 옵션은 바인딩 비밀번호를 지정합니다.
# "(objectclass=*)"는 모든 객체 클래스에 대해 검색합니다.
# shadowLastChange와 uid 속성을 검색합니다.
ldap_account_list=$(ldapsearch -x -LLL -b "dc=example,dc=com" -D "cn=admin,dc=example,dc=com" -w password "(objectclass=*)" shadowLastChange uid | grep uid | awk '{print $2}' | grep -v uid)
# 계정 목록을 배열로 변환합니다.
mapfile -t lines <<< ${ldap_account_list}
# 각 계정에 대해 패스워드 변경 날짜를 계산합니다.
for line in "${lines[@]}"; do
if [ -n "$line" ]; then
# 오늘 날짜를 계산합니다. (1970년 1월 1일 이후 일 수)
today=$(($(date +'%s') / 86400))
# LDAP 서버에서 shadowLastChange 속성을 검색합니다.
shadow_last_change=$(ldapsearch -x -LLL -H ldap://192.168.100.100 "uid=${line}" shadowLastChange | awk 'NR==2{print $2}')
# 패스워드 변경 일 수를 계산합니다.
shdw_diff=$((today - shadow_last_change))
# 계정 이름, 패스워드 변경 날짜, 변경 일 수를 출력합니다.
echo -e "Account : $line\t\tPassword change date : $(date "--date=$dt -d -${shdw_diff}day" +%Y-%m-%d)\tDays ago : $shdw_diff"
fi
done
위 배시 쉘 스크립트의 내용 중 변경이 필요한 부분은 다음과 같습니다.
-b dc=example,dc=com
구문을 사용하고 있는 도메인으로 변경합니다.-d cn=admin,dc=example,dc=com
구문을 관리자 계정명과 도메인으로 변경합니다.-w password
구문을 관리자 패스워드로 변경합니다.ldap://192.168.100.100
구문을 LDAP 서버의 URL이나 IP로 변경합니다.
LDAP 계정 패스워드 변경 날짜 확인 스크립트 파일 생성하기
ldap_passwd_change_check.sh
스크립트 파일을 생성하여, 실행 결과를 확인해봅니다.
vi /usr/local/sbin/ldap_passwd_change_check.sh
vi /usr/local/sbin/ldap_passwd_change_check.sh
명령을 실행하여 파일을 열고, 수정한 LDAP 계정 패스워드 변경 날짜 확인 스크립트를 저장합니다.
#!/bin/sh
# LDAP 계정 목록을 가져옵니다.
# ldapsearch 명령어를 사용하여 LDAP 서버에서 정보를 검색합니다.
# -x 옵션은 단순 인증을 사용합니다.
# -LLL 옵션은 LDIF 형식의 출력을 생성합니다.
# -b 옵션은 검색 베이스 DN을 지정합니다.
# -D 옵션은 바인딩 DN을 지정합니다.
# -w 옵션은 바인딩 비밀번호를 지정합니다.
# "(objectclass=*)"는 모든 객체 클래스에 대해 검색합니다.
# shadowLastChange와 uid 속성을 검색합니다.
ldap_account_list=$(ldapsearch -x -LLL -b "dc=in,dc=infracody,dc=com" -D "cn=admin,dc=infracody,dc=com" -w infracody "(objectclass=*)" shadowLastChange uid | grep uid | awk '{print $2}' | grep -v uid)
# 계정 목록을 배열로 변환합니다.
mapfile -t lines <<< ${ldap_account_list}
# 각 계정에 대해 패스워드 변경 날짜를 계산합니다.
for line in "${lines[@]}"; do
if [ -n "$line" ]; then
# 오늘 날짜를 계산합니다. (1970년 1월 1일 이후 일 수)
today=$(($(date +'%s') / 86400))
# LDAP 서버에서 shadowLastChange 속성을 검색합니다.
shadow_last_change=$(ldapsearch -x -LLL -H ldap://ldapvip.in.infracody.com "uid=${line}" shadowLastChange | awk 'NR==2{print $2}')
# 패스워드 변경 일 수를 계산합니다.
shdw_diff=$((today - shadow_last_change))
# 계정 이름, 패스워드 변경 날짜, 변경 일 수를 출력합니다.
echo -e "Account : $line\t\tPassword change date : $(date "--date=$dt -d -${shdw_diff}day" +%Y-%m-%d)\tDays ago : $shdw_diff"
fi
done
LDAP 계정 패스워드 변경 날짜 확인 스크립트 실행하기
/usr/local/sbin/ldap_passwd_change_check.sh
파일을 실행하여 정상적으로 LDAP 계정 목록과 변경 날짜, 그리고 몇 일 전에 변경했는지 확인 할 수 있습니다.
sh /usr/local/sbin/ldap_passwd_change_check.sh
실행 권한을 추가하여 파일명으로도 실행할 수 있습니다.
chmod +x /usr/local/sbin/ldap_passwd_change_check.sh
/usr/local/sbin/ldap_passwd_change_check.sh
마무리
리눅스에서 LDAP 계정 패스워드 변경 날짜을 확인할 수 있는 배시 쉘 스크립트를 작성하여, 간편하게 LDAP 사용자들의 패스워드 변경 이력 관리를 할 수 있습니다.
인프라코디
서버, 네트워크, 보안 등 IT 인프라 관리를 하는 시스템 엔지니어로 일하고 있으며, IT 기술 정보 및 일상 정보를 기록하는 블로그를 운영하고 있습니다. 글을 복사하거나 공유 시 게시하신 글에 출처를 남겨주세요.
- 블로그 : www.infracody.com
이 글이 유익했나요? 댓글로 소중한 의견을 남겨주시거나 커피 한 잔의 선물은 큰 힘이 됩니다.
- 블로그 : www.infracody.com
이 글이 유익했나요? 댓글로 소중한 의견을 남겨주시거나 커피 한 잔의 선물은 큰 힘이 됩니다.
댓글