1. CentOS7
# 패스워드 정책 설정 초기화
echo > /etc/security/pwquality.conf
# 기존 유저 홈디렉토리 포함 삭제
userdel -r tuser1
# 유저 생성
useradd tuser1
# 유저 패스워드 생성
echo -e "1234\n1234" | passwd tuser1
# sudo 설정 초기화
sed -i "s/^tuser1.*//g" /etc/sudoers
# 유저 변경
su - tuser1
# root 만 사용자 이름을 지정할 수 있음을 확인
echo -e "1234\n1234" | passwd tuser1
# sudors 설정파일에 등록되어 있지 않으면 사용자 권한이 필요한 암호를 변경할 수 없음
echo "1234" | sudo -S passwd tuser1
exit
# sudoers 유저 등록
echo -e "tuser1\tALL=(ALL)\tALL" >> /etc/sudoers
# 유저 변경
su - tuser1
# 관리자 권한으로 실행되어 패스워드가 변경되는 것을 확인
echo -e "1234\n1234" | sudo -S passwd tuser1
# 암호 유사성 문제로 패스워드가 변경되지 않음
echo -e "1234\n4321\n4321\n4321" | passwd
# 이전 암호 비교 갯수를 0 으로 변경
echo -e "1234" | sudo -S bash -c 'echo -e "difok = 0" >> /etc/security/pwquality.conf'
# 패스워드 길이문제로 패스워드가 변경되지 않음
echo -e "1234\n4321\n4321\n4321" | passwd
# 패스워드 최소 길이 설정을 사용하지 않음
echo -e "1234" | sudo -S bash -c 'echo -e "minlen = -1" >> /etc/security/pwquality.conf'
# pwquality 변경시 여전히 4글자의 패스워드는 사용하지 못한다는 에러를 확인
# https://linux.die.net/man/5/pwquality.conf 확인을 통해 패스워드 모듈 자체에서
# 5글자 미만의 패스워드를 설정하지 못하는 것을 확인
echo -e "1234\n4321\n4321\n4321" | passwd
# 비밀번호를 5글자로 설정하여 변경시 사전검사 실패 에러 확인
# 사전검사 에러의 경우 centos7 이전 버전의 경우 사전 검사를 하지 않도록 지원하는 옵션이 있었으나
# 이후 버전에서 pam_pwquality.so 를 사용할 경우 무조건 사전 검사를 하도록 변경됨
# 패스워드 검사를 하지 않도록 pam_pwquality.so 를 사용하지 않을경우 [ /etc/pam.d/system-auth ] 설정 파일의
# [ password requisite pam_pwquality.so try_first_pass local_users_only ~ ] 항목을 주석처리
# [ password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok ] 항목에서
# use_authtok 을 제거하면 패스워드를 pwquality.conf 와 관계없이 변경할 수 있음
echo -e "1234\n12345\n12345\n12345" | passwd
# 단순 체계적인 사전 암호 에러가 발생하여 변경되지 않음
echo -e "1234\n123456\n123456\n123456" | passwd
# 에러가 발생하지 않음을 확인
echo -e "1234\n135790\n135790\n135790" | passwd
echo -e "135790" | sudo -S bash -c 'echo -e "1234\n1234" | passwd tuser1'
# 최소 한개 이상의 소문자를 포함하도록 설정
echo -e "1234" | sudo -S bash -c 'echo -e "lcredit = -1" >> /etc/security/pwquality.conf'
# 소문자 포함 하지 않음 에러가 발생하는것을 확인
echo -e "1234\n135790\n135790\n135790" | passwd
# 변경되는 것을 확인
echo -e "1234\n13579a\n13579a" | passwd
echo -e "13579a" | sudo -S bash -c 'echo -e "1234\n1234" | passwd tuser1'
# 최소 한개 이상의 대문자를 포함하도록 설정
echo -e "1234" | sudo -S bash -c 'echo -e "ucredit = -1" >> /etc/security/pwquality.conf'
# 대문자 포함하지 않음 에러가 발생하는 것을 확인
echo -e "1234\n13579a\n13579a" | passwd
# 변경되는 것을 확인
echo -e "1234\n13579aB\n13579aB" | passwd
echo -e "13579aB" | sudo -S bash -c 'echo -e "1234\n1234" | passwd tuser1'
echo -e "1234" | sudo -S bash -c 'echo -e "ocredit = -1" >> /etc/security/pwquality.conf'
# 특수문자 포함하지 않음 에러가 발생하는 것을 확인
echo -e "1234\n13579aB\n13579aB" | passwd
# 변경되는 것을 확인
echo -e "1234\n13579aB"'!'"\n13579aB"'!' | passwd
echo "13579aB"'!' | sudo -S bash -c 'echo -e "1234\n1234" | passwd tuser1'
echo -e "1234" | sudo -S bash -c 'echo -e "dcredit = -1" >> /etc/security/pwquality.conf'
# 숫자포함하지 않음 에러가 발생하는 것 확인
echo -e "1234\nlinuX@\nlinuX@" | passwd
# 변경되는 것을 확인
echo -e "1234\nlinuX@1\nlinuX@1" | passwd
echo -e "linuX@1" | sudo -S bash -c 'echo -e "1234\n1234" | passwd tuser1'
# 정책 설정 초기화
echo -e "1234" | sudo -S bash -c 'echo > /etc/security/pwquality.conf'
# 자주 쓰이는 비밀번호가 업데이트 되는 것 확인
echo -e "1234\npassword\npassword" | passwd
echo -e "password" | sudo -S bash -c 'echo -e "1234\n1234" | passwd tuser1'
# 내가 설정한 사전 업데이트
echo -e "1234" | sudo -S bash -c 'mkdir /usr/share/cracklib/backup'
echo -e "1234" | sudo -S bash -c 'cp /usr/share/cracklib/* /usr/share/cracklib/backup'
echo -e "1234" | sudo -S bash -c 'echo password > /usr/share/words'
echo -e "1234" | sudo -S create-cracklib-dict /usr/share/words
# 사전에 추가한 비밀번호가 변경되지 않는 것 확인
echo -e "1234\npassword\npassword" | passwd
# /etc/passwd : 사용자의 등록 정보 확인 설정 파일
cat /etc/passwd | \
awk 'BEGIN {print "ACCOUNT:PASSWORD:UID:GID:COMMENT:HOME_DIRECTORY:LOGIN_SHELL"} {print}' | \
awk -F ":" 'length($5) < 10 {printf "%-20s\t%-8s\t%s\t%s\t%-10s\t%-25s\t%s\n", $1, $2, $3, $4, $5, $6, $7}'
# 패스워드를 /etc/passwd 가 관리
# pwunconv
# 패스워드를 /etc/shadow 가 관리
# pwconv
# 구조
# ACCOUNT : 사용자 계정명
# PASSWORD :
# - x : 패스워드를 /etc/shadow 에서 관리할 경우 값은 [ x ] 로 설정됨
# - * : 패스워드가 잠긴 상태, 로그인을 할수없는 계정일 경우 [ * ] 로 설정됨
# - !! : 패스워드가 잠긴 상태이거나 사용자를 생성하고 패스워드를 설정하지 않은 상태
# 패스워드가 설정 될 때까지 root 이외에 로그인 할 수 없음
# - $algorithm_id$salt$encrypted_password :
# -- 패스워드는 $로 구분되는 3가지 필드를 통해 이루어짐 $algorithm_id$salt$encrypted_password
# -- algorithm_id : [ 1 : MD5 Hash, 2 : BlowFish, 5 : SHA-256, 6 : SHA-512 ]
# -- salt : Hash 함수는 단방향 함수이기 때문에 입력값에 따른 결과값이 항상 일정함
# 보안을 위해 랜덤으로 생성한 salt 값을 비밀번호에 추가하여 해쉬값을 생성함
# -- encrypted_password : 암호화 된 비밀번호 값
# -1 : MD5
# -5 : SHA-256
# -6 : SHA-512
# openssl passwd -1 -salt xyz 1234
# chage -l hmwoo : 사용자 계정 만료 정보 출력
# chage -E 2020-09-30 hmwoo : 계정 만료 날짜 변경
# chage -E -1 hmwoo : 계정 만료 날짜 없음으로 설정
# chage -m 3 hmwoo : 암호를 바꿀수 있는 최소 날수 변경
# change -M -1 hmwoo : 암호를 바꿔야 하는 최대 날수 변경
'Operating Systems > Linux' 카테고리의 다른 글
[ Linux ] Cron 활용 (0) | 2021.08.22 |
---|---|
[ Linux ] DHCP 서버 설치 (0) | 2021.08.21 |
[ Linux ] AWK 활용 (0) | 2021.08.14 |
[ Linux ] SED 활용 (0) | 2021.08.14 |
[ Linux ] GREP 활용 (0) | 2021.08.14 |