본문 바로가기

시스템 보안

3. 계정관리

반응형

이번에는 저번 2장에서 배웠던 계정에 대해 이어서 실습을 해보려고 해

오늘 배울 내용 중에서 가장 중요한 파일 다섯개를 미리 보여줄께

 

1. /etc/passwd  2. /etc/shadow  3. /etc/group  4. /var/spool/mail  5. /home 

 

이 파일들은 계정이 생성될 때 고정적으로 계정의 정보를 추가하는 파일들이야

이렇게만 봐서는 복잡할 수 있으니,

오늘은 이 다섯가지 종류의 파일과 친해지는 시간을 가져보자!

 

 

1. 계정 관리 파일

- /etc/passwd 파일 구조와 /etc/shadow 파일 구조

 

1. /etc/passwd 구조

/etc/passwd 파일은 다음과 같은 형식으로 이루어져있어

jinwoo:x:1000:1000:jinwoo:/home/jnu:/bin/bash

jinwoo
(계정명)
x
(비밀번호)
1000
(UID)
1000
(GID)
jinwoo
(comment)
/home/jnu
(home dir)
/bin/bash
(shell)

비밀번호 필드에 x로 표기되는 이유는 비밀번호를 암호화했기 때문이야

x로 표기하는 대신 shadow 파일에 진짜 비밀번호에 대한 정보를 갖고 있어서 

passwd 파일에서 정보를 노출시키지 않기 위해 x로 암호화시킨거야

 

그리고 comment 필드는 실질적으로 꼭 필요한 필드는 아니지만

해당 계정이 누군인지 알 수 있도록 하는 역할을 해

계정의 가독성을 높여준다고 보면 좋아.

시스템 관리자가 계정을 관리할 때 comment가 달려있으면 편하겠지?? ^^

 

 

 

2. /etc/shadow 구조

/etc/shadow 파일은 passwd 파일보다 좀 더 복잡한 형태야......

(필드 구분자는 ':')

jinwoo:$6$4.giq6sV$qbqGLJdJFd6XQkgOvaqzme7ibLd1NHQUzwJMXThya8k0jsNdNQjihjQkrwng4y2MOB1X/wBYwYHizeiXPTgRS1:18970:0:99999:7:::

 

 

이게뭐야!! 

일단, 필드부터 하나씩 분석해줄께

사용자계정 비밀번호 last days min days max days warn days inactive day expired day

우리가 눈여겨 봐야할 부분은 바로 비밀번호 필드

비밀번호 필드는 세가지 필드로 또 나뉘게 되는데 필드 구분자는 '$'야

 

$hash type $ salt $ encrypted_p.w

1. hash type을 숫자로 표기하는 필드야 주로 1,5,6번을 사용하는데

1번은 MD5, 5번은 SHA-256, 6번은 SHA-512 해쉬함수로 표기하고 있어

 

2. salt는 소금이라는 건데, 말그대로 비밀번호에 조미료를 치는거야

원래의 값을 그대로 노출시키지 않기 위해 salt를 넣어 비밀번호를 암호화하는거지

 

3. encrypted_p.w는 'p.w의 salt + hash 값'이라고 해

salt값을 넣은 p.w와 이 계정에 적용한 hash 값을 더한 필드값이야

 

나머지 필드에 대한 설명은 뒤에서 활용할 때 같이 설명해줄께! 일단은 다음 진도로 go~

 

 

 

2. 사용자 계정 생성

 

계정을 생성하고 해당 계정의 비밀번호를 생성하는 것이 보안의 시작이라고 했지?

우리가 여기서부터 직접 계정과 비밀번호를 어떻게 만들어내는지 알아보도록 할께

 

계정생성: useradd jjw

p.w생성: passwd jjw 

위의 작업을 한 결과를 밑에 사진으로 보여줄께

passwd, shadow, group 파일에 jjw 계정 정보가 들어가있음을 확인할 수 있어

 

 

 

이뿐만 아니지 /var/spool/mail과 /home 디렉토리도 확인해볼까?

jjw 라는 mail 파일과 home 디렉토리도 만들어진 것을 볼 수 있어!

 

 

 

자 그렇다면 이제 계정을 삭제해보도록 할텐데

계정삭제에 사용되는 명령은 바로 userdel 명령어야

userdel [계정명] 을 실행하게 되면 해당 계정을 삭제할 수 있어

하지만! passwd, shadow, group 파일에 있는 계정 정보만 삭제할 뿐

mail 파일과 home 디렉토리는 삭제되지 않아

그렇기 때문에 옵션을 사용하여 

userdel -r [계정명]을 실행해야만 깔끔하게 계정을 삭제할 수 있어!

한 번 바로 실행해서 보여줄께

 

 

자 5개의 파일과 디렉토리에서 완전히 깔끔하게 삭제됐지?

시스템 관리자라면 계정 추가,삭제에 있어서 오류가 나지 않도록

이런 부분까지 잘 확인해야 되는건 필수겠지?

 

 

 

cf) 노가다 version

이 방식은 정말 모든 파일을 하나하나 다 입력해서 계정을 설정해주는 방식이야

????? 진짜로 할꺼임?

이왕 하는거 한번 해보는 것도 나쁘지 않을 것 같으니까 한번 해보도록 할께 ^^;;

먼저 jinwoo 계정을 passwd,shadow,group 파일에서 모두 복사 붙여넣기를 하고

mail파일과 home 디렉토리 생성부분으로 넘어가도록 할께

 

3개 파일 계정생성 완료 단순하게 복사 붙여넣고 jinwoo계정에 이어서 uid와 gid만 바꿔주면 끝!

 

 

자 다음은 home dir에 jjw home 디렉토리를 만들고, 소유주를 바꿔볼께

이 때 사용하는 명령어가 바로 chown 명령어

/var/spool/mail로 가서 mail 파일을 만들어보도록 할께

mail 파일은 참고로 permission과 소유주가 다르기 때문에 설정을 변경하도록 할께

 

chown 명령이 실행이 안되서 헤매다가 오타 찾아서 겨우 복구 ㅜㅜ ㅋㅋㅋ

 

mail 파일도 생성후 chown 명령으로 root를 jjw와 mail 형식으로 바꿔놓았다.

 

 

 

자 그러면 putty를 이용해서 jjw로 접속을 해볼께! 다끝났으니까~

어라? 근데 shell prompt가 좀 이상하다...?

우리가 여기서 놓치는게 있어! 바로 bash관련 파일들이야

ls -al jinwoo로 jinwoo 계정의 숨겨진 파일들을 확인해보자

그리고 ls -al jjw로 jjw 계정의 숨겨진 파일들도 같이 확인하고 비교해봐야 될 것 같아

 

 

 

 

두 디렉토리 안의 파일들이 차이가 나는 것을 볼 수 있지?

바로 bash shell과 관련된 파일들이 없기 때문에 

jjw계정으로 로그인 했을 때 다음과 같이 prompt가 bash shell로 나오지 않았던거야

그리고 리눅스에서 파일 앞에 "." 이 붙게되면 숨김파일로 지정되기 떄문에

ls -l로는 해당 파일을 확인할  수 없어! 이것도 꼭 알아두길 바래

자 그러면 bash와 관련된 파일은 어디에 있을까?

 

 

 

 

바로 /etc/skel에 저장되어 있어 우리는 여기서 cp 명령으로 복사하여 

jjw 계정에 붙여넣고 putty로 다시 접속을 해볼께

 

 

 

 

자 prompt가 bash-4-.2$에서 jjw@localhost ~로 바뀐 것을 볼 수 있지?

(gid를 설정을 하지 않아 1001번을 찾을 수 없다고 나오는데 이는 pass~)

아무튼 계정 생성하는 것이 이렇게 복잡할 줄은 몰랐어

하지만, 계정의 생성과 비밀번호의 생성이 보안의 시작인만큼

이 부분에 대해서 잘 공부가 되어있어야 돼

오늘은 여기까지 하고 내일도 새로운 내용에 대해 공부해보도록 할께!

 

반응형

'시스템 보안' 카테고리의 다른 글

8. ICMP 필터  (0) 2021.12.22
7. ping 차단  (0) 2021.12.22
6. 리눅스 파일 권한 (2)  (0) 2021.12.21
5. 리눅스 파일 권한(1)  (0) 2021.12.20
4. 로그인 접근 권한  (0) 2021.12.16