비밀번호가 비어 있는지 확인하는 방법은 무엇입니까?

비밀번호가 비어 있는지 확인하는 방법은 무엇입니까?

script-kiddies의 모든 SSH 로그인 시도를 살펴보면 비밀번호 없는 계정이 설정된 인터넷에 연결된 시스템이 엉망인 것으로 가정합니다.

하지만 Linux/Unix 시스템에 그러한 계정이 있는지 확인하는 방법(아마도 손상된 설치 프로그램 스크립트, 혼란스러운 관리자 또는 유사한 것에 의해 생성되었을 수 있음)은 무엇입니까?

첫 번째 근사치로 다음과 같은 것을 생각할 수 있습니다.

$ grep '^[^:]\+::' /etc/passwd /etc/shadow

빈 비밀번호가 있는 모든 계정을 인쇄합니다. 그러나 특정 시스템에서는 어떤 프로그램도 빈 항목을 허용하지 않으므로 이러한 계정은 문제조차 되지 않습니다. - cf 비밀번호(5):

그러나 비밀번호 필드가 비어 있으면 /etc/passwd 파일을 읽는 일부 응용 프로그램은 액세스를 전혀 허용하지 않기로 결정할 수 있습니다.

하지만 해시는 어떻습니까?비어 있는문자열을 비밀번호로 사용하시겠습니까(예 crypt(""): )?

어떻게 확인하나요?

더 복잡한 계정 데이터베이스(NIS, LDAP 등)를 사용할 때 계정을 확인하는 방법은 무엇입니까?

답변1

암호화된 비어 있거나 취약한 비밀번호를 찾는 쉬운 방법은 다음과 같은 비밀번호 크래킹 프로그램을 사용하는 것입니다. 존 더 리퍼.

NIS 또는 LDAP를 사용하는 경우 먼저 데이터베이스에서 비밀번호 해시를 추출해야 합니다. 한 가지 방법은 을(를) 이용하는 것입니다 getent.maxschlepzig의 답변

답변2

문제의 마지막 부분을 해결하려면:

getent데이터베이스 세부 정보를 추상화합니다. 예를 들어 다음을 사용할 수 있습니다.

$ getent passwd
$ getent shadow

이러한 데이터베이스에 액세스하기 위한 구성 독립적 메커니즘(파일, LDAP, NIS...)

관련 정보