Day 5-리눅스 사용자 관리

2019. 11. 22. 10:21Security/리눅스

* 네트워크를 Bridge가 아닌 NAT로 설정하기(노트북에서도 VMware를 사용하기 위해)

VMware - Edit - Virtual Network Editor - VMnet8 -NAT setting에서 서브넷 IP, Gateway를 설정

 

ex)

서브넷 : 192.168.11.0

Gateway : 192.168.11.1

 

* 리눅스 사용자 관리

 

목적 : 사용자들이 좀 더 편하게 사용할 수 있도록 환경을 설정해 주는게 주된 목표. 말그대로 사용자 관리이므로 일반 사용자 계정이 아닌 관리자 계정(root)으로 로그인 해야 함.

 

/etc/passwd : 사용자 등록 정보.

형식 : 계정:암호:UID:GID:주석:홈디렉토리:쉘

- 사용자 패스워드의 경우 shadow password 사용
- useradd 명령을 이용 등록
- 사용자의 직접수정이 가능(추천하지 않는다.

- 리눅스 7 모델의 경우 사용자가 만든 계정은 uid가 1000번부터 시작한다.

/etc/shadow : 사용자의 패스워드. 암호정책 정보

형식 : 계정:암호:최종 변경일:변경까지 남은 날:유효기간:만료까지 경고기간:만료 후 계정 폐쇄까지 기간:만료일:예비

- 암호는 관리자가 볼 수 없도록 해시코드로 저장되어 있음.

그림을 보면 root의 비밀번호는

$6$dpotQApR9NMK0/Y1$u4iOoePrgovw7ZDvVWJUnIwssYPItVSLsZuXm9bqmnLSMVpi5rOcgBLCDy594fY77osYpKTxpN7V7Q4uU3hsm1란 해시코드로 저장되어 있음.

 

/etc/group : 그룹의 등록 정보

형식 : 그룹명:암호:GID:소속 계정

- groupadd 명령을 이용해서 그룹을 등록

- 계정은 여러 그룹에 속하고 기본 소속 그룹은 /etc/passwd 파일에 등록 된다.

- 소속 계정은 그룹의 가지고 있는 권한을 모두 가지고 있고, 

groudadd : 그룹 등록. 사용자를 등록하기 전에 속할 그룹이 반드시 먼저 만들어져 있어야 한다.

형식 : groupadd [-g [그룹번호]] [그룹명]

(보안의 관점에서는 그룹 번호를 반드시 지정해야 함. 리눅스 7버전에서는 1000번 이상)

 

-g : 생성 그룹의 GID 번호를 지정.(할당하지 않으면 1001이상의 중복되지 않은 값으로 GID가 자동으로 할당) 

-r : 1000번 이하의 GID 번호를 자동으로 할당. 1000번 이하의 GID는 시스템이 daemon이나 관리 목적으로 사
용함으로 가능한 사용하지 않는 것이 좋다.

-o : 중복된 GID 번호 할당이 가능하다.(가급적 사용하면 안 됨) 

GID가 같고 이름이 다른 그룹은 생성 가능하지만 이름이 같고 GID가 다른 그룹은 생성 불가능

 

groupdel : 그룹 삭제. 그룹 삭제는 반드시 그룹명을 이용.

형식 : groupdel [그룹명]

 

 

groupadd -g 1001 data1 : gid 번호가 1001인 그룹 data 생성

groupadd data2 : 그룹 data2 생성. -g 옵션이 따로 없으므로 1001이상의 gid번호가 자동으로 할당 됨

groupadd -r data3 : gid번호가 1000이하인 그룹 data3 생성

cat /etc/group | grep data : /etc/group 안에 data라는 문자열이 들어가는 라인 출력

groupadd -g 1001 data4 : gid 번호가 1001인 그룹 data4를 생성하지만 중복되는 gid여서 생성 불가

groupadd -o -g 1001 data4 : gid 번호가 1004인 그룹 data4를 생성. -o옵션이 있기때문에 중복된 gid도 생성 가능

cat /etc/group | grep data : /etc/group 안에 data라는 문자열이 들어가는 라인 출력

groupdel data4 : 그룹 data4 삭제

cat /etc/group | grep data : /etc/group 안에 data라는 문자열이 들어가는 라인 출력

 

Useradd : 계정 생성.

형식 : useradd [옵션] [사용자명]

-u : uid 지정. 사용하지 않으면 자동으로 uid가 지정되서 관리가 어렵기때문에 사용해야 함 
-g : gid 또는 그룹명 지정(default : 계정명). 반드시 사용해야 하는 옵션 
-d : 홈 디렉토리 지정(default : /home/[계정명])
-G : 보조 그룹 지정
-D : 기본 설정 확인 및 변경
-s : 쉘 지정. 로그인이 필요 없는 관리용 계정(1000번대 이하 계정)은 /sbin/nologin으로 설정

 

 

groupdel st : 그룹 st 삭제

groupdel te : 그룹 te 삭제

groupadd -g 1600 st : gid 번호가 1600인 그룹 st 생성

groupadd -g 1700 te : gid 번호가 1700인 그룹 te 생성

useradd -g 1600 -u 1601 st01: gid번호가 1600인 그룹에 uid 번호가 1601인 계정 st01 생성

useradd -g st -u 1602 st02 : st 그룹에 uid 번호가 1602인 계정 st02 생성

useradd -g st -u 1603 st03 : st 그룹에 uid 번호가 1603인 계정 st03 생성

useradd -g 1700 -u 1701 te01 : gid번호가 1700인 그룹에 uid 번호가 1701인 계정 te01 생성

useradd -g 1700 -u 1702 te02 : gid번호가 1700인 그룹에 uid 번호가 1702인 계정 te02 생성

cat /etc/passwd | grep st0 :  /etc/passwd 디렉토리에 st0이라는 문자가 포함된 라인 출력

cat /etc/passwd | grep te0 :  /etc/passwd 디렉토리에 te0이라는 문자가 포함된 라인 출력

ls /home : /home 디렉토리 출력. 따로 -d 옵션을 사용하지 않았기 때문에 디폴트 위치인 /home/에 추가된 사용자의 홈 디렉토리가 생성되어있음을 확인 가능

 

 

userdel : 계정 삭제

형식 : userdel -r [사용자명]

-r : 계정에 귀속된 홈 디렉토리와 메일박스등 모든 것을 삭제(반드시 필요한 옵션)

cat /etc/passwd | grep te0 : /etc/passwd/ 밑에 te0이 들어있는 라인 출력

userdel -r te01 : 계정 te01을 삭제할때 홈 디렉토리와 메일박스등 모든 것을 삭제 

userdel te02 : 계정 te02만 삭제

useradd -g 1700 -u 1701 te02 : gid번호가 1700인 그룹에 uid번호가 1701인 te02 생성. 그러나 te02의 홈 디렉토리를 삭제하지 않았기때문에 명령 오류가 남.

cat /etc/passwd | grep te0 : /etc/passwd 디렉토리에 te0이라는 문자가 포함된 라인 출력

ls -al /home : /home 디렉토리의 목록을 상세 출력해보면 te02의 소유권을 가진 파일이 1702로 나온다. 

userdel -r te02 : 계정 te02를 삭제할때 홈 디렉토리와 메일박스도 삭제 시도하지만 소유자가 te02가 아닌 1702이기 때문에 삭제가 안됨.

cat /etc/passwd | grep te0 : /etc/passwd/ 밑에 te0이 들어있는 라인 출력

rm -rf /home/te02 : userdel 명령이 먹히지 않아 계정을 직접 지움.

rm -rf /var/spool/mail/te02 : userdel 명령이 먹히지 않아 메일박스를 직접 지움.

 

-M : 메일 전용 계정 생성. 홈 디렉토리가 생성되지 않음.

-r : 990번 이하의 UID 자동 할당. 서비스를 위한 더미 계정으로 실사용자가 없음. 쉘은 /sbin/nologin으로 지정. 홈 디렉토리가 생성되지 않음.

groupadd -g 1800 sp : gid번호가 1800인 그룹 sp 생성

useradd -g sp -M sp01 : sp 그룹에 메일 전용 계정인 sp01 생성 

useradd -g sp -r -s /sbin/nologin sp02 : sp 그룹에 메일 전용 계정이고 더미 계정인 sp02 생성

cat /etc/passwd | grep sp0 : /etc/passwd 디렉토리에서 sp0이 들어있는 라인 출력.

ls /home/sp* : sp01과 sp02는 홈 디렉토리가 설정되지 않고 생성되었기 때문에 아무것도 출력되지 않음

 

 

* 리눅스 패스워드 관리

 

passwd : 사용자의 암호 변경. 관리자는 다른 사용자의 암호를 임의로 변경 할 수는 있지만 확인할 수는 없다.

형식 : passwd [사용자 계정]

st01로 로그인을 실패한 상태.

passwd st01 : st01의 비밀번호를 변경

* 안전한 패스워드 설정

 

- 영문 대문자, 소문자, 숫자, 특수 문자 중에 둘 이상을 포함한다.
- 반드시 8글자 이상으로 한다.
- ID와 연관성 있거나 개연성이 있는 단어는 사용하지 않는다. → 위 세가지는 사전 대입 공격에 대비한다.
- 시스템마다 상이한 패스워드를 이용한다.
- 가급적 자주 변경한다.(최소 6개월에 한번)

 

위는 일반인을 대상으로 안전한 패스워드 정책이고 관리자의 경우 아무리 복잡한 패스워드도 생일 공격과 같이 해시 충돌에 의한 공격 에는 대비가 되지 않음으로 직접 장시간 크랙을 실시해서 안전한 패스워드를 이용한다.

 

 

 

* 개념 및 용어 정리

 

프로그램과 프로세스의 차이 : 프로그램이 작동되서 메모리를 점유한 상태가 프로세스. 즉, 프로세스는 실행된 프로그램

 

정량적 분석 : 수치르 측정하고 분석. 쉽게 말하면 돈으로 환산될 수 있는지 분석해보는 것. 정량적 분석이 되지 않으면 정보보안에선 의미가 없음.