-
리눅스 shadow 구조시스템 2019. 11. 11. 17:26반응형
유닉스를 기반으로 파생되어진 모든 리눅스 시스템은
암호화 된 패스워드를 포함하여 사용자 계정 정보를 /etc/passwd 파일에 보관합니다.
그러나 이 파일은 수정은 못하지만 누구나 볼 수 있습니다.
이런 이유로 해커들이 crack과 같은 툴로 사용자들의 패스워드를 알아낼 수 있습니다.
shawdow 패스워드를 사용하게 되면 /etc/passwd 에 있는 패스워드 부분을
/etc/shadodw 에 두고 root만이 읽을 수 있는 퍼미션(400)으로 설정해 두게 됩니다.
기존의 /etc/passwd 누구나 읽을 수 있지만 /etc/shadow 는 root만 읽을 수 있습니다.
/etc/passwd/ 파일이 암호화되어 저장되어있지만 누구나 읽을 수 있기 때문에
암호를 해독하고 사용하는게 어렵지 않습니다.이런 이유로 패스워드는 실제로 root 와 superuser 만 볼 수 있는 /etc/shadow 파일에 보관되어 있습니다.
[shadow 패스워드의 기능]
- 실제로 암호화된 패스워드 들을 일반 사용자는 보지 못하도록 /etc/shadow 파일에 저장할 수 있습니다.
- Encrypted group 패스워드 들과 group administrator에 대한 정보를 대체되는 파일에 저장할 수 있습니다.
- 사용자의 패스워드의 최대 길이를 8자에서 16자로 늘여줍니다.
- 패스워드가 일정 기간 경과하면 사용자로 하여금 패스워드를 바꾸도록 합니다.
자세한 설명을 위해 shawdow 파일의 구조를 살펴보겠습니다.
[vi /etc/shadow 구조]
root:$6$5H0QpwprRiJQR19Y$bXGOh7dIfOWpUb/Tuqr7yQVCqL3UkrJns9.7msfvMg4ZO/PsFC5Tbt32PXAw9qRFEBs1254aLimFeNM8YsYOv. : 16431 : 0 : 99999 : 7 : : :
|-1–|———————————–2——————————————————————————————————————————————-|—3—|-4-|—5–|-6-|-7-|-8-|
1.Login Name : 사용자 계정각 항목별 구분은 :(콜론) 으로 구분되어있으며 콜론과 콜론 사이 각 필드에는 다음과 같은 구조로 구성되어 있습니다.
2.Encrypted : 패스워드를 암호화시킨 값
3.Last Changed : 1970년부터 1월 1일부터 패스워드가 수정된 날짜의 일수를 계산
4.Minimum : 패스워드가 변경되기 전 최소사용기간(일수)
5.Maximum : 패스워드 변경 전 최대사용기간(일수)
6.Warn : 패스워드 사용 만기일 전에 경고 메시지를 제공하는 일수
7.Inactive : 로그인 접속차단 일 수
8.Expire : 로그인 사용을 금지하는 일 수 (월/일/연도)
9.Reserved : 사용되지 않음*여기서 2번 항목 앞쪽 부분을 잘 보시면 $ 로 구분이 지어져 있습니다.
이 구분은 다음과 같은 값이 적용됩니다.[$Hashid $Salt $Hash vlaue]
– Hashid
어떤 scheme 를 이용해 hash 를 했는지 보여줍니다.
아래 표와 같이 어떤 scheme를 사용했느냐에 따라 id 값이 달라지며 주로 많이
사용되는것은 $1, $5, $6 입니다.– Salt
해시는 단 방향 함수 입니다.
다시 말하면, A->B는 가능하지만 B->A는 불가능하다는 뜻입니다.
결국 해시를 하고 난 값을 가지고 해시 하기 전의 값을 못 구한다는 뜻 입니다.
그래서 이를 공격하기 위해서 해커들은 레인보우테이블을 미리 구해둡니다.
레인보우테이블은 모든 해시 쌍들을 구해놓은 것으로,
이를 통해 해시값들을 대입하여 고속으로 패스워드를 크랙할 수 있게합니다.<
일반 사용자는 아무리 비밀번호를 어렵게 해도 이에 대한 해시 값 만 해커가 대입을 한다면
패스워드가 노출될 수 밖에 없습니다.
그래서 이를 좀 더 어렵게 하기 위해 salt를 넣습니다. salt는 해시를 하기 전에 랜덤 한 값을 참고하는데,
해커가 salt값을 모른다면 레인보우테이블을 가지고 있어도 의미가 없습니다.해당 salt 따른 값이 아니기 때문입니다.-Hash value
hash value는 hashid에 따른 해시방법과 salt값을 가지고 hash function을 수행한 결과입니다.
-SHADOW 패스워드와 관련된 리눅스 명령어
pwconv 명령어
일반 패스워드에서 shadow 패스워드로 변경하는 명령어.
이 명령어가 수행되고 나면 /etc/passwd 의 내용 중 두번째 필드에 있는 암호화된 패스워드 부분만이 /etc/shadow 파일에 따로 저장되게 됨.
pwunconv 명령어
shadow 패스워드에서 일반 패스워드로 되돌리는 명령어임.
이 명령어는 /etc/shadow 파일에 보관되었던 패스워드를 다시 /etc/passwd 파일에 저장 하게 됨.
출처 :
– https://www.linux.co.kr/home/lecture/?leccode=474
–http://idchowto.com/?p=10251
–http://www.yourownlinux.com/2015/08/etc-shadow-file-format-in-linux-explained.html반응형'시스템' 카테고리의 다른 글
우분투 ipv6 비활성화 (0) 2020.01.02 리눅스 패킷 Overrun (0) 2019.12.18 리눅스 계정 잠금 임계값 설정 (0) 2019.11.11 리눅스 서버 60초안에 상황파악하기 (0) 2019.10.01 Centos 소프트웨어 RAID (0) 2019.04.03