비밀번호 로그인을 방지하기 위해 Linux에서 /etc/passwd의 비밀번호를 *로 설정하는 것이 안전합니까?

비밀번호 로그인을 방지하기 위해 Linux에서 /etc/passwd의 비밀번호를 *로 설정하는 것이 안전합니까?

AFAIK, /etc/passwd의 두 번째 필드는 다음과 같습니다.

  • x: 비밀번호가 섀도우에 있습니다.
  • 해시된 비밀번호

필드에 8자 미만의 문자열을 입력하면 어떻게 되나요? 누구도 이 계정의 비밀번호를 사용하는 것을 원하지 않습니다.

답변1

파일의 비밀번호 해시 필드가 /etc/shadow있는 경우 사용해서는 안 됩니다. 대신 /etc/passwd동등한 필드를 사용해야 합니다 /etc/shadow.

비밀번호 해시 필드에 유효하지 않은 문자열을 입력하면(사용 중인 필드가 in인지 /etc/shadowout인지 에 관계없이 /etc/passwd) 비밀번호 인증이 비활성화됩니다. 하지만 표준 길이가 아닌 문자열을 넣는 것은 예상치 못한 일이 될 것입니다. 비밀번호 해싱 기능에서 사용하지 않는 문자를 사용하는 것이 더 낫다고 생각합니다. 비표준 길이의 비밀번호 해시 문자열은 비밀번호 파일을 일괄 편집할 때 복사/붙여넣기 오류로 간주될 수 있지만 표준 세트 외부의 문자를 사용하는 것은 분명히 의도적인 것입니다.

passwd -l의미가 바뀌었다는 점도 알아두셔야 합니다 .

2008년 8월 이전에는 이 passwd -l <username>명령은 일반적으로 다음과 동일했습니다.

OLDPW="$(grep ^<username>: /etc/shadow | cut -d : -f 2)"
echo "<username>:!$OLDPW" | chpasswd -e
usermod --expiredate 1 <username>

특히 소스 패키지 passwd의 명령이 shadow바로 이 작업을 수행합니다.

8월 22일부터 "계정 잠금"에서 "비밀번호만 잠금"으로 순서가 변경되었습니다.즉, 변경된 명령은 이제 다음과 동등한 작업만 수행합니다.

OLDPW="$(grep ^<username>: /etc/shadow | cut -d : -f 2)"
echo "<username>:!$OLDPW" | chpasswd -e

따라서 이전과 마찬가지로 암호화된 비밀번호 앞에 느낌표가 표시되지만 더 이상 전체 계정이 비활성화된 것으로 표시되지 않습니다.

소스 패키지는 shadow많은 배포 명령의 업스트림 소스였으므로 passwd많은 배포에서 변경이 발생했습니다. 예를 들어 RHEL 5에는 이전 동작이 있지만 RHEL 6은 새로운 동작을 따릅니다.

Busybox에는 passwd해당 명령에 대한 별도의 코드 베이스가 있으므로 어떤 동작을 따르는지는 알 수 없습니다.BusyBox 문서를 빠르게 검색하세요.비밀번호/계정 만료 기능이 전혀 포함되어 있지 않은 것으로 보입니다.

그러나 실행에서 passwd -l <username>해당 사용자에 대해 SSH 키 인증이 비활성화되어 있는 경우(예: 이전 동작) 비밀번호 해시 기능이 생성할 수 없는 값으로 설정하여 비밀번호를 잠글 수 있습니다. 예를 들어 다음과 같습니다.

echo "username:!" | chpasswd -e

이는 사용자 계정을 "비밀번호 기반 인증 전용" 상태로 설정하는 매우 일반적인 방법입니다.

상대적으로 일반적인 관례는 잠긴 비밀번호를 나타내기 위해 느낌표(단독으로 또는 비밀번호 해시 필드의 이전 내용에 대한 접두사)를 사용하고 별표(비밀번호 해시 필드의 전체 내용을 대체)를 사용하여 표시하는 것 같습니다. 잠긴 비밀번호. 계정을 시스템 계정으로 사용하면 안 됩니다 passwd -u. 그러나 비밀번호 해시 필드에 잘못된 값이 있어도 다른 인증 메커니즘(예: SSH 키)은 작동할 수 있습니다.

관련 정보