패스워드 관리하기 사용자의 패스워드를 어떻게 관리하는가 아주 중요한 문제라고 생각한다. 너무 쉬운 패스워드를 사용한다면 그 만큼 그 시스템은 불안정 해지는것 이 아닐까? 이점에 있어서 레드햇은 아주 훌륭한 방법을 보여주고 있다. 패스워드를 바꿀시에 아주 많은 제한을 두개 되는것이다. 레드햇에서 패스워드를 바꾸다 보면 이런 주옥같은 에러를 보면서 바꾸지 못하는 경우가 있을것이다. BAD PASSWORD: it's WAY too short BAD PASSWORD: it is too simplistic/systematic BAD PASSWORD: it does not contain enough DIFFERENT characters BAD PASSWORD: it is too short BAD PASSWORD: it is based on a dictionary word 아주 골치 아픈 경우이다. ^^ 그렇지만 어쩌겠는가 시스템의 안전을 위해 서 약간의 불편함 정도는 감수해야지. 레드햇에서 처음 아이디를 만들때 루트가 그 사용자의 비번을 정해 주게 된다. 간혹 보면 비번을 없에고 사용자가 만들게 하거나 아주 쉬운 비번 또는 아이디와 같은 비번을 사용하는 경우가 많다. 관리자로써 책임이 없는 것인지? mkpasswd 라는 프로그램을 추천한다. 맨 처음 아이디를 만들고 비번을 정할때 mkpaaswd 를 이용해서 패스워드를 생성하여 그것을 사용하는 것, 아주 좋은 방법이라고 생각한다. 사용자가 패스워드를 바꾸 지 않는다 하여도 왠만해선 풀리지 않는 정도의 패스워드이니 말이다. "axUkiC73d" 이런 패스워드를 과연 추측하기 쉬울까? 꽤 안전한 패스워드 로 보인다. 이것이 mkpasswd 를 이용해서 만들어진것이다. mkpasswd 에는 몇가지 옵션이 있다. -l : 패스워드 길이를 정한다. (20자라면 mkpasswd -l 20) -d : 숫자를 몇개나 쓸것인지를 정한다. -c : 사용할 소문자의 갯수 -C : 사용할 대문자의 갯수 원래 root 아이디로 "mkpasswd 아이디" 이런식으로 사용하게 되면 생성되 는 패스워드를 그 아이디의 패스워드로 지정하게 되는데 스크립트가 잘못 된 것인지 되지 않는다. expect 스크립트를 잘 아는 사람이 있다면 한번 손봐 주었으면 좋겠다고 생각한다. T_T 슬랙은 요즘 버젼에 들어서 기본적으로 shadow 패스워드를 쓰기 시작했다. 구버젼의 슬랙을 사용한다면 passwd 파일을 건드리는 모든 프로그램을 다시 컴파일해야 할것이다. 이에 관해서는 Shadow-Passwd.HOWTO 에 자세히 언급되어 있다. 레드햇의 경우는 일반적인 passwd 방식을 쓰지만 pam 을 이용해서 아주 간단히 shadow 로 전환할수가 있다. "pwconv5" 라는 명령을 실행하면 바로 /etc/shadow 파일이 생성 되면서 shadow 방식으로 바뀔것이다. 다시 원래의 상태로 돌아 가고 싶다면 pwunconv 를 실행해 주면 된다. 그러면 /etc 나 ~ 디렉토리에 npasswd 라는 파일이 생길것이다. 이것을 /etc/passwd 로 카피해주면 된다. (shadow 를 사용하지 않을 이유는 없다) 보통 레드햇을 쓸때 이것을 생각치 않고 넘어가는 경우가 많은데 shadow 는 아주 중요하다. /etc/passwd 파일의 경우 계정만 있다면 누구나 접근이 가 능하기 때문에 이 파일을 빼가서 크랙 프로그램으로 패스워드를 알아낸다면 이미 시스템은 날라간것이나 다름이 없다. 그렇기 때문에 꼭 shadow 방식을 사용하기 바란다. shadow 는 /etc/shadow 라는 파일을 만들고 패스워드 부분 을 암호화 하여 저장하는데(/etc/passwd 도 마찬가지지만) 오직 root 만이 읽을수 있다. 그만큼 안전해 지는것이다. 네트웍에 물려 있는 컴이라면 꼭! shadow 로 전환하기 바란다. 다음 알짜판에는 shadow 가 기본적으로 되게 해볼 생각이다. (최초 부팅시에 pwconv5 를 한번 실행해주면 끝이니까!!!) 이제는 passwd 와 shadow 파일의 각 필드들을 살펴 보도록 하자. 우선 /etc/passwd 파일의 일부분이다. 총 7개의 필드로 구성된다. redhands:x:500:500:Kim Byeng-Chan,,,:/home/redhands:/bin/bash 각 필드에 대해서 설명 하겠다. 순서대로 하나 하나 살펴 보자. ID, 암호화된 패스워드(shadow 사용시엔 x 로 표시된다), UID, GID, 사용자 정보, 홈디렉토리, 기본쉘 이렇게 7 가지 인데 사용자 정보, 그러니까 5 번 째 필드의 경우 쉼표로 구분하여 또 4 개의 필드로 나누어 진다. 우리가 finger 등을 통해서 볼수 있는 정보들이다. 이름, 직장, 직장 전화번호, 집 전화번호 이다. 이것은 chfn 이라는 프로그램을 사용해서 수정할수 있다. 그럼 이번에는 shadow 의 필드 구분을 보도록 하자. 우선 한 부분을 보자. redhands:SaDWwSSEWDo:10141:-1:30:7:7:-1:0 역시 이번에도 하나 하나 필드에 대해서 알아 보자. 총 9 개의 필드이다. ID, 암호화된 패스워드, 최근 패스워드 변경일자, 패스워드를 바꾼후 다시 바꿀때까지의 날짜, 패스워드 유효기간, 유효기간이 끝나기 전에 경고할 날짜, 유효기간이 끝난후 계정의 접속을 거부할때까지의 기간, 계정의 접속 이 거부된후 지난 날짜, 그냥 비워 두는곳^^ 이렇게 이다. shadow 를 사용함으로써 패스워드를 아무나 볼수 없게 하는 기능뿐만이 아니라 자주 패스워드를 바꾸게 할수 있는것이다. 아주 중요한 기능이다. 일일이 관리자가 사용자에게 메일을 보낼 수도 없지 않은가! 레드햇에서 제공하는 usercfg 를 이용하여 좀더 효율적으로 관리 할수 있을것이다. 아 -1 은 아무런 제한을 가하지 않는 다는 것이다. 그리고 저기 암호화 되 있는 패스워드 필드를 크랙으로 돌려 보지 마라. 백날 돌려도 헛수고 니까! (그냥 방금 두드려 넣었기 때문에) #!/bin/sh if [ "$1" = "" ]; then grep -v ':x:' /etc/shadow | awk -F: '{printf "아이디 : " $1 \ " \t바꾼 날짜 : " $3 "\t접속불가 날짜 : "$8"\n"}' else grep $1 /etc/shadow | awk -F: '{printf "아이디 : " $1 \ " \t바꾼 날짜 : " $3 "\t접속불가 날짜 : "$8"\n"}' fi 이런식의 스크립트라도 짜서 관리 한다면 한결 효율적으로 사용할수 있을 것이다. 또는 crontab 에 접속 불가 된 아이디가 있다면 root 로 메일이 오게 한다면, 더욱 간편하고 쉽게 관리를 할수 있지 않을까 본다. 이제 좀더 효율적으로 패스워드를 관리 하고, 또 좀더 안전하게 시스템을 관리할수 있을것이다. shadow 그 진가를 ㅄ율보기 바란다. 자세한 것들은 Shadow-Passwd HOWTO 를 참고하면 된다. GPL 라이센스를 따르며 상업적으로 이용시 저자의 허락을 받기 바란다. - 리눅스 왕 초짜 적수 - - redhands@soback.kornet.nm.kr - - http://www.issue.ml.org -