
Linux 운영 체제에서 /etc/shadow 파일의 목적은 무엇입니까? 또한 SUSE 클라이언트에도 동일합니까? 하나의 섀도우 캐시 파일이 유지 관리되고 있는데 그 목적은 무엇입니까?
답변1
처음부터 Unix 및 Unix 스타일 운영 체제(Linux 포함)는 항상 암호를 암호화 해시로 저장했습니다(1). 이러한 해시는 원래 에 저장되었지만 /etc/passwd
이 파일은 정보를 다른 목적으로 사용할 수 있도록 전 세계에서 읽을 수 있어야 했습니다. 간단한 경우에도 각 파일 소유자의 숫자 사용자 ID를 사용자 이름으로 변환하여 표시하기 위해 ls -l
읽어야 했습니다 . /etc/passwd
그러나 누구나 읽을 수 있는 파일에 해시된 비밀번호가 있으면 악의적인 사용자가 쉽게 해당 해시를 얻고 다른 사용자의 계정에 사용 가능한 비밀번호(2)를 생성하려고 시도할 수 있습니다.
이를 방지하기 위해 해시된 비밀번호는 결국 루트(때때로 권한이 있는 관리자 그룹)만 읽을 수 있는 파일로 이동되었습니다 /etc/shadow
. 이는 시스템의 일반 사용자에게 해시를 숨기는 동시에 사용자 인증 목적으로 해시를 사용할 수 있도록 유지합니다.
노트:
현학적이라는 건 알아요. 하지만 저장된 비밀번호는~ 아니다암호화되었습니다. 암호화로 안전한(적어도 작성된 시점에는) 해싱 알고리즘을 사용하여 해시됩니다. 여기서 관련된 주요 차이점은 해시가 고정 길이(암호화된 텍스트의 길이는 암호화된 텍스트의 길이에 따라 다름)이고 되돌릴 수 없다는 것입니다(암호화된 텍스트는 해독될 수 있지만 해시된 텍스트는 해독될 수 없음).
해시는 고정 길이이기 때문에 주어진 해시 표현과 일치하는 입력이 무한합니다. 따라서 공격자는 소유한 사용자의 비밀번호와 반드시 동일하지는 않은 작업 비밀번호를 찾을 수 있습니다. 하지만 현대 암호화 해시의 크기를 고려할 때 그럴 가능성은 거의 없습니다.
답변2
이 /etc/shadow
파일은 보안상의 이유로 생성되었으며 각 사용자의 암호화된 비밀번호를 보유합니다.
원래 암호화된 비밀번호는 /etc/passwd
. /etc/passwd
시스템이 사용자 ID를 사용자 이름에 매핑할 수 있고 사용자가 서로에 대한 정보(예: 전통적으로 "gecos" 필드에 저장되어 있던 다른 사용자의 홈 디렉터리나 전화번호)를 찾을 수 있도록 전 세계에서 읽을 수 있어야 했습니다. "손가락" 유틸리티에 의해 표시됩니다.
그러나 사람들은 이것이 보안 문제라는 것을 깨달았습니다. 시간이 충분하다면 누구든지 소위 하는 일을 할 수 있습니다.무차별 공격, 가능한 모든 비밀번호에 대해 프로그래밍 방식으로 암호화된 비밀번호를 생성합니다. 공격자가 실제로 telnet
또는 를 통해 로그인을 시도하지 않고 그렇게 했다면 ssh
시스템은 자신이 공격받고 있다는 것을 알 수 없습니다.
/etc/shadow
따라서 암호화된 비밀번호는 루트만 읽을 수 있는 새로 생성된 으로 이동되었습니다 .
또한 사용자 계정 및 비밀번호와 관련하여 파일이 지원하지 않는 기타 정보 /etc/passwd
(예: 비밀번호가 마지막으로 변경된 시간 및 만료일)도 포함되어 있습니다.
보다 man 5 shadow
(웹 버전) 파일 형식에 대한 자세한 내용을 확인하세요.
어떤 버전의 SUSE를 다루고 있는지 알지 못하면 SUSE에서도 동일한지 여부를 말할 수 없습니다. 예를 들어 SUSE 시스템은 MD5 대신 Blowfish를 사용할 수 있습니다.
또한 다른 Linux 배포판을 실행하는 시스템과 파일을 혼합하고 있다고 암시했지만 /etc/shadow
다른 배포판이 무엇인지는 밝히지 않았습니다.
보다SuSE 9.3에서 Ubuntu Server x86_64로 섀도우 파일을 마이그레이션하는 중 문제 발생예를 들어.
알아내려면 암호화된 비밀번호 필드가 또는 /etc/shadow
로 시작하는지 확인하세요 . 가 포함되어 있으면 MD5이며 대부분의 다른 배포판과 호환됩니다. 포함되어 있으면 아마도 Blowfish일 것입니다.$1$
$2$
$1$
$2$
Debian의 Blowfish 섀도우 파일.
Ubuntu를 사용하는 경우,Ubuntu 복어에 대한 첫 번째 Google 검색 결과좋은 출발점이 될 수 있습니다.
답변3
사용자가 파일에 나열됩니다 /etc/passwd
. 이 파일에는 사용자 로그인을 허용하는 것뿐만 아니라 시스템에서 사용하는 많은 정보가 포함되어 있습니다.
각 줄은 사용자 항목에 해당하며 다양한 필드는 콜론으로 구분됩니다. 첫 번째 필드는 로그인이고 그 뒤에 해당 비밀번호가 옵니다.
이 필드에 저장되는 데 사용되는 암호화된 비밀번호입니다. 그러나 /etc/passwd
파일은 시스템의 모든 사람이 읽을 수 있어야 하므로 @Mikel이 말했듯이 암호화는 무차별 대입 공격을 방지할 수 없습니다. 해결책은 암호화된 비밀번호를 루트만 읽을 수 있는 파일로 이동하는 것이었습니다: /etc/shadow
.
따라서 /etc/shadow
시스템 사용자의 암호화된 비밀번호가 포함되어 있습니다. 시스템은 비밀번호 필드에 /etc/passwd
x만 포함된 경우(즉, "십자가/etc/shadow"로 이동)
답변4
내가 87년에 Linux Shadow Password Suite가 된 것을 썼기 때문에 내가 세상에서 모든 찬성표를 얻을 수 있는지 봅시다;)
원본 /etc/passwd
파일에는 일반 텍스트 비밀번호의 수정된 DES 기반 해시가 포함되어 있습니다. 함수가 생성될 당시에는 crypt()
가능한 암호의 수와 12비트 암호 사용으로 인해 암호 해시에 대한 공격이 불가능할 것이라고 믿었습니다(UNIX 운영 체제 작성자가 이를 명시했습니다). (4,096개의 가능한 값) "소금". 가능한 각 일반 텍스트 비밀번호에는 4,096개의 가능한 해시 값이 있었고 64비트의 해시 결과로 총 2^72개의 가능한 비밀번호 해시가 제공되었습니다.
언급된 또 다른 포스터는 /etc/passwd
다양한 유틸리티에서 사용자 이름과 UID 값(파일이 그룹에 대해 유사한 기능을 제공함)을 매핑하는 데 사용되었으며 /etc/group
이를 위해서는 누구나 읽을 수 있어야 했습니다.
1980년대에 파일에 저장된 비밀번호 해시에 대한 사전 공격이 /etc/passwd
가능해졌고 /etc/shadow
System V의 초기 릴리스에서 AT&T UNIX에 도입되었다는 것이 분명해졌습니다. 저는 원본 Shadow 라이브러리를 작성하는 데 사용한 맨페이지를 문서화했으며, 그 이후로는 잊어버렸지만 확실히 초기 System V 릴리스(아마도 SVR3.2)였을 것입니다.
AT&T가 한 일과 내가 87년에 Linux에서 사용하게 된 SCO Xenix(나중에 사악한 SCO Xenix가 아닌 원래의 SCO Xenix)를 위해 구현한 것은 단순히 해시된 암호를 /etc/shadow
. 이는 권한이 없는 사용자가 복사본을 획득하여 /etc/passwd
공격을 실행하는 드라이브 바이 공격을 방지했습니다. 내가 처음에 Shadow를 작성한 이유를 잘 알고 계시다면, /etc/passwd
우리가 거의 모든 작업에 UUCP를 사용하던 시절에 사용자가 UUCP를 통해 내 파일을 다운로드하도록 했습니다.
Linux가 만들어지고 널리 사용되기 시작했을 때 비밀번호 해시를 공격하는 도구는 매우 많았습니다. 고성능 재구현은 crypt()
하나의 방법이었고 다음과 같은 도구를 통한 사전 기반 공격이었습니다.금이 가다그리고libcrack다른 사람들이었습니다. 초기 포트는 Nate Holloway와 Floria La Roche에 의해 수행되었습니다(나는 그들에게 공로를 인정했지만, 그들보다 먼저 작업을 수행한 사람이 있는지는 모르겠습니다).
crypt()
결국 보호된 파일에서도 기반 해시 사용은 더 이상 안전하지 않으며 원래 MD5
기반 해시 변경이 이루어졌습니다. MD5
결국에는 너무 약한 것으로 간주되어 최신 해시가 사용되었습니다.
이론적으로는 충분히 강력한 해시를 /etc/passwd
. 운영 보안이 좋지 않다는 것은 많은 시스템이 /etc/shadow
다양한 공격 벡터를 통해 파일을 사용할 수 있다는 것을 의미합니다. "백업 파일을 훔쳤습니다"가 아마도 가장 쉬운 방법일 것입니다.