Linux에서 사용자 비밀번호를 일반 텍스트로 표시하는 방법은 무엇입니까?

Linux에서 사용자 비밀번호를 일반 텍스트로 표시하는 방법은 무엇입니까?

우리는 사용자의 비밀번호가 에 저장되어 있지만 /etc/passwd암호화된 방식으로 저장되어 있으므로 루트도 이를 볼 수 없다는 것을 알고 있습니다.

jane:x:501:501::/home/jane:/bin/bash
fred:x:502:502::/home/fred:/bin/bash

위와 같이 :x:비밀번호를 나타냅니다.

/etc/passwd루트가 볼 수 있도록 비밀번호를 일반 텍스트로 저장하는 방법(가능한 구성)이 있습니까 ?

답변1

다른 두 가지 답변이 올바르게 알려졌습니다!이건 나쁜 생각이에요™. 하지만 그 사람들도 너한테 말했지딱딱한그러기 위해서는 많은 절차를 변경해야 합니다.

이것은 사실이 아닙니다. 그것은 간단합니다. 하나 또는 두 개의 구성 파일만 변경하면 됩니다. 자신이 제어할 수 없는 시스템에 로그인할 때 이 점을 알고 있어야 하기 때문에 이 점을 지적하는 것이 중요하다고 생각합니다. 이는 실제로 일반 텍스트 비밀번호를 /etc/passwd또는 에 저장하지 /etc/shadow않고 다른 파일에 저장합니다. 일반 텍스트로 비밀번호를 제공하고 싶지 않기 때문에 아직 테스트하지 않았습니다.

  1. 편집 /etc/pam.d/common-password(비밀번호 변경 캡처) 또는 /etc/pam.d/common-auth(로그인 캡처) 및 추가… pam_exec expose_authtok log=/root/passwords /bin/cat

  2. 이 두 파일을 편집하고 .pam_unix 를 사용하여 pam_userdb로 전환하세요 crypt=none. 또는 일반 비밀번호(pam_unix도 유지)에 넣어서 비밀번호가 변경될 때 기록되도록 할 수도 있습니다.

  3. shadowpam_unix에서 (강력한 해싱 옵션과 함께) 옵션을 제거하여 섀도우 파일을 비활성화하고 기존 암호화 비밀번호로 돌아갈 수 있습니다. 일반 텍스트는 아니지만 John the Ripper가 대신 처리해 드립니다.

자세한 내용은 확인해주세요PAM 시스템 관리 안내서.

PAM의 소스 코드를 편집하거나 자신만의 모듈을 작성할 수도 있습니다. PAM(또는 모듈)만 컴파일하면 됩니다.

답변2

아, 뭐, 처음부터 시작하자…

사용자의 비밀번호는 /etc/passwd에 저장되어 있지만 암호화된 방식으로 저장되어 있다는 것을 알고 있습니다.

아니 그들은저장됨/etc/passwd, 그건 아주 오래 전 일이에요. 오늘 비밀번호가 저장되었습니다소위 섀도우 파일에서, 대부분의 경우 /etc/shadow.

그러나 암호화된 방식이므로 루트도 볼 수 없습니다.

가끔 같은 의미로 사용되는 것으로 알고 있지만해시시아니요암호화. 암호화는 정의상 되돌릴 수 있습니다. 즉, 암호화된 콘텐츠를 다시 일반 텍스트 형식으로 변환할 수 있습니다. 해시는 다음과 같이 설계되었습니다.아니요어떤 방식으로든 되돌릴 수 있습니다(폭력 제외). 원래 해시된 일반 텍스트 형식은 복구되어서는 안 됩니다.

섀도우 파일의 비밀번호는 해시로 저장됩니다.

위에 표시된 대로: x: 비밀번호를 나타냅니다.

이 경우 는 x이전 비밀번호 필드에 대한 자리 표시자일 뿐입니다. 이는 x섀도우 파일에서 비밀번호를 찾을 수 있음을 의미합니다.

루트가 볼 수 있도록 일반 텍스트로 /etc/passwd에 비밀번호를 저장하는 방법(가능한 구성)이 있습니까?

예, 실제로 가능합니다. 하지만 어떤 이유로 인해 이는 좋은 생각이 아닙니다.DeRobert의 답변은 매우 간단한 접근 방식을 설명합니다..

그런데 왜 이것이 좋은 생각이 아닌가? 간단하지만 매우 중요한 이유가 하나 있습니다. 바로 안전입니다. 다음 질문을 읽어보는 것이 좋습니다.

하지만 요약하자면, 회사에 서버가 있고 모든 사용자 계정이 비밀번호로 보호되어 있으며 해당 사용자 계정의 데이터가 동일한 비밀번호로 암호화되어 있다고 가정해 보겠습니다. 외부 크래커는 서버에 접근할 수 있지만 중요한 데이터는 사용자 계정에 암호화되어 있기 때문에 접근할 수 없습니다.

이제 비밀번호가 일반 텍스트로 저장된다고 가정합니다. 크래커는 갑자기 접근할 수 있습니다모든 것, 비밀번호를 읽을 수 있기 때문입니다. 그러나 해시로 저장되면 무차별 대입 공격을 수행할 수 있는 리소스가 많은 사람을 제외하고는 누구에게도 사실상 쓸모가 없습니다.

답변3

첫째, 암호화된 비밀번호는 에 없지만 /etc/passwd입니다 /etc/shadow. 한 가지 이유는 /etc/passwd공개적으로 읽을 수 있고(예를 들어 다른 사용자의 GECOS 필드 정보를 찾을 수 있음) 특히 오래된 암호화 체계를 사용하면 암호화된 비밀번호에 대한 무차별 대입 공격이 허용될 수 있기 때문입니다.

비밀번호를 일반 텍스트로만 저장할 필요는 없으며 /etc/shadow유효한 비밀번호를 확인하기 위해 정보를 읽는 비밀번호 프로그램 및 라이브러리를 업데이트해야 합니다. 그런 다음 일반 텍스트 비밀번호 저장을 이해하지 못하는 것에 정적으로 연결하는 대신 모든 유틸리티가 공유 라이브러리를 사용하여 해당 정보에 액세스하기를 바랍니다.

이것이 설정 구성의 옵션이라면, 그것을 부적절하게 켜는 어리석은 사람이 항상 있을 것입니다. 정보를 보는 동안에도 CRT 화면에서 작업하고 건물 외부에서 쉽게 들을 수 있는 방식으로 방송하고 있습니다.

게다가 사람들은 여러 시스템에서 동일하거나 유사한 비밀번호를 사용하는 경향이 있으므로 사람이 읽을 수 있는 비밀번호를 사용하는 것은 좋지 않습니다. 일부 시스템 관리자는 다른 시스템에서 시스템을 다시 시도할 수 있으므로 사용자에게 계정이 있다는 것을 알고 있습니다.

시스템 작동 방식을 조사하기 위해 시스템에서 수행할 수 있는 더 흥미로운 작업이 확실히 있습니다.

답변4

이것이 나쁜 생각인 기본적인 이유는 어떤 사용자(root, admin 또는 기타)도 다른 사용자의 사용자 비밀번호에 접근할 수 없어야 한다는 것입니다.

비밀번호는 인증 수단이기 때문입니다. 내가 다른 사용자의 비밀번호를 알고 있다면 그 사람의 자격 증명(사용자 이름 + 비밀번호)을 알고 있으므로 로그인할 수 있습니다.이 사용자로서, 그 사람(또는 그녀 또는 그것)을 사칭합니다.

해당 사용자로 로그인한 동안 내가 취하는 모든 행동은 다른 사용자가 책임을 지게 됩니다. 이는 인증이 작동하는 방식이 아닙니다.

이러한 작업은 중요한 파일 삭제, 하드 드라이브 삭제, 백업 삭제, 원자력 프로그램 종료 등과 같은 재앙을 초래할 수 있습니다.

아니면 그냥 불법입니다. 나(관리자)가 모든 비밀번호에 액세스할 수 있는 은행 기관을 상상해 보십시오. 창구 직원의 비밀번호를 사용하여 대통령 은행 계좌에서 창문 청소부의 은행 계좌로 백만 달러를 이체하도록 명령할 수 있었습니다. 그런 다음 계산원의 고급 비밀번호를 사용하여 거래가 승인됩니다. 그런 다음 창문 청소부의 계좌에서 내 해외 은행 계좌로 수표를 승인하세요.

그러다가 바하마로 장기 휴가를 갔었는데…


이러한 관점에서 볼 때, 비밀번호 해싱과 별도의 섀도우 파일 사용은 이 규칙을 시행하는 수단으로 볼 수 있습니다(어떤 사용자도 다른 사용자를 가장할 수 없음).

@Miral의 의견 *su 과 같이 가장(및 위에서 던진 다양한 인수)을 허용하는 동안 사용 로그도 유지하는 예외가 있습니다 (따라서 규칙은 "관리자만 다른 사람을 가장할 수 있지만 로그는 유지합니다"로 변경됨). .

*은행 사례가 최선이 아닐 수도 있습니다. 보안이 중요한 환경에서는 단순한 비밀번호보다 더 많은 인증 및 권한 부여 수단이 필요한 경우가 많습니다.

관련 정보