다음 이전 차례

6. patch하거나 upgrade할 필요가 있는 다른 program들

password로 접근을 필요로 하는 대부분 program들의 대치품이 shadow suite에 포함되어 있다고 해도, 대부분 system에서 password 접근을 필요로 하는 다른 program들이 있다.

Debian 배포판을 쓰고 있다면 (또는 쓰고 있지 않더라도), ftp://ftp.debian.org/debian/stable/source/로부터 다시 만들어야 될 program들의 Debian source를 얻을 수 있다.

이 section의 나머지 부분은 adduser, wu_ftpd, ftpd, pop3d, xlock, xdm, sudo같은 program들이 shadow suite를 지원하도록 upgrade하는 법에 대해 다루고 있다.

shadow suite에 대한 지원을 어떻게 program에 넣는가하는 문제는 section C program에 Shadow를 지원하도록 덧붙이기를 보라 (그리고나서 program이 shadow file을 접근할 수 있도록 SUID root나 SGID shadow로 실행해야 되지만)

6.1 Slackware adduser program

Slackware 배포판( 다른 것들중에서도)은 /sbin/adduser라고 불리우는 사용자를 추가할 때 쓰는 대화식 program을 포함하고 있다. 이 program의 shadow version은 ftp://sunsite.unc.edu/pub/Linux/system/Admin/accounts/adduser.shadow-1.4.tar.gz에서 구할 수 있다.

나는 slackware의 adduser대신에 Shadow Suite에 있는 program들 (useradd, usermod, userdel)을 사용할 것을 권한다. 그들을 익히는 데 다소 시간이 걸리지만, 그만한 값어치를 한다. 왜냐하면 당신은 좀더 자세히 control할 수 있고, /etc/passwd/etc/shadow에 알맞은 file locking을 행해주기 때문이다 (adduser는 아니다).

종 더 자세한 걸 알고 싶으면 Shadow Suite 사용하기를 참조하도록.

하지만, 가지고 있다면 다음처럼 해라:

tar -xzvf adduser.shadow-1.4.tar.gz
cd adduser
make clean
make adduser
chmod 700 adduser
cp adduser /sbin

6.2 The wu_ftpd Server

대부분 Linux system은 wu_ftpd server를 쓰고 있다. 배포판으로부터 shadow를 설치하지 않았다면, 당신의 wu_ftpd는 shadow 지원을 하도록 compile되지 않았다. wu_ftpdroot process로써 실행되는 inetd/tcpd로부터 시작된다. 아직도 낡은 wu_ftpd deamon을 쓰고 있다면, 그 놈은 root 계정을 위태롭게 하는 bug를 지니고 있기에 무조건 upgrade를 해야 된다 ( Linux security home page를 참조).

다행히 source code를 가져와 shadow가 가능하도록 재compile하기만 하면 된다.

쓰고 있는 것이 ELF system이 아니라면, wu_ftp server는 sunsite의 wu-ftp-2.4-fixed.tar.gz를 쓰면 된다.

일단 가져와서 /usr/src에 놓은 뒤:

cd /usr/src
tar -xzvf wu-ftpd-2.4-fixed.tar.gz
cd wu-ftpd-2.4-fixed
cp ./src/config/config.lnx.shadow ./src/config/config.lnx

그런다음 ./src/makefiles/Makefile.lnx을 수정한다:

LIBES    = -lbsd -support
를:
LIBES    = -lbsd -support -lshadow
으로.

이제 script를 만들고 설치하기 위한 준비가 끝났다:

cd /usr/src/wu-ftpd-2.4-fixed
/usr/src/wu-ftp-2.4.fixed/build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd

이는 Linux shadow 설정 file을 사용해서 compile하고 server를 설치한다.

내 Slackware 2.3 system에서는 build를 실행시키기 전에 다음과 같은 일을 해야 했다:

cd /usr/include/netinet
ln -s in_systm.h in_system.h
cd -

ELF system에서 이 package를 compile하는 데 몇가지 문제점들이 보고 되었지만, 다음 release의 Beta version에서는 잘 된다. 그것은 wu-ftp-2.4.2-beta-10.tar.gz이다.

일단 가져와서 /usr/src에 놓은 뒤:

cd /usr/src
tar -xzvf wu-ftpd-2.4.2-beta-9.tar.gz
cd wu-ftpd-beta-9
cd ./src/config

그런 뒤 config.lnx를 수정한다:

#undef SHADOW.PASSWORD
을:
#define SHADOW.PASSWORD
으로. 그리고
cd ../Makefiles
Makefile.lnx를 수정한다:
LIBES = -lsupport -lbsd # -lshadow
를:
LIBES = -lsupport -lbsd -lshadow
으로. 마지막으로 만들고 설치:
cd ..
build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd

당신의 wu.ftpd server가 실제로 어디 있는 지 확인하기 위해 /etc/inetd.conf를 점검해 보라. 어떤 배포판에서는 server deamon을 다른 장소에 두고, 특히 wu.ftpd는 다른 이름을 하고 있다는 말이 있다.

6.3 표준 ftpd

표준 ftpd server를 쓰고 있다면 wu_ftpd server를 쓰도록 권한다. 위에서 얘기한 bug외에는 일반적으로 더 안전한 것으로 알려져 있다.

표준을 계속 고수하거나 NIS을 지원할 필요가 있다면, Sunsite에 ftpd-shadow-nis.tgz가 있다.

6.4 pop3d (Post Office Protocol 3)

POP3가 필요하면, pop3d program을 재compile해야 한다. pop3droot 권한으로 inetd/tcpd에 의해 실행된다.

Sunsite에 두가지 version이 있다: pop3d-1.00.4.linux.shadow.tar.gzpop3d+shadow+elf.tar.gz

둘 다 설치까지 수월하게 진행된다.

6.5 xlock

shadow suite를 설치하고, X Windows System과 upgrade하지 않고 xlock으로 screen에 lock을 건다면, Ctrl-Atl-Fx를 눌러 다른 tty로 login한 뒤 xlock process를 죽여 할 것이 틀림없다 (또는 Ctrl-Alt-BS로 X server를 죽이던가). 다행히 xlock program을 upgrade하는 것은 쉽다.

XFree86 3.x.x를 쓰고 있다면, 아마도 xlockmore (lock기능에 훌륭한 screen-saver까지 있는)를 쓰고 있을 것이다. 이 package는 shadow와 함께 재compile할 수 있도록 되어 있다. 낡은 xlock를 쓰고 있다면, 이 걸로 upgrade하도록 권한다.

xlockmore-3.7.tgzftp://sunsite.unc.edu/pub/Linux/X11/xutils/screensavers/xlockmore-3.7.tgz 에 있다.

대개, 이게 구미에 딱 맞을 것이다.

xlockmore-3.7.tgz을 구한 다음, /usr/src에 푼다:

tar -xzvf xlockmore-3.7.tgz

/usr/X11R6/lib/X11/config/linux.cf file의 다음 line을 바꾸면 된다:

#define HasShadowPasswd    NO

를 다음처럼

#define HasShadowPasswd    YES

그리고 나서 실행 file을 만들자:

cd /usr/src/xlockmore
xmkmf
make depend
make

마지막으로 모두 제자리에, 바른 permission을 지니게 하면 끝이다:

cp xlock /usr/X11R6/bin/
cp XLock /var/X11R6/lib/app-defaults/
chown root.shadow /usr/X11R6/bin/xlock
chmod 2755 /usr/X11R6/bin/xlock
chown root.shadow /etc/shadow
chmod 640 /etc/shadow

이제 xlock은 잘 돌아갈 것이다.

6.6 xdm

xdm는 X-Windows상에서의 login screen을 보여준다. 어떤 system은 특정 level로 가도록 지정하면 xdm을 시동시킨다(/etc/inittab를 보도록).

Shadow Suite가 설치되면 xdm도 update될 필요가 있다. 이는 매우 쉽다.

xdm.tar.gzftp://sunsite.unc.edu/pub/Linux/X11/xutils/xdm.tar.gz에 있다.

xdm.tar.gz를 구한 다음, /usr/src에서 푼다:

tar -xzvf xdm.tar.gz

/usr/X11R6/lib/X11/config/linux.cf에서 다음 line을 고친다:

#define HasShadowPasswd    NO

를 다음처럼

#define HasShadowPasswd    YES

그리고 나서 실행 file을 만들자:

cd /usr/src/xdm
xmkmf
make depend
make

모든 걸 제자리로...:

cp xdm /usr/X11R6/bin/

xdmroot 권한으로 실행되기에 permission을 바꿀 필요는 없다.

6.7 sudo

sudo는 시스템 관리자가 사용자로 하여금 정상적으로 root 권한을 가지고 program들을 실행할 수 있게 하도록 허용해준다. 이 것은 drive를 mount하는 것과 같은 일을 사용자가 할 수 있도록 허용함으로써, system 관리자가 root 계정으로 접속할 필요를 억제할 수 있다는 면에서 간편하다.

sudo는 실행될 때 사용자 password를 확인하기 때문에 password를 읽을 필요가 있다. sudo는 이미 SUID root상태로 동작되기에 /etc/shadow file에 접근하는 데 문제는 없다.

shadow suite에 맞는 sudoftp://sunsite.unc.edu/pub/Linux/system/Admin/sudo-1.2-shadow.tgz에 있다.

경고: sudo를 설치할 때, 기존의 /etc/sudoers는 기본 설정으로 대체된다. 그러므로 기본 설정이외의 것을 쓰고 있다면 backup을 하기 바란다 (또는, Makefile에서 기본 설정 file을 /etc로 복사하도록 지시하는 line을 제거하면 된다).

이 package는 이미 shadow를 쓸 수 있게 설정되어 있으므로, 재compile하기만 하면 된다 (/usr/src에 넣고):

cd /usr/src
tar -xzvf sudo-1.2-shadow.tgz
cd sudo-1.2-shadow
make all
make install

6.9 pppd (Point-to-Point Protocol Server)

pppd server는 여러가지 방식으로 인증할 수 있게 설정할 수 있다: Password Authentication Protocol (PAP)와 Cryptographic Handshake Authentication Protocol (CHAP). 대개 pppd server는 /etc/ppp/chap-secrets와/또는 /etc/ppp/pap-secrets에 있는 password를 읽는다. 이런 식으로 pppd를 쓴다면, pppd를 다시 설치할 필요가 없다. (역자주: ppp용 password를 따로 둔다는 뜻인 듯...)

pppd는 login parameter를 사용할 수 있다 (command line이건, option file이나 설정을 통해서건). login option이 주어지면, pppd는 PAP를 위해 /etc/passwd에 있는 username과 password를 사용할 것이다. 물론 이 경우에 shadow된 password file은 쓸모없다. pppd-1.2.1d에서 shadow를 지원하도록 code를 덧붙여야 된다.

다음 section에서 pppd-1.2.1d에 shadow를 지원하도록 하는 예를 보일 것이다 (pppd의 옛 version).

pppd-2.2.0는 이미 shadow가 지원된다.


다음 이전 차례