
/etc/shadow
/etc/shadow
- 암호화 (Encrypted(암호호) ↔ decrypted(복호화))
- 암호화 자체는 양방향의 특징이 있음.
- 원래대로 되돌릴 수 있음
- Hashing 알고리즘은 단방향의 특징이 있음.
- 해시 알고리즘
- Hashing 알고리즘은 단방향 암호화 방식으로, 입력 데이터를 고정된 길이의 해시값으로 변환하는 방식입니다. 해시 알고리즘의 가장 큰 특징은 단방향성입니다.
- 즉, 한 번 해시된 값에서 원래의 입력 값을 복원할 수 없는 점이 핵심입니다.
- 해시 알고리즘
- 예시 : root:$6$ukk0R8waHoJEywfM$Hc6sR4RXI3W1k5klft2ezIAOLv29JfY90FnCuGbDBzLWCeqTnOAqUF3drITB9FkhXOyBXef5y9gLpnVLPTOfo1::0:99999:7:::
- /etc/shadow 파일의 각 필드는 사용자 계정의 비밀번호와 만료 정책, 비밀번호 변경 날짜 등을 관리하기 위해 사용됩니다.
1. 사용자 계정 이름 (root)
설명: 이 필드는 해당 줄에서 비밀번호 정보를 나타내는 사용자 계정을 의미합니다. 주로 시스템 사용자 계정이 들어갑니다.
- 예시: root
- 설명: root는 리눅스 시스템에서 최고 권한을 가진 관리자 계정입니다.
2. 암호화된 비밀번호
- $6$ukk0R8waHoJEywfM$Hc6sR4RXI3W1k5klft2ezIAOLv29JfY90FnCuGbDBzLWCeqTnOAqUF3drITB9FkhXOyBXef5y9gLpnVLPTOfo1
설명: 사용자의 비밀번호는 보안을 위해 해시 알고리즘으로 암호화되어 저장됩니다. 비밀번호 자체를 직접 저장하지 않고, id, salt, 해시된 비밀번호로 구성됩니다.
- 구조: $id$salt$hashed_password
- $6$: SHA-512 해시 알고리즘을 의미합니다. 다른 알고리즘으로는 $1$ (MD5), $5$ (SHA-256) 등이 있습니다.
- $2,3,4$ 는 Red-hat 계열에서는 사용 하지 않는다.
- ukk0R8waHoJEywfM: 솔트 값으로, 해시 생성 시 추가되는 임의의 값입니다. 동일한 비밀번호라도 다른 솔트를 사용하면 해시값이 달라집니다.
- salt2:$6$ioe6dw7D5vH/NaQ8$6pf8DDuTwjBlmNjn924LCjeDBsrXR8HSn4I/nacHoeunB0cgC1x.YqyOf0Eru71fH7n55XCd1iYSgr.eRLta.1:19986:0:99999:7:::
- 두 사용자를 생성 시 동일 비밀번호를 입력하여도 솔트를 이용하여 다른 해시값을 가진 채 생성된다.
- 그 이유는 랜덤하게 솔트가 들어가기 때문입니다.
3. 비밀번호 마지막 변경 날짜 (::)
설명: 이 필드는 비밀번호가 마지막으로 변경된 날짜를 나타냅니다. Unix Epoch(1970년 1월 1일)부터 며칠이 경과했는지 나타냅니다. 만약 이 필드가 비어 있다면 비밀번호가 한 번도 변경되지 않았거나 변경된 날짜 정보가 없음을 의미합니다.
- 예시: :: (비어 있음)
다른 예시:
- 18515: 비밀번호가 2020년 8월 23일에 변경되었음을 의미합니다. 1970년 1월 1일 기준으로 18515일이 경과한 날짜입니다.
4. 비밀번호가 만료되기 전 남은 일수 (0)
설명: 비밀번호가 만료되기 전까지 남은 일수를 의미합니다. 이 값이 0이면 비밀번호가 만료되지 않는다는 뜻입니다.
- 예시: 0 (만료되지 않음)
다른 예시:
- 30: 비밀번호가 30일 후에 만료됩니다.
5. 비밀번호 최대 사용 기간 (99999)
설명: 비밀번호를 변경하지 않고 사용할 수 있는 최대 기간을 나타냅니다. 여기서는 사실상 비밀번호가 만료되지 않음을 의미합니다.
- 예시: 99999 (사실상 만료 없음)
다른 예시:
- 90: 90일 동안 비밀번호를 변경하지 않으면 만료됩니다.
6. 비밀번호 만료 경고 (7)
설명: 비밀번호가 만료되기 전 사용자에게 경고할 일수를 나타냅니다. 이 값이 7이면 비밀번호 만료 7일 전에 사용자에게 알림이 표시됩니다.
- 예시: 7 (만료 7일 전 경고)
다른 예시:
- 14: 비밀번호 만료 14일 전에 경고 메시지가 표시됩니다.
7. 비밀번호 만료 후 계정이 비활성화되기까지의 기간 (::)
설명: 비밀번호가 만료된 후 계정이 비활성화될 때까지의 기간을 나타냅니다. 이 필드가 비어 있으면 비밀번호 만료 후에도 계정이 비활성화되지 않음을 의미합니다.
- 예시: :: (계정 비활성화 없음)
다른 예시:
- 10: 비밀번호가 만료된 후 10일 이내에 계정을 사용하지 않으면 비활성화됩니다.
8. 계정 만료일 (::)
설명: 계정 자체가 만료되는 날짜를 나타냅니다. 만약 이 필드가 비어 있으면 계정에 만료일이 설정되지 않았음을 의미합니다.
- 예시: :: (계정 만료일 없음)
다른 예시:
- 18700: 계정이 2021년 1월 1일에 만료됩니다. 이는 1970년 1월 1일 기준으로 18700일이 경과한 날짜입니다.
9. 예약된 필드 (::)
설명: 현재 리눅스에서 사용되지 않는 필드입니다. 기본적으로 비어있으며, 추후 확장을 위해 예약된 필드입니다.
- 예시: :: (비어 있음)
'시스템 보안 > 계정관리' 카테고리의 다른 글
| #1 /etc/passwd (0) | 2024.09.29 |
|---|