리눅스 계정과 shadow 파일
설명 영상 리눅스 계정과 shadow 파일 · 2:29
핵심 정리
리눅스는 계정 정보를 한 파일에 모으지 않고 용도별로 나누어 둔다. 계정의 기본 정보는 /etc/passwd에, 패스워드 해시와 기간 정보는 shadow 파일인 /etc/shadow에, 그룹 정보는 /etc/group에 있다. 해시를 일반 계정 정보와 분리해 두는 것이 shadow 파일을 둔 이유다. /etc/shadow는 높은 권한이 있는 사용자의 해시화된 비밀번호 데이터 접근을 제외한 모든 사항을 제한함으로써 비밀번호의 보안 수준을 높이는 데 쓰인다.
/etc/passwd 파일의 첫 번째 필드는 계정명이다. 두 번째 칸인 암호 칸에는 보통 x가 적힌다. /etc/passwd의 암호 필드 x는 암호 자체가 아니라 실제 해시가 /etc/shadow 파일에 저장되어 있음을 나타낸다. 세 번째 칸인 UID가 0이면 슈퍼유저 권한을 가진다. 계정의 인증 정보는 두 파일을 함께 보아야 완성된다.
/etc/shadow의 패스워드 칸에는 해시화된 패스워드 값이 저장된다. 리눅스는 패스워드에 솔트를 더해 해시 함수로 처리한 뒤 해시값을 /etc/shadow에 저장하며, 패스워드 해싱에는 SHA-256 이상이 적합하다. 솔트는 비밀번호 해시 필드와 함께 /etc/shadow 파일에 저장된다. 솔트는 같은 패스워드라도 해시값이 달라지게 하는 값이다.
기간 칸은 칸마다 뜻이 달라서 칸 단위로 외워야 한다. /etc/shadow에서 최소 사용기간 필드 값이 0이면 패스워드를 즉시 변경할 수 있다. 나머지 기간 칸은 모두 일수로 세는 값이다.
로그인할 때 시스템은 입력한 패스워드에 저장된 솔트를 더해 같은 해시 함수로 처리하고, 그 결과를 /etc/shadow의 패스워드 칸 값과 비교한다. 두 값이 같으면 인증이 된다. 원문 패스워드는 파일에 남지 않으므로 파일이 유출되어도 원문이 바로 드러나지 않는다는 것이 이 구조의 효과다. shadow 파일의 보호는 수퍼유저만 소유하고 접근할 수 있는 파일에 보관된다는 사실에 기대고 있다. 그래서 파일을 나누는 구조, 해시가 놓이는 칸, 기간 칸의 뜻을 정확히 알아야 이 개념의 선지를 가를 수 있다.
자세히
패스워드 사용 기간 필드
기간 칸은 /etc/shadow 안에서 맡은 일이 서로 다르다. 최소 사용기간은 패스워드를 바꿀 수 있기까지 기다리는 하한이고, 최대 사용기간은 패스워드를 교체하도록 요구하는 상한이다. 두 칸은 방향이 반대이므로 하나를 다른 것으로 바꿔 쓴 선지는 틀린다. 최소 사용기간을 두면 사용자가 패스워드를 연달아 바꿔 이전 패스워드로 되돌리는 것을 막을 수 있다. 패스워드를 유지하는 최대 일수가 패스워드의 현재 유효기간이다. 이 값을 포함한 기간은 chage 명령으로 지정하며, 지정한 값은 /etc/shadow에 저장된다.
경고기간은 패스워드가 만료되기 전에 경고를 시작하는 일수를 나타낸다. 경고가 시작되는 날은 만료되는 날보다 앞선다. 이 구분을 놓치면 경고기간을 만료 기간으로 묻는 선지를 맞히지 못한다. 마지막 수정일 칸에는 1970년 1월 1일을 기준으로 비밀번호가 마지막으로 수정된 날까지의 일수가 들어간다. 이 칸은 최대 사용기간과 경고기간을 계산하는 기준점이 된다. 비활성 기간까지 포함하면 기간 칸은 모두 날짜가 아니라 일수로 읽어야 하며, 기준점이 되는 날짜와 일수를 세는 칸을 구분하는 것이 기본이다.
해시 알고리즘과 솔트
해시 관련 claim은 세 갈래로 나뉜다. 첫째는 솔트가 놓이는 자리다. 솔트는 해시 칸과 함께 shadow에 있으므로 passwd 파일에서 솔트를 찾으면 틀린다. 솔트를 쓰는 이유는 같은 패스워드를 쓰는 계정들이 같은 해시값을 갖지 않게 하기 위해서다. 그래서 미리 만들어 둔 해시표로 한꺼번에 역산하는 공격을 어렵게 만든다.
둘째는 해시 형식이다. /etc/shadow의 idsalthash 형식에서 가운데 필드는 솔트다. 맨 앞 1$ 접두사가 붙은 패스워드 해시는 MD5 기반 crypt 방식으로 계산된다. 1 방식은 MD5 기반이므로 앞서 본 SHA-256 이상의 권장 수준과 구분해야 한다. 두 방식을 같은 안전 수준으로 묶으면 안 된다.
셋째는 shadow에 저장되지 않는 것이다. /etc/shadow 파일에는 대칭키 암호 알고리즘의 종류가 저장되지 않는다.
이어지는 내용
- 암호 칸의 x와 해시 위치
- 계정명과 두 파일의 관계
- 그룹 파일의 칸
- 권한과 식별자
- 자주 헷갈리는 것
- 기출에서는
로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.
앱에서 이 절 읽기