/ etc / shadow에 대한 파일 권한이 600으로 설정된 이유는 무엇입니까?


25

의 권한 /etc/shadow은 600이며, 루트를 제외한 다른 사람은 읽을 수 없습니다.

그러나 내부의 모든 비밀번호는 일반 텍스트로 저장되지 않고 해시로 저장되므로 해시에서 원래 비밀번호를 계산할 수없는 이유는 무엇입니까?


당신에 대한 권한 확실 /etc/shadow하다을 600?
edwinksl

4
Stackoverflow 계정의 비밀번호가 해시 된 경우 해시 된 비밀번호를 다른 사람에게 표시 하시겠습니까?

5
@ByteCommander. 때로는 편집 내용을 공개하는 방법을 원합니다.
TRiG

답변:


60

오프라인 무차별 공격을 방지합니다.

해시를 되돌릴 수는 없지만 일치하는 것을 찾을 때까지 가능한 모든 암호를 해시하려고 시도 할 수 있으며 파일에 대한 우수한 하드웨어 및 로컬 액세스로 초당 수백만 번의 시도를 할 수 있습니다.

파일에 644권한이있는 경우 게스트 세션에서도 시스템에 로그인 한 사람은이 파일을 컴퓨터에서 복사하여 (USB 스틱 또는 원격을 통해 원격으로 scp) 오프라인 무차별 대입 공격을 시도 할 수 있습니다. , 당신의 컴퓨터에이 모든 증거를 남기지 않고 .


Ubuntu에 대한 권한은 실제로 640는 아닙니다 600.

$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1239 Jun 25 04:35 /etc/shadow

그래도 다른 사람에 대한 권한이 없으며 기본적으로 shadow그룹에 아무도 없기 때문에 이것은 중요하지 않습니다 .


원래 해시는 리눅스가 만들어 졌을 때와 같이 해시가 저장되어 /etc/passwd있기 때문에 passwd해시를 크래킹하는 것은 사실상 불가능했습니다. 그러나 결국 상대적으로 취약한 암호로 해시를 크래킹 할 수있는 수준까지 처리 능력이 향상되었습니다.

의 권한 변경 /etc/passwd640또는 600것하지 작업, 많은 합법적 인 이유를 읽을 수 있기 때문에 /etc/passwd해시가 이동했다, 그래서 (등, 사용자 이름에 UID를 변환 사용자의 전체 이름, 전화 번호를 받고) 일반 사용자로 /etc/shadow, 640권한 이 부여되었습니다 . x에서 사용자의 암호 해시 필드 대신에 /etc/passwd사용되는 해당 사용자의 해시가 저장되어 있음을 나타냅니다 /etc/shadow대신.


1
파일 복사에 대한 좋은 전화!
Rinzwind

1
그리고 담당자가 필요하지 않습니다 ;-) 편집 : 흠 그는 내 설정 : P 죄송합니다 : D edit2 그리고 지금 다시 돌아 왔습니다. eh : D
Rinzwind

6
마지막으로 해시 된 암호를 다시 / etc / passwd에 넣고 / etc / shadow에서 줄을 제거하고 로그인 할 수있을 것으로 기대했습니다. / etc / shadow는 주어진 이유로 600으로 설정할 수 있습니다. 이 답변에서.
Joshua

8
/ etc / passwd에 대한 권한은 644입니다. 역사적으로 암호 해시는 여기에 저장되어 있다고 생각합니다. 그러나이 파일을 640으로 변경하면 모든 종류의 호환성 문제가 발생했을 수 있습니다. 대신 암호 해시가 shadow로 이동하여 passwd에서 제거되었습니다. 그러면 암호 해시가 비밀로 유지되는 동안 passwd의 다른 정보를 계속 읽을 수 있습니다. 다른 파일.
Rodney

4
@Rodney는 BSD 4.3에서 자란 사람으로서 맞습니다. 해시는 / etc / passwd에 저장되었습니다. Vax 11/780이 최신 기술이었을 때, 파일의 암호에 대한 무차별 대입 공격은 불가능한 것으로 간주되었습니다. 아마도 더 중요한 것은 인터넷 [아파 넷]이 졸린 작은 역류 였기 때문에 그러한 것들은 거의 고려되지 않았다. ssh-only rlogin / telnet은 없었습니다. 비밀번호 파일 644를 유지한다는 것은 lsuid에서 이름으로 변환하기 위해 setuid root 와 같은 유틸리티 가 필요하지 않음을 의미합니다 .
Mike S

13

실제로 / etc / shadow는 공개적으로 읽을 수있는 사용자 이름 및 비밀번호 목록 에서 벗어날 수 있도록 만들어졌습니다 .

우리가 실제 답변을 얻기 전에 약간의 역사 수업이 될 것입니다. 역사에 관심이 없다면 조금 아래로 스크롤하십시오.

예전에는 Linux를 포함한 유닉스 계열 OS가 일반적으로 비밀번호를 / etc / passwd에 보관했습니다. 이 파일은 세계적으로 읽을 수 있지만 여전히 숫자 사용자 ID와 사용자 이름 간의 맵핑을 허용하는 정보가 포함되어 있기 때문에 여전히 읽을 수 있습니다. 이 정보는 일반 사용자에게도 합법적 인 목적으로 매우 유용하므로 파일 세계를 읽을 수있게하는 것이 유용성에 큰 도움이되었습니다.

당시에도 사람들은 로그인 할 수있는 누구나 읽을 수있는 잘 알려진 위치에 파일에 일반 텍스트로 비밀번호를 저장하는 것이 나쁜 생각임을 깨달았습니다. 그래서 암호는 어떤 의미에서 해시되었습니다. 그것은 구식 "암호"암호 해싱 메커니즘으로, 현대 시스템에서는 거의 사용되지 않지만 종종 레거시 목적으로 지원됩니다.

시스템에서 / etc / passwd를 살펴보십시오. x어디에나 나오는 두 번째 필드를 보 시겠습니까? 해당 계정의 해시 비밀번호를 보유했습니다.

문제는 사람들이 / etc / passwd를 다운로드하거나 다운로드하지 않고 암호를 해독 할 수 있다는 것입니다. 컴퓨터가 특히 강력하지 동안이 큰 문제가 아니었다 (클리포드 스톨은,에 뻐꾸기의 알 내가 기억으로, 두 번째 약으로, 1980 년대 중반에 IBM PC 수준의 시스템에 해시 한 암호에 시간을 제공합니다 처리 능력이 증가함에 따라 문제가되었습니다. 어느 시점에서 적절한 단어 목록을 사용하면 암호를 해독하는 것이 너무 쉬워졌습니다. 기술적 인 이유로이 체계는 8 바이트보다 긴 암호도 지원할 수 없습니다.

이 문제를 해결하기 위해 두 가지 작업을 수행했습니다.

  • 더 강력한 해시 함수로 이동 오래된 crypt ()는 수명보다 오래 지속되었으며 미래에 대비하고 계산적으로 더 강력한 더 현대적인 체계가 고안되었습니다.
  • 해시 된 비밀번호를 다른 사람이 읽을 수없는 파일로 이동하십시오. 이렇게하면 암호 해시 함수가 예상보다 약한 것으로 밝혀 지거나 누군가 암호가 약한 경우에도 공격자가 시작하기 위해 해시 값에 액세스 할 수있는 또 다른 장애물이있었습니다. 더 이상 자유롭지 못했습니다.

이 파일은 / etc / shadow입니다.

/ etc / shadow와 함께 작동하는 소프트웨어는 일반적으로 매우 작고 집중 성이 높으며 문제 가능성으로 인해 검토 과정에서 추가 검사를받는 경향이 있습니다. 또한 특수 권한으로 실행되어 일반 사용자가 해당 파일을 볼 수 없도록 / etc / shadow를 읽고 수정할 수 있습니다.

그래서 당신이 그것을 가지고 : 해당 파일의 전체 목적은 민감한 데이터에 대한 액세스를 제한 할 수 있기 때문에 (확실히 당신이 상태로 제한적으로, 이미 지적하지만)을 / etc / 그림자에 대한 사용 권한이 제한적입니다.

암호 해시는 강력해야하지만 암호가 인터넷 목록 의 상위 500 개 암호에 있으면 해시에 액세스 할 수있는 사람은 누구나 빠르게 암호를 찾을 수 있습니다. 해시를 보호하면 간단한 공격을 막을 수 있고 성공적인 공격에 대한 기준이 간단한 엿보기에서 이미 호스트의 시스템 관리자가되거나 권한 에스컬레이션 공격을 먼저 수행 할 수 있습니다. 특히, 제대로 관리 다중 사용자 시스템에서, 그 모두는 크게 다만 세계 읽을 수있는 파일을보고보다 더 어렵습니다.


난 정말 당신이 모든 것을 설명하는 방식을 좋아합니다 :) (y)
Shubhanshu Vishwakarma

용어 / 어원 : /etc/shadow"새도우 암호"를 보유하지 않습니다 (그렇지 않기 때문에). 전체 파일은 그림자입니다 /etc/passwd. 리눅스 섀도우 패스워드 하우투에서이 용어가 사용되는 방식을 살펴보십시오 . 왜 passwd 파일을 섀도 잉합니까? . 컴퓨팅에서 "섀도우"라는 용어를 사용하는 것과 달리 쉐도우 복사본 은 아닙니다 (ROM에서 실행되는 대신 BIOS로 BIOS 코드를 섀도 잉하는 것과 같이). / etc / passwd의 필드는 "실제 암호 해시가 / etc / shadow에 있음"을 나타내는 특수 문자를 포함하는 자리 표시 자입니다.
Peter Cordes

좋은 기록이지만 1 초 암호 당은 1 % 이상의 사람들이 최상위 암호를 사용했을 때가 아니라 1980 년대에도 거의 제한되지 않았습니다.
Warren Dew

1
@WarrenDew 사실에 대한 진술이나 의견이 있는지 확실하지 않습니다. crypt ()에는 8 바이트 암호 (일반적으로 base64로 인코딩 됨)에 대한 12 비트 솔트 및 12 + 64 비트 출력이 있습니다. 일반적인 비밀번호를 들어, 그래, 당신은 아마 무력으로 그들을 공격 할 수 있지만하지 않은 모든 암호 검사가 두 번째했다 경우 브 루트 포스 불가능에 의해 균열 수 있도록 암호의 대부분을. 단일 암호로도 소금에 절인 테이블을 사전 계산하는 데는 초당 한 번의 암호화 속도로 1 시간 정도 걸리며, 제한된 저장 공간 (40-80MB는 당시에는 많았습니다)과 경쟁해야했습니다.
CVn

@PeterCordes 좋은 지적입니다. 나는 OP의 질문에 대답하는 것과 특별히 관련이 없기 때문에 그 구절을 삭제하고 있습니다.
CVn

10

/ etc / shadow 파일에 대한 권한이 600으로 설정된 이유는 무엇입니까?

누가 그랬어?

$ls -l /etc/shadow
-rw-r----- 1 root shadow 1407 mei 18 10:05 /etc/shadow
  • 640입니다.

간단한 대답 : Linux의 권한이 심각합니다. "다른 사람들"이 (으)로 무엇인가를 할 이유가 없습니다 /etc/shadow. 그리고 그룹 "shadow"가 그것에 쓸 이유가 없습니다. 그리고 실행이 잘못되었습니다.

그러나 내부의 모든 비밀번호는 일반 텍스트로 저장되지 않고 해시로 저장되므로 해시에서 원래 비밀번호를 계산할 수없는 이유는 무엇입니까?

그렇게해야 할 이유가 하나도 없기 때문입니다.

해시는 단방향입니다. 누군가에게 읽기 권한을 부여하면 스크립트를 사용하여이 단방향을 남용 할 수 있습니다. 상상할 수있는 단어를 나열하고 해시를 만드십시오. 어떤 시점에서 비밀번호와 일치 할 수 있습니다. 그래도 시간이 걸릴 수 있습니다.

답변 은 흥미롭고 무차별 강제력에 대한 추정치를 가지고 있습니다.


640은 일반 사용자를위한 것입니다 ?? 그룹 사용자는 섀도 파일을 읽을 수 있습니까 ??
Shubhanshu Vishwakarma

죄송합니다? 파일은 640입니다. 따라서 "root"사용자에 대해 쓰고 "shadow"그룹에 대해 읽으십시오. "shadow"는이 특정 목적을위한 권한있는 시스템 생성 그룹입니다.
Rinzwind

2

중요한 배경 : /etc/shadow비밀번호 해시를 숨기려는 목적으로 만 존재합니다. 초창기 유닉스의 초기에는 암호 해시가에 저장되었습니다 /etc/passwd. 컴퓨터가 더욱 강력 해지고 네트워크 연결이 더욱 강력 해지고 보안 공격이 더 정교 해짐에 따라 사람들은 암호 해시를 단어로 읽을 수있게하는 것이 문제가된다는 것을 깨달았습니다. (나는 악용에 대해 자세히 설명하지 않습니다. 이미 그것에 대한 충분한 답변이 있습니다.)

그러나 /etc/passwd읽기 보호 할 수는 없습니다 : 모든 종류의 프로그램에서 숫자 사용자 ID를 사용자 이름에 매핑하고 홈 디렉토리, 기본 쉘, 사용자의 전체 이름 (및 사무실 번호 등을 확인하는 데 사용됨 man finger) . 따라서 민감한 부분 인 암호 해시가 (으)로 이동 /etc/shadow했으며 나머지는 그대로 유지되었습니다. 이유 있다고 /etc/passwd, 이름을 despide, 모든 것을 포함 제외한 제 (해시) 비밀 번호를.


내 질문에 대한 답장을 보내 주셔서 감사합니다. 이제 / etc / passwd 및 / etc / shadow 파일에 대한 완전한 아이디어를 얻었습니다.
Shubhanshu Vishwakarma
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.