본문 바로가기
호기심_메모

SunOS : passwd명령어로 lock 설정된 계정 확인

by 겸손, 빚진자, 늘 배우는 사람, 배운것을 실습해보는 사람 2014. 11. 4.
반응형

유닉스 시스템에서는 단방향 암호화가 된 패스워드를 포함하여 사용자 계정 정보를 ``/etc/passwd'' 라는 텍스트 파일에 보관한다.

패스워드는 (실제로 /etc/passwd 파일에 저장하지 않고) 대신 "x" 한글자만 넣어둔다.

``/etc/shadow'' 파일이 암호화된 패스워드와 그 외의 정보, 즉 패스워드 유효기간 등을 저장한다.

 

# passwd -as 로 사용자 Lock 상태 확인

PS: 정상

LK / *LK* : : Lock설정이 된 접근할 수 없는 계정

NP : 작업이 불가능한 패스워드.

NP in the password field of /etc/shadow indicates that that the account cannot be logged into with a password

but can be logged into with other authentication methods, such as su down from root or cron jobs.

NP means that password authentication will always fail, but other login methods may succeed.

You can set an account in this state with passwd -N

This differs from *LK* (reported as LK by passwd -s), which disables all logins to the account regardless of the authentication method.

NP allows other authentication forms to work (e.g. ssh keys)

NP allows cron jobs to run (the account is not disabled)

LK prevents other forms of authentication(but su from root works because it bypasses authentication)

LK prevents cron jobs from running

 

참고 : http://unix.stackexchange.com/questions/53032/whats-the-meaning-of-np-and-up-in-the-password-field-of-the-shadow-file

 

그외 passwd 명령어의 기능

# passwd : root 암호변경

# passwd -e : root shell 변경

# passwd -d user_name : 암호제거

# passwd -l user_name : 사용자 암호에 lock 설정

# passwd -s : 패스워드 현재 상태 표시

# passwd -n : 사용자가 암호를 바꾸지 못하는 Min day 설정

# passwd -x : 사용자 암호 변경없이 사용 가능한 Max day 설정

 

| /etc/passwd 파일 구조

ex ) loginID:x:UID:GID:comment:home디렉토리: login shell:

- loginID : 유저 login명, 8자까지(알파벳,숫자,". _ -"), 첫 글자는 알파벳

적어도 하나의 소문자가 있어야됨.

- x : /etc/shadow 파일에 저장된 유저의 암호화된 패스워드를 위한 장소.

- UID

- GID

- comment : 일반적으로 유저의 풀네임을 기록, 또는 주석을 기록.

- home_directory :유저의 홈디렉토리가 있는 장소.

- login shell : 유저의 기본 login shell.

일반적으로(/bin/sh, /bin/csh, /bin/ksh)

 

| /etc/shadow 파일의 구성

ex ) loginID:passwd:lastchg:min:max:warn:inactive:expire:

login ID : 유저의 login 명

passwd :암호화된 13자의 유저 패스워드.

lastchg : 마지막으로 패스워드가 변경된 날짜.

min : 패스워드가 바뀔 수 있는 최소 날짜.

max : 패스워드를 유지할 수 있는 최대 날짜.

warn : 패스워드가 만료되기전에 유저에게 경고할 날짜(며칠전에 경고?)

inactive : 유저의 계정이 잠기기전 유저에게 허락된 활동정지 날짜.

expire : 유저 계정이 만료되는 날짜.

 

|| 사용자 계정 잠그는 법

# cat /etc/shadow :*LK*로 set된 패스워드 필드는 유저 계정이 잠겨있다는 것을 의미

passwd -l : 계정 보안(락 설정) 기능. 슈퍼유저에 의해 실행됨.

passwd -d : 해제

 

|| 패스워드 Crack 방법

일반적으로 패스워드는 해쉬 형식으로 저장된다. 이 해쉬 함수는 일방향 함수이며

DES(Data Encryption Standard)의 변형된 버전에 기초한다. 일반적으로 패스워드는

"/etc/passwd"에 저장된다. 해쉬를 위한 라이브러리 함수로는 crypt 가 사용자에게

제공된다. 패스워드를 해쉬하는 방법은 다음과 같다.

o "salt"로 사용하기 위한 랜덤한 12 비트를 획득

- 주로 시스템 time 을 사용

o 0 비트의 메세지를 암호화하기 위한 키로써 패스워드를 사용

- DES(Data Encryption Standard)를 변형한 crypt 함수 사용

o 암호화의 결과에 "salt"를 앞에 붙인다.

o 프린트할 수 있는 형식으로 변형

여기서 "salt"는 두개의 다른 시스템에서 동일한 패스워드를 가질 경우 slat 를

사용하므로써 다르게 암호화되어 다른 사람들이 같은 패스워드임을 인식하지 못하도록

한다. 이렇게 생성된 패스워드는 패스워드 파일에 저장되며 형식은 아래 그림과 같다.

 

Sun Solaris 의 경우 패스워드 /etc/shadow 파일에 있다.

먼저 /etc/shadow 파일에서 사용자 명을 읽고 getspnam() 함수를 사용하여 사용자에 대한

쉐도우 파일 정보를 구조체로 얻을 수 있다.

 

Colored By Color Scripter

1

2

3

#include <shadow.h>

struct spwd *sp;

sp = getspnam(username);

 

 

shadow 파일 구조체는 shadow.h 에 정의되어 있으며 다음과 같다.

 

Colored By Color Scripter

1

2

3

4

5

6

7

8

9

10

11

struct spwd {

char *sp_namp; /* user name */

char *sp_pwdp; /* user password */

int sp_lstchg; /* password lastchanged date */

int sp_min; /* minimum number of days between password changes */

int sp_max; /* number of days password is valid */

int sp_warn; /* number of days to warn user to change passwd */

int sp_inact; /* number of days the login may be inactive */

int sp_expire; /* date when the login is no longer valid */

unsigned int sp_flag; /* currently not being used */

};

 

패스워드 크래킹은 매우 단순하다. 사전에 있는 단어를 crypt()함수를 통하여

암호화시키고 쉐도우 파일에 있는 암호화된 패스워드와 비교하여 일치하는지는 보면된다.

툴 다운로드 : ftp://ftp.cerias.purdue.edu/pub/tools/unix/pwdutils/crack/

참고 : http://dongseo.ac.kr/~hjlee/03-HACK02.Password%20Cracking.pdf

솔라리스 사용자 가이드 : http://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=8&ved=0CEkQFjAH&url=http%3A%2F%2Fdown.wowunix.com%2Fmanual%2Funix%2FSun_solaris%2FSCSA_SCNA%2FCSA_I%2F_%25BC%25D6%25B6%25F3%25B8%25AE%25BD%25BA1.HWP&ei=BI1XVNLrFdbk8AWpt4GYDg&usg=AFQjCNGlOg69ylCSZsJj39y6d9ddww8Aew&bvm=bv.78597519,bs.1,d.dGY&cad=rjt

 

728x90

'호기심_메모' 카테고리의 다른 글

SSL certificate pinning  (0) 2014.11.20
암호 : TLS  (0) 2014.11.20
Oracle : DBlink 취약점 (1)  (0) 2014.11.19
.so 파일 (1)  (0) 2014.11.18
FIDO, Fingerprinter (1)  (0) 2014.11.17